@happyvertical/smrt-planner 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (763) hide show
  1. package/README.md +81 -8
  2. package/app/404.html +42 -49
  3. package/app/_app/immutable/assets/0.BvXq1Svw.css +1 -0
  4. package/app/_app/immutable/assets/10.CdYxvH4G.css +1 -0
  5. package/app/_app/immutable/assets/11.nOT5Z4Fv.css +1 -0
  6. package/app/_app/immutable/assets/12.F7A7zP4J.css +1 -0
  7. package/app/_app/immutable/assets/13.JoySu8W5.css +1 -0
  8. package/app/_app/immutable/assets/14.nsp62-4b.css +1 -0
  9. package/app/_app/immutable/assets/2.CbPiqdz5.css +1 -0
  10. package/app/_app/immutable/assets/3.D518dbB5.css +1 -0
  11. package/app/_app/immutable/assets/4.B3vt1gMJ.css +1 -0
  12. package/app/_app/immutable/assets/AiSetup.4fXjMpTZ.css +1 -0
  13. package/app/_app/immutable/assets/AppShell.DKPbJFmw.css +1 -0
  14. package/app/_app/immutable/assets/ConnectTools.DTleL8YA.css +1 -0
  15. package/app/_app/immutable/assets/FieldMapForm.C8SZ3t4N.css +1 -0
  16. package/app/_app/immutable/assets/ModelPage.DzDhJQz3.css +1 -0
  17. package/app/_app/immutable/assets/SectionActions.BE1CPmxk.css +1 -0
  18. package/app/_app/immutable/assets/SectionIcons.BGFcFuOf.css +1 -0
  19. package/app/_app/immutable/assets/SegmentedControl.T_hJQXHk.css +1 -0
  20. package/app/_app/immutable/assets/app.BS7nbUi0.css +1 -0
  21. package/app/_app/immutable/assets/currency-metadata.CJIy0Dzm.css +1 -0
  22. package/app/_app/immutable/assets/data.DQcbQG_b.css +1 -0
  23. package/app/_app/immutable/assets/feedback.FjY5wqsa.css +1 -0
  24. package/app/_app/immutable/assets/forms.DA06CFM9.css +1 -0
  25. package/app/_app/immutable/assets/labels.Dny6zd23.css +1 -0
  26. package/app/_app/immutable/assets/percent.CBivq97O.css +1 -0
  27. package/app/_app/immutable/assets/state.C9Put0ur.css +1 -0
  28. package/app/_app/immutable/assets/webmcp-ui-context.CC5pQLNE.css +1 -0
  29. package/app/_app/immutable/assets/workspace.Dtoe2fRU.css +1 -0
  30. package/app/_app/immutable/chunks/3ouNUakh.js +1 -0
  31. package/app/_app/immutable/chunks/B3FAegW4.js +4 -0
  32. package/app/_app/immutable/chunks/B8iReL-r.js +1 -0
  33. package/app/_app/immutable/chunks/BCmdRE3j.js +4 -0
  34. package/app/_app/immutable/chunks/BV3NwM01.js +1 -0
  35. package/app/_app/immutable/chunks/BVicq_6F.js +1 -0
  36. package/app/_app/immutable/chunks/Ba1g71Sq.js +1 -0
  37. package/app/_app/immutable/chunks/BdjvgMW6.js +1 -0
  38. package/app/_app/immutable/chunks/BiO_bqNH.js +2 -0
  39. package/app/_app/immutable/chunks/{DyGfbRG-.js → BrorvU4B.js} +1 -1
  40. package/app/_app/immutable/chunks/By-QJdbA.js +980 -0
  41. package/app/_app/immutable/chunks/{CyUMm_Wp.js → BzITuwgY.js} +1 -1
  42. package/app/_app/immutable/chunks/BzMfoxBk.js +1 -0
  43. package/app/_app/immutable/chunks/C-AoRalq.js +1 -0
  44. package/app/_app/immutable/chunks/CGKL_Nlh.js +1 -0
  45. package/app/_app/immutable/chunks/CNj-_B0j.js +1 -0
  46. package/app/_app/immutable/chunks/CU8cbxOZ.js +1 -0
  47. package/app/_app/immutable/chunks/CZGhPAoL.js +2 -0
  48. package/app/_app/immutable/chunks/CaEdOwVf.js +1 -0
  49. package/app/_app/immutable/chunks/Cas1hq-y.js +1 -0
  50. package/app/_app/immutable/chunks/CfOMUCNN.js +1 -0
  51. package/app/_app/immutable/chunks/Cm0VMWZu.js +1 -0
  52. package/app/_app/immutable/chunks/CsmXMAyE.js +1 -0
  53. package/app/_app/immutable/chunks/{BWPhGFHl.js → D0FW0z6R.js} +1 -1
  54. package/app/_app/immutable/chunks/D3nyL-ZK.js +1 -0
  55. package/app/_app/immutable/chunks/DEe2Vsu9.js +1 -0
  56. package/app/_app/immutable/chunks/DTs3DOB0.js +10 -0
  57. package/app/_app/immutable/chunks/Dm6R8q7G.js +1 -0
  58. package/app/_app/immutable/chunks/Dreozana.js +1 -0
  59. package/app/_app/immutable/chunks/Dx8H44Wq.js +2 -0
  60. package/app/_app/immutable/chunks/DxR35SQx.js +24 -0
  61. package/app/_app/immutable/chunks/EcFojPiU.js +11 -0
  62. package/app/_app/immutable/chunks/JBS2nHGN.js +1 -0
  63. package/app/_app/immutable/chunks/TjbilXEg.js +1 -0
  64. package/app/_app/immutable/chunks/ZLqixH7j.js +9 -0
  65. package/app/_app/immutable/chunks/auwiz8v4.js +1 -0
  66. package/app/_app/immutable/chunks/dbZ3U29n.js +1 -0
  67. package/app/_app/immutable/chunks/{D333l2GL.js → gHjidpzw.js} +2 -2
  68. package/app/_app/immutable/chunks/vNEnXNLV.js +3 -0
  69. package/app/_app/immutable/entry/app.vuScBcN4.js +2 -0
  70. package/app/_app/immutable/entry/start.C_vMied2.js +1 -0
  71. package/app/_app/immutable/nodes/0.BeNJfVow.js +9 -0
  72. package/app/_app/immutable/nodes/1.huiLmf4w.js +1 -0
  73. package/app/_app/immutable/nodes/10.B3buyRS-.js +3 -0
  74. package/app/_app/immutable/nodes/11.FNeDQehr.js +1 -0
  75. package/app/_app/immutable/nodes/12.umrKgKLQ.js +4 -0
  76. package/app/_app/immutable/nodes/13.DFr7i0IY.js +1 -0
  77. package/app/_app/immutable/nodes/14.BNgJ8cEq.js +1 -0
  78. package/app/_app/immutable/nodes/2.B3v0JtfB.js +24 -0
  79. package/app/_app/immutable/nodes/3.FLW3AkwU.js +1 -0
  80. package/app/_app/immutable/nodes/4.50B7EkB9.js +1 -0
  81. package/app/_app/immutable/nodes/5.Din7W_Et.js +1 -0
  82. package/app/_app/immutable/nodes/6.7dOUE7nr.js +1 -0
  83. package/app/_app/immutable/nodes/7.C4XsW0qI.js +1 -0
  84. package/app/_app/immutable/nodes/8.D_MREd8V.js +1 -0
  85. package/app/_app/immutable/nodes/9.cn87hhI-.js +1 -0
  86. package/app/_app/version.json +1 -1
  87. package/app/advanced-styles/index.html +84 -0
  88. package/app/ai/index.html +60 -52
  89. package/app/blueprint/index.html +46 -53
  90. package/app/cookbook/index.html +46 -53
  91. package/app/index.html +92 -64
  92. package/app/m/ads/AdDeliveryTier/index.html +52 -59
  93. package/app/m/ads/AdEvent/index.html +52 -59
  94. package/app/m/ads/AdFormat/index.html +52 -59
  95. package/app/m/ads/AdGroup/index.html +52 -59
  96. package/app/m/ads/AdVariation/index.html +52 -59
  97. package/app/m/analytics/AnalyticsDataStream/index.html +52 -59
  98. package/app/m/analytics/AnalyticsEvent/index.html +52 -59
  99. package/app/m/analytics/AnalyticsProperty/index.html +52 -59
  100. package/app/m/analytics/AnalyticsReport/index.html +52 -59
  101. package/app/m/approvals/ApprovalEvent/index.html +52 -59
  102. package/app/m/approvals/ApprovalPolicy/index.html +52 -59
  103. package/app/m/approvals/ApprovalRequest/index.html +52 -59
  104. package/app/m/assets/Asset/attachments/index.html +91 -0
  105. package/app/m/assets/Asset/index.html +52 -59
  106. package/app/m/assets/AssetAssociation/index.html +53 -60
  107. package/app/m/assets/AssetMetafield/index.html +52 -59
  108. package/app/m/assets/AssetStatus/index.html +52 -59
  109. package/app/m/assets/AssetType/index.html +52 -59
  110. package/app/m/assets/Folder/index.html +52 -59
  111. package/app/m/chat/AgentSession/index.html +52 -59
  112. package/app/m/chat/ChatMessage/index.html +53 -60
  113. package/app/m/chat/ChatParticipant/index.html +53 -60
  114. package/app/m/chat/ChatReaction/index.html +52 -59
  115. package/app/m/chat/ChatRoom/index.html +52 -59
  116. package/app/m/chat/ChatThread/index.html +53 -60
  117. package/app/m/chat/VoiceGatewayTurn/index.html +52 -59
  118. package/app/m/chat/VoiceSession/index.html +52 -59
  119. package/app/m/commerce/Agreement/index.html +52 -59
  120. package/app/m/commerce/Cart/index.html +52 -59
  121. package/app/m/commerce/Contract/index.html +52 -59
  122. package/app/m/commerce/ContractLineItem/index.html +53 -60
  123. package/app/m/commerce/Customer/index.html +52 -59
  124. package/app/m/commerce/DocumentTax/index.html +89 -0
  125. package/app/m/commerce/Estimate/index.html +52 -59
  126. package/app/m/commerce/Fulfillment/index.html +52 -59
  127. package/app/m/commerce/FulfillmentLineItem/index.html +53 -60
  128. package/app/m/commerce/Invoice/index.html +52 -59
  129. package/app/m/commerce/InvoiceLineItem/index.html +53 -60
  130. package/app/m/commerce/Lease/index.html +52 -59
  131. package/app/m/commerce/LicenseSale/index.html +52 -59
  132. package/app/m/commerce/Order/index.html +52 -59
  133. package/app/m/commerce/Payment/index.html +52 -59
  134. package/app/m/commerce/PaymentAllocation/index.html +53 -60
  135. package/app/m/commerce/PaymentInstrument/index.html +52 -59
  136. package/app/m/commerce/PaymentIntent/index.html +52 -59
  137. package/app/m/commerce/Payout/index.html +52 -59
  138. package/app/m/commerce/ProductionOrder/index.html +52 -59
  139. package/app/m/commerce/PurchaseContract/index.html +89 -0
  140. package/app/m/commerce/PurchaseOrder/index.html +52 -59
  141. package/app/m/commerce/SalesContract/index.html +89 -0
  142. package/app/m/commerce/SupplierQuote/index.html +89 -0
  143. package/app/m/commerce/TaxCode/index.html +89 -0
  144. package/app/m/commerce/TaxComponent/index.html +89 -0
  145. package/app/m/commerce/TaxSettings/index.html +89 -0
  146. package/app/m/commerce/TaxSummaryReport/index.html +89 -0
  147. package/app/m/commerce/Vendor/index.html +52 -59
  148. package/app/m/commerce/WholesaleOrder/index.html +52 -59
  149. package/app/m/content/Content/index.html +52 -59
  150. package/app/m/content/ContentContribution/index.html +52 -59
  151. package/app/m/content/ContentContributionAttachment/index.html +52 -59
  152. package/app/m/content/ContentContributionRevision/index.html +52 -59
  153. package/app/m/content/ContentContributionType/index.html +52 -59
  154. package/app/m/content/ContentContributor/index.html +52 -59
  155. package/app/m/content/ContentCorrection/index.html +52 -59
  156. package/app/m/content/ContentFeedSource/index.html +52 -59
  157. package/app/m/content/ContentGovernanceAssignment/index.html +52 -59
  158. package/app/m/content/ContentGovernancePolicy/index.html +52 -59
  159. package/app/m/content/ContentGovernanceProfile/index.html +52 -59
  160. package/app/m/content/ContentReference/index.html +52 -59
  161. package/app/m/content/ContentReview/index.html +52 -59
  162. package/app/m/content/ContentVersion/index.html +52 -59
  163. package/app/m/events/Event/index.html +52 -59
  164. package/app/m/events/EventParticipant/index.html +53 -60
  165. package/app/m/events/EventSeries/index.html +52 -59
  166. package/app/m/events/EventType/index.html +52 -59
  167. package/app/m/expenses/Expense/index.html +89 -0
  168. package/app/m/facts/Fact/index.html +52 -59
  169. package/app/m/facts/FactContent/index.html +52 -59
  170. package/app/m/facts/FactEvidence/index.html +52 -59
  171. package/app/m/facts/FactSource/index.html +52 -59
  172. package/app/m/facts/FactSubject/index.html +52 -59
  173. package/app/m/facts/FactTag/index.html +52 -59
  174. package/app/m/fields/FieldPolicy/index.html +52 -59
  175. package/app/m/fields/FieldPolicySuggestion/index.html +52 -59
  176. package/app/m/fields/FieldUsageCounter/index.html +52 -59
  177. package/app/m/images/Image/index.html +52 -59
  178. package/app/m/inventory/InventoryLocation/index.html +52 -59
  179. package/app/m/inventory/StockLevel/index.html +52 -59
  180. package/app/m/inventory/StockMovement/index.html +52 -59
  181. package/app/m/ledgers/Account/index.html +52 -59
  182. package/app/m/ledgers/Journal/index.html +52 -59
  183. package/app/m/ledgers/JournalEntry/index.html +53 -60
  184. package/app/m/manufacturing/Assembly/index.html +52 -59
  185. package/app/m/manufacturing/BillOfMaterials/index.html +52 -59
  186. package/app/m/manufacturing/BomLine/index.html +52 -59
  187. package/app/m/manufacturing/Operation/index.html +52 -59
  188. package/app/m/manufacturing/ProductionRun/index.html +52 -59
  189. package/app/m/manufacturing/ProductionRunCompletion/index.html +52 -59
  190. package/app/m/manufacturing/RoutingStep/index.html +52 -59
  191. package/app/m/marketing/Campaign/index.html +52 -59
  192. package/app/m/marketing/CampaignChannel/index.html +52 -59
  193. package/app/m/marketing/CampaignMetricSnapshot/index.html +52 -59
  194. package/app/m/messages/Account/index.html +52 -59
  195. package/app/m/messages/Attachment/index.html +52 -59
  196. package/app/m/messages/Blacklist/index.html +52 -59
  197. package/app/m/messages/Email/failed-sends/index.html +54 -59
  198. package/app/m/messages/Email/index.html +52 -59
  199. package/app/m/messages/Email/mailbox/index.html +54 -59
  200. package/app/m/messages/EmailAccount/index.html +52 -59
  201. package/app/m/messages/EmailAttachment/index.html +89 -0
  202. package/app/m/messages/EmailFolder/index.html +52 -59
  203. package/app/m/messages/Message/index.html +52 -59
  204. package/app/m/messages/MessagingEndpoint/index.html +52 -59
  205. package/app/m/messages/PersonaMessageRoute/index.html +52 -59
  206. package/app/m/messages/SlackAccount/index.html +52 -59
  207. package/app/m/messages/SlackMessage/index.html +52 -59
  208. package/app/m/messages/TelegramAccount/index.html +52 -59
  209. package/app/m/messages/Tweet/index.html +52 -59
  210. package/app/m/messages/TwitterAccount/index.html +52 -59
  211. package/app/m/messages/Whitelist/index.html +52 -59
  212. package/app/m/messages/ZulipAccount/index.html +52 -59
  213. package/app/m/places/Place/index.html +52 -59
  214. package/app/m/places/PlaceType/index.html +52 -59
  215. package/app/m/products/Category/index.html +52 -59
  216. package/app/m/products/Material/index.html +52 -59
  217. package/app/m/products/Product/index.html +52 -59
  218. package/app/m/products/Product/ingredients/index.html +54 -59
  219. package/app/m/products/ProductVariant/index.html +53 -60
  220. package/app/m/products/Sku/index.html +53 -60
  221. package/app/m/profiles/ApiKey/index.html +52 -59
  222. package/app/m/profiles/Bot/index.html +52 -59
  223. package/app/m/profiles/MagicLinkToken/index.html +52 -59
  224. package/app/m/profiles/NostrIdentity/index.html +52 -59
  225. package/app/m/profiles/OidcIdentity/index.html +52 -59
  226. package/app/m/profiles/Organization/index.html +52 -59
  227. package/app/m/profiles/Person/index.html +52 -59
  228. package/app/m/profiles/Profile/index.html +52 -59
  229. package/app/m/profiles/ProfileMetadata/index.html +52 -59
  230. package/app/m/profiles/ProfileMetafield/index.html +52 -59
  231. package/app/m/profiles/ProfileRelationship/index.html +52 -59
  232. package/app/m/profiles/ProfileRelationshipTerm/index.html +52 -59
  233. package/app/m/profiles/ProfileRelationshipType/index.html +52 -59
  234. package/app/m/profiles/ProfileType/index.html +52 -59
  235. package/app/m/projects/Comment/index.html +53 -60
  236. package/app/m/projects/Issue/index.html +52 -59
  237. package/app/m/projects/Label/index.html +52 -59
  238. package/app/m/projects/Project/index.html +52 -59
  239. package/app/m/projects/ProjectIntegration/index.html +52 -59
  240. package/app/m/projects/PullRequest/index.html +52 -59
  241. package/app/m/projects/Repository/index.html +52 -59
  242. package/app/m/properties/Property/index.html +52 -59
  243. package/app/m/properties/Zone/index.html +52 -59
  244. package/app/m/reports/RuntimeReport/index.html +52 -59
  245. package/app/m/reports/SmrtPrincipalReportRefreshTask/index.html +52 -59
  246. package/app/m/reports/SmrtReportLock/index.html +52 -59
  247. package/app/m/reports/SmrtReportRefreshTask/index.html +52 -59
  248. package/app/m/reports/SmrtReportRun/index.html +52 -59
  249. package/app/m/reports/SmrtReportSchedule/index.html +52 -59
  250. package/app/m/reports/SmrtReportWatermark/index.html +52 -59
  251. package/app/m/sales/AttributionException/index.html +52 -59
  252. package/app/m/sales/AttributionPolicy/index.html +52 -59
  253. package/app/m/sales/Commission/index.html +52 -59
  254. package/app/m/sales/CommissionAdjustment/index.html +52 -59
  255. package/app/m/sales/CommissionPayout/index.html +52 -59
  256. package/app/m/sales/CommissionPlan/index.html +52 -59
  257. package/app/m/sales/Earner/index.html +52 -59
  258. package/app/m/sales/EarnerSourceAttribution/index.html +52 -59
  259. package/app/m/sales/EarningEvent/index.html +52 -59
  260. package/app/m/sales/ExecutedAgreement/index.html +52 -59
  261. package/app/m/sales/Lead/index.html +52 -59
  262. package/app/m/sales/Opportunity/index.html +52 -59
  263. package/app/m/sales/OpportunityConversion/index.html +52 -59
  264. package/app/m/sales/PipelineDefinition/index.html +52 -59
  265. package/app/m/sales/PipelineStage/index.html +53 -60
  266. package/app/m/sales/Referral/index.html +52 -59
  267. package/app/m/sales/ReferralAgreement/index.html +52 -59
  268. package/app/m/sales/ReferralLink/index.html +52 -59
  269. package/app/m/sales/ReferralProgram/index.html +52 -59
  270. package/app/m/sales/ReferralTermSnapshot/index.html +52 -59
  271. package/app/m/sales/ReferralTouch/index.html +52 -59
  272. package/app/m/sales/Referrer/index.html +52 -59
  273. package/app/m/sales/SalesActivity/index.html +52 -59
  274. package/app/m/sales/SalesRepresentative/index.html +52 -59
  275. package/app/m/sites/Site/index.html +52 -59
  276. package/app/m/sites/SiteAgentBinding/index.html +52 -59
  277. package/app/m/social/OAuthState/index.html +52 -59
  278. package/app/m/social/SocialAccount/index.html +52 -59
  279. package/app/m/social/SocialPost/index.html +52 -59
  280. package/app/m/social/SocialPostAnalyticsSnapshot/index.html +52 -59
  281. package/app/m/subscriptions/BillingAdjustment/index.html +52 -59
  282. package/app/m/subscriptions/ClientCharge/index.html +52 -59
  283. package/app/m/subscriptions/CreditGrant/index.html +52 -59
  284. package/app/m/subscriptions/PricingRule/index.html +52 -59
  285. package/app/m/subscriptions/RetailCharge/index.html +52 -59
  286. package/app/m/subscriptions/SpendingPolicy/index.html +52 -59
  287. package/app/m/subscriptions/SubscriptionPlan/index.html +52 -59
  288. package/app/m/subscriptions/TenantSubscription/index.html +52 -59
  289. package/app/m/subscriptions/TenantUsageMetric/index.html +52 -59
  290. package/app/m/support/ServiceTimeEntry/index.html +52 -59
  291. package/app/m/support/SupportAiRun/index.html +52 -59
  292. package/app/m/support/SupportAvailability/index.html +52 -59
  293. package/app/m/support/SupportCase/index.html +52 -59
  294. package/app/m/support/SupportCaseEvent/index.html +52 -59
  295. package/app/m/support/SupportChannelBinding/index.html +52 -59
  296. package/app/m/support/SupportCharge/index.html +52 -59
  297. package/app/m/support/SupportCompensation/index.html +52 -59
  298. package/app/m/support/SupportCompensationPlan/index.html +52 -59
  299. package/app/m/support/SupportEscalation/index.html +52 -59
  300. package/app/m/support/SupportInteraction/index.html +52 -59
  301. package/app/m/support/SupportPlan/index.html +52 -59
  302. package/app/m/support/SupportPolicy/index.html +52 -59
  303. package/app/m/support/SupportQualification/index.html +52 -59
  304. package/app/m/support/SupportServiceTarget/index.html +52 -59
  305. package/app/m/support/SupportSpecialist/index.html +52 -59
  306. package/app/m/support/SupportWorkLink/index.html +52 -59
  307. package/app/m/tags/Tag/index.html +52 -59
  308. package/app/m/tags/TagAlias/index.html +52 -59
  309. package/app/m/timesheets/AttendanceBreak/index.html +52 -59
  310. package/app/m/timesheets/AttendancePunch/index.html +52 -59
  311. package/app/m/timesheets/AttendanceSegment/index.html +89 -0
  312. package/app/m/timesheets/ServiceChargeSnapshot/index.html +52 -59
  313. package/app/m/timesheets/ServiceCompensationSnapshot/index.html +52 -59
  314. package/app/m/timesheets/ServiceTimeEntry/index.html +52 -59
  315. package/app/m/users/Group/index.html +52 -59
  316. package/app/m/users/GroupMember/index.html +52 -59
  317. package/app/m/users/GroupRole/index.html +52 -59
  318. package/app/m/users/Membership/index.html +53 -60
  319. package/app/m/users/MembershipOverride/index.html +52 -59
  320. package/app/m/users/Permission/index.html +52 -59
  321. package/app/m/users/Role/index.html +52 -59
  322. package/app/m/users/RolePermission/index.html +52 -59
  323. package/app/m/users/Session/index.html +52 -59
  324. package/app/m/users/Tenant/index.html +52 -59
  325. package/app/m/users/TenantIntegration/index.html +52 -59
  326. package/app/m/users/TenantPermissionOverride/index.html +52 -59
  327. package/app/m/users/User/index.html +52 -59
  328. package/app/m/video/Character/index.html +52 -59
  329. package/app/m/video/CharacterAsset/index.html +52 -59
  330. package/app/m/video/CompositeJob/index.html +52 -59
  331. package/app/m/video/Performer/index.html +52 -59
  332. package/app/m/video/PerformerAsset/index.html +52 -59
  333. package/app/m/video/Scene/index.html +52 -59
  334. package/app/m/video/SceneAsset/index.html +52 -59
  335. package/app/m/video/VideoComposition/index.html +52 -59
  336. package/app/m/video/VideoCompositionAsset/index.html +52 -59
  337. package/app/m/video/VideoSequence/index.html +52 -59
  338. package/app/m/video/VideoSequenceAsset/index.html +52 -59
  339. package/app/m/video/VideoShot/index.html +52 -59
  340. package/app/m/video/VideoShotAsset/index.html +52 -59
  341. package/app/m/video/VideoShotCharacter/index.html +52 -59
  342. package/app/m/video/VideoWorkflow/index.html +52 -59
  343. package/app/m/voice/VoiceOutput/index.html +52 -59
  344. package/app/m/voice/VoiceProfile/index.html +52 -59
  345. package/app/m/voice/VoiceSample/index.html +52 -59
  346. package/app/packages/ads/index.html +50 -57
  347. package/app/packages/analytics/index.html +50 -57
  348. package/app/packages/approvals/index.html +50 -57
  349. package/app/packages/assets/index.html +50 -57
  350. package/app/packages/chat/index.html +50 -57
  351. package/app/packages/comments/index.html +50 -57
  352. package/app/packages/commerce/index.html +50 -57
  353. package/app/packages/content/index.html +50 -57
  354. package/app/packages/events/index.html +50 -57
  355. package/app/packages/expenses/index.html +50 -57
  356. package/app/packages/facts/index.html +50 -57
  357. package/app/packages/fields/index.html +50 -57
  358. package/app/packages/human-resources/index.html +50 -57
  359. package/app/packages/images/index.html +50 -57
  360. package/app/packages/index.html +49 -55
  361. package/app/packages/ingestion/index.html +85 -0
  362. package/app/packages/inventory/index.html +50 -57
  363. package/app/packages/ledgers/index.html +50 -57
  364. package/app/packages/manufacturing/index.html +50 -57
  365. package/app/packages/marketing/index.html +50 -57
  366. package/app/packages/messages/index.html +50 -57
  367. package/app/packages/places/index.html +50 -57
  368. package/app/packages/preferences/index.html +50 -57
  369. package/app/packages/products/index.html +50 -57
  370. package/app/packages/profiles/index.html +50 -57
  371. package/app/packages/projects/index.html +50 -57
  372. package/app/packages/properties/index.html +50 -57
  373. package/app/packages/reports/index.html +50 -57
  374. package/app/packages/sales/index.html +50 -57
  375. package/app/packages/sites/index.html +50 -57
  376. package/app/packages/social/index.html +50 -57
  377. package/app/packages/subscriptions/index.html +50 -57
  378. package/app/packages/support/index.html +50 -57
  379. package/app/packages/tags/index.html +50 -57
  380. package/app/packages/timesheets/index.html +50 -57
  381. package/app/packages/users/index.html +50 -57
  382. package/app/packages/video/index.html +50 -57
  383. package/app/packages/voice/index.html +50 -57
  384. package/app/packages/webhooks/index.html +85 -0
  385. package/app/recipes/account-access/help/index.html +52 -57
  386. package/app/recipes/account-access/index.html +57 -59
  387. package/app/recipes/activity/help/index.html +52 -57
  388. package/app/recipes/activity/index.html +57 -59
  389. package/app/recipes/agreements/help/index.html +52 -57
  390. package/app/recipes/agreements/index.html +57 -59
  391. package/app/recipes/analytics.reports/help/index.html +52 -57
  392. package/app/recipes/analytics.reports/index.html +57 -59
  393. package/app/recipes/assets/help/index.html +52 -57
  394. package/app/recipes/assets/index.html +57 -59
  395. package/app/recipes/billing/help/index.html +52 -57
  396. package/app/recipes/billing/index.html +57 -59
  397. package/app/recipes/chat.assistant/help/index.html +52 -57
  398. package/app/recipes/chat.assistant/index.html +57 -59
  399. package/app/recipes/comments/help/index.html +52 -57
  400. package/app/recipes/comments/index.html +57 -59
  401. package/app/recipes/commerce.customers/help/index.html +52 -57
  402. package/app/recipes/commerce.customers/index.html +57 -59
  403. package/app/recipes/commerce.estimates/help/index.html +52 -57
  404. package/app/recipes/commerce.estimates/index.html +57 -59
  405. package/app/recipes/commerce.purchases/help/index.html +52 -57
  406. package/app/recipes/commerce.purchases/index.html +57 -59
  407. package/app/recipes/commerce.sales/help/index.html +52 -57
  408. package/app/recipes/commerce.sales/index.html +57 -59
  409. package/app/recipes/commerce.vendors/help/index.html +52 -57
  410. package/app/recipes/commerce.vendors/index.html +57 -59
  411. package/app/recipes/commerce.wholesale/help/index.html +52 -57
  412. package/app/recipes/commerce.wholesale/index.html +57 -59
  413. package/app/recipes/events.calendar/help/index.html +52 -57
  414. package/app/recipes/events.calendar/index.html +57 -59
  415. package/app/recipes/expenses.tracking/help/index.html +88 -0
  416. package/app/recipes/expenses.tracking/index.html +92 -0
  417. package/app/recipes/fields.form-customization/help/index.html +52 -57
  418. package/app/recipes/fields.form-customization/index.html +57 -59
  419. package/app/recipes/ingestion/help/index.html +88 -0
  420. package/app/recipes/ingestion/index.html +93 -0
  421. package/app/recipes/integrations/help/index.html +88 -0
  422. package/app/recipes/integrations/index.html +92 -0
  423. package/app/recipes/inventory.stock/help/index.html +52 -57
  424. package/app/recipes/inventory.stock/index.html +57 -59
  425. package/app/recipes/ledgers.bookkeeping/help/index.html +52 -57
  426. package/app/recipes/ledgers.bookkeeping/index.html +57 -59
  427. package/app/recipes/messages/help/index.html +52 -57
  428. package/app/recipes/messages/index.html +57 -59
  429. package/app/recipes/products/help/index.html +52 -57
  430. package/app/recipes/products/index.html +57 -59
  431. package/app/recipes/projects.tracker/help/index.html +52 -57
  432. package/app/recipes/projects.tracker/index.html +57 -59
  433. package/app/recipes/reports.materialized/help/index.html +52 -57
  434. package/app/recipes/reports.materialized/index.html +57 -59
  435. package/app/recipes/reports.runtime/help/index.html +88 -0
  436. package/app/recipes/reports.runtime/index.html +92 -0
  437. package/app/recipes/sales.pipeline/help/index.html +52 -57
  438. package/app/recipes/sales.pipeline/index.html +57 -59
  439. package/app/recipes/tags.taxonomy/help/index.html +52 -57
  440. package/app/recipes/tags.taxonomy/index.html +57 -59
  441. package/app/recipes/team-collaboration/help/index.html +52 -57
  442. package/app/recipes/team-collaboration/index.html +57 -59
  443. package/app/recipes/timesheets.time-entries/help/index.html +88 -0
  444. package/app/recipes/timesheets.time-entries/index.html +92 -0
  445. package/app/s/custom-accounts/index.html +82 -0
  446. package/app/s/custom-appointments/index.html +82 -0
  447. package/app/s/custom-billing/index.html +47 -54
  448. package/app/s/custom-buying/index.html +47 -54
  449. package/app/s/custom-checkout/index.html +82 -0
  450. package/app/s/custom-classes/index.html +47 -54
  451. package/app/s/custom-clients/index.html +82 -0
  452. package/app/s/custom-events/index.html +82 -0
  453. package/app/s/custom-fleet/index.html +82 -0
  454. package/app/s/custom-giving/index.html +82 -0
  455. package/app/s/custom-jobs/index.html +47 -54
  456. package/app/s/custom-kitchen/index.html +47 -54
  457. package/app/s/custom-material/index.html +47 -54
  458. package/app/s/custom-meetings/index.html +82 -0
  459. package/app/s/custom-members/index.html +47 -54
  460. package/app/s/custom-parts/index.html +47 -54
  461. package/app/s/custom-rentals/index.html +82 -0
  462. package/app/s/custom-roastery/index.html +82 -0
  463. package/app/s/custom-schedule/index.html +47 -54
  464. package/app/s/custom-shelf/index.html +82 -0
  465. package/app/s/custom-shop/index.html +47 -54
  466. package/app/s/custom-wholesale/index.html +47 -54
  467. package/app/s/custom-work/index.html +82 -0
  468. package/app/s/custom-yard/index.html +82 -0
  469. package/app/s/section-access-control/index.html +47 -54
  470. package/app/s/section-account-security/index.html +47 -54
  471. package/app/s/section-accounting/index.html +47 -54
  472. package/app/s/section-activity/index.html +47 -54
  473. package/app/s/section-agreements/index.html +47 -54
  474. package/app/s/section-analytics/index.html +47 -54
  475. package/app/s/section-assets/index.html +47 -54
  476. package/app/s/section-billing/index.html +47 -54
  477. package/app/s/section-calendar/index.html +47 -54
  478. package/app/s/section-catalog/index.html +47 -54
  479. package/app/s/section-chat.assistant/index.html +47 -54
  480. package/app/s/section-comments/index.html +47 -54
  481. package/app/s/section-fields.form-customization/index.html +47 -54
  482. package/app/s/section-ingestion/index.html +82 -0
  483. package/app/s/section-integrations/index.html +82 -0
  484. package/app/s/section-messages/index.html +47 -54
  485. package/app/s/section-more/index.html +47 -54
  486. package/app/s/section-operations/index.html +47 -54
  487. package/app/s/section-projects/index.html +47 -54
  488. package/app/s/section-purchasing/index.html +47 -54
  489. package/app/s/section-reports.materialized/index.html +47 -54
  490. package/app/s/section-reports.runtime/index.html +82 -0
  491. package/app/s/section-sales/index.html +47 -54
  492. package/app/s/section-taxonomy/index.html +47 -54
  493. package/app/s/section-team/index.html +47 -54
  494. package/app/s/section-work/index.html +82 -0
  495. package/dist/ai/state.svelte.d.ts +22 -4
  496. package/dist/ai/state.svelte.js +78 -15
  497. package/dist/ai/status.js +8 -0
  498. package/dist/assistant/change.d.ts +14 -3
  499. package/dist/assistant/change.js +26 -3
  500. package/dist/assistant/engine.js +5 -1
  501. package/dist/assistant/prompt.js +7 -3
  502. package/dist/assistant/session.svelte.d.ts +1 -0
  503. package/dist/assistant/session.svelte.js +22 -4
  504. package/dist/catalog/catalog.json +11244 -14189
  505. package/dist/catalog/generate/exclusions.d.ts +8 -0
  506. package/dist/catalog/generate/exclusions.js +29 -0
  507. package/dist/catalog/generate/extract.js +29 -8
  508. package/dist/catalog/types.d.ts +7 -0
  509. package/dist/components/AdvancedStyles.svelte +138 -0
  510. package/dist/components/AdvancedStyles.svelte.d.ts +6 -0
  511. package/dist/components/AiModelsPage.svelte +40 -0
  512. package/dist/components/AiModelsPage.svelte.d.ts +7 -0
  513. package/dist/components/AiSetup.svelte +40 -8
  514. package/dist/components/AiStatusIcons.svelte +8 -5
  515. package/dist/components/AppSettings.svelte +105 -1
  516. package/dist/components/BrowserAssistant.svelte +25 -22
  517. package/dist/components/BrowserAssistant.svelte.d.ts +2 -0
  518. package/dist/components/ChildRecords.svelte +61 -14
  519. package/dist/components/ChildRecords.svelte.d.ts +1 -0
  520. package/dist/components/ConnectTools.svelte +5 -2
  521. package/dist/components/CookbooksPanel.svelte +56 -33
  522. package/dist/components/CopyButton.svelte +65 -0
  523. package/dist/components/CopyButton.svelte.d.ts +24 -0
  524. package/dist/components/ExportPanel.svelte +292 -57
  525. package/dist/components/ExportPanel.svelte.d.ts +10 -1
  526. package/dist/components/FeatureCard.svelte +21 -10
  527. package/dist/components/FeaturesPanel.svelte +4 -1
  528. package/dist/components/FieldInput.svelte +6 -3
  529. package/dist/components/FieldMapForm.svelte +6 -10
  530. package/dist/components/FieldMapForm.svelte.d.ts +1 -0
  531. package/dist/components/FormWorkspace.svelte +80 -9
  532. package/dist/components/FormWorkspace.svelte.d.ts +1 -0
  533. package/dist/components/HeaderIconLink.svelte +86 -0
  534. package/dist/components/HeaderIconLink.svelte.d.ts +14 -0
  535. package/dist/components/HelpView.svelte +3 -0
  536. package/dist/components/ModelOptions.svelte +13 -2
  537. package/dist/components/ModelPage.svelte +33 -5
  538. package/dist/components/ModelPage.svelte.d.ts +4 -0
  539. package/dist/components/ModelWorkspace.svelte +148 -50
  540. package/dist/components/ModelWorkspace.svelte.d.ts +4 -0
  541. package/dist/components/PackagePage.svelte +96 -0
  542. package/dist/components/PackagePage.svelte.d.ts +9 -0
  543. package/dist/components/ProductMedia.svelte +95 -0
  544. package/dist/components/ProductMedia.svelte.d.ts +10 -0
  545. package/dist/components/RecipeCards.svelte +13 -1
  546. package/dist/components/RecipeHelp.svelte +3 -0
  547. package/dist/components/RecipeOptions.svelte +13 -1
  548. package/dist/components/RecordFeatures.svelte +22 -8
  549. package/dist/components/RecordView.svelte +354 -0
  550. package/dist/components/RecordView.svelte.d.ts +14 -0
  551. package/dist/components/RelationField.svelte +5 -2
  552. package/dist/components/SectionActions.svelte +8 -5
  553. package/dist/components/SectionHeading.svelte +63 -0
  554. package/dist/components/SectionHeading.svelte.d.ts +11 -0
  555. package/dist/components/SectionIcons.svelte +15 -3
  556. package/dist/components/SectionOverview.svelte +33 -3
  557. package/dist/components/SectionOverview.svelte.d.ts +4 -0
  558. package/dist/components/SectionPage.svelte +25 -165
  559. package/dist/components/SectionView.svelte +172 -0
  560. package/dist/components/SectionView.svelte.d.ts +18 -0
  561. package/dist/components/SettingsPanel.svelte +3 -9
  562. package/dist/components/SettingsPanel.svelte.d.ts +1 -5
  563. package/dist/components/ThemeBridge.svelte +80 -4
  564. package/dist/components/ThemeBridge.svelte.d.ts +5 -1
  565. package/dist/components/ThemeSection.svelte +208 -117
  566. package/dist/components/ThemeSection.svelte.d.ts +3 -7
  567. package/dist/components/VariantGridForm.svelte +9 -13
  568. package/dist/components/VariantGridForm.svelte.d.ts +1 -0
  569. package/dist/components/VoiceTyping.svelte +3 -0
  570. package/dist/cookbook/describe.d.ts +29 -0
  571. package/dist/cookbook/describe.js +164 -0
  572. package/dist/cookbook/file.d.ts +6 -0
  573. package/dist/cookbook/file.js +18 -4
  574. package/dist/cookbook/prompt.d.ts +49 -0
  575. package/dist/cookbook/prompt.js +100 -0
  576. package/dist/cookbook/store.svelte.d.ts +13 -0
  577. package/dist/cookbook/store.svelte.js +36 -8
  578. package/dist/core/app.d.ts +33 -8
  579. package/dist/core/app.js +112 -8
  580. package/dist/core/prompt.js +10 -1
  581. package/dist/core/reply.d.ts +6 -1
  582. package/dist/data/children.d.ts +50 -6
  583. package/dist/data/children.js +146 -16
  584. package/dist/data/derived.d.ts +37 -29
  585. package/dist/data/derived.js +49 -30
  586. package/dist/data/display.d.ts +21 -8
  587. package/dist/data/display.js +74 -11
  588. package/dist/data/fakes.d.ts +48 -9
  589. package/dist/data/fakes.js +146 -22
  590. package/dist/data/labels.d.ts +7 -2
  591. package/dist/data/labels.js +12 -2
  592. package/dist/data/list-sort.d.ts +8 -0
  593. package/dist/data/list-sort.js +45 -0
  594. package/dist/data/money.d.ts +227 -0
  595. package/dist/data/money.js +413 -0
  596. package/dist/data/packs.d.ts +13 -0
  597. package/dist/data/packs.js +1224 -0
  598. package/dist/data/planner-source.js +123 -3
  599. package/dist/data/source.d.ts +13 -2
  600. package/dist/data/source.js +274 -40
  601. package/dist/features/palette.d.ts +2 -0
  602. package/dist/features/palette.js +1 -1
  603. package/dist/forms/stock.d.ts +1 -1
  604. package/dist/forms/stock.js +3 -1
  605. package/dist/index.d.ts +8 -3
  606. package/dist/index.js +6 -1
  607. package/dist/inference/byo.svelte.d.ts +8 -4
  608. package/dist/inference/byo.svelte.js +36 -8
  609. package/dist/inference/config.d.ts +12 -5
  610. package/dist/inference/config.js +96 -40
  611. package/dist/inference/openai.js +5 -0
  612. package/dist/kitchen/LiveKitchenBridge.svelte +73 -0
  613. package/dist/kitchen/LiveKitchenBridge.svelte.d.ts +8 -0
  614. package/dist/kitchen/client.js +10 -4
  615. package/dist/kitchen/live.d.ts +7 -0
  616. package/dist/kitchen/live.js +51 -0
  617. package/dist/library/icons.js +34 -0
  618. package/dist/library/library.json +1546 -15
  619. package/dist/library/pending.json +5 -0
  620. package/dist/library/types.d.ts +4 -0
  621. package/dist/motion/tokens.d.ts +6 -0
  622. package/dist/motion/tokens.js +32 -0
  623. package/dist/motion/view-transition.d.ts +13 -0
  624. package/dist/motion/view-transition.js +17 -0
  625. package/dist/overviews/definitions.d.ts +41 -2
  626. package/dist/overviews/definitions.js +111 -4
  627. package/dist/overviews/models.d.ts +10 -0
  628. package/dist/overviews/models.js +19 -0
  629. package/dist/overviews/registry.d.ts +92 -5
  630. package/dist/overviews/registry.js +468 -58
  631. package/dist/overviews/validate.js +2 -2
  632. package/dist/planner/Planner.svelte +374 -166
  633. package/dist/planner/PlannerControls.svelte +255 -0
  634. package/dist/planner/PlannerControls.svelte.d.ts +17 -0
  635. package/dist/planner/PlannerLifecycle.svelte +73 -0
  636. package/dist/planner/PlannerLifecycle.svelte.d.ts +9 -0
  637. package/dist/planner/app.svelte.d.ts +12 -2
  638. package/dist/planner/app.svelte.js +13 -3
  639. package/dist/planner/assistant.js +21 -3
  640. package/dist/planner/commands/adapter.js +9 -2
  641. package/dist/planner/commands/types.d.ts +1 -1
  642. package/dist/planner/commands/types.js +1 -0
  643. package/dist/planner/header-icons.d.ts +12 -0
  644. package/dist/planner/header-icons.js +12 -0
  645. package/dist/planner/host/HostPlanner.svelte +70 -0
  646. package/dist/planner/host/HostPlanner.svelte.d.ts +17 -0
  647. package/dist/planner/host/session.svelte.d.ts +28 -0
  648. package/dist/planner/host/session.svelte.js +186 -0
  649. package/dist/planner/routes.d.ts +49 -0
  650. package/dist/planner/routes.js +64 -0
  651. package/dist/planner/shell.d.ts +40 -0
  652. package/dist/planner/shell.js +56 -0
  653. package/dist/planner/tab.svelte.d.ts +6 -3
  654. package/dist/planner/tab.svelte.js +11 -4
  655. package/dist/planner/title.d.ts +15 -0
  656. package/dist/planner/title.js +21 -0
  657. package/dist/planner/title.svelte.d.ts +6 -0
  658. package/dist/planner/title.svelte.js +11 -0
  659. package/dist/planner/types.d.ts +39 -7
  660. package/dist/products/media.d.ts +20 -0
  661. package/dist/products/media.js +65 -0
  662. package/dist/recipes/help/descriptions.json +1 -3
  663. package/dist/recipes/index.d.ts +2 -0
  664. package/dist/recipes/index.js +6 -0
  665. package/dist/recipes/plumbing.d.ts +35 -1
  666. package/dist/recipes/plumbing.js +74 -0
  667. package/dist/screens/definition.d.ts +35 -0
  668. package/dist/screens/definition.js +132 -0
  669. package/dist/screens/relations.d.ts +17 -0
  670. package/dist/screens/relations.js +98 -0
  671. package/dist/screens/totals.d.ts +37 -0
  672. package/dist/screens/totals.js +65 -0
  673. package/dist/sections/info.d.ts +1 -1
  674. package/dist/sections/info.js +2 -2
  675. package/dist/settings/app-settings.d.ts +17 -1
  676. package/dist/settings/app-settings.js +40 -3
  677. package/dist/smrt-version.d.ts +2 -0
  678. package/dist/smrt-version.js +4 -0
  679. package/dist/styles/planner-forms.css +53 -0
  680. package/dist/styles/planner-lists.css +43 -0
  681. package/dist/theme/css-highlight.d.ts +6 -0
  682. package/dist/theme/css-highlight.js +34 -0
  683. package/dist/theme/custom-css.svelte.d.ts +34 -0
  684. package/dist/theme/custom-css.svelte.js +246 -0
  685. package/dist/theme/runtime.js +25 -5
  686. package/dist/theme/theme.d.ts +26 -3
  687. package/dist/theme/theme.js +70 -2
  688. package/dist/upstream/overlay.d.ts +14 -5
  689. package/dist/upstream/overlay.js +20 -2
  690. package/package.json +13 -6
  691. package/app/_app/immutable/assets/0.B5zXkXe_.css +0 -1
  692. package/app/_app/immutable/assets/10.hpcnxvK1.css +0 -1
  693. package/app/_app/immutable/assets/11.D7zoXfVV.css +0 -1
  694. package/app/_app/immutable/assets/12.CPobm1ED.css +0 -1
  695. package/app/_app/immutable/assets/2.CyaWdRdI.css +0 -1
  696. package/app/_app/immutable/assets/3.BlPQOes8.css +0 -1
  697. package/app/_app/immutable/assets/8.2gQeKBp_.css +0 -1
  698. package/app/_app/immutable/assets/9.HOPT4xtg.css +0 -1
  699. package/app/_app/immutable/assets/AiSetup.Cb22AigN.css +0 -1
  700. package/app/_app/immutable/assets/Button.DkP0qkG9.css +0 -1
  701. package/app/_app/immutable/assets/ConnectTools.BgIJOOGW.css +0 -1
  702. package/app/_app/immutable/assets/FieldMapForm.BCU-4pO4.css +0 -1
  703. package/app/_app/immutable/assets/ModelPage.Dd3LcMta.css +0 -1
  704. package/app/_app/immutable/assets/SectionActions.CTkVuNMF.css +0 -1
  705. package/app/_app/immutable/assets/SectionIcons.5Udq9vN-.css +0 -1
  706. package/app/_app/immutable/assets/SegmentedControl.B8SrQacd.css +0 -1
  707. package/app/_app/immutable/assets/dist.C5nHBk_O.css +0 -1
  708. package/app/_app/immutable/assets/feedback.BVKAwFck.css +0 -1
  709. package/app/_app/immutable/assets/forms.BChZ2RWM.css +0 -1
  710. package/app/_app/immutable/assets/percent.LH0z-ozZ.css +0 -1
  711. package/app/_app/immutable/assets/store.CGDwHkkF.css +0 -1
  712. package/app/_app/immutable/assets/ui.B1A1Zl2p.css +0 -1
  713. package/app/_app/immutable/assets/workspace.BIMkuZDb.css +0 -1
  714. package/app/_app/immutable/chunks/1okeBSoq.js +0 -1
  715. package/app/_app/immutable/chunks/B32EWqI8.js +0 -9
  716. package/app/_app/immutable/chunks/B4Kevpe0.js +0 -1
  717. package/app/_app/immutable/chunks/BKwRT_1p.js +0 -1
  718. package/app/_app/immutable/chunks/BS4h9ES-.js +0 -1
  719. package/app/_app/immutable/chunks/BYde9M_U.js +0 -1
  720. package/app/_app/immutable/chunks/CMhpRMKg.js +0 -1
  721. package/app/_app/immutable/chunks/CPRHZZeW.js +0 -1
  722. package/app/_app/immutable/chunks/CRQ1Pmzr.js +0 -1
  723. package/app/_app/immutable/chunks/CV-2zt0K.js +0 -2
  724. package/app/_app/immutable/chunks/CWtfVMDz.js +0 -1
  725. package/app/_app/immutable/chunks/Chyo8rdT.js +0 -3
  726. package/app/_app/immutable/chunks/CmmuWmp6.js +0 -2
  727. package/app/_app/immutable/chunks/CrFNLK0f.js +0 -1
  728. package/app/_app/immutable/chunks/CygC84VT.js +0 -2
  729. package/app/_app/immutable/chunks/D0VgZnk1.js +0 -1
  730. package/app/_app/immutable/chunks/DD7gpKb2.js +0 -1
  731. package/app/_app/immutable/chunks/DJtH-lRi.js +0 -3
  732. package/app/_app/immutable/chunks/DNRgqfTx.js +0 -1
  733. package/app/_app/immutable/chunks/DVRKjN-E.js +0 -1
  734. package/app/_app/immutable/chunks/D_J_XtJy.js +0 -846
  735. package/app/_app/immutable/chunks/Dp9GVO-9.js +0 -1
  736. package/app/_app/immutable/chunks/DqcD-WtP.js +0 -1
  737. package/app/_app/immutable/chunks/OJ_lLTHH.js +0 -1
  738. package/app/_app/immutable/chunks/QukgIHDX.js +0 -1
  739. package/app/_app/immutable/chunks/WxSPP8QW.js +0 -4
  740. package/app/_app/immutable/chunks/leQCwW2d.js +0 -1
  741. package/app/_app/immutable/chunks/p6bgzXiY.js +0 -1
  742. package/app/_app/immutable/chunks/ufuM4XBq.js +0 -33
  743. package/app/_app/immutable/entry/app.D5JJain6.js +0 -2
  744. package/app/_app/immutable/entry/start.CH9DJLgI.js +0 -1
  745. package/app/_app/immutable/nodes/0.CL1MxOva.js +0 -10
  746. package/app/_app/immutable/nodes/1.BO731RRg.js +0 -1
  747. package/app/_app/immutable/nodes/10.1nQxyH9H.js +0 -4
  748. package/app/_app/immutable/nodes/11.Cw0JnQF3.js +0 -1
  749. package/app/_app/immutable/nodes/12.BmZyLHbM.js +0 -1
  750. package/app/_app/immutable/nodes/2.BEw046av.js +0 -17
  751. package/app/_app/immutable/nodes/3.DvwpTAQA.js +0 -1
  752. package/app/_app/immutable/nodes/4.qrT4bnmS.js +0 -1
  753. package/app/_app/immutable/nodes/5.DDLa2uhV.js +0 -1
  754. package/app/_app/immutable/nodes/6.DN0QTY6z.js +0 -1
  755. package/app/_app/immutable/nodes/7.C_8N82Wq.js +0 -1
  756. package/app/_app/immutable/nodes/8.D2Mszsua.js +0 -3
  757. package/app/_app/immutable/nodes/9.CLYsywul.js +0 -1
  758. package/app/m/content/Contents/index.html +0 -96
  759. package/app/m/preferences/UiPreferenceRecord/index.html +0 -96
  760. package/app/m/users/AccessRequest/index.html +0 -96
  761. package/app/m/users/ResourceGrant/index.html +0 -96
  762. package/app/m/users/UsersCliAuthRequest/index.html +0 -96
  763. package/app/m/users/UsersMagicLinkToken/index.html +0 -96
@@ -0,0 +1,227 @@
1
+ /**
2
+ * Sample document money on smrt-commerce's money model (smrt#3988, released
3
+ * in 0.56.1). The arithmetic is the package's own: `calculateMoneyDocument`
4
+ * and `resolveLineTaxCode` from `@happyvertical/smrt-commerce/money` (pure,
5
+ * browser-safe), never a copy. This module only supplies the sample tenant's
6
+ * tax codes and maps sample rows to and from the calculator.
7
+ *
8
+ * What a settled document holds (minor units throughout):
9
+ *
10
+ * line amount = quantity x unitPrice - discount
11
+ * exclusive: the line's net; inclusive: its gross, and
12
+ * net = amount - taxAmount
13
+ * line taxAmount = the line's tax from its resolved tax code, one entry
14
+ * per component in `taxComponentsJson`
15
+ * subtotal = the lines' net
16
+ * taxAmount = the lines' tax
17
+ * totalAmount = subtotal + taxAmount
18
+ * discountTotal = the lines' discounts, informational only: they are
19
+ * already inside every line amount and must never be
20
+ * subtracted again
21
+ *
22
+ * A line's discount is `discountType` `none`, `percent` (`discountRate` is
23
+ * exact percent text, "10" is 10%) or `amount` (`discount` in minor units).
24
+ * Tax codes resolve per line: a line override (`taxMode: 'override'` with
25
+ * `taxCodeId`), an exempt customer, the product's code, the customer's code,
26
+ * then the app default.
27
+ */
28
+ import { type LineAmountType, type MoneyDiscountInput, type TaxCodeAppliesTo, type TaxCodeKind, type TaxRoundingScope } from '@happyvertical/smrt-commerce/money';
29
+ export { MoneyValidationError } from '@happyvertical/smrt-commerce/money';
30
+ export type { LineAmountType, TaxRoundingScope };
31
+ type Row = Readonly<Record<string, unknown>>;
32
+ export interface SampleTaxComponent {
33
+ id: string;
34
+ /** The example pack's key, or `cookbook-<percent>` for the default. */
35
+ key: string;
36
+ name: string;
37
+ /** Exact percent text: "7" is 7%. */
38
+ percent: string;
39
+ recoverable: boolean;
40
+ }
41
+ export interface SampleTaxCode {
42
+ id: string;
43
+ code: string;
44
+ name: string;
45
+ kind: TaxCodeKind;
46
+ appliesTo: TaxCodeAppliesTo;
47
+ active: boolean;
48
+ components: readonly SampleTaxComponent[];
49
+ }
50
+ /**
51
+ * The codes every tenant is seeded with, which report differently and carry
52
+ * no components. smrt also seeds `legacy-unreconciled` for tenants migrated
53
+ * from the legacy model; the planner's tenant is v2 from the start, so it has
54
+ * none.
55
+ */
56
+ export declare const SEEDED_TAX_CODES: readonly SampleTaxCode[];
57
+ /**
58
+ * smrt-commerce's `COMMON_TAX_CODE_EXAMPLE_PACK` (Canada GST, BC GST+PST,
59
+ * Ontario HST, UK VAT, Australian GST, New Zealand GST), as the planner's
60
+ * tenant has imported it (`applyTaxCodeExamplePack`). The pack is exported
61
+ * only from the package root, which is not browser-safe, so it is restated
62
+ * here and `tests/money.test.ts` compares it with the package's; delete the
63
+ * copy when `./money` exports it (smrt#4023).
64
+ */
65
+ export declare const TAX_CODE_EXAMPLE_PACK: {
66
+ readonly id: "common-sales-taxes-v1";
67
+ readonly components: readonly [{
68
+ readonly key: "ca-gst-5";
69
+ readonly name: "Canada GST 5%";
70
+ readonly percent: "5";
71
+ readonly recoverable: true;
72
+ }, {
73
+ readonly key: "ca-pst-bc-7";
74
+ readonly name: "BC PST 7%";
75
+ readonly percent: "7";
76
+ readonly recoverable: false;
77
+ }, {
78
+ readonly key: "ca-hst-on-13";
79
+ readonly name: "Ontario HST 13%";
80
+ readonly percent: "13";
81
+ readonly recoverable: true;
82
+ }, {
83
+ readonly key: "uk-vat-20";
84
+ readonly name: "UK VAT 20%";
85
+ readonly percent: "20";
86
+ readonly recoverable: true;
87
+ }, {
88
+ readonly key: "au-gst-10";
89
+ readonly name: "Australia GST 10%";
90
+ readonly percent: "10";
91
+ readonly recoverable: true;
92
+ }, {
93
+ readonly key: "nz-gst-15";
94
+ readonly name: "New Zealand GST 15%";
95
+ readonly percent: "15";
96
+ readonly recoverable: true;
97
+ }];
98
+ readonly codes: readonly [{
99
+ readonly code: "ca-gst";
100
+ readonly name: "Canada GST";
101
+ readonly appliesTo: "both";
102
+ readonly componentKeys: readonly ["ca-gst-5"];
103
+ }, {
104
+ readonly code: "ca-gst-pst-bc";
105
+ readonly name: "BC GST + PST";
106
+ readonly appliesTo: "both";
107
+ readonly componentKeys: readonly ["ca-gst-5", "ca-pst-bc-7"];
108
+ }, {
109
+ readonly code: "ca-hst-on";
110
+ readonly name: "Ontario HST";
111
+ readonly appliesTo: "both";
112
+ readonly componentKeys: readonly ["ca-hst-on-13"];
113
+ }, {
114
+ readonly code: "uk-vat-standard";
115
+ readonly name: "UK VAT standard";
116
+ readonly appliesTo: "both";
117
+ readonly componentKeys: readonly ["uk-vat-20"];
118
+ }, {
119
+ readonly code: "au-gst";
120
+ readonly name: "Australia GST";
121
+ readonly appliesTo: "both";
122
+ readonly componentKeys: readonly ["au-gst-10"];
123
+ }, {
124
+ readonly code: "nz-gst";
125
+ readonly name: "New Zealand GST";
126
+ readonly appliesTo: "both";
127
+ readonly componentKeys: readonly ["nz-gst-15"];
128
+ }];
129
+ };
130
+ /** The example pack's codes with their components. */
131
+ export declare const EXAMPLE_TAX_CODES: readonly SampleTaxCode[];
132
+ /** A fraction (0.0825) as exact percent text ("8.25"). */
133
+ export declare function percentText(rate: number): string;
134
+ /**
135
+ * The app's default sales tax code for its tax-rate setting, exactly as
136
+ * smrt-commerce's cookbook activation (`applyCommerceCookbookSettings`)
137
+ * creates it, so the planner prices what an exported cookbook will: no rate
138
+ * (0) is `out-of-scope`, any other rate the `default-<rate>` code with one
139
+ * `Cookbook <rate>%` component. The example pack's codes are only ever chosen
140
+ * explicitly, on a line (`examplePackCodeFor`).
141
+ */
142
+ export declare function defaultTaxCode(rate: number): SampleTaxCode;
143
+ /**
144
+ * The example-pack code a sample line in an app of this currency may choose
145
+ * for itself: the pack's code with the most components for that country
146
+ * (BC GST + PST for CAD), else none.
147
+ */
148
+ export declare function examplePackCodeFor(currency: string): SampleTaxCode | undefined;
149
+ /** Every tax code of the sample tenant: the seeded ones, the default, the pack. */
150
+ export declare function sampleTaxCodes(rate: number): SampleTaxCode[];
151
+ /** The components of the sample tenant's codes, each once. */
152
+ export declare function sampleTaxComponents(codes: readonly SampleTaxCode[]): SampleTaxComponent[];
153
+ /** What a settled line stores per tax component (smrt's `taxComponentsJson`). */
154
+ export interface LineTaxComponent {
155
+ taxComponentId: string;
156
+ name: string;
157
+ percent: string;
158
+ taxMinor: number;
159
+ }
160
+ /** One `DocumentTax`-shaped row: a code/component's taxable base and tax. */
161
+ export interface DocumentTaxRow {
162
+ taxCodeId: string | null;
163
+ taxComponentId: string | null;
164
+ name: string;
165
+ percent: string;
166
+ taxable: number;
167
+ tax: number;
168
+ }
169
+ export interface MoneyContext {
170
+ lineAmountType: LineAmountType;
171
+ roundingScope: TaxRoundingScope;
172
+ currency: string;
173
+ codes: readonly SampleTaxCode[];
174
+ /** The app's default sales code. */
175
+ appDefaultCodeId: string | null;
176
+ /** The document's customer is tax exempt. */
177
+ customerTaxExempt?: boolean;
178
+ /** The customer's own code (`Customer.defaultTaxCodeId`). */
179
+ partyCodeId?: string | null;
180
+ /** A line's product code (`Product.defaultSalesTaxCodeId`), by product id. */
181
+ productCodeOf?: (productId: string) => string | null | undefined;
182
+ }
183
+ /** The fields a document's calculation writes on each of its lines. */
184
+ export type SettledLineMoney = {
185
+ discount: number;
186
+ amount: number;
187
+ taxAmount: number;
188
+ taxCodeId: string | null;
189
+ taxCodeCode: string | null;
190
+ taxCodeName: string | null;
191
+ taxComponentsJson: string;
192
+ taxRate: number;
193
+ };
194
+ export interface SettledDocument<L extends Row> {
195
+ lines: (L & SettledLineMoney)[];
196
+ subtotal: number;
197
+ discountTotal: number;
198
+ taxAmount: number;
199
+ totalAmount: number;
200
+ taxes: DocumentTaxRow[];
201
+ }
202
+ /** A line's discount as the calculator takes it. */
203
+ export declare function lineDiscount(line: Row): MoneyDiscountInput;
204
+ /** A supported ISO 4217 code for the calculator: the row's, else the app's. */
205
+ export declare function moneyCurrency(value: unknown, fallback?: string): string;
206
+ /**
207
+ * A document's lines and totals on the money model. Each line keeps its own
208
+ * fields and gains `discount` (what was taken off, in minor units),
209
+ * `amount`, `taxAmount`, `taxCodeId` / `taxCodeCode` / `taxCodeName`,
210
+ * `taxComponentsJson` and `taxRate` (the sum of its components' percents as a
211
+ * fraction, the field smrt keeps beside them). Throws smrt's
212
+ * `MoneyValidationError` on money the model refuses (a discount above the
213
+ * line's price, an unknown override code).
214
+ */
215
+ export declare function settleDocument<L extends Row>(lines: readonly L[], context: MoneyContext): SettledDocument<L>;
216
+ /** The per-component snapshot a settled line stores, or `[]`. */
217
+ export declare function lineTaxComponents(line: Row): LineTaxComponent[];
218
+ /**
219
+ * A document's per-component tax as its stored line snapshots say: each
220
+ * component's tax is the sum of what the lines stored for it, and its taxable
221
+ * base the sum of those lines' net (`amount`, less `taxAmount` when prices
222
+ * include tax). Sums of stored values only: nothing is recalculated, the way
223
+ * smrt's `DocumentTax` rows are written from the same calculation.
224
+ */
225
+ export declare function storedTaxRows(lines: readonly Row[], lineAmountType: LineAmountType): DocumentTaxRow[];
226
+ /** What a line comes to before tax is resolved: its price less its discount. */
227
+ export declare function lineAmount(line: Row): number;
@@ -0,0 +1,413 @@
1
+ /**
2
+ * Sample document money on smrt-commerce's money model (smrt#3988, released
3
+ * in 0.56.1). The arithmetic is the package's own: `calculateMoneyDocument`
4
+ * and `resolveLineTaxCode` from `@happyvertical/smrt-commerce/money` (pure,
5
+ * browser-safe), never a copy. This module only supplies the sample tenant's
6
+ * tax codes and maps sample rows to and from the calculator.
7
+ *
8
+ * What a settled document holds (minor units throughout):
9
+ *
10
+ * line amount = quantity x unitPrice - discount
11
+ * exclusive: the line's net; inclusive: its gross, and
12
+ * net = amount - taxAmount
13
+ * line taxAmount = the line's tax from its resolved tax code, one entry
14
+ * per component in `taxComponentsJson`
15
+ * subtotal = the lines' net
16
+ * taxAmount = the lines' tax
17
+ * totalAmount = subtotal + taxAmount
18
+ * discountTotal = the lines' discounts, informational only: they are
19
+ * already inside every line amount and must never be
20
+ * subtracted again
21
+ *
22
+ * A line's discount is `discountType` `none`, `percent` (`discountRate` is
23
+ * exact percent text, "10" is 10%) or `amount` (`discount` in minor units).
24
+ * Tax codes resolve per line: a line override (`taxMode: 'override'` with
25
+ * `taxCodeId`), an exempt customer, the product's code, the customer's code,
26
+ * then the app default.
27
+ */
28
+ import { calculateMoneyDocument, resolveLineTaxCode, } from '@happyvertical/smrt-commerce/money';
29
+ import { ISO_4217_MINOR_UNITS } from '@happyvertical/smrt-ui/currency';
30
+ export { MoneyValidationError } from '@happyvertical/smrt-commerce/money';
31
+ /** A stable id for a sample tax row (a UUID-shaped FNV hash, like `fakeId`). */
32
+ function taxId(key) {
33
+ let h = 0x811c9dc5;
34
+ const parts = [];
35
+ for (let round = 0; round < 4; round++) {
36
+ for (let i = 0; i < key.length; i++) {
37
+ h ^= key.charCodeAt(i) + round;
38
+ h = Math.imul(h, 0x01000193);
39
+ }
40
+ parts.push((h >>> 0).toString(16).padStart(8, '0'));
41
+ }
42
+ const hex = parts.join('');
43
+ return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-4${hex.slice(13, 16)}-8${hex.slice(17, 20)}-${hex.slice(20, 32)}`;
44
+ }
45
+ const code = (value, name, kind, components = []) => ({
46
+ id: taxId(`tax-code:${value}`),
47
+ code: value,
48
+ name,
49
+ kind,
50
+ appliesTo: 'both',
51
+ active: true,
52
+ components,
53
+ });
54
+ /**
55
+ * The codes every tenant is seeded with, which report differently and carry
56
+ * no components. smrt also seeds `legacy-unreconciled` for tenants migrated
57
+ * from the legacy model; the planner's tenant is v2 from the start, so it has
58
+ * none.
59
+ */
60
+ export const SEEDED_TAX_CODES = [
61
+ code('exempt', 'Exempt', 'exempt'),
62
+ code('zero-rated', 'Zero-rated', 'zero-rated'),
63
+ code('out-of-scope', 'Out of scope', 'out-of-scope'),
64
+ ];
65
+ /**
66
+ * smrt-commerce's `COMMON_TAX_CODE_EXAMPLE_PACK` (Canada GST, BC GST+PST,
67
+ * Ontario HST, UK VAT, Australian GST, New Zealand GST), as the planner's
68
+ * tenant has imported it (`applyTaxCodeExamplePack`). The pack is exported
69
+ * only from the package root, which is not browser-safe, so it is restated
70
+ * here and `tests/money.test.ts` compares it with the package's; delete the
71
+ * copy when `./money` exports it (smrt#4023).
72
+ */
73
+ export const TAX_CODE_EXAMPLE_PACK = {
74
+ id: 'common-sales-taxes-v1',
75
+ components: [
76
+ { key: 'ca-gst-5', name: 'Canada GST 5%', percent: '5', recoverable: true },
77
+ { key: 'ca-pst-bc-7', name: 'BC PST 7%', percent: '7', recoverable: false },
78
+ {
79
+ key: 'ca-hst-on-13',
80
+ name: 'Ontario HST 13%',
81
+ percent: '13',
82
+ recoverable: true,
83
+ },
84
+ { key: 'uk-vat-20', name: 'UK VAT 20%', percent: '20', recoverable: true },
85
+ {
86
+ key: 'au-gst-10',
87
+ name: 'Australia GST 10%',
88
+ percent: '10',
89
+ recoverable: true,
90
+ },
91
+ {
92
+ key: 'nz-gst-15',
93
+ name: 'New Zealand GST 15%',
94
+ percent: '15',
95
+ recoverable: true,
96
+ },
97
+ ],
98
+ codes: [
99
+ {
100
+ code: 'ca-gst',
101
+ name: 'Canada GST',
102
+ appliesTo: 'both',
103
+ componentKeys: ['ca-gst-5'],
104
+ },
105
+ {
106
+ code: 'ca-gst-pst-bc',
107
+ name: 'BC GST + PST',
108
+ appliesTo: 'both',
109
+ componentKeys: ['ca-gst-5', 'ca-pst-bc-7'],
110
+ },
111
+ {
112
+ code: 'ca-hst-on',
113
+ name: 'Ontario HST',
114
+ appliesTo: 'both',
115
+ componentKeys: ['ca-hst-on-13'],
116
+ },
117
+ {
118
+ code: 'uk-vat-standard',
119
+ name: 'UK VAT standard',
120
+ appliesTo: 'both',
121
+ componentKeys: ['uk-vat-20'],
122
+ },
123
+ {
124
+ code: 'au-gst',
125
+ name: 'Australia GST',
126
+ appliesTo: 'both',
127
+ componentKeys: ['au-gst-10'],
128
+ },
129
+ {
130
+ code: 'nz-gst',
131
+ name: 'New Zealand GST',
132
+ appliesTo: 'both',
133
+ componentKeys: ['nz-gst-15'],
134
+ },
135
+ ],
136
+ };
137
+ const component = (key, name, percent, recoverable) => ({
138
+ id: taxId(`tax-component:${key}`),
139
+ key,
140
+ name,
141
+ percent,
142
+ recoverable,
143
+ });
144
+ const PACK_COMPONENTS = new Map(TAX_CODE_EXAMPLE_PACK.components.map((c) => [
145
+ c.key,
146
+ component(c.key, c.name, c.percent, c.recoverable),
147
+ ]));
148
+ /** The example pack's codes with their components. */
149
+ export const EXAMPLE_TAX_CODES = TAX_CODE_EXAMPLE_PACK.codes.map((c) => ({
150
+ ...code(c.code, c.name, 'taxable', c.componentKeys.flatMap((key) => {
151
+ const found = PACK_COMPONENTS.get(key);
152
+ return found ? [found] : [];
153
+ })),
154
+ appliesTo: c.appliesTo,
155
+ }));
156
+ /** The pack's codes that suit a currency, by the jurisdiction they name. */
157
+ const PACK_CURRENCY = {
158
+ 'ca-gst': 'CAD',
159
+ 'ca-gst-pst-bc': 'CAD',
160
+ 'ca-hst-on': 'CAD',
161
+ 'uk-vat-standard': 'GBP',
162
+ 'au-gst': 'AUD',
163
+ 'nz-gst': 'NZD',
164
+ };
165
+ /** A fraction (0.0825) as exact percent text ("8.25"). */
166
+ export function percentText(rate) {
167
+ return String(Number((rate * 100).toFixed(6)));
168
+ }
169
+ /**
170
+ * The app's default sales tax code for its tax-rate setting, exactly as
171
+ * smrt-commerce's cookbook activation (`applyCommerceCookbookSettings`)
172
+ * creates it, so the planner prices what an exported cookbook will: no rate
173
+ * (0) is `out-of-scope`, any other rate the `default-<rate>` code with one
174
+ * `Cookbook <rate>%` component. The example pack's codes are only ever chosen
175
+ * explicitly, on a line (`examplePackCodeFor`).
176
+ */
177
+ export function defaultTaxCode(rate) {
178
+ const outOfScope = SEEDED_TAX_CODES.find((c) => c.kind === 'out-of-scope');
179
+ if (!(rate > 0) && outOfScope)
180
+ return outOfScope;
181
+ const percent = percentText(rate);
182
+ return code(`default-${percent.replace('.', '_')}`, `Default ${percent}%`, 'taxable', [component(`cookbook-${percent}`, `Cookbook ${percent}%`, percent, false)]);
183
+ }
184
+ /**
185
+ * The example-pack code a sample line in an app of this currency may choose
186
+ * for itself: the pack's code with the most components for that country
187
+ * (BC GST + PST for CAD), else none.
188
+ */
189
+ export function examplePackCodeFor(currency) {
190
+ return EXAMPLE_TAX_CODES.filter((c) => PACK_CURRENCY[c.code] === currency.toUpperCase()).sort((a, b) => b.components.length - a.components.length)[0];
191
+ }
192
+ /** Every tax code of the sample tenant: the seeded ones, the default, the pack. */
193
+ export function sampleTaxCodes(rate) {
194
+ const fallback = defaultTaxCode(rate);
195
+ const all = [...SEEDED_TAX_CODES, fallback, ...EXAMPLE_TAX_CODES];
196
+ return all.filter((c, i) => all.findIndex((o) => o.id === c.id) === i);
197
+ }
198
+ /** The components of the sample tenant's codes, each once. */
199
+ export function sampleTaxComponents(codes) {
200
+ const seen = new Map();
201
+ for (const c of codes)
202
+ for (const part of c.components)
203
+ seen.set(part.id, part);
204
+ return [...seen.values()];
205
+ }
206
+ const num = (value) => {
207
+ const n = Number(value ?? 0);
208
+ return Number.isFinite(n) ? n : 0;
209
+ };
210
+ const minor = (value) => Math.round(num(value));
211
+ /** A line's discount as the calculator takes it. */
212
+ export function lineDiscount(line) {
213
+ if (line.discountType === 'percent') {
214
+ const rate = String(line.discountRate ?? '').trim();
215
+ return rate && Number(rate) !== 0
216
+ ? { kind: 'percent', rate: percentRate(rate) }
217
+ : { kind: 'none' };
218
+ }
219
+ if (line.discountType === 'amount') {
220
+ const amount = minor(line.discount);
221
+ return amount ? { kind: 'amount', minor: amount } : { kind: 'none' };
222
+ }
223
+ return { kind: 'none' };
224
+ }
225
+ /** Exact percent text with at most six decimals ("12.5"). */
226
+ function percentRate(rate) {
227
+ const n = Number(rate);
228
+ return Number.isFinite(n) ? String(Number(n.toFixed(6))) : '0';
229
+ }
230
+ /** A supported ISO 4217 code for the calculator: the row's, else the app's. */
231
+ export function moneyCurrency(value, fallback = 'USD') {
232
+ const code = typeof value === 'string' ? value.trim().toUpperCase() : '';
233
+ return code in ISO_4217_MINOR_UNITS ? code : fallback;
234
+ }
235
+ const quantity = (value) => {
236
+ const n = num(value);
237
+ return n < 0 ? 0 : Number(n.toFixed(6));
238
+ };
239
+ function resolvable(c) {
240
+ return {
241
+ id: c.id,
242
+ kind: c.kind,
243
+ active: c.active,
244
+ appliesTo: c.appliesTo,
245
+ components: c.components.map((part) => ({
246
+ taxComponentId: part.id,
247
+ percent: part.percent,
248
+ compound: false,
249
+ })),
250
+ };
251
+ }
252
+ /**
253
+ * A document's lines and totals on the money model. Each line keeps its own
254
+ * fields and gains `discount` (what was taken off, in minor units),
255
+ * `amount`, `taxAmount`, `taxCodeId` / `taxCodeCode` / `taxCodeName`,
256
+ * `taxComponentsJson` and `taxRate` (the sum of its components' percents as a
257
+ * fraction, the field smrt keeps beside them). Throws smrt's
258
+ * `MoneyValidationError` on money the model refuses (a discount above the
259
+ * line's price, an unknown override code).
260
+ */
261
+ export function settleDocument(lines, context) {
262
+ const codes = Object.fromEntries(context.codes.map((c) => [c.id, resolvable(c)]));
263
+ const byId = new Map(context.codes.map((c) => [c.id, c]));
264
+ const exempt = context.codes.find((c) => c.kind === 'exempt')?.id ?? null;
265
+ const outOfScope = context.codes.find((c) => c.kind === 'out-of-scope')?.id ?? null;
266
+ const ids = lines.map((line, i) => typeof line.id === 'string' && line.id ? line.id : `line-${i}`);
267
+ const resolved = lines.map((line) => {
268
+ const override = line.taxMode === 'override' && typeof line.taxCodeId === 'string'
269
+ ? line.taxCodeId || null
270
+ : null;
271
+ const productId = typeof line.productId === 'string' && line.productId
272
+ ? line.productId
273
+ : null;
274
+ return resolveLineTaxCode({ lineAmountType: context.lineAmountType, lineOverride: override }, {
275
+ direction: 'sales',
276
+ codes,
277
+ customerTaxExempt: context.customerTaxExempt ?? false,
278
+ exemptCodeId: exempt,
279
+ productCodeId: productId
280
+ ? (context.productCodeOf?.(productId) ?? null)
281
+ : null,
282
+ partyCodeId: context.partyCodeId ?? null,
283
+ appDefaultCodeId: context.appDefaultCodeId,
284
+ outOfScopeCodeId: outOfScope,
285
+ }).taxCode;
286
+ });
287
+ const result = calculateMoneyDocument({
288
+ currency: context.currency,
289
+ lineAmountType: context.lineAmountType,
290
+ roundingScope: context.roundingScope,
291
+ lines: lines.map((line, i) => ({
292
+ id: ids[i],
293
+ quantity: quantity(line.quantity),
294
+ unitPrice: minor(line.unitPrice),
295
+ discount: lineDiscount(line),
296
+ taxCode: resolved[i] ?? null,
297
+ })),
298
+ });
299
+ const components = new Map(context.codes.flatMap((c) => c.components.map((p) => [p.id, p])));
300
+ const settled = lines.map((line, i) => {
301
+ const row = result.lines[i];
302
+ const taxCode = resolved[i] ? byId.get(resolved[i].id) : undefined;
303
+ const parts = (row?.components ?? []).map((part) => {
304
+ const found = components.get(part.taxComponentId);
305
+ return {
306
+ taxComponentId: part.taxComponentId,
307
+ name: found?.name ?? '',
308
+ percent: found?.percent ?? '0',
309
+ taxMinor: part.taxMinor,
310
+ };
311
+ });
312
+ const percent = parts.reduce((sum, p) => sum + Number(p.percent), 0);
313
+ return {
314
+ ...line,
315
+ discount: row?.discountMinor ?? 0,
316
+ amount: row?.amountMinor ?? 0,
317
+ taxAmount: row?.taxMinor ?? 0,
318
+ taxCodeId: taxCode?.id ?? null,
319
+ taxCodeCode: taxCode?.code ?? null,
320
+ taxCodeName: taxCode?.name ?? null,
321
+ taxComponentsJson: JSON.stringify(parts),
322
+ taxRate: Number((percent / 100).toFixed(6)),
323
+ };
324
+ });
325
+ const taxes = result.taxes.map((tax) => {
326
+ const part = tax.taxComponentId
327
+ ? components.get(tax.taxComponentId)
328
+ : undefined;
329
+ const owner = tax.taxCodeId ? byId.get(tax.taxCodeId) : undefined;
330
+ return {
331
+ taxCodeId: tax.taxCodeId,
332
+ taxComponentId: tax.taxComponentId,
333
+ name: part?.name ?? owner?.name ?? '',
334
+ percent: part?.percent ?? '0',
335
+ taxable: tax.taxableMinor,
336
+ tax: tax.taxMinor,
337
+ };
338
+ });
339
+ return {
340
+ lines: settled,
341
+ subtotal: result.subtotalMinor,
342
+ discountTotal: result.discountTotalMinor,
343
+ taxAmount: result.taxMinor,
344
+ totalAmount: result.totalMinor,
345
+ taxes,
346
+ };
347
+ }
348
+ /** The per-component snapshot a settled line stores, or `[]`. */
349
+ export function lineTaxComponents(line) {
350
+ const raw = line.taxComponentsJson;
351
+ if (typeof raw !== 'string' || !raw)
352
+ return [];
353
+ try {
354
+ const parsed = JSON.parse(raw);
355
+ return Array.isArray(parsed)
356
+ ? parsed.filter((p) => typeof p === 'object' &&
357
+ p !== null &&
358
+ typeof p.taxComponentId === 'string' &&
359
+ Number.isSafeInteger(p.taxMinor))
360
+ : [];
361
+ }
362
+ catch {
363
+ return [];
364
+ }
365
+ }
366
+ /**
367
+ * A document's per-component tax as its stored line snapshots say: each
368
+ * component's tax is the sum of what the lines stored for it, and its taxable
369
+ * base the sum of those lines' net (`amount`, less `taxAmount` when prices
370
+ * include tax). Sums of stored values only: nothing is recalculated, the way
371
+ * smrt's `DocumentTax` rows are written from the same calculation.
372
+ */
373
+ export function storedTaxRows(lines, lineAmountType) {
374
+ const rows = new Map();
375
+ for (const line of lines) {
376
+ const net = lineAmountType === 'inclusive'
377
+ ? minor(line.amount) - minor(line.taxAmount)
378
+ : minor(line.amount);
379
+ for (const part of lineTaxComponents(line)) {
380
+ const found = rows.get(part.taxComponentId);
381
+ if (found) {
382
+ found.taxable += net;
383
+ found.tax += part.taxMinor;
384
+ }
385
+ else {
386
+ rows.set(part.taxComponentId, {
387
+ taxCodeId: typeof line.taxCodeId === 'string' ? line.taxCodeId : null,
388
+ taxComponentId: part.taxComponentId,
389
+ name: part.name,
390
+ percent: part.percent,
391
+ taxable: net,
392
+ tax: part.taxMinor,
393
+ });
394
+ }
395
+ }
396
+ }
397
+ return [...rows.values()];
398
+ }
399
+ /** What a line comes to before tax is resolved: its price less its discount. */
400
+ export function lineAmount(line) {
401
+ try {
402
+ return (settleDocument([line], {
403
+ lineAmountType: 'exclusive',
404
+ roundingScope: 'line',
405
+ currency: 'USD',
406
+ codes: [],
407
+ appDefaultCodeId: null,
408
+ }).lines[0]?.amount ?? 0);
409
+ }
410
+ catch {
411
+ return Math.round(quantity(line.quantity) * minor(line.unitPrice));
412
+ }
413
+ }
@@ -93,3 +93,16 @@ export declare function setSamplePack(cookbookId: string | null | undefined): Sa
93
93
  export declare function setSampleTaxRate(rate: number | undefined): void;
94
94
  /** The sample tax rate: the app's setting, else the pack's (omitted: random). */
95
95
  export declare function getSampleTaxRate(): number | undefined;
96
+ /**
97
+ * How sample documents are priced: the app's `pricesIncludeTax` (inclusive:
98
+ * a line's amount is the gross, tax backed out of it) and `taxRounding`
99
+ * settings, and its currency. Like the tax rate they take effect when sample
100
+ * rows are next generated.
101
+ */
102
+ export interface SamplePricing {
103
+ pricesIncludeTax: boolean;
104
+ taxRounding: 'line' | 'document';
105
+ currency: string;
106
+ }
107
+ export declare function setSamplePricing(next: Partial<SamplePricing>): void;
108
+ export declare function getSamplePricing(): SamplePricing;