@zeniai/web-components 4.4.70-beta0DI → 4.4.71-beta0AN

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 (259) hide show
  1. package/dist/Editor-CbBxvSmp.js +919 -0
  2. package/dist/{SessionTimeoutPopup-LC6wnjVS.js → SessionTimeoutPopup-BMerO3g4.js} +116442 -117259
  3. package/dist/TaskDescriptionEditor-DyTyMxvk.js +700 -0
  4. package/dist/appLocale.d.ts +45 -34
  5. package/dist/apple-wallet-DMr790ZM.js +19 -0
  6. package/dist/assets/interface/microphone.svg +5 -0
  7. package/dist/bank-verification-HpVi21UA.js +5 -0
  8. package/dist/cockpit.esm.js +5751 -5992
  9. package/dist/common/audio/wav.d.ts +35 -0
  10. package/dist/common/audio/wav.test.d.ts +1 -0
  11. package/dist/common/hooks/useVoiceDictation.d.ts +32 -0
  12. package/dist/common/hooks/useVoiceDictation.test.d.ts +1 -0
  13. package/dist/components/aiCfo/AiCfoPage.d.ts +5 -0
  14. package/dist/components/aiCfo/AiCfoSidePanel.d.ts +5 -0
  15. package/dist/components/aiCfo/components/AiCfoInput.d.ts +10 -0
  16. package/dist/components/aiCfo/components/VoiceWaveform.d.ts +10 -0
  17. package/dist/components/aiCfo/hooks/useSyncTranscriptIntoLocalInput.d.ts +16 -0
  18. package/dist/components/animations/{DashboardSidebarHalloweenBottomAnimation.d.ts → DashboardHalloweenBatsAnimation.d.ts} +1 -1
  19. package/dist/components/animations/DashboardSidebarBottomAnimation.d.ts +0 -1
  20. package/dist/components/cockpit/common/parentSubsidiaryTag/components/ParentSubsidiaryTag.d.ts +3 -1
  21. package/dist/components/cockpit/common/userMultiSelect/UserMultiSelect.d.ts +1 -2
  22. package/dist/components/cockpit/common/userMultiSelect/UserMultiSelectField.d.ts +1 -2
  23. package/dist/components/commentsAndNotes/utils/CollaborationHelpers.d.ts +8 -2
  24. package/dist/components/common/ButtonWithDropDown.d.ts +32 -1
  25. package/dist/components/common/downloadReport/types/downloadReportOptions.d.ts +8 -0
  26. package/dist/components/common/downloadReport/types/downloadReportOptionsPayload.d.ts +3 -0
  27. package/dist/components/common/lazyLottie.d.ts +8 -0
  28. package/dist/components/common/lazyReactPdf.d.ts +13 -0
  29. package/dist/components/common/lazySvg.d.ts +17 -0
  30. package/dist/components/common/listPageSearchInputBox/ListPageSearchInputBox.d.ts +4 -1
  31. package/dist/components/common/listPageSearchSection/ListPageSearchSection.d.ts +3 -0
  32. package/dist/components/common/searchDiscoveryCoachmark/SearchDiscoveryCoachmark.d.ts +12 -0
  33. package/dist/components/customers/common/CustomerHierarchyTag.d.ts +10 -0
  34. package/dist/components/customers/common/CustomerNameCell.d.ts +7 -0
  35. package/dist/components/customers/customerDetail/CustomerDetailPage.d.ts +5 -1
  36. package/dist/components/customers/customerDetail/CustomerFamilyTree.d.ts +16 -0
  37. package/dist/components/customers/customerList/CustomerListPage.d.ts +4 -1
  38. package/dist/components/dataListTable/DataListTable.d.ts +1 -1
  39. package/dist/components/dataListTable/DataListTableHeader.d.ts +3 -1
  40. package/dist/components/dataListTable/DataListTablePlaceholderRow.d.ts +3 -1
  41. package/dist/components/dataListTable/types.d.ts +4 -0
  42. package/dist/components/expenseAutomation/ExpenseAutomationPage.d.ts +3 -0
  43. package/dist/components/expenseAutomation/components/NavBarWithHeader.d.ts +2 -0
  44. package/dist/components/expenseAutomation/sections/actualMatching/actualMatchingHelpers.d.ts +8 -0
  45. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/JEAccrualBillingPatternCard.d.ts +6 -0
  46. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/JEOneTimeAccrualDetailPage.d.ts +2 -1
  47. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/JEOneTimeAccrualLinkedEntriesButton.d.ts +3 -3
  48. package/dist/components/expenseAutomation/sections/jeSchedules/common/JEJournalEntryBlock.d.ts +92 -0
  49. package/dist/components/formElements/autoCompleteSingleSelectField/AutoCompleteSingleSelectField.d.ts +3 -1
  50. package/dist/components/formElements/singleSelectPickerField/SingleSelectPickerField.d.ts +2 -1
  51. package/dist/components/formElements/timeSpentField/TimeSpentField.d.ts +1 -8
  52. package/dist/components/invoicing/common/InvoicingListScaffold.d.ts +3 -1
  53. package/dist/components/invoicing/createInvoice/InvoicingCreateInvoicePage.d.ts +3 -1
  54. package/dist/components/invoicing/subscriptionForm/InvoicingSubscriptionFormPage.d.ts +3 -1
  55. package/dist/components/invoicing/subscriptionForm/subscriptionForm.shared.d.ts +4 -0
  56. package/dist/components/reportTree/CustomDateRangeColumnContext.d.ts +11 -0
  57. package/dist/components/reports/ReportsPage.d.ts +19 -2
  58. package/dist/components/reports/common/isGroupedReportId.d.ts +7 -0
  59. package/dist/components/settingsPage/Integrations/components/integrationLogos.d.ts +2874 -12
  60. package/dist/components/spendManagement/common/filters/components/DateRangeFilterField.d.ts +4 -2
  61. package/dist/components/spendManagement/common/filters/spendManagementFiltersHelpers.d.ts +1 -1
  62. package/dist/components/taskManagement/TaskDetailPage.d.ts +3 -9
  63. package/dist/components/taskManagement/TaskDetailPage.styled.d.ts +0 -65
  64. package/dist/components/taskManagement/TaskListFlatRowRenderer.d.ts +0 -1
  65. package/dist/components/taskManagement/TaskListRow.d.ts +2 -5
  66. package/dist/components/taskManagement/TaskManagementPage.d.ts +1 -2
  67. package/dist/components/taskManagement/taskDetailLabels.d.ts +1 -1
  68. package/dist/components/taskManagement/taskManagementHeaderItemsData.d.ts +0 -20
  69. package/dist/components/transactionDetail/create/CreateTransactionButton.d.ts +3 -3
  70. package/dist/components/transactionDetail/create/CreateTransactionLinesTable.d.ts +3 -1
  71. package/dist/components/transactionDetail/create/createTransactionFieldSchema.d.ts +4 -1
  72. package/dist/components/transactionDetail/create/createTransactionFormNames.d.ts +0 -5
  73. package/dist/components/transactionDetail/items/journalEntryTable/header/JournalEntryTableHeader.d.ts +4 -1
  74. package/dist/components/transactionDetail/items/journalEntryTable/journalEntryTableTypes.d.ts +10 -1
  75. package/dist/components/transactionDetail/items/journalEntryTable/listRow/JournalEntryTableListRow.d.ts +1 -1
  76. package/dist/components/transactionDetail/items/journalEntryTable/totals/JournalEntryTotalsRow.d.ts +2 -2
  77. package/dist/components/transactionDetail/items/transactionLineTable/header/TransactionLineTableHeader.d.ts +4 -2
  78. package/dist/components/uncategorizedAccountsMapping/UncategorizedAccountsMappingPage.d.ts +6 -2
  79. package/dist/components/vendorDetail/PageHeader.d.ts +4 -1
  80. package/dist/context/featureProvider/FeatureGateNameConstants.d.ts +4 -0
  81. package/dist/index.d.ts +1 -0
  82. package/dist/index.esm.js +335 -334
  83. package/dist/mcdonalds-logo-BTFuGR4i.js +5 -0
  84. package/dist/mercury-logo-Xd1WsXHh.js +5 -0
  85. package/dist/mercury-logo-dark-WebeUx9w.js +5 -0
  86. package/dist/more-providers-avatars-Dt7HPmCt.js +5 -0
  87. package/dist/netsuite-logo-Dp53a_wk.js +5 -0
  88. package/dist/netsuite-logo-dark-C53BYo7C.js +5 -0
  89. package/dist/paypal-logo-RhbjaD58.js +5 -0
  90. package/dist/paypal-logo-dark-_jTZA_FH.js +5 -0
  91. package/dist/phone-otp-DI7iHM2C.js +7 -0
  92. package/dist/strings/strings.d.ts +45 -34
  93. package/dist/subway-logo-B-Kc0fke.js +5 -0
  94. package/dist/underline-BNKkE4Fr.js +223 -0
  95. package/dist/vendor-@stripe-stripe-js-BmvP0myE.js +108 -0
  96. package/dist/vendor-react-lottie-player-Qhg4gMF8.js +174 -0
  97. package/dist/zeni-card-trust-BpxZYDve.js +5 -0
  98. package/dist/zeni-thanksgiving-logo-full-BLmLHEXd.js +5 -0
  99. package/package.json +8 -10
  100. package/dist/SessionTimeoutPopup-LoxZXeK3.cjs +0 -92665
  101. package/dist/assets/illustrative/ai-cfo.svg +0 -13
  102. package/dist/assets/illustrative/rewardsEmailTemplate/business-banking-icon.svg +0 -21
  103. package/dist/assets/illustrative/rewardsEmailTemplate/cards-icon.svg +0 -11
  104. package/dist/assets/interface/ai-icon-color-selected-filled-small.svg +0 -27
  105. package/dist/assets/interface/ai-icon-color-selected-small.svg +0 -20
  106. package/dist/assets/interface/ai-icon-selected-filled-plain.svg +0 -5
  107. package/dist/assets/interface/arrow-2-left.svg +0 -4
  108. package/dist/assets/interface/autofill-3.svg +0 -3
  109. package/dist/assets/interface/graph-trend.svg +0 -11
  110. package/dist/assets/interface/growth-round.svg +0 -5
  111. package/dist/assets/interface/saving-money-egg.svg +0 -15
  112. package/dist/assets/interface/timer-play.svg +0 -4
  113. package/dist/assets/interface/treasury-thumbnail.png +0 -0
  114. package/dist/assets/logos/gmail-logo.svg +0 -20
  115. package/dist/assets/logos/microsoft365-logo.svg +0 -25
  116. package/dist/assets/oldicons/promoPages/usp-line.svg +0 -3
  117. package/dist/cockpit.cjs.js +0 -5882
  118. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/JEAccrualJournalEntryCard.d.ts +0 -21
  119. package/dist/components/expenseAutomation/sections/jeSchedules/common/JEJournalEntryPreview.d.ts +0 -28
  120. package/dist/components/formElements/timeSpentField/timeSpentDisplayFormat.d.ts +0 -10
  121. package/dist/components/taskManagement/TaskListFilterBar.d.ts +0 -10
  122. package/dist/components/taskManagement/TaskTimerButton.d.ts +0 -28
  123. package/dist/components/taskManagement/formatTimeSpent.d.ts +0 -22
  124. package/dist/components/taskManagement/taskListGrid.d.ts +0 -21
  125. package/dist/index.cjs.js +0 -1
  126. package/dist/vendor-@babel-runtime-_D8QudKm.cjs +0 -4
  127. package/dist/vendor-@floating-ui-core-Dyvby5gX.cjs +0 -1
  128. package/dist/vendor-@floating-ui-dom-CexqkosJ.cjs +0 -1
  129. package/dist/vendor-@floating-ui-utils-sUr78tUz.cjs +0 -1
  130. package/dist/vendor-@popperjs-core-Da5z8R8_.cjs +0 -1
  131. package/dist/vendor-@react-oauth-google-RY6l5Pdi.cjs +0 -1
  132. package/dist/vendor-@statsig-client-core-CcuuGlfw.cjs +0 -1
  133. package/dist/vendor-@statsig-js-client-C6n1oYZG.cjs +0 -1
  134. package/dist/vendor-@statsig-react-bindings-DVuaLZfm.cjs +0 -1
  135. package/dist/vendor-@ungap-structured-clone-BSqP9FP7.cjs +0 -1
  136. package/dist/vendor-@zeniai-client-epic-state-DWdyw6ma.cjs +0 -1
  137. package/dist/vendor-autosuggest-highlight-BrLUL75m.cjs +0 -1
  138. package/dist/vendor-bail-CPU4onRe.cjs +0 -1
  139. package/dist/vendor-big.js-BfsYTtpv.cjs +0 -1
  140. package/dist/vendor-browser-image-compression-BZPRtRQ2.cjs +0 -20
  141. package/dist/vendor-ccount-B3JMtXU-.cjs +0 -1
  142. package/dist/vendor-clsx-CAED27AB.cjs +0 -1
  143. package/dist/vendor-color-BlJDv7Qx.cjs +0 -1
  144. package/dist/vendor-color-convert-DNxf_t0v.cjs +0 -1
  145. package/dist/vendor-color-name-DMfyNIC_.cjs +0 -1
  146. package/dist/vendor-color-string-DlngRZWO.cjs +0 -1
  147. package/dist/vendor-comma-separated-tokens-CM2uar_0.cjs +0 -1
  148. package/dist/vendor-countries-list-DdDJCIea.cjs +0 -1
  149. package/dist/vendor-country-flag-icons-CaT9dyG0.cjs +0 -1
  150. package/dist/vendor-cross-fetch-BcrCP3uC.cjs +0 -2
  151. package/dist/vendor-decode-named-character-reference-CpsLJx05.cjs +0 -1
  152. package/dist/vendor-devlop-IYc_KfOj.cjs +0 -1
  153. package/dist/vendor-escape-string-regexp-CXe2COqk.cjs +0 -1
  154. package/dist/vendor-estree-util-is-identifier-name-DqXb06tQ.cjs +0 -1
  155. package/dist/vendor-extend-Xv02IcfV.cjs +0 -1
  156. package/dist/vendor-fast-deep-equal-xp5wgv1k.cjs +0 -1
  157. package/dist/vendor-hast-util-to-jsx-runtime-Cn0tASh-.cjs +0 -1
  158. package/dist/vendor-hast-util-whitespace-B7YrIln0.cjs +0 -1
  159. package/dist/vendor-html-url-attributes-B55Ir3vo.cjs +0 -1
  160. package/dist/vendor-inline-style-parser-BwLpyraz.cjs +0 -2
  161. package/dist/vendor-input-format-B4RKCxE4.cjs +0 -3
  162. package/dist/vendor-is-arrayish-DfXUb1DJ.cjs +0 -1
  163. package/dist/vendor-is-plain-obj-DH-Kh8FX.cjs +0 -1
  164. package/dist/vendor-js-file-download-Cbb6agEb.cjs +0 -1
  165. package/dist/vendor-libphonenumber-js-DkZ7WT-u.cjs +0 -13
  166. package/dist/vendor-lodash-CNz95YDD.cjs +0 -1
  167. package/dist/vendor-lodash.debounce-C9YP0rOk.cjs +0 -1
  168. package/dist/vendor-longest-streak-CpfJ7Pkv.cjs +0 -1
  169. package/dist/vendor-lottie-web-Cnpvoe-Q.cjs +0 -2
  170. package/dist/vendor-markdown-table-BIbVC1pY.cjs +0 -2
  171. package/dist/vendor-mdast-util-find-and-replace-BqOMYvvg.cjs +0 -1
  172. package/dist/vendor-mdast-util-from-markdown-DmcqmoHq.cjs +0 -1
  173. package/dist/vendor-mdast-util-gfm-DYVYZtQo.cjs +0 -1
  174. package/dist/vendor-mdast-util-gfm-autolink-literal-B7Jk_6Zc.cjs +0 -1
  175. package/dist/vendor-mdast-util-gfm-footnote-BqZr5GmF.cjs +0 -2
  176. package/dist/vendor-mdast-util-gfm-strikethrough-DkmBmVZz.cjs +0 -1
  177. package/dist/vendor-mdast-util-gfm-table-GRkZEL2K.cjs +0 -3
  178. package/dist/vendor-mdast-util-gfm-task-list-item-COkL7umh.cjs +0 -1
  179. package/dist/vendor-mdast-util-phrasing-B3pE6Gyd.cjs +0 -1
  180. package/dist/vendor-mdast-util-to-hast-DZGTy4jY.cjs +0 -11
  181. package/dist/vendor-mdast-util-to-markdown-CFDJSkr8.cjs +0 -12
  182. package/dist/vendor-mdast-util-to-string-epeputJu.cjs +0 -1
  183. package/dist/vendor-memoize-one-DetCWhre.cjs +0 -1
  184. package/dist/vendor-micromark-QT1lJ_9G.cjs +0 -3
  185. package/dist/vendor-micromark-core-commonmark-CHMYvCou.cjs +0 -1
  186. package/dist/vendor-micromark-extension-gfm-DOHEv_Ow.cjs +0 -1
  187. package/dist/vendor-micromark-extension-gfm-autolink-literal-BIi53Rt2.cjs +0 -1
  188. package/dist/vendor-micromark-extension-gfm-footnote-CuTbB2_e.cjs +0 -1
  189. package/dist/vendor-micromark-extension-gfm-strikethrough-CcuQ-v4I.cjs +0 -1
  190. package/dist/vendor-micromark-extension-gfm-table-CoYdjDBk.cjs +0 -1
  191. package/dist/vendor-micromark-extension-gfm-tagfilter-Dyvby5gX.cjs +0 -1
  192. package/dist/vendor-micromark-extension-gfm-task-list-item-eGtf7dwN.cjs +0 -1
  193. package/dist/vendor-micromark-factory-destination-DODxvNwQ.cjs +0 -1
  194. package/dist/vendor-micromark-factory-label-DRCYHbTp.cjs +0 -1
  195. package/dist/vendor-micromark-factory-space-BxE8R4nI.cjs +0 -1
  196. package/dist/vendor-micromark-factory-title-HTScd-95.cjs +0 -1
  197. package/dist/vendor-micromark-factory-whitespace-Cfovfawt.cjs +0 -1
  198. package/dist/vendor-micromark-util-character-ThpXZ0p5.cjs +0 -1
  199. package/dist/vendor-micromark-util-chunked-CCaF1jRh.cjs +0 -1
  200. package/dist/vendor-micromark-util-classify-character-BXzv_u9-.cjs +0 -1
  201. package/dist/vendor-micromark-util-combine-extensions-ymdtWEAr.cjs +0 -1
  202. package/dist/vendor-micromark-util-decode-numeric-character-reference-sKQehvtv.cjs +0 -1
  203. package/dist/vendor-micromark-util-decode-string-Coo2FPbM.cjs +0 -1
  204. package/dist/vendor-micromark-util-encode-Dyvby5gX.cjs +0 -1
  205. package/dist/vendor-micromark-util-html-tag-name-BqwwRvi2.cjs +0 -1
  206. package/dist/vendor-micromark-util-normalize-identifier-CZzRW9lF.cjs +0 -1
  207. package/dist/vendor-micromark-util-resolve-all-B1vkj8Lj.cjs +0 -1
  208. package/dist/vendor-micromark-util-sanitize-uri-fWsohj9C.cjs +0 -1
  209. package/dist/vendor-micromark-util-subtokenize-B5hanNMp.cjs +0 -1
  210. package/dist/vendor-object-assign-5rXDT7QN.cjs +0 -1
  211. package/dist/vendor-prop-types-D7ILSZ36.cjs +0 -2
  212. package/dist/vendor-property-information-B58jd_xz.cjs +0 -1
  213. package/dist/vendor-react-CzqSQR9J.cjs +0 -14
  214. package/dist/vendor-react-circular-progressbar-BnDuoTgW.cjs +0 -6
  215. package/dist/vendor-react-datepicker-GIiaQhgI.cjs +0 -2
  216. package/dist/vendor-react-draggable-rHHMjzs1.cjs +0 -3
  217. package/dist/vendor-react-error-boundary-DUjnAjoQ.cjs +0 -1
  218. package/dist/vendor-react-fast-compare-DjJCSAPj.cjs +0 -1
  219. package/dist/vendor-react-google-autocomplete-Du5iErAd.cjs +0 -2
  220. package/dist/vendor-react-hook-form-DowHtP8_.cjs +0 -1
  221. package/dist/vendor-react-is-DK4cIQ7j.cjs +0 -1
  222. package/dist/vendor-react-lottie-player-Cwb-Xhoz.cjs +0 -1
  223. package/dist/vendor-react-lottie-player-DcNoEdGF.js +0 -155
  224. package/dist/vendor-react-markdown-sVAdj9xV.cjs +0 -1
  225. package/dist/vendor-react-merge-refs-Daoz85kW.cjs +0 -1
  226. package/dist/vendor-react-number-format-QGmN0d2v.cjs +0 -7
  227. package/dist/vendor-react-onclickoutside-CjoT6SX4.cjs +0 -1
  228. package/dist/vendor-react-phone-number-input-BBnFN-wD.cjs +0 -4
  229. package/dist/vendor-react-popper-DEi6sOBD.cjs +0 -1
  230. package/dist/vendor-react-select-DufBhudz.cjs +0 -4
  231. package/dist/vendor-react-virtualized-auto-sizer-DS8s5Nqf.cjs +0 -1
  232. package/dist/vendor-react-vtree-CtDSz2Mv.cjs +0 -1
  233. package/dist/vendor-react-webcam-CPpkXthK.cjs +0 -1
  234. package/dist/vendor-react-window-CuU_qzaW.cjs +0 -1
  235. package/dist/vendor-react-window-infinite-loader-CdyCIjx6.cjs +0 -1
  236. package/dist/vendor-remark-gfm-Bou12kJi.cjs +0 -1
  237. package/dist/vendor-remark-parse-BYKtvo5n.cjs +0 -1
  238. package/dist/vendor-remark-rehype-CuqXXG-2.cjs +0 -1
  239. package/dist/vendor-rfdc-sZ2eP5eF.cjs +0 -1
  240. package/dist/vendor-simple-swizzle-BNELyqz6.cjs +0 -1
  241. package/dist/vendor-space-separated-tokens-0etuzMC1.cjs +0 -1
  242. package/dist/vendor-style-to-js-CUjGi3ge.cjs +0 -1
  243. package/dist/vendor-style-to-object--fzklQoy.cjs +0 -1
  244. package/dist/vendor-trim-lines-BO73c4j-.cjs +0 -1
  245. package/dist/vendor-trough-CZIkZM5d.cjs +0 -1
  246. package/dist/vendor-unified-hdBFtaBE.cjs +0 -1
  247. package/dist/vendor-unist-util-is-C5fG5pIe.cjs +0 -1
  248. package/dist/vendor-unist-util-position-DsgljCtl.cjs +0 -1
  249. package/dist/vendor-unist-util-stringify-position-DfmUoPWR.cjs +0 -1
  250. package/dist/vendor-unist-util-visit-Cyg51Aas.cjs +0 -1
  251. package/dist/vendor-unist-util-visit-parents-BFfGpcYZ.cjs +0 -1
  252. package/dist/vendor-us-bank-account-validator-DOz5Vc9n.cjs +0 -1
  253. package/dist/vendor-use-isomorphic-layout-effect-CkGv31zs.cjs +0 -1
  254. package/dist/vendor-use-resize-observer-FgrE0mfc.cjs +0 -1
  255. package/dist/vendor-utils-CN5UYrS0.cjs +0 -1
  256. package/dist/vendor-vfile-DagMcMZP.cjs +0 -1
  257. package/dist/vendor-vfile-message-DB4fwBOw.cjs +0 -1
  258. package/dist/vendor-warning-FOT2NNRo.cjs +0 -1
  259. package/dist/vendor-zwitch-Dyvby5gX.cjs +0 -1
@@ -0,0 +1,35 @@
1
+ /**
2
+ * PCM → 16-bit mono WAV, for voice dictation uploads.
3
+ *
4
+ * The browser records raw PCM rather than using MediaRecorder because Chrome's
5
+ * MediaRecorder only produces `audio/webm`, which the transcription model does
6
+ * not accept (it takes wav/mp3/aiff/aac/ogg/flac). Encoding WAV here also makes
7
+ * the payload identical across browsers instead of varying by vendor codec.
8
+ */
9
+ /** 16 kHz is the standard speech-recognition rate; more bandwidth buys no accuracy. */
10
+ export declare const DICTATION_SAMPLE_RATE = 16000;
11
+ /**
12
+ * Resample to a lower rate by averaging each source window.
13
+ *
14
+ * Averaging rather than picking the nearest sample: plain decimation aliases
15
+ * high frequencies down into the speech band as audible chirp, which costs
16
+ * recognition accuracy for a couple of lines of arithmetic.
17
+ *
18
+ * @param input Mono samples in [-1, 1].
19
+ * @param inputRate Source sample rate, typically the AudioContext's 44.1/48 kHz.
20
+ * @param targetRate Desired rate; must not exceed inputRate.
21
+ * @returns Resampled mono samples, or `input` unchanged when no downsampling is needed.
22
+ */
23
+ export declare function downsample(input: Float32Array, inputRate: number, targetRate: number): Float32Array;
24
+ /** Concatenate the captured chunks into one contiguous buffer. */
25
+ export declare function mergeChunks(chunks: Float32Array[]): Float32Array;
26
+ /** Root-mean-square level of a chunk, used to detect a silent microphone. */
27
+ export declare function rms(samples: Float32Array): number;
28
+ /**
29
+ * Wrap mono float samples in a canonical 44-byte RIFF/WAVE header.
30
+ *
31
+ * @param samples Mono samples in [-1, 1]; values outside are clipped, not wrapped.
32
+ * @param sampleRate Rate of `samples`.
33
+ * @returns A complete `.wav` file.
34
+ */
35
+ export declare function encodeWav(samples: Float32Array, sampleRate: number): ArrayBuffer;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,32 @@
1
+ export interface VoiceDictationErrorMessages {
2
+ /** The user (or browser policy) blocked microphone access. */
3
+ permissionDenied: string;
4
+ /** Capture failed for any other reason. */
5
+ unavailable: string;
6
+ }
7
+ export interface UseVoiceDictationResult {
8
+ error: string | null;
9
+ isRecording: boolean;
10
+ /** True between start() and the mic actually going live (permission pending). */
11
+ isStarting: boolean;
12
+ /** False when the browser cannot capture audio — hide the control entirely. */
13
+ isSupported: boolean;
14
+ /**
15
+ * Latest windowed input level (RMS, 0–1), refreshed about ten times a second.
16
+ * A ref rather than state: a level that re-rendered the composer on every
17
+ * update would re-render it ten times a second for a decoration.
18
+ */
19
+ levelRef: React.MutableRefObject<number>;
20
+ /** Dismisses a capture error — it is otherwise only cleared by the next start(). */
21
+ clearError: () => void;
22
+ start: () => void;
23
+ /** `discard` drops the take instead of emitting it (e.g. the message was sent). */
24
+ stop: (options?: {
25
+ discard?: boolean;
26
+ }) => void;
27
+ }
28
+ /**
29
+ * @param onRecordingComplete Called with a finished WAV once recording stops.
30
+ * Not called when the take held no audio, so a mis-click costs nothing.
31
+ */
32
+ export declare function useVoiceDictation(onRecordingComplete: (audio: Blob) => void, errorMessages: VoiceDictationErrorMessages): UseVoiceDictationResult;
@@ -0,0 +1 @@
1
+ export {};
@@ -168,7 +168,10 @@ export interface AiCfoPageProps {
168
168
  isRoutinesOpen?: boolean;
169
169
  /** Replaces the chat body with the Skills browser. Driven by the left-rail entry. */
170
170
  isSkillsOpen?: boolean;
171
+ isTranscribing?: boolean;
172
+ isTranscriptionFailed?: boolean;
171
173
  isUploadPromoVisible?: boolean;
174
+ isVoiceInputEnabled?: boolean;
172
175
  /** Debounced (300ms) flush of the card-policy RHF watch subscription. */
173
176
  onCardPolicyFormChange?: AiCfoQuestionAnswerProps["onCardPolicyFormChange"];
174
177
  /** Submission handler for the AI Card Policy interactive form. */
@@ -312,6 +315,8 @@ export interface AiCfoPageProps {
312
315
  /** Publish or unpublish in place. Absent withholds the control. */
313
316
  onSetSkillVisibility?: (macroId: string, visibility: SkillVisibility) => void;
314
317
  onUploadPromoClose?: () => void;
318
+ /** Receives a finished WAV recording to send for transcription. */
319
+ onVoiceRecordingComplete?: (audio: Blob, chatSessionId?: ID) => void;
315
320
  /**
316
321
  * Resolves a newly-created card id to a `{ title, subtitle? }` tile.
317
322
  * Used by the synthetic "Created cards" answer bubble rendered after a
@@ -44,7 +44,10 @@ export interface AiCfoSidePanelProps {
44
44
  isInteractiveFormSubmitting?: AiCfoQuestionAnswerProps["isInteractiveFormSubmitting"];
45
45
  /** Passed by connect() / drawer; not used by panel */
46
46
  isOpen?: boolean;
47
+ isTranscribing?: boolean;
48
+ isTranscriptionFailed?: boolean;
47
49
  isUploadPromoVisible?: boolean;
50
+ isVoiceInputEnabled?: boolean;
48
51
  location?: unknown;
49
52
  navigate?: unknown;
50
53
  /** Debounced card-policy watch flush → `updateAiCardPolicyFormDraft`. */
@@ -87,6 +90,8 @@ export interface AiCfoSidePanelProps {
87
90
  onEmailLinkQuestionProcessed?: () => void;
88
91
  onMenuClick?: () => void;
89
92
  onUploadPromoClose?: () => void;
93
+ /** Receives a finished WAV recording to send for transcription. */
94
+ onVoiceRecordingComplete?: (audio: Blob, chatSessionId?: ID) => void;
90
95
  /**
91
96
  * Look up a newly-created card's preview tile data by `cardId`. Used by
92
97
  * the synthetic "Created cards" bubble to render the tile list. Optional
@@ -22,7 +22,13 @@ export interface AiCfoInputProps {
22
22
  */
23
23
  isCreateSkillEnabled?: boolean;
24
24
  isFileUploadEnabled?: boolean;
25
+ /** True while a finished recording is being transcribed server-side. */
26
+ isTranscribing?: boolean;
27
+ /** True when the last transcription request failed, so the composer can say so. */
28
+ isTranscriptionFailed?: boolean;
25
29
  isUploadPromoVisible?: boolean;
30
+ /** Gates the mic; the control also needs a browser that can capture audio. */
31
+ isVoiceInputEnabled?: boolean;
26
32
  selectedFiles?: FileAttachment[];
27
33
  shouldFocus?: boolean;
28
34
  /** Chat-visible skills for the `/` menu (from getSkills). */
@@ -31,6 +37,8 @@ export interface AiCfoInputProps {
31
37
  skillsEnabled?: boolean;
32
38
  /** First-person next message suggestion; shown as ghost placeholder + Tab-to-fill when the input is empty. */
33
39
  suggestedReply?: string;
40
+ /** Session the composer is in, snapshotted when a recording starts. */
41
+ voiceChatSessionId?: ID;
34
42
  onInputChange: (value: string) => void;
35
43
  onStopSubmit: () => void;
36
44
  onSubmit: () => void;
@@ -42,6 +50,8 @@ export interface AiCfoInputProps {
42
50
  /** Called when a skill is picked from the `/` menu. */
43
51
  onSelectSkill?: (skill: SkillMenuItem) => void;
44
52
  onUploadPromoClose?: () => void;
53
+ /** Receives a finished WAV recording plus the session it was dictated into. */
54
+ onVoiceRecordingComplete?: (audio: Blob, chatSessionId?: ID) => void;
45
55
  }
46
56
  declare const AiCfoInput: React.FC<AiCfoInputProps>;
47
57
  export default AiCfoInput;
@@ -0,0 +1,10 @@
1
+ import { default as React } from 'react';
2
+ export interface VoiceWaveformProps {
3
+ levelRef: React.MutableRefObject<number>;
4
+ }
5
+ /**
6
+ * Live input level while dictating, as a strip of bars scrolling right to left.
7
+ * Reads the level from a ref on an interval so the composer is not re-rendered
8
+ * ten times a second.
9
+ */
10
+ export declare const VoiceWaveform: ({ levelRef, }: VoiceWaveformProps) => React.ReactElement;
@@ -0,0 +1,16 @@
1
+ import { MutableRefObject } from 'react';
2
+ /** The one method this hook needs off the debounced writer — `lodash` itself is a forbidden import here. */
3
+ interface FlushableDebouncedFunc {
4
+ flush: () => void;
5
+ }
6
+ /**
7
+ * Keeps the composer's local draft in step with a dictation take.
8
+ *
9
+ * The transcript is appended to Redux `currentInput` by the reducer, but the textarea
10
+ * renders `localInput`, which is not otherwise subscribed to Redux. Flushing the pending
11
+ * debounced write when transcription starts makes Redux match the draft exactly, and the
12
+ * composer is read-only until the take lands, so neither side can move in between — the
13
+ * refresh cannot drop anything typed while recording.
14
+ */
15
+ export declare const useSyncTranscriptIntoLocalInput: (isTranscribing: boolean, currentInput: string, debouncedUpdateRedux: MutableRefObject<FlushableDebouncedFunc>, setLocalInput: (input: string) => void) => void;
16
+ export {};
@@ -1,4 +1,4 @@
1
1
  declare const _default: import('react').NamedExoticComponent<{
2
- animationEnabled?: boolean;
2
+ animationEnabled: boolean;
3
3
  }>;
4
4
  export default _default;
@@ -1,6 +1,5 @@
1
1
  declare const _default: import('react').NamedExoticComponent<{
2
2
  christmasAnimationEnabled?: boolean;
3
- halloweenAnimationEnabled?: boolean;
4
3
  newYearAnimationEnabled?: boolean;
5
4
  thanksGivingAnimationEnabled?: boolean;
6
5
  }>;
@@ -4,7 +4,9 @@ export interface Props {
4
4
  companyName: string;
5
5
  parentSubsidiaryRelationship: ParentSubsidiaryInfo;
6
6
  isEnabled?: boolean;
7
+ /** Overrides the "Parent" / "Subsidiary" tag text. */
8
+ label?: string;
7
9
  onViewDetailsLinkClicked?: (parentID: ID) => void;
8
10
  }
9
- declare const ParentSubsidiaryTag: ({ companyId, companyName, isEnabled, parentSubsidiaryRelationship, onViewDetailsLinkClicked, }: Props) => import("react/jsx-runtime").JSX.Element | null;
11
+ declare const ParentSubsidiaryTag: ({ companyId, companyName, isEnabled, label, parentSubsidiaryRelationship, onViewDetailsLinkClicked, }: Props) => import("react/jsx-runtime").JSX.Element | null;
10
12
  export default ParentSubsidiaryTag;
@@ -26,8 +26,7 @@ export interface Props {
26
26
  isReadOnly?: boolean;
27
27
  pickerStyles?: Partial<PickerStyles>;
28
28
  selectedUserGroups?: UserGroup[];
29
- showDropdownIndicator?: boolean;
30
29
  onSelectedUsersChanged: (selectedUsers: RoleSelectableUser[], deSelectedUsers: RoleSelectableUser[]) => void;
31
30
  onSelectedUserGroupsChanged?: (selectedUserGroups: UserGroup[]) => void;
32
31
  }
33
- export default function UserMultiSelect({ name, allUsers, allUserGroups, selectedUserGroups, onSelectedUserGroupsChanged, onSelectedUsersChanged, selectedUsers, disable, pickerStyles: { optionBackgroundColor, optionTextStyle, titleTextStyle, backgroundColor, titleTextAlignment, selectedOptionColor, multiValueLabelTitleStyle, }, customization: { placeholderLabel }, isReadOnly, showDropdownIndicator, }: Readonly<Props>): import("react/jsx-runtime").JSX.Element;
32
+ export default function UserMultiSelect({ name, allUsers, allUserGroups, selectedUserGroups, onSelectedUserGroupsChanged, onSelectedUsersChanged, selectedUsers, disable, pickerStyles: { optionBackgroundColor, optionTextStyle, titleTextStyle, backgroundColor, titleTextAlignment, selectedOptionColor, multiValueLabelTitleStyle, }, customization: { placeholderLabel }, isReadOnly, }: Readonly<Props>): import("react/jsx-runtime").JSX.Element;
@@ -16,7 +16,6 @@ export interface Props {
16
16
  pickerStyles?: Partial<PickerStyles>;
17
17
  placeholderLabel?: string;
18
18
  registerOptions?: RegisterOptions;
19
- showDropdownIndicator?: boolean;
20
19
  }
21
- declare const UserMultiSelectField: ({ name, placeholderLabel, registerOptions, value: defaultValue, isReadOnly, showDropdownIndicator, isDisabled, pickerStyles, }: Props) => import("react/jsx-runtime").JSX.Element;
20
+ declare const UserMultiSelectField: ({ name, placeholderLabel, registerOptions, value: defaultValue, isReadOnly, isDisabled, pickerStyles, }: Props) => import("react/jsx-runtime").JSX.Element;
22
21
  export default UserMultiSelectField;
@@ -49,12 +49,18 @@ export declare const isTransactionDetailFieldEntityType: (entityType: string) =>
49
49
  * those to this form on read so they still resolve.
50
50
  * Returns undefined for null balances so callers can skip commenting on empty cells.
51
51
  */
52
- export declare const toColumnKey: (balance: COABalance | null) => string | undefined;
52
+ /**
53
+ * Column part of a cell's comment anchor.
54
+ *
55
+ * `customRangeEndDate` is the end of the custom date range the user committed
56
+ * on the page (see CustomDateRangeColumnContext), if any.
57
+ */
58
+ export declare const toColumnKey: (balance: COABalance | null, customRangeEndDate?: string) => string | undefined;
53
59
  /**
54
60
  * Builds a per-cell entityId by combining a row-level stable ID with a column key.
55
61
  * Returns undefined if either part is missing (commenting should be disabled for that cell).
56
62
  */
57
- export declare const toCellEntityId: (rowStableId: string | undefined, balance: COABalance | null) => string | undefined;
63
+ export declare const toCellEntityId: (rowStableId: string | undefined, balance: COABalance | null, customRangeEndDate?: string) => string | undefined;
58
64
  /**
59
65
  * Normalizes a column key to its canonical, timezone-independent form.
60
66
  * Date-pair keys become `YYYY-MM-DD_YYYY-MM-DD`; calculated-column keys
@@ -1,4 +1,10 @@
1
1
  import { ReactNode } from 'react';
2
+ /**
3
+ * `default` is the JE Schedules look. `iconMenu` is the Create Transaction design: a white
4
+ * button that opens its menu on hover anywhere over it, darkens its border while open, and
5
+ * shows a wider menu of {@link IconMenuItem} rows.
6
+ */
7
+ export type ButtonWithDropDownVariant = "default" | "iconMenu";
2
8
  export interface ButtonWithDropDownProps {
3
9
  /**
4
10
  * Supplied by the caller rather than derived from `label`: deriving it would tie every
@@ -10,6 +16,7 @@ export interface ButtonWithDropDownProps {
10
16
  /** Shown above the chevron on hover. */
11
17
  chevronTooltip?: string;
12
18
  isDisabled?: boolean;
19
+ variant?: ButtonWithDropDownVariant;
13
20
  /**
14
21
  * `close` lets the caller dismiss the menu on selection without its own selection types
15
22
  * having to pass through this component. With a plain ReactNode the popover could not be
@@ -26,7 +33,7 @@ export interface ButtonWithDropDownProps {
26
33
  * The split button used for "New"-style actions: a labelled primary segment and a chevron that
27
34
  * opens a menu.
28
35
  */
29
- declare function ButtonWithDropDown({ dataTestId, label, renderMenu, chevronTooltip, isDisabled, onPrimaryClick, }: Readonly<ButtonWithDropDownProps>): import("react/jsx-runtime").JSX.Element;
36
+ declare function ButtonWithDropDown({ dataTestId, label, renderMenu, chevronTooltip, isDisabled, onPrimaryClick, variant, }: Readonly<ButtonWithDropDownProps>): import("react/jsx-runtime").JSX.Element;
30
37
  export default ButtonWithDropDown;
31
38
  export declare const MenuItemLabel: import('@emotion/styled').StyledComponent<{
32
39
  theme?: import('@emotion/react').Theme;
@@ -57,3 +64,27 @@ export declare const SectionLabel: import('@emotion/styled').StyledComponent<{
57
64
  } & import('react').ClassAttributes<HTMLDivElement> & import('react').HTMLAttributes<HTMLDivElement> & {
58
65
  theme?: import('@emotion/react').Theme;
59
66
  }, {}, {}>;
67
+ export declare const IconMenuItemIcon: import('@emotion/styled').StyledComponent<{
68
+ theme?: import('@emotion/react').Theme;
69
+ as?: React.ElementType;
70
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
71
+ export declare const IconMenuItemText: import('@emotion/styled').StyledComponent<{
72
+ theme?: import('@emotion/react').Theme;
73
+ as?: React.ElementType;
74
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
75
+ export declare const IconMenuItemLabel: import('@emotion/styled').StyledComponent<{
76
+ theme?: import('@emotion/react').Theme;
77
+ as?: React.ElementType;
78
+ } & import('react').ClassAttributes<HTMLDivElement> & import('react').HTMLAttributes<HTMLDivElement> & {
79
+ theme?: import('@emotion/react').Theme;
80
+ }, {}, {}>;
81
+ export declare const IconMenuItemDescription: import('@emotion/styled').StyledComponent<{
82
+ theme?: import('@emotion/react').Theme;
83
+ as?: React.ElementType;
84
+ } & import('react').ClassAttributes<HTMLDivElement> & import('react').HTMLAttributes<HTMLDivElement> & {
85
+ theme?: import('@emotion/react').Theme;
86
+ }, {}, {}>;
87
+ export declare const IconMenuItem: import('@emotion/styled').StyledComponent<{
88
+ theme?: import('@emotion/react').Theme;
89
+ as?: React.ElementType;
90
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
@@ -30,6 +30,14 @@ export interface DownloadReportOptions {
30
30
  cashFlowProjectsToFilterOut?: ID[];
31
31
  /** Profit & Loss by class only: matches on-screen "By Class (Horizontal)" vs vertical. */
32
32
  classViewLayout?: ClassViewLayout;
33
+ /**
34
+ * Custom date range (`YYYY-MM-DD`) shown on screen; the export then covers
35
+ * exactly this range. Absent for the default period-based export.
36
+ */
37
+ customDateRange?: {
38
+ endDate: string;
39
+ startDate: string;
40
+ };
33
41
  dataAvailable?: TimeframeTick;
34
42
  disabledAdditionalColumns?: COABalanceType[];
35
43
  nestedClassHierarchy?: NestedClassHierarchyForReport[];
@@ -41,6 +41,9 @@ export default interface DownloadReportOptionsPayload {
41
41
  cash_flow_classes_to_filter_out?: NestedClassID[];
42
42
  cash_flow_projects_to_filter_out?: ID[];
43
43
  class_view_layout?: ClassViewLayout;
44
+ /** Same names as the reports API: export exactly this range when present. */
45
+ custom_end_date?: string;
46
+ custom_start_date?: string;
44
47
  data_available?: {
45
48
  end_date: string;
46
49
  start_date: string;
@@ -0,0 +1,8 @@
1
+ import { ForwardRefExoticComponent, PropsWithoutRef, Ref, RefAttributes } from 'react';
2
+ import { LottieProps } from 'react-lottie-player';
3
+ type PlayerProps = PropsWithoutRef<LottieProps>;
4
+ type LottieInstance = LottieProps["ref"] extends Ref<infer Instance> | undefined ? Instance : never;
5
+ export type LazyLottieComponent = ForwardRefExoticComponent<PlayerProps & RefAttributes<LottieInstance>>;
6
+ export declare const LottiePlayerLight: LazyLottieComponent;
7
+ export declare const LottiePlayer: LazyLottieComponent;
8
+ export {};
@@ -0,0 +1,13 @@
1
+ import { ComponentPropsWithoutRef } from 'react';
2
+ import { Document as PdfDocument, Page as PdfPage } from 'react-pdf';
3
+ type DocumentProps = ComponentPropsWithoutRef<typeof PdfDocument>;
4
+ type PageProps = ComponentPropsWithoutRef<typeof PdfPage>;
5
+ /**
6
+ * react-pdf's `Document` and `Page`, loaded on first render. Imported directly,
7
+ * react-pdf and pdf.js land in the first-load bundle of every app; through
8
+ * `import()` they load only where a PDF is shown. While the library loads,
9
+ * `Document` shows its own `loading` element, so the spinner is unchanged.
10
+ */
11
+ export declare const Document: (props: DocumentProps) => import("react/jsx-runtime").JSX.Element;
12
+ export declare const Page: (props: PageProps) => import("react/jsx-runtime").JSX.Element;
13
+ export {};
@@ -0,0 +1,17 @@
1
+ import { ComponentType, SVGProps } from 'react';
2
+ type SvgProps = Omit<SVGProps<SVGSVGElement>, "ref">;
3
+ /**
4
+ * An SVG component loaded on first render, for large SVGs (Figma exports that
5
+ * embed raster images as base64). Imported directly they compile into the main
6
+ * bundle and every page load downloads them; through `import()` each becomes
7
+ * its own chunk that loads only where it is shown. Same call sites and
8
+ * `styled()` wrappers as the directly imported component; renders nothing
9
+ * until its chunk arrives.
10
+ */
11
+ export declare const lazySvg: (load: () => Promise<{
12
+ ReactComponent: ComponentType<SvgProps>;
13
+ }>) => {
14
+ (props: SvgProps): import("react/jsx-runtime").JSX.Element;
15
+ displayName: string;
16
+ };
17
+ export {};
@@ -2,6 +2,8 @@ export interface Props {
2
2
  disabled?: boolean;
3
3
  enableSearchHotkey?: boolean;
4
4
  inputWrapperStyle?: React.CSSProperties;
5
+ /** When true, a one-time discovery coachmark is shown anchored to the search icon. */
6
+ isSearchDiscoveryCoachmarkOpen?: boolean;
5
7
  keepSearchBoxOpen?: boolean;
6
8
  placeholder?: string;
7
9
  /** When set, applied to the search bar container (icon + input). */
@@ -12,7 +14,8 @@ export interface Props {
12
14
  styledSearchCancelIconWrapperStyle?: React.CSSProperties;
13
15
  styledSearchIconContainerStyle?: React.CSSProperties;
14
16
  styledSearchIconWrapperStyle?: React.CSSProperties;
17
+ onDismissSearchDiscoveryCoachmark?: () => void;
15
18
  onSearchOpen?: (isOpen: boolean) => void;
16
19
  onSearchTextChanged?: (text: string) => void;
17
20
  }
18
- export declare function ListPageSearchInputBox({ enableSearchHotkey, disabled, inputWrapperStyle, keepSearchBoxOpen, placeholder, searchBarDataTestId, searchIconMarginRight, searchText, style, styledSearchCancelIconWrapperStyle, styledSearchIconContainerStyle, styledSearchIconWrapperStyle, onSearchOpen, onSearchTextChanged, }: Readonly<Props>): import("react/jsx-runtime").JSX.Element;
21
+ export declare function ListPageSearchInputBox({ enableSearchHotkey, disabled, inputWrapperStyle, isSearchDiscoveryCoachmarkOpen, keepSearchBoxOpen, placeholder, searchBarDataTestId, searchIconMarginRight, searchText, style, styledSearchCancelIconWrapperStyle, styledSearchIconContainerStyle, styledSearchIconWrapperStyle, onDismissSearchDiscoveryCoachmark, onSearchOpen, onSearchTextChanged, }: Readonly<Props>): import("react/jsx-runtime").JSX.Element;
@@ -8,6 +8,8 @@ export interface ListPageSearchSectionProps {
8
8
  enableSearchHotkey?: boolean;
9
9
  hideSearchBtn?: boolean;
10
10
  inputWrapperStyle?: React.CSSProperties;
11
+ /** When true, a one-time discovery coachmark is shown anchored to the search icon (non-mobile). */
12
+ isSearchDiscoveryCoachmarkOpen?: boolean;
11
13
  /** When set, applied to each search bar container (icon + input). */
12
14
  searchBarDataTestId?: string;
13
15
  searchIconMarginRight?: string;
@@ -24,6 +26,7 @@ export interface ListPageSearchSectionProps {
24
26
  styledSearchCancelIconWrapperStyle?: React.CSSProperties;
25
27
  styledSearchIconContainerStyle?: React.CSSProperties;
26
28
  styledSearchIconWrapperStyle?: React.CSSProperties;
29
+ onDismissSearchDiscoveryCoachmark?: () => void;
27
30
  onSearchTextChanged?: (searchText: string) => void;
28
31
  }
29
32
  export default function ListPageSearchSection(listPageSearchSectionProps: Readonly<ListPageSearchSectionProps>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,12 @@
1
+ export interface SearchDiscoveryCoachmarkProps {
2
+ onDismiss: () => void;
3
+ }
4
+ /**
5
+ * One-time discovery coachmark rendered as the `title` of a controlled dark
6
+ * Tooltip anchored to the transaction search icon. Content-only — the Tooltip
7
+ * supplies the dark surface; the upward tick is drawn here to match the design.
8
+ * Dismissed via the close button or Escape (plus the search icon / Cmd+K in the
9
+ * host). There is deliberately no click-away: a stray click shouldn't
10
+ * permanently dismiss a one-time coachmark.
11
+ */
12
+ export declare function SearchDiscoveryCoachmark({ onDismiss, }: Readonly<SearchDiscoveryCoachmarkProps>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,10 @@
1
+ import { CustomerSummary, ID } from '@zeniai/client-epic-state';
2
+ /**
3
+ * A sub-customer's or project's tag (like cockpit's Subsidiary tag). With its parent and `onParentClick`, its popover
4
+ * shows the parent, with View Details opening it; otherwise it's a plain tag.
5
+ */
6
+ export declare function CustomerHierarchyTag({ customer, onParentClick, }: Readonly<{
7
+ customer: CustomerSummary;
8
+ onParentClick?: (id: ID) => void;
9
+ }>): import("react/jsx-runtime").JSX.Element | null;
10
+ export default CustomerHierarchyTag;
@@ -0,0 +1,7 @@
1
+ import { CustomerSummary, ID } from '@zeniai/client-epic-state';
2
+ /** A customer's initials avatar (like the vendor list's) and name, with its Sub-customer / Project tag. */
3
+ export declare function CustomerNameCell({ customer, onParentClick, }: Readonly<{
4
+ customer: CustomerSummary;
5
+ onParentClick?: (id: ID) => void;
6
+ }>): import("react/jsx-runtime").JSX.Element;
7
+ export default CustomerNameCell;
@@ -17,6 +17,8 @@ export interface CustomerDetailPageProps {
17
17
  timePeriod: TimeframeTick;
18
18
  };
19
19
  allTransactionsView?: TransactionListByEntityView;
20
+ /** Tenant setting: the figures cover the customer's sub-customers and projects too. */
21
+ includeSubCustomersInTotals?: boolean;
20
22
  panelContent?: ReactNode;
21
23
  sidePanelIsFullView?: boolean;
22
24
  sidePanelIsOpen?: boolean;
@@ -26,6 +28,8 @@ export interface CustomerDetailPageProps {
26
28
  onTabChange: (tab: CustomerDetailTabType) => void;
27
29
  onTrendFilterChange: (filter: VendorSpendTrendFilterTabType) => void;
28
30
  onBackClick?: () => void;
31
+ /** Opens another customer's details: one in its family tree, or its parent from the tag. */
32
+ onCustomerClick?: (customerId: ID) => void;
29
33
  onTransactionItemClick?: (id: TransactionID) => void;
30
34
  onTrendRetry?: () => void;
31
35
  onTrendSelectedPeriodChange?: (selectedPeriod?: {
@@ -34,5 +38,5 @@ export interface CustomerDetailPageProps {
34
38
  currentTimePeriod?: TimeframeTick;
35
39
  }) => void;
36
40
  }
37
- export declare function CustomerDetailPage({ allTransactionsTabData, allTransactionsView, detailView, firstMonthOfFY, panelContent, readOnlyMode, selectedTab, sidePanelIsFullView, sidePanelIsOpen, trendFilter, trendWithTransactions, onBackClick, onLoadPreviousTransactionsClick, onSave, onTabChange, onTransactionItemClick, onTrendFilterChange, onTrendRetry, onTrendSelectedPeriodChange, }: Readonly<CustomerDetailPageProps>): import("react/jsx-runtime").JSX.Element;
41
+ export declare function CustomerDetailPage({ allTransactionsTabData, allTransactionsView, detailView, firstMonthOfFY, includeSubCustomersInTotals, panelContent, readOnlyMode, selectedTab, sidePanelIsFullView, sidePanelIsOpen, trendFilter, trendWithTransactions, onBackClick, onCustomerClick, onLoadPreviousTransactionsClick, onSave, onTabChange, onTransactionItemClick, onTrendFilterChange, onTrendRetry, onTrendSelectedPeriodChange, }: Readonly<CustomerDetailPageProps>): import("react/jsx-runtime").JSX.Element;
38
42
  export default CustomerDetailPage;
@@ -0,0 +1,16 @@
1
+ import { CustomerSummary, ID } from '@zeniai/client-epic-state';
2
+ export interface CustomerFamilyTreeProps {
3
+ currentCustomerId: ID;
4
+ /** The family, flat: its top-level customer and every active descendant (`CustomerSummary.familyTree`). */
5
+ familyTree: CustomerSummary[];
6
+ /** "Show totals including sub-customers": parents show totals and get a "Total <name>" row when expanded. */
7
+ includeSubCustomersInTotals: boolean;
8
+ currencySymbol?: string;
9
+ onCustomerClick: (customerId: ID) => void;
10
+ }
11
+ /**
12
+ * The whole family a customer belongs to, as a report-style tree: each level indented under its parent, opened down
13
+ * to the current customer, which is highlighted. Other rows open their own details page.
14
+ */
15
+ export declare function CustomerFamilyTree({ currencySymbol, currentCustomerId, familyTree, includeSubCustomersInTotals, onCustomerClick, }: Readonly<CustomerFamilyTreeProps>): import("react/jsx-runtime").JSX.Element;
16
+ export default CustomerFamilyTree;
@@ -1,6 +1,9 @@
1
1
  import { CustomerRevenueKey, CustomerSummary, CustomerSummarySortKey, FetchState, SortOrder } from '@zeniai/client-epic-state';
2
2
  export declare const getCustomerRevenueLabel: (key: CustomerRevenueKey) => string;
3
- /** Customers tab (Accounts Receivable) list: revenue, open AR, category and class per customer. */
3
+ /**
4
+ * Customers tab (Accounts Receivable) list: revenue, open AR, category and class per customer. Which levels it
5
+ * lists and whether the figures include sub-customers and projects follow the tenant's Customers settings.
6
+ */
4
7
  export interface CustomerListPageProps {
5
8
  customers: CustomerSummary[];
6
9
  fetchState: FetchState;
@@ -37,4 +37,4 @@ export interface ListItemData<TData> {
37
37
  onToggleRow?: (rowId: string) => void;
38
38
  renderPlaceholderRow?: (index: number) => ReactNode;
39
39
  }
40
- export declare function DataListTable<TData>({ columns, columnOrder, onColumnOrderChange, data, getRowId, stickyColumnKeys, maxWidthByColumnKey, sortState, onSortChange, selectedRowIds, onSelectedRowIdsChange, features, renderCheckboxRailCell, renderCheckboxRailHeader, renderRowBorderIcon, renderRowComment, renderRowCommentHeader, renderRowMenu, getRowMeta, infiniteLoader, estimatedRowHeight, getEstimatedRowHeight, cellVerticalAlign, centerWhenNarrow, bodyHeightIncludesHeader, disableInternalScroll, expandFrameWidthToViewport, bodyHeight, fillParent, className, "data-testid": dataTestId, rowLayoutVersion, rowMinHeight, onScroll, showOuterBorder, initialScrollOffset, onVirtualListRef, placeholderRowRootProps, renderFooterBelowFrame, isResponsiveTable, responsiveTableMinWidth, responsiveTableMaxWidth, isHorizontalScroll, columnGapPx, }: DataListTableProps<TData>): import("react/jsx-runtime").JSX.Element;
40
+ export declare function DataListTable<TData>({ columns, columnOrder, onColumnOrderChange, data, getRowId, stickyColumnKeys, maxWidthByColumnKey, sortState, defaultSortState, onSortChange, selectedRowIds, onSelectedRowIdsChange, features, renderCheckboxRailCell, renderCheckboxRailHeader, renderRowBorderIcon, renderRowComment, renderRowCommentHeader, renderRowMenu, getRowMeta, infiniteLoader, estimatedRowHeight, getEstimatedRowHeight, cellVerticalAlign, centerWhenNarrow, bodyHeightIncludesHeader, disableInternalScroll, expandFrameWidthToViewport, bodyHeight, fillParent, fitHeightToContent, className, "data-testid": dataTestId, rowLayoutVersion, rowMinHeight, onScroll, showOuterBorder, initialScrollOffset, onVirtualListRef, placeholderRowRootProps, renderFooterBelowFrame, isResponsiveTable, responsiveTableMinWidth, responsiveTableMaxWidth, isHorizontalScroll, columnGapPx, }: DataListTableProps<TData>): import("react/jsx-runtime").JSX.Element;
@@ -13,6 +13,8 @@ export interface DataListTableHeaderProps<TData> {
13
13
  columnGapPx?: number;
14
14
  /** When set (responsive table), fixed pixel width per data column. */
15
15
  columnWidthPxByKey?: ColumnKeyMap;
16
+ /** When set, a sort other than this one shows a ⊗ on the active column that resets to it. */
17
+ defaultSortState?: SortState | null;
16
18
  features?: {
17
19
  checkboxRail?: boolean;
18
20
  columnReorder?: boolean;
@@ -39,6 +41,6 @@ export interface DataListTableHeaderProps<TData> {
39
41
  renderCheckboxRailHeader?: () => ReactNode;
40
42
  renderRowCommentHeader?: () => ReactNode;
41
43
  }
42
- declare function DataListTableHeaderInner<TData>({ headerRowRef, paneColumns, maxWidthByColumnKey, sortState, onSortChange, features, onColumnOrderChange, columnOrder, paneMinWidth, allSelected, someSelected, onToggleAll, renderCheckboxRailHeader, renderRowCommentHeader, includeCheckboxRail, includeRightRails, stickyLeftOffsets, lastStickyColumnKey, columnWidthPxByKey, columnGapPx, }: DataListTableHeaderProps<TData>): import("react/jsx-runtime").JSX.Element;
44
+ declare function DataListTableHeaderInner<TData>({ headerRowRef, paneColumns, maxWidthByColumnKey, sortState, defaultSortState, onSortChange, features, onColumnOrderChange, columnOrder, paneMinWidth, allSelected, someSelected, onToggleAll, renderCheckboxRailHeader, renderRowCommentHeader, includeCheckboxRail, includeRightRails, stickyLeftOffsets, lastStickyColumnKey, columnWidthPxByKey, columnGapPx, }: DataListTableHeaderProps<TData>): import("react/jsx-runtime").JSX.Element;
43
45
  export declare const DataListTableHeader: typeof DataListTableHeaderInner;
44
46
  export {};
@@ -13,9 +13,11 @@ export interface DataListTablePlaceholderRowProps<TData> {
13
13
  /** Spread onto the root flex row (e.g. `data-*` for host styling). */
14
14
  placeholderRowRootProps?: HTMLAttributes<HTMLDivElement>;
15
15
  rightRailWidth?: number;
16
+ /** Alternates the bar widths row by row. */
17
+ rowIndex?: number;
16
18
  rowMinHeight?: number;
17
19
  stickyLeftOffsets?: Map<ColumnKey, number>;
18
20
  }
19
- declare function DataListTablePlaceholderRowInner<TData>({ paneColumns, paneMinWidth, columnGapPx, columnWidthPxByKey, includeCheckboxRail, maxWidthByColumnKey, rightRailWidth, rowMinHeight, stickyLeftOffsets, lastStickyColumnKey, placeholderRowRootProps, }: DataListTablePlaceholderRowProps<TData>): import("react/jsx-runtime").JSX.Element;
21
+ declare function DataListTablePlaceholderRowInner<TData>({ paneColumns, paneMinWidth, columnGapPx, columnWidthPxByKey, includeCheckboxRail, maxWidthByColumnKey, rightRailWidth, rowIndex, rowMinHeight, stickyLeftOffsets, lastStickyColumnKey, placeholderRowRootProps, }: DataListTablePlaceholderRowProps<TData>): import("react/jsx-runtime").JSX.Element;
20
22
  export declare const DataListTablePlaceholderRow: typeof DataListTablePlaceholderRowInner;
21
23
  export {};
@@ -119,6 +119,8 @@ export interface DataListTableProps<TData> {
119
119
  */
120
120
  columnGapPx?: number;
121
121
  "data-testid"?: string;
122
+ /** When set, a sort other than this one shows a ⊗ on the active column header that resets to it. */
123
+ defaultSortState?: SortState | null;
122
124
  /**
123
125
  * When true, sets `overflow: hidden` on the react-window List to suppress internal
124
126
  * scrollbars. Use with content-height mode where the outer page handles scrolling.
@@ -138,6 +140,8 @@ export interface DataListTableProps<TData> {
138
140
  features?: DataListTableFeatures;
139
141
  /** Parent must have definite height; uses AutoSizer for body. */
140
142
  fillParent?: boolean;
143
+ /** With `fillParent`, the frame ends at its last row instead of filling the parent, until it's that tall. */
144
+ fitHeightToContent?: boolean;
141
145
  infiniteLoader?: DataListTableInfiniteConfig;
142
146
  /** Initial vertical scroll offset for the virtual list (scroll restore). */
143
147
  initialScrollOffset?: number;
@@ -95,6 +95,8 @@ export interface ExpenseAutomationPageProps extends MonthEndReportPageProps, Act
95
95
  * There is no full-view flag: expanding leaves for the schedule's own page.
96
96
  */
97
97
  isSchedulePanelOpen?: boolean;
98
+ /** When true, shows the one-time transaction-search discovery coachmark. */
99
+ isSearchDiscoveryCoachmarkOpen?: boolean;
98
100
  loggedInUser?: LoggedInUser;
99
101
  matchPanelContent?: ReactNode;
100
102
  newAccrualAccountsView?: NewAccrualAccountsView;
@@ -234,6 +236,7 @@ export interface ExpenseAutomationPageProps extends MonthEndReportPageProps, Act
234
236
  onConfirmBulkUploadMatch?: (batchId: ID, attachmentId: ID, transactionId: ID, transactionType: string, fileName: string) => void;
235
237
  onCreateTransactionSelect?: (transactionType: CreatableTransactionType) => void;
236
238
  onDeleteUnmatchedReceipt?: (attachmentId: ID) => void;
239
+ onDismissSearchDiscoveryCoachmark?: () => void;
237
240
  onExpenseAutomationCommentingThreadClick?: (target: ExpenseAutomationThreadClickTarget) => void;
238
241
  onFetchBulkUploadBatches?: (input?: {
239
242
  cacheOverride?: boolean;
@@ -62,6 +62,7 @@ interface NavBarWithHeaderProps {
62
62
  isAiCfoAccessEnabled?: boolean;
63
63
  isCompletionLoading?: boolean;
64
64
  isReconV3Enabled?: boolean;
65
+ isSearchDiscoveryCoachmarkOpen?: boolean;
65
66
  lastRefreshTime?: ZeniDate;
66
67
  navBarCustomElement?: JSX.Element;
67
68
  /** Optional "New" button (e.g. New JE Schedule) rendered in the right-side navbar area. */
@@ -86,6 +87,7 @@ interface NavBarWithHeaderProps {
86
87
  onUpdateTab: (tab: ExpenseAutomationTransactionsTab) => void;
87
88
  onAskAiCfoClick?: () => void;
88
89
  onCommentDrawerClick?: () => void;
90
+ onDismissSearchDiscoveryCoachmark?: () => void;
89
91
  onFiltersChange?: (filters: TransactionFilters) => void;
90
92
  onGenericTabChange?: (tab: TabSwitcherOption) => void;
91
93
  onJeTabUpdate?: (tab: JEPageTab) => void;
@@ -60,6 +60,14 @@ export declare function getReversalJournalEntryTransaction(accrual: {
60
60
  id: string;
61
61
  type: string;
62
62
  } | null;
63
+ /**
64
+ * The transaction Actual Matching cleared the accrual against. Only the `cleared` stamp counts: a
65
+ * match suggestion has not reversed anything yet.
66
+ */
67
+ export declare function getClearedMatchedTransaction(accrual: Pick<JEOneTimeAccrual, "cleared">): {
68
+ id: string;
69
+ type: string;
70
+ } | null;
63
71
  export declare function getMatchedBillTransaction(match: Pick<ActualMatchingMatch, "members" | "transactionType"> & {
64
72
  leftovers?: ActualMatchingMatch["leftovers"];
65
73
  transactionIntegrationId?: string;