@servicetitan/anvil2 1.46.6 → 1.46.7
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.
- package/CHANGELOG.md +12 -0
- package/dist/{Dialog-xsgqM6e1.js → Dialog-D3aUlrNr.js} +2 -2
- package/dist/{Dialog-xsgqM6e1.js.map → Dialog-D3aUlrNr.js.map} +1 -1
- package/dist/Dialog.js +1 -1
- package/dist/{Drawer-DpN7wUNy.js → Drawer-C1KtNoLu.js} +2 -2
- package/dist/{Drawer-DpN7wUNy.js.map → Drawer-C1KtNoLu.js.map} +1 -1
- package/dist/Drawer.js +1 -1
- package/dist/{Menu-DUZqzpwg.js → Menu-BlHuE7TM.js} +3 -3
- package/dist/Menu-BlHuE7TM.js.map +1 -0
- package/dist/Menu.js +1 -1
- package/dist/{Page-DEpBEr_s.js → Page-DRSFpDAb.js} +3 -3
- package/dist/{Page-DEpBEr_s.js.map → Page-DRSFpDAb.js.map} +1 -1
- package/dist/Page.js +1 -1
- package/dist/{Pagination-B_G9QcHf.js → Pagination-UGCNBKo0.js} +2 -2
- package/dist/{Pagination-B_G9QcHf.js.map → Pagination-UGCNBKo0.js.map} +1 -1
- package/dist/Pagination.js +1 -1
- package/dist/{ProgressBar-BWN2yv1s.js → ProgressBar-BwM_e5cP.js} +2 -2
- package/dist/ProgressBar-BwM_e5cP.js.map +1 -0
- package/dist/ProgressBar.js +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-CyiGDKMh.js → Toaster-BKyvW8J8.js} +2 -2
- package/dist/{Toaster-CyiGDKMh.js.map → Toaster-BKyvW8J8.js.map} +1 -1
- package/dist/{Toaster-CHyB-Mxs.js → Toaster-CH5FTmGv.js} +2 -2
- package/dist/{Toaster-CHyB-Mxs.js.map → Toaster-CH5FTmGv.js.map} +1 -1
- package/dist/{Toolbar-DHcP_Jal.js → Toolbar-B2zhlyBz.js} +2 -2
- package/dist/{Toolbar-DHcP_Jal.js.map → Toolbar-B2zhlyBz.js.map} +1 -1
- package/dist/Toolbar.js +1 -1
- package/dist/assets/icons/st/completion_date.svg +1 -0
- package/dist/assets/icons/st/gnav_dial_pad_active.svg +1 -0
- package/dist/assets/icons/st/gnav_dial_pad_disabled.svg +1 -0
- package/dist/assets/icons/st/gnav_dial_pad_inactive.svg +1 -0
- package/dist/assets/icons/st/gnav_home_active.svg +1 -0
- package/dist/assets/icons/st/gnav_home_inactive.svg +1 -0
- package/dist/assets/icons/st/gnav_legacy_search_active.svg +1 -0
- package/dist/assets/icons/st/gnav_legacy_search_inactive.svg +1 -0
- package/dist/assets/icons/st/gnav_production_work_queue_active.svg +1 -1
- package/dist/assets/icons/st/gnav_production_work_queue_inactive.svg +1 -1
- package/dist/assets/icons/st/in_progress.svg +1 -0
- package/dist/assets/icons/st/production_work_queue.svg +1 -1
- package/dist/assets/icons/st/to_do.svg +1 -0
- package/dist/assets/icons/st/waiting_for_reply.svg +1 -0
- package/dist/assets/icons/st/work_stage.svg +1 -0
- package/dist/assets/icons/st.ts +13 -1
- package/dist/beta.js +1 -1
- package/dist/index.js +8 -8
- package/package.json +1 -1
- package/dist/Menu-DUZqzpwg.js.map +0 -1
- package/dist/ProgressBar-BWN2yv1s.js.map +0 -1
package/dist/Toolbar.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { T as Toolbar, a as ToolbarButton, c as ToolbarButtonLink, b as ToolbarButtonToggle, e as ToolbarControlGroup, g as ToolbarElement, f as ToolbarSearchField, d as ToolbarSelect, T as default } from './Toolbar-
|
|
1
|
+
export { T as Toolbar, a as ToolbarButton, c as ToolbarButtonLink, b as ToolbarButtonToggle, e as ToolbarControlGroup, g as ToolbarElement, f as ToolbarSearchField, d as ToolbarSelect, T as default } from './Toolbar-B2zhlyBz.js';
|
|
2
2
|
//# sourceMappingURL=Toolbar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M16.629 3c.505 0 .914.4.914.893v.883a2.8 2.8 0 0 1 1.917.805c.506.503.79 1.18.79 1.885V18.31c0 .713-.29 1.398-.808 1.902a2.8 2.8 0 0 1-1.949.788H6.507a2.8 2.8 0 0 1-1.95-.788 2.66 2.66 0 0 1-.807-1.902V7.467c0-.714.29-1.398.808-1.903a2.8 2.8 0 0 1 1.949-.787h.002v-.883a.88.88 0 0 1 .278-.612.93.93 0 0 1 1.272 0c.171.161.27.38.279.612v.882h7.376v-.882c0-.493.41-.894.915-.894m-1.31 8.193a.79.79 0 0 0-1.038 0l-3.642 3.284-1.024-.922a.79.79 0 0 0-1.038 0l-.514.464a.618.618 0 0 0 0 .935l2.055 1.853a.79.79 0 0 0 1.038 0l4.677-4.214a.618.618 0 0 0 0-.937zm1.773-5.072H6.506c-.76 0-1.378.603-1.378 1.346v1.462H18.87V7.466c0-.735-.604-1.332-1.352-1.345l-.427-.008z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="m4.78 15.27 2.54-.29c.61-.07 1.21.14 1.64.57l1.84 1.84c2.83-1.44 5.15-3.75 6.59-6.59l-1.85-1.85a1.99 1.99 0 0 1-.57-1.64l.29-2.52c.12-1.01.97-1.77 1.99-1.77h1.73c1.13 0 2.07.94 2 2.07-.53 8.54-7.36 15.36-15.89 15.89-1.13.07-2.07-.87-2.07-2v-1.73c-.01-1.01.75-1.86 1.76-1.98"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="m18.05 13.83-1.43-1.43c.56-.73 1.05-1.5 1.47-2.32l-2.2-2.2c-.28-.28-.36-.67-.25-1.02.37-1.12.57-2.32.57-3.57 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 3.98-1.37 7.64-3.66 10.54m-2.82 2.81a16.9 16.9 0 0 1-10.52 3.65c-.55 0-1-.45-1-1V15.8c0-.55.45-1 1-1 1.24 0 2.45-.2 3.57-.57.1-.04.21-.05.31-.05.26 0 .51.1.71.29l2.2 2.2c.81-.42 1.58-.9 2.3-1.46L2.1 3.51 3.52 2.1 21.9 20.49l-1.41 1.41zm-6.92-.33c-.85.24-1.72.39-2.6.45v1.49c1.32-.09 2.59-.35 3.8-.75zm9.86-12.02c-.06.89-.21 1.76-.45 2.59l1.2 1.2c.41-1.2.67-2.47.76-3.79z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M17.46 5c-.06.89-.21 1.76-.45 2.59l1.2 1.2c.41-1.2.67-2.47.76-3.79zM7.6 17.02c-.85.24-1.72.39-2.6.45v1.49c1.32-.09 2.59-.35 3.8-.75zM16.5 3H20c.55 0 1 .45 1 1 0 9.39-7.61 17-17 17-.55 0-1-.45-1-1v-3.49c0-.55.45-1 1-1 1.24 0 2.45-.2 3.57-.57.1-.04.21-.05.31-.05.26 0 .51.1.71.29l2.2 2.2c2.83-1.45 5.15-3.76 6.59-6.59l-2.2-2.2c-.28-.28-.36-.67-.25-1.02.37-1.12.57-2.32.57-3.57 0-.55.45-1 1-1"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="m21.029 11.14-8.361-7.53c-.19-.17-.43-.261-.67-.261s-.48.09-.67.261l-8.361 7.53a.499.499 0 0 0 .33.87h1.7v7.12c0 .48.45.88 1 .88h12c.55 0 1-.4 1-.88v-7.12h1.701c.46 0 .68-.57.33-.87m-4.031 6.87h-3.001v-4h-4v4h-3v-7.8l4.98-4.49.02-.02L17 10.21z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M4.9 7.701H1.225a1.231 1.231 0 0 1 0-2.46H4.9a1.231 1.231 0 0 1 0 2.46m0 3.691H1.225a1.231 1.231 0 0 0 0 2.46H4.9a1.231 1.231 0 0 0 0-2.46m17.002 7.739-3.822-3.839a6.08 6.08 0 0 1-3.674 1.01c-2.904-.136-5.39-2.412-5.782-5.304a6.2 6.2 0 0 1 1.827-5.27 6.14 6.14 0 0 1 5.314-1.632c2.389.406 4.373 2.276 4.9 4.65a6.17 6.17 0 0 1-.857 4.8l3.834 3.85a1.229 1.229 0 0 1-1.74 1.735m-3.528-8.97c0-2.03-1.653-3.69-3.674-3.69s-3.675 1.66-3.675 3.69 1.653 3.692 3.675 3.692c2.02 0 3.674-1.661 3.674-3.691M1.225 20.005h9.8a1.231 1.231 0 0 0 0-2.46h-9.8a1.231 1.231 0 0 0 0 2.46"/><path fill-rule="evenodd" d="M23.652 19.14c.218-.22.33-.523.33-.865-.003-.34-.111-.638-.329-.856L19.79 13.53c.341-.49.601-1.03.77-1.603.167-.593.27-1.182.267-1.77-.006-1.697-.606-3.157-1.808-4.354-1.192-1.2-2.632-1.799-4.325-1.807Q12.144 4 10.372 5.79C9.17 6.987 8.57 8.446 8.575 10.145c-.007 1.69.604 3.147 1.798 4.356 1.19 1.19 2.633 1.8 4.333 1.795a6 6 0 0 0 1.752-.25 5.6 5.6 0 0 0 1.622-.788l3.86 3.877c.218.219.502.348.852.345.34 0 .623-.117.86-.34M13.494 6.403a.898.898 0 0 0 .514 1.721 1.903 1.903 0 0 1 2.37 1.284.898.898 0 0 0 1.724-.504 3.7 3.7 0 0 0-4.608-2.501" clip-rule="evenodd"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M4.9 7.697H1.225a1.231 1.231 0 0 1 0-2.46H4.9a1.231 1.231 0 0 1 0 2.46m0 3.69H1.225a1.231 1.231 0 0 0 0 2.461H4.9a1.231 1.231 0 0 0 0-2.46m17.002 7.74-3.822-3.84a6.08 6.08 0 0 1-3.674 1.01c-2.904-.136-5.39-2.412-5.782-5.303a6.2 6.2 0 0 1 1.827-5.27 6.13 6.13 0 0 1 5.314-1.632c2.389.406 4.373 2.276 4.9 4.65a6.17 6.17 0 0 1-.857 4.799l3.834 3.85a1.23 1.23 0 0 1-1.74 1.736m-3.528-8.97c0-2.03-1.653-3.69-3.674-3.69s-3.675 1.66-3.675 3.69 1.653 3.691 3.675 3.691c2.02 0 3.674-1.66 3.674-3.69M1.225 20h9.8a1.231 1.231 0 0 0 0-2.46h-9.8a1.231 1.231 0 0 0 0 2.46"/></svg>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M16.51 20.16H4.99c-.48 0-.96-.48-.96-.96V7.68c0-.58-.38-.96-.96-.96a.96.96 0 0 0-.96.96v12.48c0 1.06.86 1.92 1.92 1.92h12.48c.48 0 .96-.48.96-.96s-.48-.96-.96-.96"/><path fill-rule="evenodd" d="M19.39 1.88c1.61 0 2.92 1.31 2.92 2.92v11.52c0 1.61-1.31 2.92-2.92 2.92H7.87c-1.61 0-2.92-1.31-2.92-2.92V4.8c0-1.61 1.31-2.92 2.92-2.92zM8.03 13.106a.55.55 0 0 0-.175.435c0 .159.066.301.183.418l1.73 1.672a.6.6 0 0 0 .426.176.6.6 0 0 0 .427-.193l2.676-2.641-2.592-2.508zm5.091-7.774a2.7 2.7 0 0 0-1.889.477.56.56 0 0 0-.26.443.58.58 0 0 0 .185.477l1.647 1.587-1.263 1.288 2.592 2.507 1.262-1.287.025 2.156q.013.176.075.352c.05.108.118.209.201.292l.167.16a.58.58 0 0 0 .426.175.6.6 0 0 0 .427-.184l2.516-2.583a.6.6 0 0 0 .175-.426.6.6 0 0 0-.192-.426l-.16-.16a1.1 1.1 0 0 0-.308-.192 1 1 0 0 0-.343-.058l-2.173.033.835-.86a.55.55 0 0 0 .176-.427.6.6 0 0 0-.183-.426l-2.165-2.09a2.95 2.95 0 0 0-1.773-.828" clip-rule="evenodd"/></svg>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M19.39 19.24H7.87c-1.61 0-2.92-1.31-2.92-2.92V4.8c0-1.61 1.31-2.92 2.92-2.92h11.52c1.61 0 2.92 1.31 2.92 2.92v11.52c0 1.61-1.31 2.92-2.92 2.92M7.87 3.88c-.51 0-.92.41-.92.92v11.52c0 .51.41.92.92.92h11.52c.5 0 .92-.42.92-.92V4.8c0-.5-.42-.92-.92-.92z"/><path d="M16.51 20.16H4.99c-.48 0-.96-.48-.96-.96V7.68c0-.58-.38-.96-.96-.96a.96.96 0 0 0-.96.96v12.48c0 1.06.86 1.92 1.92 1.92h12.48c.48 0 .96-.48.96-.96s-.48-.96-.96-.96"/><path d="m10.62 15.614 2.677-2.642-2.592-2.507-2.675 2.641a.55.55 0 0 0-.176.435c0 .159.067.3.184.418l1.73 1.672a.6.6 0 0 0 .426.175.6.6 0 0 0 .427-.192m4.272-9.454a2.95 2.95 0 0 0-1.772-.828 2.7 2.7 0 0 0-1.889.476.56.56 0 0 0-.26.444.58.58 0 0 0 .185.476l1.646 1.588-1.262 1.287 2.591 2.508 1.262-1.287.025 2.156q.013.176.076.352.075.164.2.292l.168.159a.58.58 0 0 0 .426.176.6.6 0 0 0 .426-.184l2.516-2.583a.6.6 0 0 0 .176-.427.6.6 0 0 0-.193-.425l-.159-.16a1.1 1.1 0 0 0-.308-.192 1 1 0 0 0-.343-.059l-2.174.034.836-.86a.55.55 0 0 0 .176-.428.6.6 0 0 0-.184-.425z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M11.996 18.043q2.52 0 4.284-1.764 1.764-1.763 1.764-4.283T16.28 7.712c-.991-.991-2.167-1.57-3.528-1.722a.674.674 0 0 0-.756.664v5.342l-3.771 3.771a.67.67 0 0 0 .075 1.008q.643.482 1.386.798c.731.31 1.495.47 2.302.47zm0 4.032a10 10 0 0 1-3.93-.79 10.2 10.2 0 0 1-3.2-2.158 10.2 10.2 0 0 1-2.151-3.2c-.53-1.227-.79-2.537-.79-3.931s.26-2.705.79-3.931a10.3 10.3 0 0 1 2.15-3.2 10.2 10.2 0 0 1 3.2-2.15c1.227-.53 2.537-.79 3.931-.79s2.705.26 3.931.79a10.3 10.3 0 0 1 3.2 2.15c.907.907 1.621 1.974 2.159 3.2q.792 1.84.79 3.93a10 10 0 0 1-.79 3.932 10.2 10.2 0 0 1-2.159 3.2c-.907.907-1.974 1.62-3.2 2.158-1.226.53-2.537.79-3.93.79m0-2.016q3.377 0 5.72-2.343t2.343-5.72-2.343-5.72-5.72-2.344-5.72 2.344-2.343 5.72 2.343 5.72 5.72 2.343"/></svg>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M16.51 20.16H4.99c-.48 0-.96-.48-.96-.96V7.68c0-.58-.38-.96-.96-.96a.96.96 0 0 0-.96.96v12.48c0 1.06.86 1.92 1.92 1.92h12.48c.48 0 .96-.48.96-.96s-.48-.96-.96-.96"/><path fill-rule="evenodd" d="M19.39 1.88c1.61 0 2.92 1.31 2.92 2.92v11.52c0 1.61-1.31 2.92-2.92 2.92H7.87c-1.61 0-2.92-1.31-2.92-2.92V4.8c0-1.61 1.31-2.92 2.92-2.92zM8.03 13.106a.55.55 0 0 0-.175.435c0 .159.066.301.183.418l1.73 1.672a.6.6 0 0 0 .426.176.6.6 0 0 0 .427-.193l2.676-2.641-2.592-2.508zm5.091-7.774a2.7 2.7 0 0 0-1.889.477.56.56 0 0 0-.26.443.58.58 0 0 0 .185.477l1.647 1.587-1.263 1.288 2.592 2.507 1.262-1.287.025 2.156q.013.176.075.352c.05.108.118.209.201.292l.167.16a.58.58 0 0 0 .426.175.6.6 0 0 0 .427-.184l2.516-2.583a.6.6 0 0 0 .175-.426.6.6 0 0 0-.192-.426l-.16-.16a1.1 1.1 0 0 0-.308-.192 1 1 0 0 0-.343-.058l-2.173.033.835-.86a.55.55 0 0 0 .176-.427.6.6 0 0 0-.183-.426l-2.165-2.09a2.95 2.95 0 0 0-1.773-.828" clip-rule="evenodd"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M11.996 22.067a10 10 0 0 1-3.93-.79 10.2 10.2 0 0 1-3.198-2.157 10.2 10.2 0 0 1-2.15-3.2q-.79-1.838-.789-3.928c0-1.394.26-2.704.79-3.93a10.3 10.3 0 0 1 2.149-3.198 10.2 10.2 0 0 1 3.199-2.15c1.226-.529 2.535-.789 3.929-.789s2.704.26 3.93.79a10.3 10.3 0 0 1 3.198 2.149c.907.906 1.62 1.973 2.158 3.198.529 1.226.789 2.536.789 3.93q0 .68-.076 1.334a8 8 0 0 1-.251 1.285 3.4 3.4 0 0 0-.823-.68 3 3 0 0 0-1.024-.378c.05-.252.084-.504.117-.764.025-.26.042-.52.042-.789q0-3.375-2.342-5.718T11.996 3.94 6.278 6.282 3.936 12t2.342 5.718 5.718 2.342a8 8 0 0 0 4.61-1.436c.2.286.444.538.747.756.293.218.612.386.94.504a10.1 10.1 0 0 1-2.88 1.612 10 10 0 0 1-3.417.579zm7.304-3.418c-.529 0-.965-.184-1.335-.545a1.82 1.82 0 0 1-.545-1.335c0-.53.184-.966.545-1.335a1.82 1.82 0 0 1 1.335-.546c.53 0 .966.185 1.335.546.361.36.546.806.546 1.335s-.185.965-.546 1.335a1.82 1.82 0 0 1-1.335.546"/><path d="M10.947 7.559a1.05 1.05 0 1 1 2.099 0v3.998l2.395 2.396a1.05 1.05 0 0 1-1.484 1.484l-2.703-2.703a1.05 1.05 0 0 1-.307-.742z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M7 17h4q.424 0 .713-.288A.97.97 0 0 0 12 16a.97.97 0 0 0-.287-.713A.97.97 0 0 0 11 15H7a.97.97 0 0 0-.713.287A.97.97 0 0 0 6 16q0 .424.287.712Q6.576 17 7 17m3-4h4q.424 0 .713-.287A.97.97 0 0 0 15 12a.97.97 0 0 0-.287-.713A.97.97 0 0 0 14 11h-4a.97.97 0 0 0-.713.287A.97.97 0 0 0 9 12q0 .424.287.713Q9.576 13 10 13m3-4h4q.424 0 .712-.287A.97.97 0 0 0 18 8a.97.97 0 0 0-.288-.713A.97.97 0 0 0 17 7h-4a.97.97 0 0 0-.713.287A.97.97 0 0 0 12 8q0 .424.287.713Q12.576 9 13 9M5 21q-.824 0-1.412-.587A1.93 1.93 0 0 1 3 19V5q0-.824.587-1.412A1.93 1.93 0 0 1 5 3h14q.824 0 1.413.587Q21 4.176 21 5v14q0 .824-.587 1.413A1.93 1.93 0 0 1 19 21z"/></svg>
|
package/dist/assets/icons/st.ts
CHANGED
|
@@ -18,6 +18,7 @@ export { default as icon_call_outbound } from "./st/call_outbound.svg";
|
|
|
18
18
|
export { default as icon_collect_payment } from "./st/collect_payment.svg";
|
|
19
19
|
export { default as icon_column_editor } from "./st/column_editor.svg";
|
|
20
20
|
export { default as icon_commercial } from "./st/commercial.svg";
|
|
21
|
+
export { default as icon_completion_date } from "./st/completion_date.svg";
|
|
21
22
|
export { default as icon_create_event } from "./st/create_event.svg";
|
|
22
23
|
export { default as icon_create_task } from "./st/create_task.svg";
|
|
23
24
|
export { default as icon_customer } from "./st/customer.svg";
|
|
@@ -51,7 +52,10 @@ export { default as icon_gnav_chat_active } from "./st/gnav_chat_active.svg";
|
|
|
51
52
|
export { default as icon_gnav_chat_inactive } from "./st/gnav_chat_inactive.svg";
|
|
52
53
|
export { default as icon_gnav_dashboard_active } from "./st/gnav_dashboard_active.svg";
|
|
53
54
|
export { default as icon_gnav_dashboard_inactive } from "./st/gnav_dashboard_inactive.svg";
|
|
55
|
+
export { default as icon_gnav_dial_pad_active } from "./st/gnav_dial_pad_active.svg";
|
|
56
|
+
export { default as icon_gnav_dial_pad_disabled } from "./st/gnav_dial_pad_disabled.svg";
|
|
54
57
|
export { default as icon_gnav_dial_pad_filled } from "./st/gnav_dial_pad_filled.svg";
|
|
58
|
+
export { default as icon_gnav_dial_pad_inactive } from "./st/gnav_dial_pad_inactive.svg";
|
|
55
59
|
export { default as icon_gnav_dial_pad_inactive_filled } from "./st/gnav_dial_pad_inactive_filled.svg";
|
|
56
60
|
export { default as icon_gnav_dial_pad_inactive_outline } from "./st/gnav_dial_pad_inactive_outline.svg";
|
|
57
61
|
export { default as icon_gnav_dial_pad_outline } from "./st/gnav_dial_pad_outline.svg";
|
|
@@ -65,13 +69,17 @@ export { default as icon_gnav_follow_up_active } from "./st/gnav_follow_up_activ
|
|
|
65
69
|
export { default as icon_gnav_follow_up_inactive } from "./st/gnav_follow_up_inactive.svg";
|
|
66
70
|
export { default as icon_gnav_help_active } from "./st/gnav_help_active.svg";
|
|
67
71
|
export { default as icon_gnav_help_inactive } from "./st/gnav_help_inactive.svg";
|
|
72
|
+
export { default as icon_gnav_home_active } from "./st/gnav_home_active.svg";
|
|
68
73
|
export { default as icon_gnav_home_filled } from "./st/gnav_home_filled.svg";
|
|
74
|
+
export { default as icon_gnav_home_inactive } from "./st/gnav_home_inactive.svg";
|
|
69
75
|
export { default as icon_gnav_home_outline } from "./st/gnav_home_outline.svg";
|
|
70
76
|
export { default as icon_gnav_insurance_work_queue_active } from "./st/gnav_insurance_work_queue_active.svg";
|
|
71
77
|
export { default as icon_gnav_insurance_work_queue_inactive } from "./st/gnav_insurance_work_queue_inactive.svg";
|
|
72
78
|
export { default as icon_gnav_inventory_active } from "./st/gnav_inventory_active.svg";
|
|
73
79
|
export { default as icon_gnav_inventory_inactive } from "./st/gnav_inventory_inactive.svg";
|
|
80
|
+
export { default as icon_gnav_legacy_search_active } from "./st/gnav_legacy_search_active.svg";
|
|
74
81
|
export { default as icon_gnav_legacy_search_filled } from "./st/gnav_legacy_search_filled.svg";
|
|
82
|
+
export { default as icon_gnav_legacy_search_inactive } from "./st/gnav_legacy_search_inactive.svg";
|
|
75
83
|
export { default as icon_gnav_legacy_search_outline } from "./st/gnav_legacy_search_outline.svg";
|
|
76
84
|
export { default as icon_gnav_marketing_active } from "./st/gnav_marketing_active.svg";
|
|
77
85
|
export { default as icon_gnav_marketing_inactive } from "./st/gnav_marketing_inactive.svg";
|
|
@@ -97,6 +105,7 @@ export { default as icon_gnav_tasks_active } from "./st/gnav_tasks_active.svg";
|
|
|
97
105
|
export { default as icon_gnav_tasks_inactive } from "./st/gnav_tasks_inactive.svg";
|
|
98
106
|
export { default as icon_gnav_titan_advisor_active } from "./st/gnav_titan_advisor_active.svg";
|
|
99
107
|
export { default as icon_gnav_titan_advisor_inactive } from "./st/gnav_titan_advisor_inactive.svg";
|
|
108
|
+
export { default as icon_in_progress } from "./st/in_progress.svg";
|
|
100
109
|
export { default as icon_installed_equipment } from "./st/installed_equipment.svg";
|
|
101
110
|
export { default as icon_insurance_work_queue } from "./st/insurance_work_queue.svg";
|
|
102
111
|
export { default as icon_invoice } from "./st/invoice.svg";
|
|
@@ -144,10 +153,13 @@ export { default as icon_subtasks } from "./st/subtasks.svg";
|
|
|
144
153
|
export { default as icon_text_inbound } from "./st/text_inbound.svg";
|
|
145
154
|
export { default as icon_text_outbound } from "./st/text_outbound.svg";
|
|
146
155
|
export { default as icon_titan_intelligence } from "./st/titan_intelligence.svg";
|
|
156
|
+
export { default as icon_to_do } from "./st/to_do.svg";
|
|
147
157
|
export { default as icon_unpin } from "./st/unpin.svg";
|
|
148
158
|
export { default as icon_upsell } from "./st/upsell.svg";
|
|
149
159
|
export { default as icon_view_kanban_filled } from "./st/view_kanban_filled.svg";
|
|
150
160
|
export { default as icon_view_kanban_outline } from "./st/view_kanban_outline.svg";
|
|
151
161
|
export { default as icon_view_timesheet } from "./st/view_timesheet.svg";
|
|
152
162
|
export { default as icon_virtual_agent } from "./st/virtual_agent.svg";
|
|
153
|
-
export { default as
|
|
163
|
+
export { default as icon_waiting_for_reply } from "./st/waiting_for_reply.svg";
|
|
164
|
+
export { default as icon_web_chat } from "./st/web_chat.svg";
|
|
165
|
+
export { default as icon_work_stage } from "./st/work_stage.svg";
|
package/dist/beta.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { T as Toolbar, a as ToolbarButton, c as ToolbarButtonLink, b as ToolbarButtonToggle, e as ToolbarControlGroup, g as ToolbarElement, f as ToolbarSearchField, d as ToolbarSelect } from './Toolbar-
|
|
1
|
+
export { T as Toolbar, a as ToolbarButton, c as ToolbarButtonLink, b as ToolbarButtonToggle, e as ToolbarControlGroup, g as ToolbarElement, f as ToolbarSearchField, d as ToolbarSelect } from './Toolbar-B2zhlyBz.js';
|
|
2
2
|
//# sourceMappingURL=beta.js.map
|
package/dist/index.js
CHANGED
|
@@ -22,10 +22,10 @@ export { D as DateFieldSingle } from './DateFieldSingle-B70fKeo-.js';
|
|
|
22
22
|
export { D as DateFieldYearless } from './DateFieldYearless-BmeKGaDc.js';
|
|
23
23
|
export { D as DaysOfTheWeek } from './DaysOfTheWeek-CvWu1j6-.js';
|
|
24
24
|
export { D as Details, b as DetailsContent, a as DetailsSummary } from './Details-CF8DImjw.js';
|
|
25
|
-
export { D as Dialog, a as DialogCancelButton, b as DialogContent, c as DialogFooter, d as DialogHeader } from './Dialog-
|
|
25
|
+
export { D as Dialog, a as DialogCancelButton, b as DialogContent, c as DialogFooter, d as DialogHeader } from './Dialog-D3aUlrNr.js';
|
|
26
26
|
export { D as Divider } from './Divider-DJe8kLf2.js';
|
|
27
27
|
export { D as Dnd } from './index-DrM3iid4.js';
|
|
28
|
-
export { D as Drawer, a as DrawerCancelButton, d as DrawerContent, b as DrawerFooter, c as DrawerHeader } from './Drawer-
|
|
28
|
+
export { D as Drawer, a as DrawerCancelButton, d as DrawerContent, b as DrawerFooter, c as DrawerHeader } from './Drawer-C1KtNoLu.js';
|
|
29
29
|
export { E as EditCard } from './EditCard-CZzL0nx7.js';
|
|
30
30
|
export { F as FieldLabel } from './FieldLabel-Bgl3iu13.js';
|
|
31
31
|
export { F as FieldMessage } from './FieldMessage-B7uQ8vmr.js';
|
|
@@ -39,14 +39,14 @@ export { L as LinkButton } from './LinkButton-2lXfrVoU.js';
|
|
|
39
39
|
import { L as Listbox } from './Listbox-DxGx630W.js';
|
|
40
40
|
export { a as ListboxOption, b as ListboxOptionGroup } from './Listbox-DxGx630W.js';
|
|
41
41
|
export { L as ListView, a as ListViewOption, b as ListViewOptionCell } from './ListView-C-cVQZHp.js';
|
|
42
|
-
export { M as Menu, a as MenuItem } from './Menu-
|
|
42
|
+
export { M as Menu, a as MenuItem } from './Menu-BlHuE7TM.js';
|
|
43
43
|
export { N as NumberField } from './NumberField-DWPAy1eG.js';
|
|
44
44
|
export { Overflow, OverflowText } from './Overflow.js';
|
|
45
|
-
export { P as Page } from './Page-
|
|
46
|
-
export { P as Pagination } from './Pagination-
|
|
45
|
+
export { P as Page } from './Page-DRSFpDAb.js';
|
|
46
|
+
export { P as Pagination } from './Pagination-UGCNBKo0.js';
|
|
47
47
|
import { P as Popover } from './Popover-Du2PBdp1.js';
|
|
48
48
|
export { a as PopoverButton, b as PopoverClose, c as PopoverContent, d as PopoverTrigger } from './Popover-Du2PBdp1.js';
|
|
49
|
-
export { P as ProgressBar } from './ProgressBar-
|
|
49
|
+
export { P as ProgressBar } from './ProgressBar-BwM_e5cP.js';
|
|
50
50
|
export { R as Radio } from './Radio-C5riI-do.js';
|
|
51
51
|
export { R as RadioGroup } from './RadioGroup-B7O06pVu.js';
|
|
52
52
|
export { S as SearchField } from './SearchField-CbwGErC4.js';
|
|
@@ -64,8 +64,8 @@ export { T as Text } from './Text-BqvcbXyp.js';
|
|
|
64
64
|
export { T as Textarea } from './Textarea-B2-6m291.js';
|
|
65
65
|
export { T as TextField } from './TextField-uCHgwO5F.js';
|
|
66
66
|
export { T as TimeField } from './TimeField-CGg_yTaJ.js';
|
|
67
|
-
export { T as Toaster } from './Toaster-
|
|
68
|
-
export { t as toast } from './Toaster-
|
|
67
|
+
export { T as Toaster } from './Toaster-CH5FTmGv.js';
|
|
68
|
+
export { t as toast } from './Toaster-BKyvW8J8.js';
|
|
69
69
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
70
70
|
import { useContext, createContext, useId, useRef, useCallback, useEffect, forwardRef, useState, useMemo } from 'react';
|
|
71
71
|
import { c as cx } from './index-tZvMCc77.js';
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Menu-DUZqzpwg.js","sources":["../../hammer-icon/mdi/round/arrow_drop_up.svg","../src/components/Menu/internal/MenuContext.ts","../../hammer-icon/mdi/round/navigate_next.svg","../src/components/Menu/internal/MenuLegacy/MenuLegacyContext.ts","../src/components/Menu/internal/MenuLegacy/MenuLegacyItem.tsx","../src/components/Menu/internal/MenuLegacy/MenuLegacy.tsx","../src/components/Menu/MenuItem.tsx","../src/components/Menu/internal/MenuNested.tsx","../src/components/Menu/Menu.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgArrowDropUp = (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: \"M8.71 12.29 11.3 9.7a.996.996 0 0 1 1.41 0l2.59 2.59c.63.63.18 1.71-.71 1.71H9.41c-.89 0-1.33-1.08-.7-1.71z\" }));\nexport default SvgArrowDropUp;\n","import { createContext } from \"react\";\n\nimport { MenuProps } from \"../Menu\";\n\n/**\n * Context props for Menu components\n */\nexport type MenuContextProps = {\n /**\n * Function to close the root menu\n */\n closeRootMenu: () => void;\n /**\n * Whether auto height is disabled\n */\n disableAutoHeight: MenuProps[\"disableAutoHeight\"];\n};\nexport const MenuContext = createContext<MenuContextProps | null>(null);\n","import * as React from \"react\";\nconst SvgNavigateNext = (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: \"M9.31 6.71a.996.996 0 0 0 0 1.41L13.19 12l-3.88 3.88a.996.996 0 1 0 1.41 1.41l4.59-4.59a.996.996 0 0 0 0-1.41L10.72 6.7c-.38-.38-1.02-.38-1.41.01z\" }));\nexport default SvgNavigateNext;\n","import { Dispatch, HTMLProps, SetStateAction, createContext } from \"react\";\n\nimport { PopoverControlProps } from \"./MenuLegacy\";\n\nexport const MenuLegacyContext = createContext<\n {\n getItemProps: (\n userProps?: HTMLProps<HTMLElement>,\n ) => Record<string, unknown>;\n activeIndex: number | null;\n setActiveIndex?: Dispatch<SetStateAction<number | null>>;\n setHasFocusInside?: Dispatch<SetStateAction<boolean>>;\n isOpen: boolean;\n } & PopoverControlProps\n>({\n getItemProps: () => ({}),\n activeIndex: null,\n isOpen: false,\n});\n","import { useFloatingTree, useListItem } from \"@floating-ui/react\";\nimport {\n ButtonHTMLAttributes,\n MouseEvent,\n forwardRef,\n useContext,\n FocusEvent,\n ComponentPropsWithoutRef,\n ReactNode,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { childrenToString } from \"../../../../internal/functions\";\nimport { Icon, IconProps } from \"../../../Icon\";\nimport { useMergeRefs } from \"../../../../hooks\";\n\nimport { MenuLegacyContext } from \"./MenuLegacyContext\";\n\nimport styles from \"./MenuLegacy.module.scss\";\n\nexport type MenuLegacyItemProps = {\n icon?: IconProps[\"svg\"];\n label: ReactNode;\n disabled?: boolean;\n} & ComponentPropsWithoutRef<\"button\">;\n\nexport const MenuLegacyItem = forwardRef<\n HTMLButtonElement,\n MenuLegacyItemProps & ButtonHTMLAttributes<HTMLButtonElement>\n>(({ label, disabled, icon, className, ...props }, forwardedRef) => {\n const MenuLegacy = useContext(MenuLegacyContext);\n const item = useListItem({\n label: disabled ? null : childrenToString(label),\n });\n const tree = useFloatingTree();\n const isActive = item.index === MenuLegacy.activeIndex;\n const itemCx = cx([styles[\"item\"]], className);\n return (\n <button\n {...props}\n ref={useMergeRefs([item.ref, forwardedRef])}\n type=\"button\"\n role=\"menuitem\"\n data-anv=\"menu-item\"\n className={itemCx}\n tabIndex={isActive ? 0 : -1}\n disabled={disabled}\n {...MenuLegacy.getItemProps({\n onClick(event: MouseEvent<HTMLButtonElement>) {\n props.onClick?.(event);\n tree?.events.emit(\"click\");\n },\n onFocus(event: FocusEvent<HTMLButtonElement>) {\n props.onFocus?.(event);\n MenuLegacy.setHasFocusInside?.(true);\n },\n })}\n >\n {icon ? <Icon inherit aria-hidden svg={icon} /> : null}\n {label}\n </button>\n );\n});\n\nMenuLegacyItem.displayName = \"MenuLegacyItem\";\n","import {\n autoUpdate,\n flip,\n FloatingFocusManager,\n FloatingList,\n FloatingNode,\n FloatingPortal,\n FloatingTree,\n offset,\n shift,\n size,\n useHover,\n safePolygon,\n useClick,\n useDismiss,\n useFloating,\n useFloatingNodeId,\n useFloatingParentNodeId,\n useFloatingTree,\n useInteractions,\n useListItem,\n useListNavigation,\n useRole,\n useTypeahead,\n limitShift,\n Placement,\n} from \"@floating-ui/react\";\nimport {\n forwardRef,\n HTMLProps,\n useContext,\n useEffect,\n useRef,\n useState,\n FocusEvent,\n MouseEvent,\n AriaAttributes,\n ReactElement,\n useMemo,\n} from \"react\";\nimport cx from \"classnames\";\nimport Next from \"@servicetitan/hammer-icon/mdi/round/navigate_next.svg\";\nimport Up from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_up.svg\";\nimport Down from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_down.svg\";\n\nimport { Button, ButtonProps } from \"../../../Button\";\nimport { DialogContext } from \"../../../Dialog/internal/DialogContext\";\nimport { DrawerContext } from \"../../../Drawer/internal/DrawerContext\";\nimport { Icon, IconProps } from \"../../../Icon\";\nimport { ThemeProvider, PortalProviderContext } from \"../../../../providers\";\nimport { ThemeProviderContext } from \"../../../../providers/ThemeProvider/internal/ThemeProviderContext\";\nimport { useMergeRefs } from \"../../../../hooks\";\n\nimport { MenuLegacyItem } from \"./MenuLegacyItem\";\nimport { MenuLegacyContext } from \"./MenuLegacyContext\";\n\nimport styles from \"./MenuLegacy.module.scss\";\n\nexport type PopoverControlProps = {\n disableAutoHeight?: boolean;\n root?: HTMLElement | React.MutableRefObject<HTMLElement | null> | null;\n placement?: \"bottom-start\" | \"top-start\" | \"bottom-end\" | \"top-end\";\n};\n\ntype TriggerReturnProps = {\n \"data-open\"?: boolean;\n \"data-focus-inside\"?: boolean;\n \"aria-controls\"?: AriaAttributes[\"aria-controls\"];\n \"aria-expanded\"?: AriaAttributes[\"aria-expanded\"];\n \"aria-haspopup\"?: AriaAttributes[\"aria-haspopup\"];\n id?: string;\n onClick?: () => void;\n onFocus?: () => void;\n onKeyDown?: () => void;\n onKeyUp?: () => void;\n onMouseDown?: () => void;\n onPointerDown?: () => void;\n ref?: ((instance: HTMLElement | null) => void) | null;\n};\n\ntype DefaultTriggerProps = {\n trigger?: never;\n open?: boolean;\n icon?: IconProps[\"svg\"];\n} & (\n | {\n label: string;\n }\n | {\n \"aria-label\": string;\n }\n | {\n \"aria-labellbedby\": string;\n }\n) &\n Omit<ButtonProps, \"icon\"> &\n PopoverControlProps;\n\ntype CustomTriggerProps = {\n trigger: (props: TriggerReturnProps) => ReactElement;\n icon?: IconProps[\"svg\"];\n label?: never;\n open?: boolean;\n // This is to allow any type of element to be used as a custom trigger element\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n} & Omit<HTMLProps<any>, \"ref\"> &\n PopoverControlProps;\n\nexport type MenuLegacyProps = DefaultTriggerProps | CustomTriggerProps;\n\nexport const MenuLegacyComponent = forwardRef<HTMLElement, MenuLegacyProps>(\n (\n {\n children,\n disableAutoHeight,\n open,\n icon,\n root,\n placement = \"bottom-start\",\n ...props\n },\n forwardedRef,\n ) => {\n const [isOpen, setIsOpen] = useState(!!open || false);\n const [hasFocusInside, setHasFocusInside] = useState(false);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n\n const scrollRef = useRef<HTMLDivElement>(null);\n const [scrollTop, setScrollTop] = useState(0);\n const [menuHeight, setMenuLegacyHeight] = useState<number | null>(null);\n const [arrowStart, setArrowStart] = useState(false);\n const [arrowEnd, setArrowEnd] = useState(false);\n\n const elementsRef = useRef<Array<HTMLButtonElement | null>>([]);\n const labelsRef = useRef<Array<string | null>>([]);\n const parent = useContext(MenuLegacyContext);\n const { root: portalRoot } = useContext(PortalProviderContext);\n\n const tree = useFloatingTree();\n const nodeId = useFloatingNodeId();\n const parentId = useFloatingParentNodeId();\n const item = useListItem();\n\n const isNested = parentId != null;\n\n const { theme, mode = \"light\" } = useContext(ThemeProviderContext);\n\n const dialogContext = useContext(DialogContext);\n const drawerContext = useContext(DrawerContext);\n\n const fallbackArr = () => {\n if (!isNested) {\n if (placement.startsWith(\"top\")) {\n return disableAutoHeight\n ? placement\n : [\"top-start\", \"top-end\", \"bottom-start\", \"bottom-end\"];\n }\n return disableAutoHeight\n ? placement\n : [\"bottom-start\", \"bottom-end\", \"top-start\", \"top-end\"];\n }\n\n return parent.disableAutoHeight\n ? [\"right-start\"]\n : [\"right-start\", \"right-end\", \"left-start\", \"left-end\"];\n };\n\n const handleIsOpenChange = (internalOpen: boolean) => {\n if (typeof open === \"boolean\") {\n setIsOpen(open);\n return;\n }\n setIsOpen(internalOpen);\n };\n\n const { floatingStyles, refs, context } = useFloating<HTMLButtonElement>({\n nodeId,\n open: isOpen,\n onOpenChange: handleIsOpenChange,\n placement: isNested ? \"right-start\" : placement,\n middleware: [\n offset({\n mainAxis: isNested ? 0 : 4,\n alignmentAxis: isNested ? -4 : 0,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n }),\n shift({\n mainAxis: !parent.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !parent.disableAutoHeight,\n }),\n }),\n size({\n padding: 8,\n apply({ availableWidth, availableHeight, elements }) {\n if (disableAutoHeight ?? parent.disableAutoHeight) return;\n setMenuLegacyHeight(availableHeight);\n Object.assign(elements.floating.style, {\n maxWidth: `${availableWidth}px`,\n maxHeight: `${availableHeight}px`,\n });\n },\n }),\n ],\n whileElementsMounted: autoUpdate,\n });\n const [hoverEnabled, setHoverEnabled] = useState(false);\n const hover = useHover(context, {\n enabled: hoverEnabled,\n delay: { open: 75 },\n handleClose: safePolygon({ blockPointerEvents: true }),\n });\n const click = useClick(context, {\n event: \"mousedown\",\n toggle: !isNested,\n ignoreMouse: isNested,\n });\n const role = useRole(context, { role: \"menu\" });\n const dismiss = useDismiss(context, { bubbles: true });\n const listNavigation = useListNavigation(context, {\n listRef: elementsRef,\n activeIndex,\n nested: isNested,\n onNavigate: setActiveIndex,\n });\n const typeahead = useTypeahead(context, {\n listRef: labelsRef,\n onMatch: isOpen ? setActiveIndex : undefined,\n activeIndex,\n });\n\n const { getReferenceProps, getFloatingProps, getItemProps } =\n useInteractions([hover, click, role, dismiss, listNavigation, typeahead]);\n\n // Event emitter allows you to communicate across tree components.\n // This effect closes all menus when an item gets clicked anywhere\n // in the tree.\n useEffect(() => {\n if (!tree) return;\n\n function handleTreeClick() {\n setIsOpen(!!open || false);\n }\n\n function onSubMenuLegacyOpen(event: {\n nodeId: string;\n parentId: string;\n }) {\n if (event.nodeId === nodeId || event.parentId !== parentId) {\n return;\n }\n setIsOpen(!!open || false);\n }\n\n tree.events.on(\"click\", handleTreeClick);\n tree.events.on(\"menuopen\", onSubMenuLegacyOpen);\n\n return () => {\n tree.events.off(\"click\", handleTreeClick);\n tree.events.off(\"menuopen\", onSubMenuLegacyOpen);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tree, nodeId, parentId]);\n\n useEffect(() => {\n if (disableAutoHeight ?? parent.disableAutoHeight) return;\n if (!isOpen) {\n setMenuLegacyHeight(null);\n return;\n }\n setTimeout(() => {\n if (!scrollRef.current || !refs.floating.current) return;\n setMenuLegacyHeight(refs.floating.current.clientHeight);\n const isOverflow =\n scrollRef.current.scrollHeight > refs.floating.current.clientHeight;\n if (!isOverflow) return;\n const showTop = scrollRef.current.scrollTop > 0;\n const showBottom =\n scrollRef.current.scrollHeight -\n refs.floating.current.clientHeight -\n scrollTop -\n 16 >\n 0;\n setArrowStart(showTop);\n setArrowEnd(showBottom);\n }, 0);\n }, [\n disableAutoHeight,\n isOpen,\n parent.disableAutoHeight,\n refs.floating,\n scrollTop,\n ]);\n\n useEffect(() => {\n if (!isOpen || !tree) return;\n tree.events.emit(\"menuopen\", { parentId, nodeId });\n }, [tree, isOpen, nodeId, parentId]);\n\n const menuComponentCX = cx({\n [styles[\"nested-menu\"]]: isNested,\n [styles[\"item\"]]: !isNested,\n });\n\n const menuRefs = useMergeRefs([refs.setReference, item.ref, forwardedRef]);\n\n const triggerProps: TriggerReturnProps = {\n \"data-open\": isOpen,\n \"data-focus-inside\": hasFocusInside,\n ref: menuRefs,\n ...getReferenceProps(\n parent.getItemProps({\n ...props,\n // This is to allow any type of element to be used as a custom trigger element\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onFocus(event: FocusEvent<any>) {\n props.onFocus?.(event);\n setHasFocusInside(false);\n parent.setHasFocusInside?.(true);\n },\n // This is to allow any type of element to be used as a custom trigger element\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as HTMLProps<any>),\n ),\n };\n\n const value = useMemo(\n () => ({\n activeIndex,\n setActiveIndex,\n getItemProps,\n setHasFocusInside,\n isOpen,\n disableAutoHeight: disableAutoHeight ?? parent.disableAutoHeight,\n }),\n [\n activeIndex,\n disableAutoHeight,\n getItemProps,\n isOpen,\n parent.disableAutoHeight,\n ],\n );\n\n return (\n <FloatingNode id={nodeId}>\n {isNested ? (\n <button\n ref={menuRefs}\n tabIndex={parent.activeIndex === item.index ? 0 : -1}\n role=\"menuitem\"\n data-anv=\"menu-item\"\n data-open={isOpen ? \"\" : undefined}\n data-nested=\"\"\n data-focus-inside={hasFocusInside ? \"\" : undefined}\n className={menuComponentCX}\n {...getReferenceProps(\n parent.getItemProps({\n ...props,\n onFocus(event: FocusEvent<HTMLButtonElement>) {\n props.onFocus?.(event);\n setHasFocusInside(false);\n parent.setHasFocusInside?.(true);\n },\n onMouseEnter: () => setHoverEnabled(true),\n } as HTMLProps<HTMLButtonElement>),\n )}\n >\n {icon ? <Icon inherit aria-hidden svg={icon} /> : null}\n {\"label\" in props && props.label}\n <div style={{ flexGrow: 1 }} />\n <Icon aria-hidden svg={Next} />\n </button>\n ) : \"trigger\" in props ? (\n props.trigger?.(triggerProps)\n ) : (\n <Button\n {...(props as ButtonProps)}\n {...(triggerProps as DefaultTriggerProps)}\n {...getReferenceProps({\n onFocus: (event) => props.onFocus?.(event),\n } as HTMLProps<HTMLButtonElement>)}\n icon={icon}\n data-anv=\"menu\"\n >\n {\"label\" in props && props.label}\n </Button>\n )}\n\n <MenuLegacyContext.Provider value={value}>\n <FloatingList elementsRef={elementsRef} labelsRef={labelsRef}>\n {isOpen &&\n (dialogContext == null ||\n dialogContext?.ref?.current != null) && (\n <FloatingPortal\n root={\n root ??\n dialogContext?.ref?.current ??\n drawerContext?.ref?.current ??\n portalRoot\n }\n >\n <FloatingFocusManager\n context={context}\n modal={false}\n initialFocus={isNested ? -1 : 0}\n returnFocus={!isNested}\n >\n <ThemeProvider theme={theme} mode={mode}>\n <div\n ref={refs.setFloating}\n className={styles[\"menu\"]}\n style={floatingStyles}\n {...getFloatingProps({\n onMouseEnter: () => {\n setHoverEnabled(false);\n },\n onKeyDown: (e) => {\n if (\n e.code === \"ArrowLeft\" ||\n e.code === \"ArrowRight\"\n ) {\n e.stopPropagation();\n }\n },\n })}\n >\n {arrowStart && (\n <div className={styles[\"arrow-up\"]} aria-hidden>\n <Icon\n svg={Up}\n size=\"xlarge\"\n className={styles[\"arrow-icon\"]}\n />\n </div>\n )}\n <div\n ref={scrollRef}\n className={styles[\"scroll\"]}\n style={{\n position: \"relative\",\n maxHeight: menuHeight ?? \"inherit\",\n }}\n onScroll={(e: MouseEvent<HTMLDivElement>) =>\n setScrollTop(e.currentTarget.scrollTop)\n }\n >\n {children}\n </div>\n {arrowEnd && (\n <div className={styles[\"arrow-down\"]} aria-hidden>\n <Icon\n svg={Down}\n size=\"xlarge\"\n className={styles[\"arrow-icon\"]}\n />\n </div>\n )}\n </div>\n </ThemeProvider>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </FloatingList>\n </MenuLegacyContext.Provider>\n </FloatingNode>\n );\n },\n);\n\nMenuLegacyComponent.displayName = \"MenuLegacyComponent\";\n\nconst MenuLegacyElement = forwardRef<HTMLElement, MenuLegacyProps>(\n (props, ref) => {\n const parentId = useFloatingParentNodeId();\n\n if (parentId === null) {\n return (\n <FloatingTree>\n <MenuLegacyComponent {...props} ref={ref} />\n </FloatingTree>\n );\n }\n\n return <MenuLegacyComponent {...props} ref={ref} />;\n },\n);\n\nMenuLegacyElement.displayName = \"MenuLegacy\";\n\nexport const MenuLegacy = Object.assign(MenuLegacyElement, {\n Item: MenuLegacyItem,\n});\n","import {\n ButtonHTMLAttributes,\n forwardRef,\n useContext,\n ComponentPropsWithoutRef,\n ReactNode,\n MouseEvent,\n useId,\n useRef,\n useState,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { childrenToString, supportsPopover } from \"../../internal/functions\";\nimport { DataTrackingId } from \"../../types\";\nimport { Icon, IconProps } from \"../Icon\";\nimport { MenuContext } from \"./internal/MenuContext\";\nimport { useMergeRefs, useTrackingId } from \"../../hooks\";\n\nimport { MenuLegacyItem } from \"./internal/MenuLegacy\";\n\nimport styles from \"./Menu.module.scss\";\n\n/**\n * Props for the MenuItem component\n * @extends ComponentPropsWithoutRef<\"button\">\n */\nexport type MenuItemProps = {\n /**\n * Icon to display next to the menu item label\n */\n icon?: IconProps[\"svg\"];\n /**\n * The label text or content for the menu item\n */\n label: ReactNode;\n /**\n * Whether the menu item is disabled\n * @default false\n */\n disabled?: boolean;\n} & ComponentPropsWithoutRef<\"button\"> &\n DataTrackingId;\n\n/**\n * MenuItem component for individual menu options within a Menu.\n *\n * Features:\n * - Supports icons and labels\n * - Keyboard navigation support\n * - Disabled state handling\n * - Automatic menu closing on selection\n * - Fully accessible with proper ARIA attributes\n * - Focus management and tab index handling\n * - Click and mouse enter event handling\n * - Legacy popover support with fallback\n *\n * @example\n * <MenuItem\n * label=\"Edit Profile\"\n * icon={EditIcon}\n * onClick={() => console.log('Edit profile clicked')}\n * />\n */\nexport const MenuItem = forwardRef<\n HTMLButtonElement,\n MenuItemProps & ButtonHTMLAttributes<HTMLButtonElement>\n>((props, ref) => {\n const {\n label,\n disabled,\n icon,\n className,\n onClick,\n onMouseEnter,\n id: idProp,\n ...rest\n } = props;\n const menuContext = useContext(MenuContext);\n const uid = useId();\n const buttonRef = useRef<HTMLButtonElement>(null);\n const combinedRef = useMergeRefs([buttonRef, ref]);\n const [tabIndex, setTabIndex] = useState(-1);\n const itemCx = cx([styles[\"item\"]], className);\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n onClick?.(e);\n menuContext?.closeRootMenu();\n };\n const onMouseEnterHandler = (e: MouseEvent<HTMLButtonElement>) => {\n onMouseEnter?.(e);\n buttonRef.current?.focus();\n };\n\n const onFocusHandler = () => {\n setTabIndex(0);\n };\n const onBlurHandler = () => {\n setTabIndex(-1);\n };\n\n const data = {\n label: childrenToString(props.label),\n };\n\n const trackingId = useTrackingId({\n name: \"MenuItem\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n if (!supportsPopover())\n return (\n <MenuLegacyItem data-tracking-id={trackingId} {...props} ref={ref} />\n );\n\n return (\n <button\n data-tracking-id={trackingId}\n {...rest}\n ref={combinedRef}\n type=\"button\"\n role=\"menuitem\"\n data-anv=\"menu-item\"\n id={idProp ?? `menuitem-${uid.replace(/:/g, \"\")}`}\n className={itemCx}\n tabIndex={tabIndex}\n aria-disabled={disabled}\n onClick={onClickHandler}\n onMouseEnter={onMouseEnterHandler}\n onFocus={onFocusHandler}\n onBlur={onBlurHandler}\n >\n {icon ? <Icon inherit aria-hidden svg={icon} /> : null}\n {label}\n </button>\n );\n});\n\nMenuItem.displayName = \"MenuItem\";\n","import {\n Placement,\n size,\n flip,\n limitShift,\n offset,\n shift,\n computePosition,\n autoUpdate,\n} from \"@floating-ui/react\";\nimport {\n ComponentPropsWithoutRef,\n useEffect,\n useId,\n useRef,\n useState,\n useLayoutEffect,\n useCallback,\n useContext,\n MouseEvent,\n KeyboardEvent,\n} from \"react\";\nimport cx from \"classnames\";\nimport Next from \"@servicetitan/hammer-icon/mdi/round/navigate_next.svg\";\nimport Up from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_up.svg\";\nimport Down from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_down.svg\";\n\nimport {\n getActiveElement,\n safeHidePopover,\n safeShowPopover,\n} from \"../../../internal/functions\";\nimport { Icon, IconProps } from \"../../Icon\";\n\nimport { MenuCommonProps } from \"../types\";\nimport { MenuContext } from \"./MenuContext\";\n\nimport styles from \"../Menu.module.scss\";\n\n/**\n * Props for the MenuNested component\n * @extends ComponentPropsWithoutRef<\"button\">\n * @extends MenuCommonProps\n */\nexport type MenuNestedProps = ComponentPropsWithoutRef<\"button\"> &\n MenuCommonProps & {\n /**\n * Icon to display on the nested menu button\n */\n icon?: IconProps[\"svg\"];\n };\n\n/**\n * MenuNested component for creating nested submenus within a Menu.\n *\n * Features:\n * - Hover-based menu opening and closing\n * - Automatic positioning with fallback strategies\n * - Keyboard navigation with arrow keys\n * - Scroll indicators for overflow content\n * - Automatic height adjustment\n * - Focus management and accessibility\n * - Popover API support with legacy fallback\n * - Smooth transitions and animations\n * - Context integration with parent menus\n *\n * @example\n * <Menu label=\"Edit\">\n * <Menu.Item label=\"Cut\" onClick={() => console.log('Cut clicked')} />\n * <Menu label=\"Copy as\">\n * <Menu.Item label=\"Text\" onClick={() => console.log('Copy as Text')} />\n * <Menu.Item label=\"Video\" onClick={() => console.log('Copy as Video')} />\n * <Menu label=\"Image\">\n * <Menu.Item label=\".png\" onClick={() => console.log('Copy as PNG')} />\n * <Menu.Item label=\".jpg\" onClick={() => console.log('Copy as JPG')} />\n * </Menu>\n * </Menu>\n * </Menu>\n */\nexport const MenuNested = (props: MenuNestedProps) => {\n const { children, open, defaultOpen = false, label, className, icon } = props;\n const uid = useId();\n const [tabIndex, setTabIndex] = useState(-1);\n const [openState, setOpenState] = useState<boolean>(open ?? defaultOpen);\n const [scrollTop, setScrollTop] = useState(0);\n const [menuHeight, setMenuHeight] = useState<number | null>(null);\n const [arrowStart, setArrowStart] = useState(false);\n const [arrowEnd, setArrowEnd] = useState(false);\n const invokerRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const childrenRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const [focusItems, setFocusItems] = useState<HTMLElement[]>();\n const menuContext = useContext(MenuContext);\n\n // TODO: Find a way to test these properly!\n // Stryker disable all : Currently relying on Chromatic test for all visuals\n /* istanbul ignore next */\n const fallbackArr = useCallback(() => {\n return menuContext?.disableAutoHeight\n ? [\"right-start\"]\n : [\"right-start\", \"right-end\", \"left-start\", \"left-end\"];\n }, [menuContext?.disableAutoHeight]);\n\n const updatePosition = useCallback(() => {\n if (!invokerRef.current || !menuRef.current) return;\n const timeoutId = setTimeout(() => {\n if (!invokerRef.current || !menuRef.current) return;\n computePosition(invokerRef.current, menuRef.current, {\n placement: \"right-start\",\n middleware: [\n offset({\n mainAxis: 0,\n alignmentAxis: -4,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n size({\n padding: 8,\n apply({ availableWidth, availableHeight, elements }) {\n if (menuContext?.disableAutoHeight) return;\n const newHeight = availableHeight - 16;\n if (Math.abs((menuHeight ?? 0) - newHeight) > 1) {\n setMenuHeight(newHeight);\n Object.assign(elements.floating.style, {\n maxWidth: `${availableWidth - 16}px`,\n maxHeight: `${newHeight}px`,\n });\n }\n },\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y + 8}px`,\n });\n });\n }, 50);\n return () => clearTimeout(timeoutId);\n }, [fallbackArr, menuContext?.disableAutoHeight, menuHeight]);\n\n const menuReference = useRef<HTMLDivElement | null>(null);\n useLayoutEffect(() => {\n if (!openState) {\n setMenuHeight(null);\n setScrollTop(0);\n return;\n }\n\n if (!menuRef.current) return;\n menuReference.current = menuRef.current;\n\n let resizeTimeout: number | null = null;\n const lastDimensions = {\n height: menuReference.current.clientHeight,\n scrollHeight: childrenRef.current?.scrollHeight ?? 0,\n };\n\n const updateArrows = (height: number, scrollHeight: number) => {\n if (!childrenRef.current) return;\n const isOverflow = scrollHeight > height;\n setArrowStart(isOverflow && childrenRef.current.scrollTop > 0);\n setArrowEnd(isOverflow && scrollHeight - height - scrollTop - 16 > 0);\n };\n\n const observer = new ResizeObserver(() => {\n if (!childrenRef.current || !menuReference.current) return;\n\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n\n resizeTimeout = window.setTimeout(() => {\n const newHeight = menuReference.current?.clientHeight ?? 0;\n const newScrollHeight = childrenRef.current?.scrollHeight ?? 0;\n\n if (!newHeight) return;\n\n lastDimensions.height = newHeight;\n lastDimensions.scrollHeight = newScrollHeight;\n\n updateArrows(newHeight, newScrollHeight);\n }, 100); // Shorter debounce for nested menu\n });\n\n if (menuReference.current) {\n observer.observe(menuReference.current);\n }\n\n return () => {\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n if (menuReference.current) {\n observer.unobserve(menuReference.current);\n }\n observer.disconnect();\n };\n }, [openState, scrollTop]);\n\n // Effect to add autoUpdate to eventListener\n // while the popover is opened\n useLayoutEffect(() => {\n if (!menuRef.current || !invokerRef.current) return;\n\n const cleanup = autoUpdate(invokerRef.current, menuRef.current, () => {\n updatePosition();\n });\n\n return () => {\n cleanup();\n };\n }, [updatePosition]);\n // Stryker restore all\n\n const popoverHoverTriggered = useRef<boolean>();\n\n // Main function to open menu\n // This gets canceled if close is called before the promise is resolved\n // Ex) Allows cursor jump from invoker to menu\n // without closing\n const openMenu = useCallback(async () => {\n popoverHoverTriggered.current = true;\n await new Promise((resolve) => setTimeout(resolve, 100));\n if (\n !popoverHoverTriggered.current ||\n !menuRef.current ||\n !childrenRef.current\n )\n return;\n\n // Show the menu but keep it transparent\n menuRef.current.style.opacity = \"0\";\n safeShowPopover(menuRef.current);\n\n // Position the menu before showing it\n if (!invokerRef.current || !menuRef.current) return;\n\n await computePosition(invokerRef.current, menuRef.current, {\n placement: \"right-start\",\n middleware: [\n offset({\n mainAxis: 0,\n alignmentAxis: -4,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y + 8}px`,\n });\n });\n\n setOpenState(true);\n const focusables = Array.from(\n childrenRef.current.querySelectorAll(\n `#scroller-${uid.replace(/:/g, \"\")} > button, #scroller-${uid.replace(/:/g, \"\")} > div[data-nested=\"true\"] > button, #scroller-${uid.replace(/:/g, \"\")} > a[href]`,\n ),\n ) as HTMLElement[];\n setFocusItems(focusables);\n\n // Make the menu visible with a short delay to ensure smooth transition\n requestAnimationFrame(() => {\n if (!menuRef.current) return;\n menuRef.current.style.opacity = \"1\";\n });\n }, [uid, fallbackArr, menuContext?.disableAutoHeight]);\n\n // Main function to close menu\n // This gets canceled if close is called before the promise is resolved\n // Ex) Allows menu to be kept closed when cursor\n // moves out of the invoker and menu\n const closeMenu = useCallback(async (fn?: () => void) => {\n popoverHoverTriggered.current = false;\n await new Promise((resolve) => setTimeout(resolve, 100));\n if (popoverHoverTriggered.current || !menuRef.current) return;\n fn?.();\n safeHidePopover(menuRef.current);\n setOpenState(false);\n }, []);\n\n const isControlled = typeof open !== \"undefined\";\n\n // Updating openness for controlled\n const initialRender = useRef(true);\n useEffect(() => {\n if (!isControlled) return;\n if (initialRender.current === true) {\n if (open && menuRef.current) {\n openMenu();\n }\n initialRender.current = false;\n return;\n }\n setOpenState(open);\n if (open) {\n openMenu();\n } else {\n closeMenu();\n }\n }, [closeMenu, isControlled, open, openMenu]);\n\n useEffect(() => {\n if (!containerRef.current) return;\n const nestedContainer = containerRef.current;\n nestedContainer.addEventListener(\"focusin\", (_e) => {\n openMenu();\n });\n nestedContainer.addEventListener(\"focusout\", () => closeMenu());\n return () => {\n nestedContainer.removeEventListener(\"focusin\", () => openMenu());\n nestedContainer.removeEventListener(\"focusout\", () => closeMenu());\n };\n }, [closeMenu, openMenu]);\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLDivElement>) => {\n if (!openState || !childrenRef.current) return;\n\n const currentActiveIndex = focusItems?.findIndex(\n (item) => item.id === getActiveElement(document)?.id,\n );\n\n const firstItem = focusItems?.[0] as HTMLElement;\n const lastItem = focusItems?.[focusItems.length - 1] as HTMLElement;\n\n if (e.code === \"Escape\") {\n menuContext?.closeRootMenu();\n }\n if (e.code === \"ArrowLeft\") {\n e.stopPropagation();\n e.preventDefault();\n invokerRef.current?.focus();\n closeMenu();\n }\n if (e.code === \"ArrowDown\") {\n e.stopPropagation();\n if (currentActiveIndex === (focusItems?.length ?? 0) - 1) {\n firstItem.focus();\n return;\n }\n const nextItem = focusItems?.[\n (currentActiveIndex ?? 0) + 1\n ] as HTMLElement;\n nextItem.focus();\n return;\n }\n if (e.code === \"ArrowUp\") {\n e.stopPropagation();\n e.preventDefault();\n if (currentActiveIndex === 0) {\n lastItem.focus();\n return;\n }\n const prevItem = focusItems?.[\n (currentActiveIndex ?? 0) - 1\n ] as HTMLElement;\n prevItem.focus();\n return;\n }\n };\n\n const onFocusHandler = () => {\n setTabIndex(0);\n };\n const onBlurHandler = () => {\n setTabIndex(-1);\n };\n\n const MenuButtonOnKeyDownHandler = (e: KeyboardEvent<HTMLButtonElement>) => {\n if (e.code === \"ArrowRight\") {\n e.stopPropagation();\n e.preventDefault();\n openMenu();\n const firstItem = menuRef.current?.querySelectorAll(\n `#scroller-${uid.replace(/:/g, \"\")} > button, #scroller-${uid.replace(/:/g, \"\")} > a[href]`,\n )[0];\n (firstItem as HTMLButtonElement).focus();\n }\n };\n\n const MenuButtonOnClick = () => {\n if (isControlled) return;\n openMenu();\n };\n\n const itemCx = cx([styles[\"item\"]], className);\n\n return (\n <div ref={containerRef} data-nested=\"true\">\n <button\n role=\"menuitem\"\n data-anv=\"menu-item\"\n data-state={openState ? \"open\" : \"close\"}\n ref={invokerRef}\n id={`menuitem-${uid.replace(/:/g, \"\")}`}\n aria-expanded={openState}\n onMouseEnter={(e) => {\n e.currentTarget.focus();\n }}\n onKeyDown={MenuButtonOnKeyDownHandler}\n onFocus={onFocusHandler}\n onBlur={onBlurHandler}\n onClick={MenuButtonOnClick}\n aria-haspopup={true}\n aria-controls={`menu-${uid.replace(/:/g, \"\")}`}\n className={itemCx}\n tabIndex={tabIndex}\n >\n {icon ? <Icon inherit aria-hidden svg={icon} /> : null}\n {label}\n <div style={{ flexGrow: 1 }} />\n <Icon aria-hidden svg={Next} />\n </button>\n <div\n popover=\"auto\"\n id={`menu-${uid.replace(/:/g, \"\")}`}\n data-anv=\"menu-content\"\n className={styles.content}\n ref={menuRef}\n role=\"presentation\"\n onKeyDown={onKeyDownHandler}\n >\n {arrowStart && (\n <div className={styles[\"arrow-up\"]} aria-hidden>\n <Icon svg={Up} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n <div\n className={styles.scroller}\n tabIndex={-1}\n ref={childrenRef}\n style={{\n position: \"relative\",\n maxHeight: menuHeight ?? \"inherit\",\n }}\n onScroll={(e: MouseEvent<HTMLDivElement>) =>\n setScrollTop(e.currentTarget.scrollTop)\n }\n role=\"menu\"\n id={`scroller-${uid.replace(/:/g, \"\")}`}\n >\n {children}\n </div>\n {arrowEnd && (\n <div className={styles[\"arrow-down\"]} aria-hidden>\n <Icon svg={Down} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n </div>\n </div>\n );\n};\n","import {\n useEffect,\n useId,\n useRef,\n useState,\n useMemo,\n useLayoutEffect,\n useCallback,\n useContext,\n KeyboardEvent,\n MouseEvent,\n forwardRef,\n} from \"react\";\nimport {\n Placement,\n size,\n flip,\n limitShift,\n offset,\n shift,\n computePosition,\n autoUpdate,\n} from \"@floating-ui/react\";\nimport cx from \"classnames\";\nimport Up from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_up.svg\";\nimport Down from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_down.svg\";\n\nimport { Button, ButtonProps } from \"../Button\";\nimport { childrenToString } from \"../../internal/functions\";\nimport { DialogContext } from \"../Dialog/internal/DialogContext\";\nimport { getActiveElement } from \"../../internal/functions\";\nimport { Icon, IconProps } from \"../Icon\";\nimport {\n supportsPopover,\n safeHidePopover,\n safeShowPopover,\n} from \"../../internal/functions\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DataTrackingId } from \"../../types\";\n\nimport { MenuContext } from \"./internal/MenuContext\";\nimport { MenuItem } from \"./MenuItem\";\nimport {\n MenuLegacy as MenuLegacyComponent,\n MenuLegacyProps,\n} from \"./internal/MenuLegacy\";\nimport { MenuNested } from \"./internal/MenuNested\";\nimport { MenuCommonProps } from \"./types\";\n\nimport styles from \"./Menu.module.scss\";\n\n/**\n * Props for the Menu component\n * @extends Omit<ButtonProps, \"icon\">\n * @extends MenuCommonProps\n */\nexport type MenuProps = Omit<ButtonProps, \"icon\"> &\n MenuCommonProps & {\n /**\n * Icon to display on the menu button\n */\n icon?: IconProps[\"svg\"];\n } & DataTrackingId;\n\nconst MenuElement = forwardRef<HTMLElement, MenuProps>(\n (props: MenuProps, ref) => {\n const {\n children,\n placement = \"bottom-start\",\n open,\n defaultOpen = false,\n disableAutoHeight,\n label,\n onOutsidePress,\n trigger,\n root,\n contentClassName,\n maxHeight,\n ...rest\n } = props;\n const uid = useId();\n const [openState, setOpenState] = useState<boolean>(open ?? defaultOpen);\n const [scrollTop, setScrollTop] = useState(0);\n const [menuHeight, setMenuHeight] = useState<number | null>(null);\n const [arrowStart, setArrowStart] = useState(false);\n const [arrowEnd, setArrowEnd] = useState(false);\n const invokerRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const childrenRef = useRef<HTMLDivElement>(null);\n const [focusItems, setFocusItems] = useState<HTMLElement[]>();\n const dialogContext = useContext(DialogContext);\n const menuContext = useContext(MenuContext);\n\n // TODO: Find a way to test these properly!\n // Stryker disable all : Currently relying on Chromatic test for all visuals\n const fallbackArr = useCallback(() => {\n if (placement.startsWith(\"top\")) {\n return disableAutoHeight\n ? placement\n : [\"top-start\", \"top-end\", \"bottom-start\", \"bottom-end\"];\n }\n return disableAutoHeight\n ? placement\n : [\"bottom-start\", \"bottom-end\", \"top-start\", \"top-end\"];\n }, [disableAutoHeight, placement]);\n\n /* istanbul ignore next */\n const updatePosition = useCallback(() => {\n if (!invokerRef.current || !menuRef.current) return;\n const timeoutId = setTimeout(() => {\n if (!invokerRef.current || !menuRef.current) return;\n\n computePosition(invokerRef.current, menuRef.current, {\n placement: placement,\n middleware: [\n offset({\n mainAxis: 5,\n alignmentAxis: 0,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n padding: 50, // Setting to 50px as it is the size of menu with 1 item in it\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n size({\n padding: 8,\n apply({ availableWidth, availableHeight, elements }) {\n if (disableAutoHeight ?? menuContext?.disableAutoHeight) return;\n const newHeight = availableHeight - 16;\n if (Math.abs((menuHeight ?? 0) - newHeight) > 1) {\n setMenuHeight(newHeight);\n Object.assign(elements.floating.style, {\n maxWidth: `${availableWidth - 16}px`,\n maxHeight: maxHeight\n ? `${Math.min(newHeight, typeof maxHeight === \"number\" ? maxHeight : parseInt(maxHeight.toString()))}px`\n : `${newHeight}px`,\n });\n }\n },\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n menuRef.current.dataset.positioned = \"true\";\n });\n }, 50);\n return () => clearTimeout(timeoutId);\n }, [\n placement,\n fallbackArr,\n menuContext?.disableAutoHeight,\n disableAutoHeight,\n menuHeight,\n maxHeight,\n ]);\n\n const menuReference = useRef<HTMLDivElement | null>(null);\n\n useLayoutEffect(() => {\n if (!openState) {\n setMenuHeight(null);\n setScrollTop(0);\n return;\n }\n if (!menuRef.current) return;\n menuReference.current = menuRef.current;\n\n let resizeTimeout: number | null = null;\n const lastDimensions = {\n height: menuReference.current.clientHeight,\n scrollHeight: childrenRef.current?.scrollHeight ?? 0,\n };\n\n const updateArrows = (height: number, scrollHeight: number) => {\n if (!childrenRef.current) return;\n const isOverflow = scrollHeight > height;\n setArrowStart(isOverflow && childrenRef.current.scrollTop > 0);\n setArrowEnd(isOverflow && scrollHeight - height - scrollTop - 16 > 0);\n };\n\n const observer = new ResizeObserver(() => {\n if (!childrenRef.current || !menuReference.current) return;\n\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n\n resizeTimeout = window.setTimeout(() => {\n const newHeight = menuReference.current?.clientHeight ?? 0;\n const newScrollHeight = childrenRef.current?.scrollHeight ?? 0;\n\n if (!newHeight) return;\n\n lastDimensions.height = newHeight;\n lastDimensions.scrollHeight = newScrollHeight;\n\n updateArrows(newHeight, newScrollHeight);\n }, 150);\n });\n\n if (menuReference.current) {\n observer.observe(menuReference.current);\n }\n\n return () => {\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n if (menuReference.current) {\n observer.unobserve(menuReference.current);\n }\n observer.disconnect();\n };\n }, [openState, scrollTop]);\n\n // Effect to add autoUpdate to eventListener\n // while the popover is opened\n useLayoutEffect(() => {\n if (!menuRef.current || !invokerRef.current) return;\n\n const cleanup = autoUpdate(invokerRef.current, menuRef.current, () => {\n updatePosition();\n });\n\n return () => {\n cleanup();\n };\n }, [updatePosition]);\n // Stryker restore all\n\n // Main function to open menu\n // This gets canceled if close is called before the promise is resolved\n // Ex) Allows cursor jump from invoker to menu\n // without closing\n const openMenu = useCallback(async () => {\n if (!menuRef.current || !childrenRef.current) return;\n\n safeShowPopover(menuRef.current);\n\n // Position the menu before showing it\n if (!invokerRef.current || !menuRef.current) return;\n\n await computePosition(invokerRef.current, menuRef.current, {\n placement: placement,\n middleware: [\n offset({\n mainAxis: 5,\n alignmentAxis: 0,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n padding: 50, // Setting to 50px as it is the size of menu with 1 item in it\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n menuRef.current.dataset.positioned = \"true\";\n });\n\n setOpenState(true);\n\n // Wait for next frame to ensure DOM is updated\n requestAnimationFrame(() => {\n if (!childrenRef.current) return;\n const focusables = Array.from(\n childrenRef.current.querySelectorAll(\n `#scroller-${uid.replace(/:/g, \"\")} > button, #scroller-${uid.replace(/:/g, \"\")} > div[data-nested=\"true\"] > button, #scroller-${uid.replace(/:/g, \"\")} > a[href]`,\n ),\n ) as HTMLElement[];\n setFocusItems(focusables);\n });\n\n dialogContext?.setHasOpenPopover?.(true);\n }, [\n dialogContext,\n uid,\n placement,\n fallbackArr,\n menuContext?.disableAutoHeight,\n ]);\n\n // Main function to close menu\n // This gets canceled if close is called before the promise is resolved\n // Ex) Allows popover to be kept closed when cursor\n // moves out of the invoker and menu\n const closeMenu = useCallback(\n async (fn?: () => void) => {\n if (!menuRef.current || !openState) return;\n fn?.();\n setOpenState(false);\n safeHidePopover(menuRef.current);\n dialogContext?.setHasOpenPopover?.(false);\n invokerRef.current?.focus();\n },\n [openState, dialogContext],\n );\n\n const isControlled = typeof open !== \"undefined\";\n\n // Updating openness for controlled\n const initialRender = useRef(true);\n useEffect(() => {\n if (!isControlled) return;\n if (initialRender.current === true) {\n if (open && menuRef.current) {\n openMenu();\n }\n initialRender.current = false;\n return;\n }\n if (open) {\n openMenu();\n } else {\n closeMenu();\n }\n // open ? openMenu() : closeMenu();\n }, [closeMenu, isControlled, open, openMenu, dialogContext]);\n\n // Effect to attach eventListener for reading click state from\n // globalThis.MouseEvent for composedPath to detect if target is\n // part of the composedPath, then to attempt to close\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n\n let isClosable = false;\n const onMouseDownHandler = (e: globalThis.MouseEvent) => {\n if (!invokerRef.current || !menuRef.current) return;\n const isInvoker = e.composedPath().includes(invokerRef.current);\n const isPopover = e.composedPath().includes(menuRef.current);\n if (!isInvoker && !isPopover && openState) {\n onOutsidePress?.(e);\n isClosable = true;\n }\n };\n const onMouseUpHandler = (e: globalThis.MouseEvent) => {\n if (!invokerRef.current || !menuRef.current) return;\n const isInvoker = e.composedPath().includes(invokerRef.current);\n const isPopover = e.composedPath().includes(menuRef.current);\n if (!isInvoker && !isPopover && openState) {\n if (isControlled || !isClosable || !openState) return;\n\n closeMenu();\n }\n };\n\n document.addEventListener(\"mousedown\", onMouseDownHandler);\n document.addEventListener(\"mouseup\", onMouseUpHandler);\n return () => {\n document.removeEventListener(\"mousedown\", onMouseDownHandler);\n document.removeEventListener(\"mouseup\", onMouseUpHandler);\n };\n }, [isControlled, openState, onOutsidePress, closeMenu]);\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLDivElement>) => {\n if (!openState || !childrenRef.current || menuContext) return;\n if (e.code === \"Escape\") {\n e.stopPropagation();\n e.preventDefault();\n closeMenu();\n }\n\n const currentActiveIndex = focusItems?.findIndex(\n (item) => item.id === getActiveElement(document)?.id,\n );\n\n const firstItem = focusItems?.[0] as HTMLElement;\n const lastItem = focusItems?.[focusItems.length - 1] as HTMLElement;\n\n if (e.code === \"ArrowDown\") {\n e.stopPropagation();\n e.preventDefault();\n if (currentActiveIndex === (focusItems?.length ?? 0) - 1) {\n firstItem.focus();\n return;\n }\n const nextItem = focusItems?.[\n (currentActiveIndex ?? 0) + 1\n ] as HTMLElement;\n nextItem.focus();\n return;\n }\n if (e.code === \"ArrowUp\") {\n e.stopPropagation();\n e.preventDefault();\n if (currentActiveIndex === 0) {\n lastItem.focus();\n return;\n }\n const prevItem = focusItems?.[\n (currentActiveIndex ?? 0) - 1\n ] as HTMLElement;\n prevItem.focus();\n return;\n }\n };\n\n const value = useMemo(() => {\n return {\n disableAutoHeight,\n closeRootMenu: menuContext?.closeRootMenu ?? closeMenu,\n };\n }, [disableAutoHeight, menuContext, closeMenu]);\n\n const MenuButtonOnKeyDownHandler = (\n e: KeyboardEvent<HTMLButtonElement>,\n ) => {\n if (e.code === \"ArrowDown\") {\n focusItems?.[0].focus();\n e.stopPropagation();\n e.preventDefault();\n }\n };\n const MenuButtonOnClick = () => {\n if (isControlled) return;\n if (openState) {\n closeMenu();\n return;\n }\n openMenu();\n };\n\n const data = {\n label: childrenToString(props.label),\n };\n\n const trackingId = useTrackingId({\n name: \"Menu\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n if (!supportsPopover())\n return (\n <MenuLegacyComponent\n data-tracking-id={trackingId}\n {...(props as MenuLegacyProps)}\n ref={ref}\n />\n );\n\n if (menuContext) {\n return (\n <MenuContext.Provider value={value}>\n <MenuNested\n data-tracking-id={trackingId}\n open={open}\n defaultOpen={defaultOpen}\n className={props.className}\n icon={props.icon}\n label={label}\n >\n {children}\n </MenuNested>\n </MenuContext.Provider>\n );\n }\n return (\n <MenuContext.Provider value={value}>\n {trigger ? (\n trigger({\n ref: invokerRef,\n onClick: () => MenuButtonOnClick(),\n \"aria-haspopup\": true,\n \"aria-controls\": `menu-${uid.replace(/:/g, \"\")}`,\n \"aria-expanded\": openState,\n \"data-state\": openState ? \"open\" : \"close\",\n })\n ) : (\n <Button\n ref={invokerRef}\n onClick={MenuButtonOnClick}\n onKeyDown={MenuButtonOnKeyDownHandler}\n aria-haspopup={true}\n aria-controls={`menu-${uid.replace(/:/g, \"\")}`}\n data-state={openState ? \"open\" : \"close\"}\n aria-expanded={openState}\n {...rest}\n >\n {label}\n </Button>\n )}\n <div\n popover=\"manual\"\n id={`menu-${uid.replace(/:/g, \"\")}`}\n data-anv=\"menu-content\"\n className={cx(styles.content, contentClassName)}\n onKeyDown={onKeyDownHandler}\n ref={menuRef}\n role=\"presentation\"\n >\n {arrowStart && (\n <div className={styles[\"arrow-up\"]} aria-hidden>\n <Icon svg={Up} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n <div\n className={styles.scroller}\n tabIndex={-1}\n ref={childrenRef}\n style={{\n position: \"relative\",\n maxHeight: maxHeight\n ? `${Math.min(menuHeight ?? Infinity, typeof maxHeight === \"number\" ? maxHeight : parseInt(maxHeight.toString()))}px`\n : (menuHeight ?? \"inherit\"),\n }}\n onScroll={(e: MouseEvent<HTMLDivElement>) =>\n setScrollTop(e.currentTarget.scrollTop)\n }\n role=\"menu\"\n id={`scroller-${uid.replace(/:/g, \"\")}`}\n >\n {children}\n </div>\n {arrowEnd && (\n <div className={styles[\"arrow-down\"]} aria-hidden>\n <Icon svg={Down} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n </div>\n </MenuContext.Provider>\n );\n },\n);\n\nMenuElement.displayName = \"Menu\";\n\n/**\n * Menu component for displaying dropdown menus with navigation and actions.\n *\n * Features:\n * - Supports both controlled and uncontrolled modes\n * - Automatic positioning with fallback strategies\n * - Keyboard navigation with arrow keys and escape\n * - Custom trigger elements\n * - Nested menu support\n * - Automatic height adjustment\n * - Scroll indicators for overflow content\n * - Fully accessible with proper ARIA attributes\n * - Popover API support with legacy fallback\n * - Outside click detection and handling\n *\n * @example\n * <Menu label=\"Edit\">\n * <Menu.Item label=\"Cut\" onClick={() => console.log('Cut clicked')} />\n * <Menu.Item label=\"Copy\" onClick={() => console.log('Copy clicked')} />\n * <Menu label=\"Copy as\">\n * <Menu.Item label=\"Text\" onClick={() => console.log('Copy as Text')} />\n * <Menu.Item label=\"Video\" onClick={() => console.log('Copy as Video')} />\n * <Menu label=\"Image\">\n * <Menu.Item label=\".png\" onClick={() => console.log('Copy as PNG')} />\n * <Menu.Item label=\".jpg\" onClick={() => console.log('Copy as JPG')} />\n * </Menu>\n * </Menu>\n */\nexport const Menu = Object.assign(MenuElement, {\n /**\n * MenuItem component for individual menu options.\n *\n * Features:\n * - Supports icons and labels\n * - Keyboard navigation support\n * - Disabled state handling\n * - Automatic menu closing on selection\n * - Fully accessible with proper ARIA attributes\n * - Focus management and tab index handling\n * - Click and mouse enter event handling\n *\n * @example\n * <Menu.Item\n * label=\"Edit Profile\"\n * icon={EditIcon}\n * onClick={() => console.log('Edit profile clicked')}\n * />\n */\n Item: MenuItem,\n});\n"],"names":["styles","Next","Up","Down","MenuLegacyComponent"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProgressBar-BWN2yv1s.js","sources":["../src/components/ProgressBar/ProgressBar.tsx"],"sourcesContent":["import {\n forwardRef,\n ComponentPropsWithoutRef,\n useId,\n AriaAttributes,\n ReactElement,\n} from \"react\";\nimport cx from \"classnames\";\nimport Check from \"@servicetitan/hammer-icon/mdi/round/check_circle.svg\";\nimport Error from \"@servicetitan/hammer-icon/mdi/round/error.svg\";\n\nimport { FieldLabel, FieldLabelProps } from \"../FieldLabel\";\nimport { Flex } from \"../Flex\";\nimport { Helper, HelperProps } from \"../../internal/components\";\nimport { Icon } from \"../Icon\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\nimport styles from \"./ProgressBar.module.scss\";\n\n/**\n * Props for the ProgressBar component\n * @extends Omit<ComponentPropsWithoutRef<\"progress\">, \"value\">\n * @extends LayoutUtilProps\n */\nexport type ProgressBarProps = Omit<\n ComponentPropsWithoutRef<\"progress\">,\n \"value\"\n> &\n LayoutUtilProps & {\n /**\n * Error state or error message to display\n * @default false\n */\n error?: ReactElement | string | boolean;\n /**\n * ARIA live region setting for error announcements\n */\n errorAriaLive?: HelperProps[\"errorAriaLive\"];\n /**\n * Description text to display below the progress bar\n */\n description?: HelperProps[\"description\"];\n } & (\n | {\n /**\n * Label text for the progress bar\n */\n label: FieldLabelProps[\"children\"];\n /**\n * Additional props for the label component\n */\n labelProps?: Omit<FieldLabelProps, \"children\" | \"id\" | \"required\">;\n }\n | {\n label?: never;\n labelProps?: never;\n /**\n * Accessible label for the progress bar (alternative to label)\n */\n [\"aria-label\"]: Exclude<AriaAttributes[\"aria-label\"], undefined>;\n }\n | {\n label?: never;\n labelProps?: never;\n /**\n * ID of element that labels the progress bar (alternative to label)\n */\n [\"aria-labelledby\"]: Exclude<\n AriaAttributes[\"aria-labelledby\"],\n undefined\n >;\n }\n ) &\n (\n | {\n /**\n * Current progress value (0-100 or 0-max)\n */\n value: `${number}` | number;\n /**\n * Whether the progress bar is in indeterminate state\n * @default false\n */\n indeterminate?: false;\n }\n | {\n value?: never;\n /**\n * Whether the progress bar is in indeterminate state\n */\n indeterminate: true;\n }\n );\n\n/**\n * ProgressBar component for displaying progress indicators.\n *\n * Features:\n * - Supports both determinate and indeterminate progress states\n * - Optional label with customizable label props\n * - Error state with error message display\n * - Success state with check icon when value equals max\n * - Description text support\n * - Accessibility support with proper ARIA attributes\n * - Layout utility props for positioning and spacing\n * - Flexible labeling options (label, aria-label, aria-labelledby)\n * - Error and success visual indicators\n *\n * @example\n * <ProgressBar\n * label=\"Upload Progress\"\n * value={75}\n * max={100}\n * description=\"Uploading files...\"\n * />\n *\n * @example\n * <ProgressBar\n * label=\"Processing\"\n * indeterminate\n * description=\"Please wait...\"\n * />\n *\n * @example\n * <ProgressBar\n * aria-label=\"Download progress\"\n * value={50}\n * error=\"Download failed\"\n * />\n */\nexport const ProgressBar = forwardRef<HTMLDivElement, ProgressBarProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n style,\n value,\n children,\n indeterminate,\n errorAriaLive,\n description,\n error = false,\n max = 100,\n ...mainProps\n } = componentProps;\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n const errorMessage = typeof error !== \"boolean\" ? error : undefined;\n const labelUid = useId();\n const isSuccess = typeof value !== \"undefined\" && +value === +max;\n if (\"label\" in props && !!props.label) {\n const { label, labelProps, ...rest } = mainProps;\n\n const ProgressBarClassNames = cx(\n [styles[\"progress-bar\"]],\n\n className,\n {\n [styles[`error`]]: error,\n [styles[`success`]]: isSuccess,\n },\n );\n\n return (\n <div\n className={ProgressBarClassNames}\n data-anv=\"progress-bar\"\n style={styleCombined}\n ref={ref}\n >\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <FieldLabel id={labelUid} {...labelProps}>\n {label}\n </FieldLabel>\n {isSuccess && !error ? (\n <Icon className={styles[\"check-icon\"]} svg={Check} />\n ) : null}\n {error ? (\n <Icon className={styles[\"error-icon\"]} svg={Error} />\n ) : null}\n </Flex>\n <div className={styles[\"bar-container\"]}>\n <progress\n aria-labelledby={labelUid}\n className={styles[\"bar\"]}\n value={value}\n max={max}\n {...rest}\n />\n </div>\n {errorMessage || description ? (\n <Helper\n errorMessage={errorMessage}\n errorAriaLive={errorAriaLive}\n description={description}\n />\n ) : null}\n </div>\n );\n }\n\n const ProgressBarClassNames = cx([styles[\"progress-bar\"]], className, {\n [styles[`error`]]: error,\n [styles[`success`]]: isSuccess,\n });\n\n return (\n <div\n className={ProgressBarClassNames}\n data-anv=\"progress-bar\"\n style={styleCombined}\n ref={ref}\n >\n <div className={styles[\"bar-container\"]}>\n <progress\n className={styles[\"bar\"]}\n max={max}\n value={value}\n {...mainProps}\n />\n </div>\n {errorMessage || description ? (\n <Helper\n errorMessage={errorMessage}\n errorAriaLive={errorAriaLive}\n description={description}\n />\n ) : null}\n </div>\n );\n },\n);\n\nProgressBar.displayName = \"ProgressBar\";\n"],"names":["ProgressBarClassNames","Check","Error"],"mappings":"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"}
|