@happyvertical/smrt-planner 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/404.html +34 -34
- package/app/_app/immutable/assets/0.DUow1OzM.css +1 -0
- package/app/_app/immutable/assets/AppShell.DOvXbUZo.css +1 -0
- package/app/_app/immutable/assets/ModelPage.DbXvPbHE.css +1 -0
- package/app/_app/immutable/assets/SegmentedControl.BkyuoCEJ.css +1 -0
- package/app/_app/immutable/assets/app.eM0k786r.css +1 -0
- package/app/_app/immutable/assets/currency-metadata.DDyu8_ub.css +1 -0
- package/app/_app/immutable/assets/data.bGq43K60.css +1 -0
- package/app/_app/immutable/assets/feedback.xBpOq9ef.css +1 -0
- package/app/_app/immutable/assets/forms.B3_bbIMe.css +1 -0
- package/app/_app/immutable/assets/labels.BiuUjqHs.css +1 -0
- package/app/_app/immutable/assets/percent.DbwvwMhf.css +1 -0
- package/app/_app/immutable/assets/state.CJipYvSU.css +1 -0
- package/app/_app/immutable/assets/webmcp-ui-context.BnR-DUfO.css +1 -0
- package/app/_app/immutable/assets/workspace.B5Xq-5pJ.css +1 -0
- package/app/_app/immutable/chunks/1ElZWh_R.js +10 -0
- package/app/_app/immutable/chunks/B-CpwO-j.js +1 -0
- package/app/_app/immutable/chunks/{BrorvU4B.js → B7KB-rhH.js} +1 -1
- package/app/_app/immutable/chunks/{CsmXMAyE.js → BUhghcIm.js} +1 -1
- package/app/_app/immutable/chunks/{CU8cbxOZ.js → BZVZZ6VY.js} +1 -1
- package/app/_app/immutable/chunks/BeJD7_hy.js +1 -0
- package/app/_app/immutable/chunks/{gHjidpzw.js → BqBuCJB_.js} +2 -2
- package/app/_app/immutable/chunks/BsJoBmTA.js +1 -0
- package/app/_app/immutable/chunks/Bxbz6_Mb.js +1 -0
- package/app/_app/immutable/chunks/{Dx8H44Wq.js → Bz5uCkjV.js} +1 -1
- package/app/_app/immutable/chunks/CF6zSg_o.js +2 -0
- package/app/_app/immutable/chunks/{BdjvgMW6.js → CFL0B6dk.js} +1 -1
- package/app/_app/immutable/chunks/{BCmdRE3j.js → CRu55ZTy.js} +2 -2
- package/app/_app/immutable/chunks/{BzITuwgY.js → Cv2EcCr0.js} +1 -1
- package/app/_app/immutable/chunks/{BVicq_6F.js → D-3Ri0zJ.js} +1 -1
- package/app/_app/immutable/chunks/{DEe2Vsu9.js → D7d5GssF.js} +1 -1
- package/app/_app/immutable/chunks/DCsSRJsN.js +1 -0
- package/app/_app/immutable/chunks/{auwiz8v4.js → DGqV6_5v.js} +1 -1
- package/app/_app/immutable/chunks/{EcFojPiU.js → DNSRTkf6.js} +1 -1
- package/app/_app/immutable/chunks/DQNX_XPY.js +1 -0
- package/app/_app/immutable/chunks/{Cas1hq-y.js → DSyIMN4M.js} +1 -1
- package/app/_app/immutable/chunks/DUTtmM1Y.js +1 -0
- package/app/_app/immutable/chunks/{By-QJdbA.js → DYuawOB3.js} +28 -28
- package/app/_app/immutable/chunks/{C-AoRalq.js → DfCLzLZc.js} +1 -1
- package/app/_app/immutable/chunks/{CfOMUCNN.js → Dh5fne6n.js} +1 -1
- package/app/_app/immutable/chunks/{D3nyL-ZK.js → LruoUXGC.js} +1 -1
- package/app/_app/immutable/chunks/_pYwB_Eb.js +4 -0
- package/app/_app/immutable/chunks/{CNj-_B0j.js → aoU3lIZI.js} +1 -1
- package/app/_app/immutable/chunks/{DxR35SQx.js → c57ZlocB.js} +1 -1
- package/app/_app/immutable/chunks/{3ouNUakh.js → h8ppmjOm.js} +1 -1
- package/app/_app/immutable/chunks/{Dm6R8q7G.js → jhcy_jeO.js} +1 -1
- package/app/_app/immutable/chunks/{B8iReL-r.js → vwntRvfV.js} +1 -1
- package/app/_app/immutable/entry/{app.vuScBcN4.js → app.D5LoTsNA.js} +2 -2
- package/app/_app/immutable/entry/start.Sb_s0NGC.js +1 -0
- package/app/_app/immutable/nodes/0.Cuo9-RQc.js +9 -0
- package/app/_app/immutable/nodes/{1.huiLmf4w.js → 1.BW8Ar5T3.js} +1 -1
- package/app/_app/immutable/nodes/{10.B3buyRS-.js → 10.CpLYjN7r.js} +1 -1
- package/app/_app/immutable/nodes/{11.FNeDQehr.js → 11.BMPKD4M3.js} +1 -1
- package/app/_app/immutable/nodes/{12.umrKgKLQ.js → 12.WYpy0AHE.js} +1 -1
- package/app/_app/immutable/nodes/{13.DFr7i0IY.js → 13.BYo05X9B.js} +1 -1
- package/app/_app/immutable/nodes/{14.BNgJ8cEq.js → 14.DN0MT3KB.js} +1 -1
- package/app/_app/immutable/nodes/{2.B3v0JtfB.js → 2.DM6k_pqu.js} +3 -3
- package/app/_app/immutable/nodes/{3.FLW3AkwU.js → 3.YgEwJ-vF.js} +1 -1
- package/app/_app/immutable/nodes/{4.50B7EkB9.js → 4.A3Y6Lax0.js} +1 -1
- package/app/_app/immutable/nodes/{5.Din7W_Et.js → 5.D9Vd85hG.js} +1 -1
- package/app/_app/immutable/nodes/{6.7dOUE7nr.js → 6.C5c56bSW.js} +1 -1
- package/app/_app/immutable/nodes/{7.C4XsW0qI.js → 7.CDBMbYlD.js} +1 -1
- package/app/_app/immutable/nodes/{8.D_MREd8V.js → 8.8olDkDou.js} +1 -1
- package/app/_app/immutable/nodes/{9.cn87hhI-.js → 9.CWgx__8Z.js} +1 -1
- package/app/_app/version.json +1 -1
- package/app/advanced-styles/index.html +40 -40
- package/app/ai/index.html +48 -48
- package/app/blueprint/index.html +37 -37
- package/app/cookbook/index.html +37 -37
- package/app/index.html +55 -55
- package/app/m/ads/AdDeliveryTier/index.html +42 -42
- package/app/m/ads/AdEvent/index.html +42 -42
- package/app/m/ads/AdFormat/index.html +42 -42
- package/app/m/ads/AdGroup/index.html +42 -42
- package/app/m/ads/AdVariation/index.html +42 -42
- package/app/m/analytics/AnalyticsDataStream/index.html +42 -42
- package/app/m/analytics/AnalyticsEvent/index.html +42 -42
- package/app/m/analytics/AnalyticsProperty/index.html +42 -42
- package/app/m/analytics/AnalyticsReport/index.html +42 -42
- package/app/m/approvals/ApprovalEvent/index.html +42 -42
- package/app/m/approvals/ApprovalPolicy/index.html +42 -42
- package/app/m/approvals/ApprovalRequest/index.html +42 -42
- package/app/m/assets/Asset/attachments/index.html +44 -44
- package/app/m/assets/Asset/index.html +42 -42
- package/app/m/assets/AssetAssociation/index.html +42 -42
- package/app/m/assets/AssetMetafield/index.html +42 -42
- package/app/m/assets/AssetStatus/index.html +42 -42
- package/app/m/assets/AssetType/index.html +42 -42
- package/app/m/assets/Folder/index.html +42 -42
- package/app/m/chat/AgentSession/index.html +42 -42
- package/app/m/chat/ChatMessage/index.html +42 -42
- package/app/m/chat/ChatParticipant/index.html +42 -42
- package/app/m/chat/ChatReaction/index.html +42 -42
- package/app/m/chat/ChatRoom/index.html +42 -42
- package/app/m/chat/ChatThread/index.html +42 -42
- package/app/m/chat/VoiceGatewayTurn/index.html +42 -42
- package/app/m/chat/VoiceSession/index.html +42 -42
- package/app/m/commerce/Agreement/index.html +42 -42
- package/app/m/commerce/Cart/index.html +42 -42
- package/app/m/commerce/Contract/index.html +42 -42
- package/app/m/commerce/ContractLineItem/index.html +42 -42
- package/app/m/commerce/Customer/index.html +42 -42
- package/app/m/commerce/DocumentTax/index.html +42 -42
- package/app/m/commerce/Estimate/index.html +42 -42
- package/app/m/commerce/Fulfillment/index.html +42 -42
- package/app/m/commerce/FulfillmentLineItem/index.html +42 -42
- package/app/m/commerce/Invoice/index.html +42 -42
- package/app/m/commerce/InvoiceLineItem/index.html +42 -42
- package/app/m/commerce/Lease/index.html +42 -42
- package/app/m/commerce/LicenseSale/index.html +42 -42
- package/app/m/commerce/Order/index.html +42 -42
- package/app/m/commerce/Payment/index.html +42 -42
- package/app/m/commerce/PaymentAllocation/index.html +42 -42
- package/app/m/commerce/PaymentInstrument/index.html +42 -42
- package/app/m/commerce/PaymentIntent/index.html +42 -42
- package/app/m/commerce/Payout/index.html +42 -42
- package/app/m/commerce/ProductionOrder/index.html +42 -42
- package/app/m/commerce/PurchaseContract/index.html +42 -42
- package/app/m/commerce/PurchaseOrder/index.html +42 -42
- package/app/m/commerce/SalesContract/index.html +42 -42
- package/app/m/commerce/SupplierQuote/index.html +42 -42
- package/app/m/commerce/TaxCode/index.html +42 -42
- package/app/m/commerce/TaxComponent/index.html +42 -42
- package/app/m/commerce/TaxSettings/index.html +42 -42
- package/app/m/commerce/TaxSummaryReport/index.html +42 -42
- package/app/m/commerce/Vendor/index.html +42 -42
- package/app/m/commerce/WholesaleOrder/index.html +42 -42
- package/app/m/content/Content/index.html +42 -42
- package/app/m/content/ContentContribution/index.html +42 -42
- package/app/m/content/ContentContributionAttachment/index.html +42 -42
- package/app/m/content/ContentContributionRevision/index.html +42 -42
- package/app/m/content/ContentContributionType/index.html +42 -42
- package/app/m/content/ContentContributor/index.html +42 -42
- package/app/m/content/ContentCorrection/index.html +42 -42
- package/app/m/content/ContentFeedSource/index.html +42 -42
- package/app/m/content/ContentGovernanceAssignment/index.html +42 -42
- package/app/m/content/ContentGovernancePolicy/index.html +42 -42
- package/app/m/content/ContentGovernanceProfile/index.html +42 -42
- package/app/m/content/ContentReference/index.html +42 -42
- package/app/m/content/ContentReview/index.html +42 -42
- package/app/m/content/ContentVersion/index.html +42 -42
- package/app/m/events/Event/index.html +42 -42
- package/app/m/events/EventParticipant/index.html +42 -42
- package/app/m/events/EventSeries/index.html +42 -42
- package/app/m/events/EventType/index.html +42 -42
- package/app/m/expenses/Expense/index.html +42 -42
- package/app/m/facts/Fact/index.html +42 -42
- package/app/m/facts/FactContent/index.html +42 -42
- package/app/m/facts/FactEvidence/index.html +42 -42
- package/app/m/facts/FactSource/index.html +42 -42
- package/app/m/facts/FactSubject/index.html +42 -42
- package/app/m/facts/FactTag/index.html +42 -42
- package/app/m/fields/FieldPolicy/index.html +42 -42
- package/app/m/fields/FieldPolicySuggestion/index.html +42 -42
- package/app/m/fields/FieldUsageCounter/index.html +42 -42
- package/app/m/images/Image/index.html +42 -42
- package/app/m/inventory/InventoryLocation/index.html +42 -42
- package/app/m/inventory/StockLevel/index.html +42 -42
- package/app/m/inventory/StockMovement/index.html +42 -42
- package/app/m/ledgers/Account/index.html +42 -42
- package/app/m/ledgers/Journal/index.html +42 -42
- package/app/m/ledgers/JournalEntry/index.html +42 -42
- package/app/m/manufacturing/Assembly/index.html +42 -42
- package/app/m/manufacturing/BillOfMaterials/index.html +42 -42
- package/app/m/manufacturing/BomLine/index.html +42 -42
- package/app/m/manufacturing/Operation/index.html +42 -42
- package/app/m/manufacturing/ProductionRun/index.html +42 -42
- package/app/m/manufacturing/ProductionRunCompletion/index.html +42 -42
- package/app/m/manufacturing/RoutingStep/index.html +42 -42
- package/app/m/marketing/Campaign/index.html +42 -42
- package/app/m/marketing/CampaignChannel/index.html +42 -42
- package/app/m/marketing/CampaignMetricSnapshot/index.html +42 -42
- package/app/m/messages/Account/index.html +42 -42
- package/app/m/messages/Attachment/index.html +42 -42
- package/app/m/messages/Blacklist/index.html +42 -42
- package/app/m/messages/Email/failed-sends/index.html +44 -44
- package/app/m/messages/Email/index.html +42 -42
- package/app/m/messages/Email/mailbox/index.html +44 -44
- package/app/m/messages/EmailAccount/index.html +42 -42
- package/app/m/messages/EmailAttachment/index.html +42 -42
- package/app/m/messages/EmailFolder/index.html +42 -42
- package/app/m/messages/Message/index.html +42 -42
- package/app/m/messages/MessagingEndpoint/index.html +42 -42
- package/app/m/messages/PersonaMessageRoute/index.html +42 -42
- package/app/m/messages/SlackAccount/index.html +42 -42
- package/app/m/messages/SlackMessage/index.html +42 -42
- package/app/m/messages/TelegramAccount/index.html +42 -42
- package/app/m/messages/Tweet/index.html +42 -42
- package/app/m/messages/TwitterAccount/index.html +42 -42
- package/app/m/messages/Whitelist/index.html +42 -42
- package/app/m/messages/ZulipAccount/index.html +42 -42
- package/app/m/places/Place/index.html +42 -42
- package/app/m/places/PlaceType/index.html +42 -42
- package/app/m/products/Category/index.html +42 -42
- package/app/m/products/Material/index.html +42 -42
- package/app/m/products/Product/index.html +42 -42
- package/app/m/products/Product/ingredients/index.html +44 -44
- package/app/m/products/ProductVariant/index.html +42 -42
- package/app/m/products/Sku/index.html +42 -42
- package/app/m/profiles/ApiKey/index.html +42 -42
- package/app/m/profiles/Bot/index.html +42 -42
- package/app/m/profiles/MagicLinkToken/index.html +42 -42
- package/app/m/profiles/NostrIdentity/index.html +42 -42
- package/app/m/profiles/OidcIdentity/index.html +42 -42
- package/app/m/profiles/Organization/index.html +42 -42
- package/app/m/profiles/Person/index.html +42 -42
- package/app/m/profiles/Profile/index.html +42 -42
- package/app/m/profiles/ProfileMetadata/index.html +42 -42
- package/app/m/profiles/ProfileMetafield/index.html +42 -42
- package/app/m/profiles/ProfileRelationship/index.html +42 -42
- package/app/m/profiles/ProfileRelationshipTerm/index.html +42 -42
- package/app/m/profiles/ProfileRelationshipType/index.html +42 -42
- package/app/m/profiles/ProfileType/index.html +42 -42
- package/app/m/projects/Comment/index.html +42 -42
- package/app/m/projects/Issue/index.html +42 -42
- package/app/m/projects/Label/index.html +42 -42
- package/app/m/projects/Project/index.html +42 -42
- package/app/m/projects/ProjectIntegration/index.html +42 -42
- package/app/m/projects/PullRequest/index.html +42 -42
- package/app/m/projects/Repository/index.html +42 -42
- package/app/m/properties/Property/index.html +42 -42
- package/app/m/properties/Zone/index.html +42 -42
- package/app/m/reports/RuntimeReport/index.html +42 -42
- package/app/m/reports/SmrtPrincipalReportRefreshTask/index.html +42 -42
- package/app/m/reports/SmrtReportLock/index.html +42 -42
- package/app/m/reports/SmrtReportRefreshTask/index.html +42 -42
- package/app/m/reports/SmrtReportRun/index.html +42 -42
- package/app/m/reports/SmrtReportSchedule/index.html +42 -42
- package/app/m/reports/SmrtReportWatermark/index.html +42 -42
- package/app/m/sales/AttributionException/index.html +42 -42
- package/app/m/sales/AttributionPolicy/index.html +42 -42
- package/app/m/sales/Commission/index.html +42 -42
- package/app/m/sales/CommissionAdjustment/index.html +42 -42
- package/app/m/sales/CommissionPayout/index.html +42 -42
- package/app/m/sales/CommissionPlan/index.html +42 -42
- package/app/m/sales/Earner/index.html +42 -42
- package/app/m/sales/EarnerSourceAttribution/index.html +42 -42
- package/app/m/sales/EarningEvent/index.html +42 -42
- package/app/m/sales/ExecutedAgreement/index.html +42 -42
- package/app/m/sales/Lead/index.html +42 -42
- package/app/m/sales/Opportunity/index.html +42 -42
- package/app/m/sales/OpportunityConversion/index.html +42 -42
- package/app/m/sales/PipelineDefinition/index.html +42 -42
- package/app/m/sales/PipelineStage/index.html +42 -42
- package/app/m/sales/Referral/index.html +42 -42
- package/app/m/sales/ReferralAgreement/index.html +42 -42
- package/app/m/sales/ReferralLink/index.html +42 -42
- package/app/m/sales/ReferralProgram/index.html +42 -42
- package/app/m/sales/ReferralTermSnapshot/index.html +42 -42
- package/app/m/sales/ReferralTouch/index.html +42 -42
- package/app/m/sales/Referrer/index.html +42 -42
- package/app/m/sales/SalesActivity/index.html +42 -42
- package/app/m/sales/SalesRepresentative/index.html +42 -42
- package/app/m/sites/Site/index.html +42 -42
- package/app/m/sites/SiteAgentBinding/index.html +42 -42
- package/app/m/social/OAuthState/index.html +42 -42
- package/app/m/social/SocialAccount/index.html +42 -42
- package/app/m/social/SocialPost/index.html +42 -42
- package/app/m/social/SocialPostAnalyticsSnapshot/index.html +42 -42
- package/app/m/subscriptions/BillingAdjustment/index.html +42 -42
- package/app/m/subscriptions/ClientCharge/index.html +42 -42
- package/app/m/subscriptions/CreditGrant/index.html +42 -42
- package/app/m/subscriptions/PricingRule/index.html +42 -42
- package/app/m/subscriptions/RetailCharge/index.html +42 -42
- package/app/m/subscriptions/SpendingPolicy/index.html +42 -42
- package/app/m/subscriptions/SubscriptionPlan/index.html +42 -42
- package/app/m/subscriptions/TenantSubscription/index.html +42 -42
- package/app/m/subscriptions/TenantUsageMetric/index.html +42 -42
- package/app/m/support/ServiceTimeEntry/index.html +42 -42
- package/app/m/support/SupportAiRun/index.html +42 -42
- package/app/m/support/SupportAvailability/index.html +42 -42
- package/app/m/support/SupportCase/index.html +42 -42
- package/app/m/support/SupportCaseEvent/index.html +42 -42
- package/app/m/support/SupportChannelBinding/index.html +42 -42
- package/app/m/support/SupportCharge/index.html +42 -42
- package/app/m/support/SupportCompensation/index.html +42 -42
- package/app/m/support/SupportCompensationPlan/index.html +42 -42
- package/app/m/support/SupportEscalation/index.html +42 -42
- package/app/m/support/SupportInteraction/index.html +42 -42
- package/app/m/support/SupportPlan/index.html +42 -42
- package/app/m/support/SupportPolicy/index.html +42 -42
- package/app/m/support/SupportQualification/index.html +42 -42
- package/app/m/support/SupportServiceTarget/index.html +42 -42
- package/app/m/support/SupportSpecialist/index.html +42 -42
- package/app/m/support/SupportWorkLink/index.html +42 -42
- package/app/m/tags/Tag/index.html +42 -42
- package/app/m/tags/TagAlias/index.html +42 -42
- package/app/m/timesheets/AttendanceBreak/index.html +42 -42
- package/app/m/timesheets/AttendancePunch/index.html +42 -42
- package/app/m/timesheets/AttendanceSegment/index.html +42 -42
- package/app/m/timesheets/ServiceChargeSnapshot/index.html +42 -42
- package/app/m/timesheets/ServiceCompensationSnapshot/index.html +42 -42
- package/app/m/timesheets/ServiceTimeEntry/index.html +42 -42
- package/app/m/users/Group/index.html +42 -42
- package/app/m/users/GroupMember/index.html +42 -42
- package/app/m/users/GroupRole/index.html +42 -42
- package/app/m/users/Membership/index.html +42 -42
- package/app/m/users/MembershipOverride/index.html +42 -42
- package/app/m/users/Permission/index.html +42 -42
- package/app/m/users/Role/index.html +42 -42
- package/app/m/users/RolePermission/index.html +42 -42
- package/app/m/users/Session/index.html +42 -42
- package/app/m/users/Tenant/index.html +42 -42
- package/app/m/users/TenantIntegration/index.html +42 -42
- package/app/m/users/TenantPermissionOverride/index.html +42 -42
- package/app/m/users/User/index.html +42 -42
- package/app/m/video/Character/index.html +42 -42
- package/app/m/video/CharacterAsset/index.html +42 -42
- package/app/m/video/CompositeJob/index.html +42 -42
- package/app/m/video/Performer/index.html +42 -42
- package/app/m/video/PerformerAsset/index.html +42 -42
- package/app/m/video/Scene/index.html +42 -42
- package/app/m/video/SceneAsset/index.html +42 -42
- package/app/m/video/VideoComposition/index.html +42 -42
- package/app/m/video/VideoCompositionAsset/index.html +42 -42
- package/app/m/video/VideoSequence/index.html +42 -42
- package/app/m/video/VideoSequenceAsset/index.html +42 -42
- package/app/m/video/VideoShot/index.html +42 -42
- package/app/m/video/VideoShotAsset/index.html +42 -42
- package/app/m/video/VideoShotCharacter/index.html +42 -42
- package/app/m/video/VideoWorkflow/index.html +42 -42
- package/app/m/voice/VoiceOutput/index.html +42 -42
- package/app/m/voice/VoiceProfile/index.html +42 -42
- package/app/m/voice/VoiceSample/index.html +42 -42
- package/app/packages/ads/index.html +38 -38
- package/app/packages/analytics/index.html +38 -38
- package/app/packages/approvals/index.html +38 -38
- package/app/packages/assets/index.html +38 -38
- package/app/packages/chat/index.html +38 -38
- package/app/packages/comments/index.html +38 -38
- package/app/packages/commerce/index.html +39 -39
- package/app/packages/content/index.html +38 -38
- package/app/packages/events/index.html +38 -38
- package/app/packages/expenses/index.html +38 -38
- package/app/packages/facts/index.html +38 -38
- package/app/packages/fields/index.html +38 -38
- package/app/packages/human-resources/index.html +38 -38
- package/app/packages/images/index.html +38 -38
- package/app/packages/index.html +39 -39
- package/app/packages/ingestion/index.html +38 -38
- package/app/packages/inventory/index.html +38 -38
- package/app/packages/ledgers/index.html +38 -38
- package/app/packages/manufacturing/index.html +38 -38
- package/app/packages/marketing/index.html +38 -38
- package/app/packages/messages/index.html +38 -38
- package/app/packages/places/index.html +38 -38
- package/app/packages/preferences/index.html +38 -38
- package/app/packages/products/index.html +38 -38
- package/app/packages/profiles/index.html +38 -38
- package/app/packages/projects/index.html +38 -38
- package/app/packages/properties/index.html +38 -38
- package/app/packages/reports/index.html +38 -38
- package/app/packages/sales/index.html +38 -38
- package/app/packages/sites/index.html +38 -38
- package/app/packages/social/index.html +38 -38
- package/app/packages/subscriptions/index.html +38 -38
- package/app/packages/support/index.html +38 -38
- package/app/packages/tags/index.html +38 -38
- package/app/packages/timesheets/index.html +38 -38
- package/app/packages/users/index.html +38 -38
- package/app/packages/video/index.html +38 -38
- package/app/packages/voice/index.html +38 -38
- package/app/packages/webhooks/index.html +38 -38
- package/app/recipes/account-access/help/index.html +40 -40
- package/app/recipes/account-access/index.html +44 -44
- package/app/recipes/activity/help/index.html +40 -40
- package/app/recipes/activity/index.html +44 -44
- package/app/recipes/agreements/help/index.html +41 -41
- package/app/recipes/agreements/index.html +44 -44
- package/app/recipes/analytics.reports/help/index.html +40 -40
- package/app/recipes/analytics.reports/index.html +44 -44
- package/app/recipes/assets/help/index.html +40 -40
- package/app/recipes/assets/index.html +44 -44
- package/app/recipes/billing/help/index.html +41 -41
- package/app/recipes/billing/index.html +44 -44
- package/app/recipes/chat.assistant/help/index.html +40 -40
- package/app/recipes/chat.assistant/index.html +44 -44
- package/app/recipes/comments/help/index.html +40 -40
- package/app/recipes/comments/index.html +44 -44
- package/app/recipes/commerce.customers/help/index.html +40 -40
- package/app/recipes/commerce.customers/index.html +44 -44
- package/app/recipes/commerce.estimates/help/index.html +41 -41
- package/app/recipes/commerce.estimates/index.html +44 -44
- package/app/recipes/commerce.purchases/help/index.html +41 -41
- package/app/recipes/commerce.purchases/index.html +44 -44
- package/app/recipes/commerce.sales/help/index.html +41 -41
- package/app/recipes/commerce.sales/index.html +44 -44
- package/app/recipes/commerce.vendors/help/index.html +40 -40
- package/app/recipes/commerce.vendors/index.html +44 -44
- package/app/recipes/commerce.wholesale/help/index.html +41 -41
- package/app/recipes/commerce.wholesale/index.html +44 -44
- package/app/recipes/events.calendar/help/index.html +40 -40
- package/app/recipes/events.calendar/index.html +44 -44
- package/app/recipes/expenses.tracking/help/index.html +40 -40
- package/app/recipes/expenses.tracking/index.html +44 -44
- package/app/recipes/fields.form-customization/help/index.html +40 -40
- package/app/recipes/fields.form-customization/index.html +44 -44
- package/app/recipes/ingestion/help/index.html +40 -40
- package/app/recipes/ingestion/index.html +44 -44
- package/app/recipes/integrations/help/index.html +40 -40
- package/app/recipes/integrations/index.html +44 -44
- package/app/recipes/inventory.stock/help/index.html +40 -40
- package/app/recipes/inventory.stock/index.html +44 -44
- package/app/recipes/ledgers.bookkeeping/help/index.html +40 -40
- package/app/recipes/ledgers.bookkeeping/index.html +44 -44
- package/app/recipes/messages/help/index.html +40 -40
- package/app/recipes/messages/index.html +44 -44
- package/app/recipes/products/help/index.html +40 -40
- package/app/recipes/products/index.html +44 -44
- package/app/recipes/projects.tracker/help/index.html +40 -40
- package/app/recipes/projects.tracker/index.html +44 -44
- package/app/recipes/reports.materialized/help/index.html +40 -40
- package/app/recipes/reports.materialized/index.html +44 -44
- package/app/recipes/reports.runtime/help/index.html +40 -40
- package/app/recipes/reports.runtime/index.html +44 -44
- package/app/recipes/sales.pipeline/help/index.html +40 -40
- package/app/recipes/sales.pipeline/index.html +44 -44
- package/app/recipes/tags.taxonomy/help/index.html +40 -40
- package/app/recipes/tags.taxonomy/index.html +44 -44
- package/app/recipes/team-collaboration/help/index.html +40 -40
- package/app/recipes/team-collaboration/index.html +44 -44
- package/app/recipes/timesheets.time-entries/help/index.html +40 -40
- package/app/recipes/timesheets.time-entries/index.html +44 -44
- package/app/s/custom-accounts/index.html +37 -37
- package/app/s/custom-appointments/index.html +37 -37
- package/app/s/custom-billing/index.html +37 -37
- package/app/s/custom-buying/index.html +37 -37
- package/app/s/custom-checkout/index.html +37 -37
- package/app/s/custom-classes/index.html +37 -37
- package/app/s/custom-clients/index.html +37 -37
- package/app/s/custom-events/index.html +37 -37
- package/app/s/custom-fleet/index.html +37 -37
- package/app/s/custom-giving/index.html +37 -37
- package/app/s/custom-jobs/index.html +37 -37
- package/app/s/custom-kitchen/index.html +37 -37
- package/app/s/custom-material/index.html +37 -37
- package/app/s/custom-meetings/index.html +37 -37
- package/app/s/custom-members/index.html +37 -37
- package/app/s/custom-parts/index.html +37 -37
- package/app/s/custom-rentals/index.html +37 -37
- package/app/s/custom-roastery/index.html +37 -37
- package/app/s/custom-schedule/index.html +37 -37
- package/app/s/custom-shelf/index.html +37 -37
- package/app/s/custom-shop/index.html +37 -37
- package/app/s/custom-wholesale/index.html +37 -37
- package/app/s/custom-work/index.html +37 -37
- package/app/s/custom-yard/index.html +37 -37
- package/app/s/section-access-control/index.html +37 -37
- package/app/s/section-account-security/index.html +37 -37
- package/app/s/section-accounting/index.html +37 -37
- package/app/s/section-activity/index.html +37 -37
- package/app/s/section-agreements/index.html +37 -37
- package/app/s/section-analytics/index.html +37 -37
- package/app/s/section-assets/index.html +37 -37
- package/app/s/section-billing/index.html +37 -37
- package/app/s/section-calendar/index.html +37 -37
- package/app/s/section-catalog/index.html +37 -37
- package/app/s/section-chat.assistant/index.html +37 -37
- package/app/s/section-comments/index.html +37 -37
- package/app/s/section-fields.form-customization/index.html +37 -37
- package/app/s/section-ingestion/index.html +37 -37
- package/app/s/section-integrations/index.html +37 -37
- package/app/s/section-messages/index.html +37 -37
- package/app/s/section-more/index.html +37 -37
- package/app/s/section-operations/index.html +37 -37
- package/app/s/section-projects/index.html +37 -37
- package/app/s/section-purchasing/index.html +37 -37
- package/app/s/section-reports.materialized/index.html +37 -37
- package/app/s/section-reports.runtime/index.html +37 -37
- package/app/s/section-sales/index.html +37 -37
- package/app/s/section-taxonomy/index.html +37 -37
- package/app/s/section-team/index.html +37 -37
- package/app/s/section-work/index.html +37 -37
- package/dist/catalog/catalog.json +68 -315
- package/dist/catalog/generate/exclusions.d.ts +0 -6
- package/dist/catalog/generate/exclusions.js +6 -21
- package/dist/catalog/generate/extract.js +2 -2
- package/dist/cookbook/prompt.js +0 -4
- package/dist/data/money.d.ts +1 -3
- package/dist/data/money.js +1 -3
- package/dist/data/planner-source.js +2 -5
- package/dist/smrt-version.d.ts +1 -1
- package/dist/smrt-version.js +1 -1
- package/package.json +7 -7
- package/app/_app/immutable/assets/0.BvXq1Svw.css +0 -1
- package/app/_app/immutable/assets/AppShell.DKPbJFmw.css +0 -1
- package/app/_app/immutable/assets/ModelPage.DzDhJQz3.css +0 -1
- package/app/_app/immutable/assets/SegmentedControl.T_hJQXHk.css +0 -1
- package/app/_app/immutable/assets/app.BS7nbUi0.css +0 -1
- package/app/_app/immutable/assets/currency-metadata.CJIy0Dzm.css +0 -1
- package/app/_app/immutable/assets/data.DQcbQG_b.css +0 -1
- package/app/_app/immutable/assets/feedback.FjY5wqsa.css +0 -1
- package/app/_app/immutable/assets/forms.DA06CFM9.css +0 -1
- package/app/_app/immutable/assets/labels.Dny6zd23.css +0 -1
- package/app/_app/immutable/assets/percent.CBivq97O.css +0 -1
- package/app/_app/immutable/assets/state.C9Put0ur.css +0 -1
- package/app/_app/immutable/assets/webmcp-ui-context.CC5pQLNE.css +0 -1
- package/app/_app/immutable/assets/workspace.Dtoe2fRU.css +0 -1
- package/app/_app/immutable/chunks/B3FAegW4.js +0 -4
- package/app/_app/immutable/chunks/CGKL_Nlh.js +0 -1
- package/app/_app/immutable/chunks/CZGhPAoL.js +0 -2
- package/app/_app/immutable/chunks/CaEdOwVf.js +0 -1
- package/app/_app/immutable/chunks/Cm0VMWZu.js +0 -1
- package/app/_app/immutable/chunks/DTs3DOB0.js +0 -10
- package/app/_app/immutable/chunks/Dreozana.js +0 -1
- package/app/_app/immutable/chunks/JBS2nHGN.js +0 -1
- package/app/_app/immutable/chunks/TjbilXEg.js +0 -1
- package/app/_app/immutable/chunks/dbZ3U29n.js +0 -1
- package/app/_app/immutable/entry/start.C_vMied2.js +0 -1
- package/app/_app/immutable/nodes/0.BeNJfVow.js +0 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./Dd_uD5pT.js";import{b as t}from"./
|
|
1
|
+
import{n as e}from"./Dd_uD5pT.js";import{b as t}from"./CF6zSg_o.js";import{a as n,r}from"./C7zBd-pD.js";import{t as i}from"./CA-A9Ngs.js";function a(e){return t=>{t.allowLocalModels=e,t.useBrowserCache=!0;let n=globalThis.crossOriginIsolated===!0,r=t.backends?.onnx?.wasm;r&&!n&&(r.numThreads=1)}}var o=`onnx-community/whisper-tiny.en`,s={"moonshine-tiny":{id:`onnx-community/moonshine-tiny-ONNX`,bytes:322e5,englishOnly:!0,label:`Moonshine tiny`},"moonshine-base":{id:`onnx-community/moonshine-base-ONNX`,bytes:67e6,englishOnly:!0,label:`Moonshine base`},"whisper-tiny.en":{id:o,bytes:451e5,englishOnly:!0,label:`Whisper tiny (English)`},"whisper-base.en":{id:`onnx-community/whisper-base.en`,bytes:85e6,englishOnly:!0,label:`Whisper base (English)`},"whisper-small.en":{id:`onnx-community/whisper-small.en`,bytes:26e7,englishOnly:!0,label:`Whisper small (English)`}};function c(e){return e?s[e]?.id??e:o}function l(e){return Object.values(s).some(t=>t.id===e&&t.englishOnly)||/\.en$|moonshine/i.test(e)}var u=`audio/pcm;rate=16000;channels=1;encoding=f32le`;function d(){let e=Error(`Download cancelled`);return e.name=`AbortError`,e}function f(e){return e?.split(/[-_]/)[0]?.toLowerCase()||void 0}function p(e){return{data:new Uint8Array(e.slice().buffer),mimeType:u}}async function m(e){try{return await(e?e():i(`@happyvertical/speech/local`))}catch{throw new r(`local-speech`,'@happyvertical/speech could not be loaded. Install it (and @huggingface/transformers) and pass `loadSpeech: () => import("@happyvertical/speech/local")`.')}}var h=class{createWorker;loadSpeech;progress;worker=null;client=null;constructor(e,t,n){this.createWorker=e,this.loadSpeech=t,this.progress=n}ensure(){return this.client??=m(this.loadSpeech).then(e=>{let t=this.createWorker();return this.worker=t,new e.LocalTranscriberWorkerClient(t,{onProgress:this.progress})}),this.client}async isCached(e){return(await this.ensure()).isCached(e)}async preload(e,t){if(t?.aborted)throw d();let n=await this.ensure();if(!t)return n.preload(e);let r=()=>this.dispose();t.addEventListener(`abort`,r,{once:!0});try{await Promise.race([n.preload(e),new Promise((e,n)=>t.addEventListener(`abort`,()=>n(d()),{once:!0}))])}finally{t.removeEventListener(`abort`,r)}}async transcribe(e,t,n){return(await(await this.ensure()).transcribe({audio:p(e),model:t,language:f(n)})).text.trim()}dispose(){this.client?.then(e=>e.close()).catch(()=>void 0),this.worker?.terminate(),this.worker=null,this.client=null}},g=class{options;model;progress;transcriber=null;constructor(e,t,n){this.options=e,this.model=t,this.progress=n}ensure(){return this.transcriber??=m(this.options.loadSpeech).then(e=>new e.LocalTranscriber({model:this.model,device:this.options.device??`auto`,dtype:this.options.dtype??`q8`,...this.options.loadModule?{transformers:this.options.loadModule}:{},onProgress:this.progress,configureEnv:a(this.options.allowLocalModels??!1)})),this.transcriber}async isCached(e){return(await this.ensure()).isCached(e)}async preload(e,t){if(t?.aborted)throw d();await(await this.ensure()).preload(e,t).catch(e=>{throw t?.aborted?d():e})}async transcribe(e,t,n){return(await(await this.ensure()).transcribe({audio:p(e),model:t,language:f(n)})).text.trim()}dispose(){this.transcriber?.then(e=>e.dispose()).catch(()=>void 0),this.transcriber=null}},_=class{options;modelId;backend=null;loadPromise=null;listeners=new Set;_state=`idle`;constructor(e={}){this.options=e,this.modelId=c(e.model??e.modelId)}get state(){return this._state}get ready(){return this._state===`ready`}get englishOnly(){return l(this.modelId)}estimateSize(){return Object.values(s).find(e=>e.id===this.modelId)?.bytes??451e5}emit(e){for(let t of this.listeners)t(e)}onEngineProgress=e=>{if(e.status!==`progress_total`||typeof e.loaded!=`number`||typeof e.total!=`number`)return;let t=this.estimateSize(),n=e.total||t,r=e.total>0&&e.loaded>=e.total;this.emit({state:r?`extracting`:`downloading`,bytesLoaded:e.loaded,bytesTotal:n,percent:e.total?Math.round(e.loaded/e.total*100):0,currentFile:e.file})};getBackend(){if(this.backend)return this.backend;let{createWorker:e,loadSpeech:t}=this.options;return this.backend=e?new h(e,t,this.onEngineProgress):new g(this.options,this.modelId,this.onEngineProgress),this.backend}async isCached(){if(this._state===`ready`)return!0;try{return await this.getBackend().isCached(this.modelId)}catch{return!1}}load(e={}){let{onProgress:t,signal:n}=e;if(this._state===`ready`)return Promise.resolve();if(t&&this.listeners.add(t),!this.loadPromise){this._state=`loading`;let e=this.estimateSize();this.emit({state:`downloading`,bytesLoaded:0,bytesTotal:e,percent:0}),this.loadPromise=this.getBackend().preload(this.modelId,n).then(()=>{this._state=`ready`,this.emit({state:`complete`,bytesLoaded:e,bytesTotal:e,percent:100})}).catch(t=>{this._state=`idle`,this.backend?.dispose(),this.backend=null;let n=t instanceof Error?t:Error(String(t));throw n.name!==`AbortError`&&(this._state=`error`,this.emit({state:`error`,bytesLoaded:0,bytesTotal:e,percent:0,error:n.message})),n}).finally(()=>{this.loadPromise=null,this.listeners.clear()})}let r=this.loadPromise;return n?new Promise((e,t)=>{if(n.aborted)return t(d());n.addEventListener(`abort`,()=>t(d()),{once:!0}),r.then(e,t)}):r}transcribe(e,t){return this._state===`ready`?this.getBackend().transcribe(e,this.modelId,t):Promise.reject(Error(`The speech model is not loaded`))}dispose(){this.backend?.dispose(),this.backend=null,this.loadPromise=null,this.listeners.clear(),this._state=`idle`}};function v(e={}){return new _(e)}var y=e({LocalSpeechSTTAdapter:()=>w,WhisperLocalSTTAdapter:()=>w,WhisperWasmSTTAdapter:()=>w}),b={tiny:`onnx-community/whisper-tiny.en`,base:`onnx-community/whisper-base.en`,small:`onnx-community/whisper-small.en`},x=16e3,S=9e4;async function C(e){let t=await e.arrayBuffer(),n=new AudioContext({sampleRate:x});try{return(await n.decodeAudioData(t)).getChannelData(0).slice()}finally{n.close().catch(()=>void 0)}}var w=class{type;stopTimeoutMs=S;options;_model;makeCapture;capture=null;captureOff=null;_isListening=!1;language=`en`;session=0;starting=!1;stopping=null;resultListeners=new Set;errorListeners=new Set;startListeners=new Set;endListeners=new Set;constructor(e={}){this.options={type:`whisper-local`,defaultLanguage:`en`,...e},this.type=this.options.type,this.language=this.options.defaultLanguage??`en`,this.makeCapture=e.capture??t;let n=this.options.model??this.options.modelId??(this.options.modelSize?b[this.options.modelSize]:this.type===`moonshine`?`moonshine-tiny`:void 0);this._model=this.options.modelHandle??v({model:n,device:this.options.device,dtype:this.options.dtype,createWorker:this.options.createWorker,loadSpeech:this.options.loadSpeech,loadModule:this.options.loadModule,allowLocalModels:this.options.allowLocalModels})}get model(){return this._model}get initState(){switch(this._model.state){case`ready`:return`ready`;case`loading`:return`initializing`;case`error`:return`error`;default:return`uninitialized`}}estimateSize(){return this._model.estimateSize()}isCached(){return this._model.isCached()}load(e){return this._model.load(e)}async ensureInitialized(e){await this._model.load({onProgress:e??this.options.onProgress})}async prepare(){if(this._model.state!==`ready`){if(!await this._model.isCached())throw new n(this._model.modelId,this.type);await this.ensureInitialized()}}getCapabilities(){return{continuous:!1,interimResults:!1,languages:this._model.englishOnly?[`en`]:[`en`,`es`,`fr`,`de`,`it`,`pt`,`nl`,`pl`,`ru`,`zh`,`ja`,`ko`],accuracy:`medium`,requiresDownload:!0,downloadSize:this._model.estimateSize()}}async transcribePcm(e,t={}){return await this.prepare(),this._model.transcribe(e,t.language??this.options.defaultLanguage??`en`)}async start(e={}){if(this._isListening||this.starting)return;let t=++this.session;this.starting=!0;try{await this.prepare()}finally{this.starting=!1}if(t!==this.session||this._isListening)return;this.language=e.language??this.options.defaultLanguage??`en`;let n=this.makeCapture({maxDurationMs:this.options.maxDurationMs});try{await n.start()}catch(e){let t=e instanceof Error?e:Error(String(e));throw this.emitError(t),t}if(t!==this.session){n.cancel();return}this.capture=n,this.captureOff=n.onLimit(e=>{e===`time`?this.stop():(this.captureOff?.(),this.finish(t,null,Error(`The recording is too long`)))}),this._isListening=!0;for(let e of this.startListeners)e()}stop(){if(this.stopping)return this.stopping;let e=this.capture;if(this.starting&&this.session++,!e||!this._isListening)return Promise.resolve();let t=this.session;return this.stopping=(async()=>{let n=null,r=null;try{let r=await e.stop();if(t!==this.session)return;let i=await C(r.audio);n=await this._model.transcribe(i,this.language)}catch(e){r=e instanceof Error?e:Error(String(e))}await this.finish(t,n,r)})(),this.stopping}async finish(e,t,n){if(e===this.session){if(this.captureOff?.(),this.captureOff=null,this.capture=null,this._isListening=!1,this.stopping=null,n)this.emitError(n);else if(t){let e={text:t,confidence:1,isFinal:!0,timestamp:Date.now()};for(let t of this.resultListeners)t(e)}for(let e of this.endListeners)e()}}emitError(e){for(let t of this.errorListeners)t(e)}abort(){if(this.starting&&this.session++,this._isListening){this.session++,this.captureOff?.(),this.captureOff=null,this.capture?.cancel(),this.capture=null,this._isListening=!1,this.stopping=null;for(let e of this.endListeners)e()}}isListening(){return this._isListening}onResult(e){return this.resultListeners.add(e),()=>this.resultListeners.delete(e)}onError(e){return this.errorListeners.add(e),()=>this.errorListeners.delete(e)}onStart(e){return this.startListeners.add(e),()=>this.startListeners.delete(e)}onEnd(e){return this.endListeners.add(e),()=>this.endListeners.delete(e)}async dispose(){this.abort(),this.options.modelHandle||this._model.dispose(),this.resultListeners.clear(),this.errorListeners.clear(),this.startListeners.clear(),this.endListeners.clear()}};export{s as n,v as r,y as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$ as e,B as t,Ct as n,Dt as r,E as i,Et as a,Ft as o,G as s,H as c,J as l,Ot as u,Pt as d,U as f,Y as p,a as m,bt as h,ct as g,d as _,ft as v,g as y,ht as b,kt as x,mt as S,n as C,nt as w,o as T,p as E,q as D,st as O,v as k,vt as A}from"./vNEnXNLV.js";import"./xihTtKlq.js";import{a as j,t as M}from"./D0FW0z6R.js";function N(e,t){u(t,!0);let n=M();d();var i=l();O(e=>c(i,e),[()=>n.t(t.key,t.vars)]),f(e,i),r()}var P=j({"ui.currency_display.invalid_code":`Invalid currency code: {code}`,"ui.currency_display.invalid_minor_unit_amount":`Invalid minor-unit amount`,"ui.currency_display.no_minor_unit":`Currency code has no minor unit: {code}`,"ui.data_table.select_all":`Select all rows`,"ui.data_table.select_current_page":`Select all rows on this page`,"ui.data_table.select_row":`Select {row}`,"ui.data_table.deselect_row":`Deselect {row}`,"ui.data_table.row_number":`row {number}`,"ui.data_table.expand":`Expand`,"ui.data_table.expand_row":`Expand {row}`,"ui.data_table.collapse_row":`Collapse {row}`,"ui.data_table.sort_ascending":`Sort {column} ascending`,"ui.data_table.sort_descending":`Sort {column} descending`,"ui.data_table.clear_sort":`Clear sorting for {column}`,"ui.data_table.loading":`Loading table data`,"ui.data_table.refreshing":`Refreshing table data`,"ui.data_table.stale":`Showing stale results`,"ui.data_table.partial_results":`Showing partial results`,"ui.data_table.load_error":`Unable to load table data`,"ui.data_table.retry":`Retry`,"ui.data_table.empty":`No data available`,"ui.data_table.virtual_region":`{caption} rows`,"ui.data_table.default_virtual_region":`Data table rows`,"ui.data_table.pagination":`Table pages`,"ui.data_table.overflow_region":`{caption} table, scroll horizontally to view more columns`,"ui.data_table.default_overflow_region":`Data table, scroll horizontally to view more columns`,"ui.data_table.more_columns":`More columns`,"ui.data_table.resize_column":`Resize {column}`,"ui.data_table.structural_row":`{kind}: {label}`,"ui.data_table.summary":`Summary`,"ui.data_table.subtotal":`Subtotal`,"ui.data_table.aggregate":`Aggregate`,"ui.data_table.footer_row":`Footer`,"ui.data_table.total":`Total`});[`input:not([type="hidden"]):not(:disabled)`,`select:not(:disabled)`,`textarea:not(:disabled)`,`button:not(:disabled)`,`a[href]`,`[tabindex]:not([tabindex="-1"]):not([type="hidden"])`,`[contenteditable="true"]`].join(`,`);function F(e){e.scrollIntoView({block:`center`,inline:`nearest`,behavior:`smooth`})}function I(e,t=1600){e.dataset.smrtHighlighted=`true`,globalThis.setTimeout(()=>{e.isConnected&&delete e.dataset.smrtHighlighted},t)}function L(e){queueMicrotask(()=>{e.isConnected&&(e.dispatchEvent(new Event(`input`,{bubbles:!0})),e.dispatchEvent(new Event(`change`,{bubbles:!0})))})}var R=Symbol(`smrt-control-interaction`);function z(e){x(R,e)}function B(){return a(R)}function V(e,t,n){e&&t&&e.registry.recordUserEdit?.({formId:e.formId,controlId:t,subject:n})}function H(e){let t=B(),n;C(()=>{n?.(),n=void 0}),g(()=>{let r=e();if(!t||r===!1||!r.controlId){n?.(),n=void 0;return}let{controlId:i,subject:a,...o}=r,s=t.registry,c=t.formId,l=a?{type:a.type,id:a.id,label:a.label}:void 0,u=n;n=w(()=>s.register({...o,identity:{formId:c,controlId:i,subject:l}})),u?.()})}function U(e){return typeof e==`string`?[`true`,`1`,`yes`,`on`].includes(e.toLowerCase()):!!e}function W(e){if(typeof e==`boolean`)return e;if(typeof e==`object`&&e)throw Error(`staged_value_invalid`);return e}function G(e){if(e==null)return e;if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return String(e);throw Error(`staged_value_invalid`)}function K(e){if(e===``||e==null)return``;if(typeof e!=`string`&&typeof e!=`number`)throw Error(`staged_value_invalid`);let t=Number(e);return Number.isFinite(t)?t:e}function q(e,t){if(typeof t!=`boolean`)return!1;let n=e.cloneNode();return n.checked=t,n.checkValidity()}function J(e,t){let n=e.cloneNode();return n.value=String(t??``),n.required&&n.value.length===0||n.minLength>=0&&n.value.length<n.minLength||n.maxLength>=0&&n.value.length>n.maxLength?!1:n.checkValidity()}function Y(e,t,n=!1){let r=String(t??``);return e.find(e=>Object.is(e.value,t))??e.find(e=>String(e.value)===r||n&&e.label===r)}function X(e,t,n){return!Array.isArray(e)||!e.every(e=>typeof e==`string`)||t!==void 0&&e.length>t?!1:n||new Set(e).size===e.length}var Z=Symbol(`smrt-form-group`);function Q(e){x(Z,e)}function $(){return a(Z)}var ee=new Set([`$$slots`,`$$events`,`$$legacy`,`checked`,`indeterminate`,`label`,`id`,`name`,`value`,`disabled`,`required`,`class`,`interaction`,`onchange`,`aria-label`,`aria-describedby`,`density`]),te=s(`<span class="smrt-checkbox__dash svelte-w20til" data-smrt-part="indicator"></span>`),ne=s(`<span class="smrt-checkbox__check svelte-w20til" data-smrt-part="indicator">✓</span>`),re=s(`<span class="smrt-checkbox__label svelte-w20til" data-smrt-part="label"> </span>`),ie=s(`<label data-smrt-hit-target="" data-smrt-component="Checkbox"><input/> <span class="smrt-checkbox__box svelte-w20til" data-smrt-part="box" aria-hidden="true"><!></span> <!></label>`);function ae(a,s){let l=D();u(s,!0);let d=m(s,`checked`,15,!1),p=m(s,`indeterminate`,3,!1),x=m(s,`disabled`,3,!1),C=m(s,`required`,3,!1),w=m(s,`class`,3,``),E=T(s,ee),j=$(),M=B(),N=h(null),P=n(()=>s.id??j?.().inputId??`smrt-checkbox-${l}`),R=n(()=>s[`aria-describedby`]??j?.().describedBy),z=n(()=>{let e=j?.().interaction;return s.interaction===!1||e===!1?!1:{...e??{},...s.interaction??{}}}),V=n(()=>e(z)===!1?void 0:e(z).id??s.name??e(P));g(()=>{e(N)&&(e(N).indeterminate=p())});function G(t){d(U(t)),e(N)&&L(e(N))}function K(e){d(e.currentTarget.checked),s.onchange?.(e)}H(()=>{let t=e(N),n=e(z);return!t||n===!1?!1:{controlId:e(V),subject:n.subject,metadata:{kind:`checkbox`,label:j?.().label??s.label??s[`aria-label`]??void 0,description:n.description??j?.().description,sensitivity:n.sensitivity??`public`,readable:n.readable,writable:n.writable,constraints:{required:C()===!0}},getValue:()=>d(),prepareValue:W,setValue:G,clear:()=>(G(!1),!0),focus:()=>t.focus(),reveal:()=>F(t),highlight:e=>I(t.closest(`label`)??t,e),validate:()=>t.reportValidity(),validateValue:e=>q(t,e),getState:()=>({disabled:t.matches(`:disabled`),readonly:!1,valid:t.validity.valid,validationMessage:t.validationMessage||void 0})}});var J=ie();let Y;var X=v(J);y(X,t=>({id:e(P),type:`checkbox`,name:s.name,value:s.value,disabled:x(),required:C(),checked:d(),"aria-label":s[`aria-label`]??(!s.label&&!j?`Checkbox`:void 0),"aria-describedby":e(R),"aria-invalid":t,onchange:K,...E,"data-smrt-part":`input`}),[()=>j?.().invalid?`true`:void 0],void 0,void 0,`svelte-w20til`,!0),_(X,e=>A(N,e),()=>e(N));var Z=b(X,2),Q=v(Z),ae=e=>{var t=te();f(e,t)},oe=e=>{var t=ne();f(e,t)};t(Q,e=>{p()?e(ae):d()&&e(oe,1)}),o(Z);var se=b(Z,2),ce=e=>{var t=re(),n=S(t,!0);O(()=>c(n,s.label)),f(e,t)};t(se,e=>{s.label&&e(ce)}),o(J),O(()=>{k(J,`data-density`,s.density),Y=i(J,1,`smrt-checkbox__root ${w()??``}`,`svelte-w20til`,Y,{"smrt-checkbox__disabled":x()}),k(J,`data-smrt-control`,e(V)),k(J,`data-smrt-form`,M?.formId),k(J,`data-smrt-subject-type`,e(z)===!1?void 0:e(z).subject?.type),k(J,`data-smrt-subject-id`,e(z)===!1?void 0:e(z).subject?.id)}),f(a,J),r()}var oe=new Set([`$$slots`,`$$events`,`$$legacy`,`id`,`type`,`value`,`placeholder`,`disabled`,`readonly`,`required`,`name`,`class`,`interaction`,`aria-label`,`aria-describedby`,`aria-invalid`,`density`]),se=s(`<input/>`);function ce(t,i){u(i,!0);let a=m(i,`type`,3,`text`),o=m(i,`value`,15,``),s=m(i,`disabled`,3,!1),c=m(i,`readonly`,3,!1),l=m(i,`required`,3,!1),d=m(i,`class`,3,``),p=T(i,oe),g=$(),v=B(),b=h(null),x=n(()=>i.id??g?.().inputId),S=n(()=>i[`aria-describedby`]??g?.().describedBy),C=n(()=>i[`aria-invalid`]??(g?.().invalid?`true`:void 0)),w=n(()=>{let e=g?.().interaction;return i.interaction===!1||e===!1?!1:{...e??{},...i.interaction??{}}}),D=n(()=>e(w)===!1?void 0:e(w).id??i.name??e(x));function O(){switch(a()){case`email`:return`email`;case`password`:return`password`;case`number`:return`number`;case`date`:return`date`;case`time`:return`time`;case`datetime-local`:return`datetime`;case`range`:return`slider`;default:return`text`}}function k(t){o(a()===`number`||a()===`range`?t===``||t==null?``:Number(t):String(t??``)),e(b)&&L(e(b))}function j(t){if(!e(b))return!0;if((a()===`number`||a()===`range`)&&t!==``&&t!=null&&!Number.isFinite(typeof t==`number`?t:Number(t)))return{valid:!1,message:`invalid_number`};let n=e(b).cloneNode(),r=String(t??``);try{n.value=r}catch{return{valid:!1,message:`invalid_value`}}return n.value===r?{valid:n.checkValidity(),message:n.validationMessage||void 0}:{valid:!1,message:`invalid_value`}}H(()=>{let t=e(b),n=e(D),r=e(w);return!t||!n||r===!1?!1:{controlId:n,subject:r.subject,metadata:{kind:O(),label:g?.().label??i[`aria-label`]??void 0,description:r.description??g?.().description,sensitivity:r.sensitivity??(a()===`password`?`secret`:`public`),readable:r.readable,writable:r.writable,constraints:{required:l()===!0,min:t.min||void 0,max:t.max||void 0,step:t.step||void 0,minLength:t.minLength>=0?t.minLength:void 0,maxLength:t.maxLength>=0?t.maxLength:void 0,pattern:t.pattern||void 0}},getValue:()=>o(),prepareValue:e=>a()===`number`||a()===`range`?K(e):G(e),setValue:k,clear:()=>(k(``),!0),focus:()=>t.focus(),reveal:()=>F(t),highlight:e=>I(t,e),validate:()=>t.reportValidity(),validateValue:j,getState:()=>({disabled:t.matches(`:disabled`),readonly:t.readOnly,valid:t.validity.valid,validationMessage:t.validationMessage||void 0})}});function M(){e(b)?.focus()}function N(){e(b)&&F(e(b))}function P(t){e(b)&&I(e(b),t)}function R(){return e(b)}var z={focus:M,reveal:N,highlight:P,getElement:R},V=se();return y(V,()=>({id:e(x),type:a(),placeholder:i.placeholder,disabled:s(),readonly:c(),required:l(),name:i.name,"aria-label":i[`aria-label`],"aria-describedby":e(S),"aria-invalid":e(C),"data-density":i.density,class:`smrt-input__root ${d()??``}`,"data-smrt-control":e(D),"data-smrt-form":v?.formId,"data-smrt-subject-type":e(w)===!1?void 0:e(w).subject?.type,"data-smrt-subject-id":e(w)===!1?void 0:e(w).subject?.id,...p,"data-smrt-component":`Input`}),void 0,void 0,void 0,`svelte-yn4wbg`,!0),_(V,e=>A(b,e),()=>e(b)),E(V,o),f(t,V),r(z)}p([`keydown`,`change`]);export{I as _,U as a,N as b,G as c,X as d,H as f,L as g,B as h,$ as i,q as l,z as m,ae as n,Y as o,V as p,Q as r,W as s,ce as t,J as u,F as v,P as y};
|
|
1
|
+
import{$ as e,B as t,Ct as n,Dt as r,E as i,Et as a,Ft as o,G as s,H as c,J as l,Ot as u,Pt as d,U as f,Y as p,a as m,bt as h,ct as g,d as _,ft as v,g as y,ht as b,kt as x,mt as S,n as C,nt as w,o as T,p as E,q as D,st as O,v as k,vt as A}from"./vNEnXNLV.js";import"./xihTtKlq.js";import{a as j,t as M}from"./D0FW0z6R.js";function N(e,t){u(t,!0);let n=M();d();var i=l();O(e=>c(i,e),[()=>n.t(t.key,t.vars)]),f(e,i),r()}var P=j({"ui.currency_display.invalid_code":`Invalid currency code: {code}`,"ui.currency_display.invalid_minor_unit_amount":`Invalid minor-unit amount`,"ui.currency_display.no_minor_unit":`Currency code has no minor unit: {code}`,"ui.data_table.select_all":`Select all rows`,"ui.data_table.select_current_page":`Select all rows on this page`,"ui.data_table.select_row":`Select {row}`,"ui.data_table.deselect_row":`Deselect {row}`,"ui.data_table.row_number":`row {number}`,"ui.data_table.expand":`Expand`,"ui.data_table.expand_row":`Expand {row}`,"ui.data_table.collapse_row":`Collapse {row}`,"ui.data_table.sort_ascending":`Sort {column} ascending`,"ui.data_table.sort_descending":`Sort {column} descending`,"ui.data_table.clear_sort":`Clear sorting for {column}`,"ui.data_table.loading":`Loading table data`,"ui.data_table.refreshing":`Refreshing table data`,"ui.data_table.stale":`Showing stale results`,"ui.data_table.partial_results":`Showing partial results`,"ui.data_table.load_error":`Unable to load table data`,"ui.data_table.retry":`Retry`,"ui.data_table.empty":`No data available`,"ui.data_table.virtual_region":`{caption} rows`,"ui.data_table.default_virtual_region":`Data table rows`,"ui.data_table.pagination":`Table pages`,"ui.data_table.overflow_region":`{caption} table, scroll horizontally to view more columns`,"ui.data_table.default_overflow_region":`Data table, scroll horizontally to view more columns`,"ui.data_table.more_columns":`More columns`,"ui.data_table.resize_column":`Resize {column}`,"ui.data_table.structural_row":`{kind}: {label}`,"ui.data_table.summary":`Summary`,"ui.data_table.subtotal":`Subtotal`,"ui.data_table.aggregate":`Aggregate`,"ui.data_table.footer_row":`Footer`,"ui.data_table.total":`Total`});[`input:not([type="hidden"]):not(:disabled)`,`select:not(:disabled)`,`textarea:not(:disabled)`,`button:not(:disabled)`,`a[href]`,`[tabindex]:not([tabindex="-1"]):not([type="hidden"])`,`[contenteditable="true"]`].join(`,`);function F(e){e.scrollIntoView({block:`center`,inline:`nearest`,behavior:`smooth`})}function I(e,t=1600){e.dataset.smrtHighlighted=`true`,globalThis.setTimeout(()=>{e.isConnected&&delete e.dataset.smrtHighlighted},t)}function L(e){queueMicrotask(()=>{e.isConnected&&(e.dispatchEvent(new Event(`input`,{bubbles:!0})),e.dispatchEvent(new Event(`change`,{bubbles:!0})))})}var R=Symbol(`smrt-control-interaction`);function z(e){x(R,e)}function B(){return a(R)}function V(e,t,n){e&&t&&e.registry.recordUserEdit?.({formId:e.formId,controlId:t,subject:n})}function H(e){let t=B(),n;C(()=>{n?.(),n=void 0}),g(()=>{let r=e();if(!t||r===!1||!r.controlId){n?.(),n=void 0;return}let{controlId:i,subject:a,...o}=r,s=t.registry,c=t.formId,l=a?{type:a.type,id:a.id,label:a.label}:void 0,u=n;n=w(()=>s.register({...o,identity:{formId:c,controlId:i,subject:l}})),u?.()})}function U(e){return typeof e==`string`?[`true`,`1`,`yes`,`on`].includes(e.toLowerCase()):!!e}function W(e){if(typeof e==`boolean`)return e;if(typeof e==`object`&&e)throw Error(`staged_value_invalid`);return e}function G(e){if(e==null)return e;if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return String(e);throw Error(`staged_value_invalid`)}function K(e){if(e===``||e==null)return``;if(typeof e!=`string`&&typeof e!=`number`)throw Error(`staged_value_invalid`);let t=Number(e);return Number.isFinite(t)?t:e}function q(e,t){if(typeof t!=`boolean`)return!1;let n=e.cloneNode();return n.checked=t,n.checkValidity()}function J(e,t){let n=e.cloneNode();return n.value=String(t??``),n.required&&n.value.length===0||n.minLength>=0&&n.value.length<n.minLength||n.maxLength>=0&&n.value.length>n.maxLength?!1:n.checkValidity()}function Y(e,t,n=!1){let r=String(t??``);return e.find(e=>Object.is(e.value,t))??e.find(e=>String(e.value)===r||n&&e.label===r)}function X(e,t,n){return!Array.isArray(e)||!e.every(e=>typeof e==`string`)||t!==void 0&&e.length>t?!1:n||new Set(e).size===e.length}var Z=Symbol(`smrt-form-group`);function Q(e){x(Z,e)}function $(){return a(Z)}var ee=new Set([`$$slots`,`$$events`,`$$legacy`,`checked`,`indeterminate`,`label`,`id`,`name`,`value`,`disabled`,`required`,`class`,`interaction`,`onchange`,`aria-label`,`aria-describedby`,`density`]),te=s(`<span class="smrt-checkbox__dash svelte-2qwsxn" data-smrt-part="indicator"></span>`),ne=s(`<span class="smrt-checkbox__check svelte-2qwsxn" data-smrt-part="indicator">✓</span>`),re=s(`<span class="smrt-checkbox__label svelte-2qwsxn" data-smrt-part="label"> </span>`),ie=s(`<label data-smrt-hit-target="" data-smrt-component="Checkbox"><input/> <span class="smrt-checkbox__box svelte-2qwsxn" data-smrt-part="box" aria-hidden="true"><!></span> <!></label>`);function ae(a,s){let l=D();u(s,!0);let d=m(s,`checked`,15,!1),p=m(s,`indeterminate`,3,!1),x=m(s,`disabled`,3,!1),C=m(s,`required`,3,!1),w=m(s,`class`,3,``),E=T(s,ee),j=$(),M=B(),N=h(null),P=n(()=>s.id??j?.().inputId??`smrt-checkbox-${l}`),R=n(()=>s[`aria-describedby`]??j?.().describedBy),z=n(()=>{let e=j?.().interaction;return s.interaction===!1||e===!1?!1:{...e??{},...s.interaction??{}}}),V=n(()=>e(z)===!1?void 0:e(z).id??s.name??e(P));g(()=>{e(N)&&(e(N).indeterminate=p())});function G(t){d(U(t)),e(N)&&L(e(N))}function K(e){d(e.currentTarget.checked),s.onchange?.(e)}H(()=>{let t=e(N),n=e(z);return!t||n===!1?!1:{controlId:e(V),subject:n.subject,metadata:{kind:`checkbox`,label:j?.().label??s.label??s[`aria-label`]??void 0,description:n.description??j?.().description,sensitivity:n.sensitivity??`public`,readable:n.readable,writable:n.writable,constraints:{required:C()===!0}},getValue:()=>d(),prepareValue:W,setValue:G,clear:()=>(G(!1),!0),focus:()=>t.focus(),reveal:()=>F(t),highlight:e=>I(t.closest(`label`)??t,e),validate:()=>t.reportValidity(),validateValue:e=>q(t,e),getState:()=>({disabled:t.matches(`:disabled`),readonly:!1,valid:t.validity.valid,validationMessage:t.validationMessage||void 0})}});var J=ie();let Y;var X=v(J);y(X,t=>({id:e(P),type:`checkbox`,name:s.name,value:s.value,disabled:x(),required:C(),checked:d(),"aria-label":s[`aria-label`]??(!s.label&&!j?`Checkbox`:void 0),"aria-describedby":e(R),"aria-invalid":t,onchange:K,...E,"data-smrt-part":`input`}),[()=>j?.().invalid?`true`:void 0],void 0,void 0,`svelte-2qwsxn`,!0),_(X,e=>A(N,e),()=>e(N));var Z=b(X,2),Q=v(Z),ae=e=>{var t=te();f(e,t)},oe=e=>{var t=ne();f(e,t)};t(Q,e=>{p()?e(ae):d()&&e(oe,1)}),o(Z);var se=b(Z,2),ce=e=>{var t=re(),n=S(t,!0);O(()=>c(n,s.label)),f(e,t)};t(se,e=>{s.label&&e(ce)}),o(J),O(()=>{k(J,`data-density`,s.density),Y=i(J,1,`smrt-checkbox__root ${w()??``}`,`svelte-2qwsxn`,Y,{"smrt-checkbox__disabled":x()}),k(J,`data-smrt-control`,e(V)),k(J,`data-smrt-form`,M?.formId),k(J,`data-smrt-subject-type`,e(z)===!1?void 0:e(z).subject?.type),k(J,`data-smrt-subject-id`,e(z)===!1?void 0:e(z).subject?.id)}),f(a,J),r()}var oe=new Set([`$$slots`,`$$events`,`$$legacy`,`id`,`type`,`value`,`placeholder`,`disabled`,`readonly`,`required`,`name`,`class`,`interaction`,`aria-label`,`aria-describedby`,`aria-invalid`,`density`]),se=s(`<input/>`);function ce(t,i){u(i,!0);let a=m(i,`type`,3,`text`),o=m(i,`value`,15,``),s=m(i,`disabled`,3,!1),c=m(i,`readonly`,3,!1),l=m(i,`required`,3,!1),d=m(i,`class`,3,``),p=T(i,oe),g=$(),v=B(),b=h(null),x=n(()=>i.id??g?.().inputId),S=n(()=>i[`aria-describedby`]??g?.().describedBy),C=n(()=>i[`aria-invalid`]??(g?.().invalid?`true`:void 0)),w=n(()=>{let e=g?.().interaction;return i.interaction===!1||e===!1?!1:{...e??{},...i.interaction??{}}}),D=n(()=>e(w)===!1?void 0:e(w).id??i.name??e(x));function O(){switch(a()){case`email`:return`email`;case`password`:return`password`;case`number`:return`number`;case`date`:return`date`;case`time`:return`time`;case`datetime-local`:return`datetime`;case`range`:return`slider`;default:return`text`}}function k(t){o(a()===`number`||a()===`range`?t===``||t==null?``:Number(t):String(t??``)),e(b)&&L(e(b))}function j(t){if(!e(b))return!0;if((a()===`number`||a()===`range`)&&t!==``&&t!=null&&!Number.isFinite(typeof t==`number`?t:Number(t)))return{valid:!1,message:`invalid_number`};let n=e(b).cloneNode(),r=String(t??``);try{n.value=r}catch{return{valid:!1,message:`invalid_value`}}return n.value===r?{valid:n.checkValidity(),message:n.validationMessage||void 0}:{valid:!1,message:`invalid_value`}}H(()=>{let t=e(b),n=e(D),r=e(w);return!t||!n||r===!1?!1:{controlId:n,subject:r.subject,metadata:{kind:O(),label:g?.().label??i[`aria-label`]??void 0,description:r.description??g?.().description,sensitivity:r.sensitivity??(a()===`password`?`secret`:`public`),readable:r.readable,writable:r.writable,constraints:{required:l()===!0,min:t.min||void 0,max:t.max||void 0,step:t.step||void 0,minLength:t.minLength>=0?t.minLength:void 0,maxLength:t.maxLength>=0?t.maxLength:void 0,pattern:t.pattern||void 0}},getValue:()=>o(),prepareValue:e=>a()===`number`||a()===`range`?K(e):G(e),setValue:k,clear:()=>(k(``),!0),focus:()=>t.focus(),reveal:()=>F(t),highlight:e=>I(t,e),validate:()=>t.reportValidity(),validateValue:j,getState:()=>({disabled:t.matches(`:disabled`),readonly:t.readOnly,valid:t.validity.valid,validationMessage:t.validationMessage||void 0})}});function M(){e(b)?.focus()}function N(){e(b)&&F(e(b))}function P(t){e(b)&&I(e(b),t)}function R(){return e(b)}var z={focus:M,reveal:N,highlight:P,getElement:R},V=se();return y(V,()=>({id:e(x),type:a(),placeholder:i.placeholder,disabled:s(),readonly:c(),required:l(),name:i.name,"aria-label":i[`aria-label`],"aria-describedby":e(S),"aria-invalid":e(C),"data-density":i.density,class:`smrt-input__root ${d()??``}`,"data-smrt-control":e(D),"data-smrt-form":v?.formId,"data-smrt-subject-type":e(w)===!1?void 0:e(w).subject?.type,"data-smrt-subject-id":e(w)===!1?void 0:e(w).subject?.id,...p,"data-smrt-component":`Input`}),void 0,void 0,void 0,`svelte-14lf8ya`,!0),_(V,e=>A(b,e),()=>e(b)),E(V,o),f(t,V),r(z)}p([`keydown`,`change`]);export{I as _,U as a,N as b,G as c,X as d,H as f,L as g,B as h,$ as i,q as l,z as m,ae as n,Y as o,V as p,Q as r,W as s,ce as t,J as u,F as v,P as y};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{x as e}from"./CfOMUCNN.js";var t={cookbooks:[{id:`bakery`,name:`Bakery`,icon:`bread`,summary:`Retail and cafe wholesale orders, ingredient stock, batches and suppliers.`,keywords:[`bake`,`baker`,`bakery`,`baking`,`bread`,`pastry`,`cake`,`cookies`,`cafe wholesale`,`coffee shop`,`patisserie`,`sourdough`],settings:{currency:`USD`,paymentTerms:`Net 15`,taxRate:0},document:{$schema:`https://s-m-r-t.dev/schemas/cookbook/v1.json`,version:1,theme:{custom:{primary:`#b45309`,fontFamily:`Georgia`}},recipes:[`commerce.customers`,`commerce.invoicing`,`commerce.purchases`,`commerce.sales`,`commerce.vendors`,`commerce.wholesale`,`inventory.stock`,`ledgers.bookkeeping`,`products.ingredients`,`products.simple`],features:[`@happyvertical/smrt-commerce:ProductionOrder`],policies:[{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`paymentTerms`,scopeType:`app`,defaultValue:`"Net 15"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`currency`,scopeType:`app`,defaultValue:`"USD"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 15"`},{objectRef:`@happyvertical/smrt-commerce:Order`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 15"`},{objectRef:`@happyvertical/smrt-commerce:ProductionOrder`,fieldName:`channelId`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:ProductionOrder`,fieldName:`expiryDate`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:ProductionOrder`,fieldName:`vendorId`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:WholesaleOrder`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 15"`}],layout:{version:1,sectionOrder:[`custom:shop`,`custom:wholesale`,`custom:kitchen`,`custom:buying`,`section:accounting`],itemOrder:{"custom:shop":[`item:commerce:Order`,`item:commerce:Customer`],"custom:wholesale":[`item:commerce:WholesaleOrder`,`item:commerce:Invoice`,`item:commerce:Payment`],"custom:kitchen":[`item:products:Product`,`item:products:Product:ingredients`,`item:inventory:StockLevel`,`item:commerce:ProductionOrder`],"custom:buying":[`item:commerce:Vendor`,`item:commerce:PurchaseOrder`]},hidden:[`item:inventory:InventoryLocation`,`item:inventory:StockMovement`],moved:{"item:commerce:Order":`custom:shop`,"item:commerce:Customer":`custom:shop`,"item:commerce:WholesaleOrder":`custom:wholesale`,"item:commerce:Invoice":`custom:wholesale`,"item:commerce:Payment":`custom:wholesale`,"item:products:Product":`custom:kitchen`,"item:inventory:StockLevel":`custom:kitchen`,"item:commerce:ProductionOrder":`custom:kitchen`,"item:commerce:Vendor":`custom:buying`,"item:commerce:PurchaseOrder":`custom:buying`,"item:products:Product:ingredients":`custom:kitchen`},customSections:[{id:`custom:shop`,label:`Shop`},{id:`custom:wholesale`,label:`Wholesale`},{id:`custom:kitchen`,label:`Kitchen`},{id:`custom:buying`,label:`Buying`}],items:{"item:commerce:Order":{label:`Orders`,description:`Orders from your shop and website customers.`},"item:commerce:WholesaleOrder":{label:`Cafe orders`,description:`Standing and one-off orders from cafes and shops.`},"item:inventory:StockLevel":{label:`Stock`,description:`Baked goods and supplies on hand today.`},"item:commerce:ProductionOrder":{label:`Batches`,description:`What you plan to bake, with the amounts and the day.`},"item:commerce:Vendor":{label:`Suppliers`,description:`The mills, dairies and suppliers you buy from.`},"item:products:Product:ingredients":{label:`Ingredients`,description:`Flour, butter, sugar and the rest, with costs and units.`}},sections:{"custom:shop":{icon:`shoppingBag`},"custom:wholesale":{icon:`briefcase`},"custom:kitchen":{icon:`package`},"custom:buying":{icon:`truck`}}}},sectionDescriptions:{"custom:shop":`Sell to customers and keep their details.`,"custom:wholesale":`Orders, invoices and payments from trade customers.`,"custom:kitchen":`Products, ingredients, stock and what you are making.`,"custom:buying":`Suppliers and what you order from them.`}},{id:`mechanic`,name:`Mechanic`,icon:`car`,summary:`Quotes, work orders, parts, appointments and billing for a repair shop.`,keywords:[`mechanic`,`garage`,`auto repair`,`car repair`,`fix cars`,`car`,`vehicle`,`brakes`,`oil change`,`tyres`,`tires`,`servicing`,`repair shop`],settings:{currency:`USD`,paymentTerms:`Due on receipt`,taxRate:.0825,taxRounding:`document`},document:{$schema:`https://s-m-r-t.dev/schemas/cookbook/v1.json`,version:1,theme:{preset:`smrt`},recipes:[`commerce.customers`,`commerce.estimates`,`commerce.invoicing`,`commerce.purchases`,`commerce.sales`,`commerce.vendors`,`events.calendar`,`inventory.stock`,`ledgers.bookkeeping`,`products.simple`],features:[],policies:[{objectRef:`@happyvertical/smrt-commerce:Contract`,fieldName:`taxRoundingScope`,scopeType:`app`,defaultValue:`"document"`},{objectRef:`@happyvertical/smrt-commerce:ContractLineItem`,fieldName:`taxRate`,scopeType:`app`,defaultValue:`0.0825`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`creditLimit`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`customerType`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`paymentTerms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:Estimate`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`currency`,scopeType:`app`,defaultValue:`"USD"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`taxRoundingScope`,scopeType:`app`,defaultValue:`"document"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:InvoiceLineItem`,fieldName:`taxRate`,scopeType:`app`,defaultValue:`0.0825`},{objectRef:`@happyvertical/smrt-commerce:Order`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`}],layout:{version:1,sectionOrder:[`custom:jobs`,`custom:parts`,`custom:billing`,`custom:schedule`,`section:accounting`],itemOrder:{"custom:jobs":[`item:commerce:Estimate`,`item:commerce:Order`,`item:commerce:Customer`],"custom:parts":[`item:products:Product`,`item:inventory:StockLevel`,`item:commerce:Vendor`,`item:commerce:PurchaseOrder`],"custom:billing":[`item:commerce:Invoice`,`item:commerce:Payment`],"custom:schedule":[`item:events:Event`,`item:events:EventType`]},hidden:[`item:events:EventSeries`,`item:inventory:InventoryLocation`,`item:inventory:StockMovement`],moved:{"item:commerce:Estimate":`custom:jobs`,"item:commerce:Order":`custom:jobs`,"item:commerce:Customer":`custom:jobs`,"item:products:Product":`custom:parts`,"item:inventory:StockLevel":`custom:parts`,"item:commerce:Vendor":`custom:parts`,"item:commerce:PurchaseOrder":`custom:parts`,"item:commerce:Invoice":`custom:billing`,"item:commerce:Payment":`custom:billing`,"item:events:Event":`custom:schedule`,"item:events:EventType":`custom:schedule`},customSections:[{id:`custom:jobs`,label:`Jobs`},{id:`custom:parts`,label:`Parts`},{id:`custom:billing`,label:`Billing`},{id:`custom:schedule`,label:`Schedule`}],items:{"item:commerce:Estimate":{label:`Quotes`,description:`Quotes for repairs, ready to become work orders once approved.`},"item:commerce:Order":{label:`Work orders`,description:`Every job in the shop, from drop-off to pick-up.`},"item:products:Product":{label:`Parts`,description:`The parts you sell and fit, with prices.`},"item:inventory:StockLevel":{label:`Parts on hand`,description:`Parts on the shelf, so you know what to reorder.`},"item:commerce:Vendor":{label:`Suppliers`,description:`The parts suppliers you buy from, with terms and contacts.`},"item:commerce:PurchaseOrder":{label:`Parts orders`,description:`Parts you have ordered and when they arrive.`},"item:events:Event":{label:`Appointments`,description:`Bookings on the shop calendar, by day and bay.`},"item:events:EventType":{label:`Appointment types`,description:`The kinds of service you book, like an oil change or inspection.`}},sections:{"custom:jobs":{icon:`wrench`},"custom:parts":{icon:`package`},"custom:billing":{icon:`receipt`},"custom:schedule":{icon:`calendar`}}}},sectionDescriptions:{"custom:jobs":`Work orders and the customers they belong to.`,"custom:parts":`Parts, materials and the stock on your shelves.`,"custom:billing":`Invoices and the payments against them.`,"custom:schedule":`Appointments and what is on the calendar.`}},{id:`welder`,name:`Welder`,icon:`flame`,summary:`Quotes, jobs, agreements, material and site visits for a welding business.`,keywords:[`weld`,`welder`,`welding`,`fabrication`,`fabricate`,`metal`,`steel`,`gates`,`railings`,`metalwork`,`boilermaker`],settings:{currency:`USD`,paymentTerms:`50% deposit, balance on completion`},document:{$schema:`https://s-m-r-t.dev/schemas/cookbook/v1.json`,version:1,theme:{preset:`studio`},recipes:[`commerce.agreements`,`commerce.customers`,`commerce.estimates`,`commerce.invoicing`,`commerce.purchases`,`commerce.sales`,`commerce.vendors`,`events.calendar`,`inventory.stock`,`ledgers.bookkeeping`,`products.simple`],features:[],policies:[{objectRef:`@happyvertical/smrt-commerce:Agreement`,fieldName:`terms`,scopeType:`app`,defaultValue:`"50% deposit, balance on completion"`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`paymentTerms`,scopeType:`app`,defaultValue:`"50% deposit, balance on completion"`},{objectRef:`@happyvertical/smrt-commerce:Estimate`,fieldName:`terms`,scopeType:`app`,defaultValue:`"50% deposit, balance on completion"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`currency`,scopeType:`app`,defaultValue:`"USD"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`terms`,scopeType:`app`,defaultValue:`"50% deposit, balance on completion"`},{objectRef:`@happyvertical/smrt-commerce:Order`,fieldName:`terms`,scopeType:`app`,defaultValue:`"50% deposit, balance on completion"`}],layout:{version:1,sectionOrder:[`custom:jobs`,`custom:material`,`custom:billing`,`custom:schedule`,`section:accounting`],itemOrder:{"custom:jobs":[`item:commerce:Order`,`item:commerce:Customer`,`item:commerce:Estimate`,`item:commerce:Agreement`],"custom:material":[`item:products:Product`,`item:inventory:StockLevel`,`item:commerce:Vendor`,`item:commerce:PurchaseOrder`],"custom:billing":[`item:commerce:Invoice`,`item:commerce:Payment`],"custom:schedule":[`item:events:Event`,`item:events:EventType`]},hidden:[`item:commerce:Contract`,`item:events:EventSeries`,`item:inventory:InventoryLocation`,`item:inventory:StockMovement`],moved:{"item:commerce:Customer":`custom:jobs`,"item:commerce:Estimate":`custom:jobs`,"item:commerce:Agreement":`custom:jobs`,"item:products:Product":`custom:material`,"item:inventory:StockLevel":`custom:material`,"item:commerce:Vendor":`custom:material`,"item:commerce:PurchaseOrder":`custom:material`,"item:commerce:Invoice":`custom:billing`,"item:commerce:Payment":`custom:billing`,"item:events:Event":`custom:schedule`,"item:events:EventType":`custom:schedule`,"item:commerce:Order":`custom:jobs`},customSections:[{id:`custom:jobs`,label:`Jobs`},{id:`custom:material`,label:`Material`},{id:`custom:billing`,label:`Billing`},{id:`custom:schedule`,label:`Schedule`}],items:{"item:commerce:Estimate":{label:`Quotes`,description:`Quotes for jobs, ready to turn into orders when accepted.`},"item:products:Product":{label:`Materials`,description:`Steel, rod, gas and other materials you stock and charge for.`},"item:inventory:StockLevel":{label:`Material on hand`,description:`Material on hand, so you know what to buy before the next job.`},"item:commerce:Vendor":{label:`Suppliers`,description:`The suppliers you buy metal and gas from.`},"item:commerce:PurchaseOrder":{label:`Material orders`,description:`Material you have ordered and when it lands.`},"item:events:Event":{label:`Site visits`,description:`Visits to measure, quote or install on site, by day.`},"item:events:EventType":{label:`Visit types`,description:`The kinds of visit you make, like a quote visit or install.`},"item:commerce:Order":{label:`Jobs`,description:`Every job you have won, from start to final invoice.`}},sections:{"custom:jobs":{icon:`wrench`},"custom:material":{icon:`layers`},"custom:billing":{icon:`receipt`},"custom:schedule":{icon:`calendar`}}}},sectionDescriptions:{"custom:jobs":`Work orders and the customers they belong to.`,"custom:material":`Material, stock and what you have ordered.`,"custom:billing":`Invoices and the payments against them.`,"custom:schedule":`Appointments and what is on the calendar.`}},{id:`yoga-studio`,name:`Yoga studio`,icon:`yoga`,summary:`Classes, class series, members, memberships and a small retail shop.`,keywords:[`yoga`,`yoga studio`,`pilates`,`studio`,`classes`,`class series`,`meditation`,`members`,`memberships`,`instructor`],settings:{currency:`USD`,paymentTerms:`Due on receipt`},document:{$schema:`https://s-m-r-t.dev/schemas/cookbook/v1.json`,version:1,theme:{custom:{primary:`#0f766e`,fontFamily:`ui-rounded`}},recipes:[`commerce.agreements`,`commerce.customers`,`commerce.invoicing`,`events.calendar`,`inventory.stock`,`ledgers.bookkeeping`,`products.simple`],features:[],policies:[{objectRef:`@happyvertical/smrt-commerce:Agreement`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`creditLimit`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`customerType`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`paymentTerms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`taxExempt`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`currency`,scopeType:`app`,defaultValue:`"USD"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`taxId`,scopeType:`app`,visibility:`hidden`}],layout:{version:1,sectionOrder:[`custom:classes`,`custom:members`,`custom:shop`,`custom:billing`,`section:accounting`],itemOrder:{"custom:classes":[`item:events:Event`,`item:events:EventSeries`,`item:events:EventType`],"custom:members":[`item:commerce:Customer`,`item:commerce:Agreement`],"custom:shop":[`item:products:Product`,`item:inventory:StockLevel`],"custom:billing":[`item:commerce:Invoice`,`item:commerce:Payment`]},hidden:[`item:commerce:Contract`,`item:inventory:InventoryLocation`,`item:inventory:StockMovement`],moved:{"item:events:Event":`custom:classes`,"item:events:EventSeries":`custom:classes`,"item:events:EventType":`custom:classes`,"item:commerce:Customer":`custom:members`,"item:commerce:Agreement":`custom:members`,"item:products:Product":`custom:shop`,"item:inventory:StockLevel":`custom:shop`,"item:commerce:Invoice":`custom:billing`,"item:commerce:Payment":`custom:billing`},customSections:[{id:`custom:classes`,label:`Classes`},{id:`custom:members`,label:`Members`},{id:`custom:shop`,label:`Shop`},{id:`custom:billing`,label:`Billing`}],items:{"item:events:Event":{label:`Classes`,description:`Every class on your timetable, with who's teaching and where.`},"item:events:EventSeries":{label:`Class series`,description:`Weekly classes that repeat, so you set them up once.`},"item:events:EventType":{label:`Class types`,description:`Your styles, like Vinyasa or Yin, with length and price.`},"item:commerce:Customer":{label:`Members`,description:`Your students, with how to reach them and what they have booked.`},"item:commerce:Agreement":{label:`Memberships`,description:`Memberships and class packs, with who holds them and when they renew.`},"item:inventory:StockLevel":{label:`Stock`,description:`Mats, props and retail items on hand.`}},sections:{"custom:classes":{icon:`school`},"custom:members":{icon:`users`},"custom:shop":{icon:`shoppingBag`},"custom:billing":{icon:`receipt`}}}},sectionDescriptions:{"custom:classes":`Classes, sessions and bookings.`,"custom:members":`Members and their memberships.`,"custom:shop":`Sell to customers and keep their details.`,"custom:billing":`Invoices and the payments against them.`}},{id:`landscaping`,name:`Landscaping`,icon:`leaf`,summary:`Quotes, jobs, maintenance contracts, materials and the crew schedule for a lawn and landscape business.`,keywords:[`landscaping`,`landscaper`,`lawn care`,`lawn`,`mowing`,`garden`,`gardener`,`yard work`,`hardscape`,`irrigation`,`tree service`,`snow removal`,`grounds`],settings:{currency:`USD`,paymentTerms:`Net 15`,taxRate:.06},sectionDescriptions:{"custom:jobs":`Work orders and the customers they belong to.`,"custom:schedule":`Appointments and what is on the calendar.`,"custom:yard":`Materials, stock and the suppliers you buy from.`,"custom:billing":`Invoices and the payments against them.`},document:{$schema:`https://s-m-r-t.dev/schemas/cookbook/v1.json`,version:1,theme:{custom:{primary:`#15803d`}},recipes:[`commerce.agreements`,`commerce.customers`,`commerce.estimates`,`commerce.invoicing`,`commerce.purchases`,`commerce.sales`,`commerce.vendors`,`events.calendar`,`inventory.stock`,`ledgers.bookkeeping`,`products.simple`],features:[],policies:[{objectRef:`@happyvertical/smrt-commerce:Agreement`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 15"`},{objectRef:`@happyvertical/smrt-commerce:ContractLineItem`,fieldName:`taxRate`,scopeType:`app`,defaultValue:`0.06`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`paymentTerms`,scopeType:`app`,defaultValue:`"Net 15"`},{objectRef:`@happyvertical/smrt-commerce:Estimate`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 15"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`currency`,scopeType:`app`,defaultValue:`"USD"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 15"`},{objectRef:`@happyvertical/smrt-commerce:InvoiceLineItem`,fieldName:`taxRate`,scopeType:`app`,defaultValue:`0.06`},{objectRef:`@happyvertical/smrt-commerce:Lease`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 15"`},{objectRef:`@happyvertical/smrt-commerce:Order`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 15"`},{objectRef:`@happyvertical/smrt-commerce:WholesaleOrder`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 15"`}],layout:{version:1,sectionOrder:[`custom:jobs`,`custom:schedule`,`custom:yard`,`custom:billing`,`section:accounting`],itemOrder:{"custom:jobs":[`item:commerce:Estimate`,`item:commerce:Order`,`item:commerce:Customer`,`item:commerce:Agreement`],"custom:schedule":[`item:events:Event`,`item:events:EventSeries`,`item:events:EventType`],"custom:yard":[`item:products:Product`,`item:inventory:StockLevel`,`item:commerce:Vendor`,`item:commerce:PurchaseOrder`],"custom:billing":[`item:commerce:Invoice`,`item:commerce:Payment`]},hidden:[`item:commerce:Contract`,`item:inventory:InventoryLocation`,`item:inventory:StockMovement`],moved:{"item:commerce:Estimate":`custom:jobs`,"item:commerce:Order":`custom:jobs`,"item:commerce:Customer":`custom:jobs`,"item:commerce:Agreement":`custom:jobs`,"item:events:Event":`custom:schedule`,"item:events:EventSeries":`custom:schedule`,"item:events:EventType":`custom:schedule`,"item:products:Product":`custom:yard`,"item:inventory:StockLevel":`custom:yard`,"item:commerce:Vendor":`custom:yard`,"item:commerce:PurchaseOrder":`custom:yard`,"item:commerce:Invoice":`custom:billing`,"item:commerce:Payment":`custom:billing`},customSections:[{id:`custom:jobs`,label:`Jobs`},{id:`custom:schedule`,label:`Schedule`},{id:`custom:yard`,label:`Yard`},{id:`custom:billing`,label:`Billing`}],items:{"item:commerce:Estimate":{label:`Quotes`,description:`Quotes for new work, ready to become jobs once approved.`},"item:commerce:Order":{label:`Jobs`,description:`Every job you have won, from the first visit to the final invoice.`},"item:commerce:Agreement":{label:`Maintenance contracts`,description:`Weekly mowing and seasonal programs, with who holds them and when they renew.`},"item:events:Event":{label:`Crew schedule`,description:`Visits on the calendar, by day and crew.`},"item:events:EventSeries":{label:`Recurring visits`,description:`Routes that repeat, like a Tuesday mowing round, set up once.`},"item:events:EventType":{label:`Visit types`,description:`The kinds of visit you make, like a mow, a clean-up or an install.`},"item:products:Product":{label:`Materials`,description:`Mulch, soil, sod, plants and the other things you sell and install.`},"item:inventory:StockLevel":{label:`Materials on hand`,description:`What is in the yard and on the trucks.`},"item:commerce:Vendor":{label:`Suppliers`,description:`The nurseries and stone yards you buy from.`},"item:commerce:PurchaseOrder":{label:`Material orders`,description:`Material you have ordered and when it lands.`}},sections:{"custom:jobs":{icon:`wrench`},"custom:schedule":{icon:`calendar`},"custom:yard":{icon:`package`},"custom:billing":{icon:`receipt`}}}}},{id:`salon`,name:`Hair salon`,icon:`scissors`,summary:`Appointments, clients, services, retail stock and payments at the desk for a salon or barbershop.`,keywords:[`salon`,`hair salon`,`barber`,`barbershop`,`hairdresser`,`stylist`,`haircut`,`hair colour`,`hair color`,`highlights`,`blow-dry`,`nails`,`beauty`,`spa`],settings:{currency:`USD`,paymentTerms:`Due on receipt`,taxRate:.07,pricesIncludeTax:!0},sectionDescriptions:{"custom:appointments":`Bookings and the services behind them.`,"custom:clients":`Clients and what they usually have.`,"custom:checkout":`Sales at the desk and the payments against them.`,"custom:shelf":`Retail, backbar stock and who you buy from.`},document:{$schema:`https://s-m-r-t.dev/schemas/cookbook/v1.json`,version:1,theme:{custom:{primary:`#9d174d`}},recipes:[`commerce.customers`,`commerce.invoicing`,`commerce.purchases`,`commerce.sales`,`commerce.vendors`,`events.calendar`,`inventory.stock`,`ledgers.bookkeeping`,`products.simple`],features:[],policies:[{objectRef:`@happyvertical/smrt-commerce:Agreement`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:Contract`,fieldName:`lineAmountType`,scopeType:`app`,defaultValue:`"inclusive"`},{objectRef:`@happyvertical/smrt-commerce:ContractLineItem`,fieldName:`taxRate`,scopeType:`app`,defaultValue:`0.07`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`creditLimit`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`customerType`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`paymentTerms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`taxExempt`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`taxId`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:Estimate`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`currency`,scopeType:`app`,defaultValue:`"USD"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`lineAmountType`,scopeType:`app`,defaultValue:`"inclusive"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:InvoiceLineItem`,fieldName:`taxRate`,scopeType:`app`,defaultValue:`0.07`},{objectRef:`@happyvertical/smrt-commerce:Lease`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:Order`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:WholesaleOrder`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`}],layout:{version:1,sectionOrder:[`custom:appointments`,`custom:clients`,`custom:checkout`,`custom:shelf`,`section:accounting`],itemOrder:{"custom:appointments":[`item:events:Event`,`item:events:EventType`,`item:events:EventSeries`],"custom:clients":[`item:commerce:Customer`],"custom:checkout":[`item:commerce:Order`,`item:commerce:Payment`,`item:commerce:Invoice`],"custom:shelf":[`item:products:Product`,`item:inventory:StockLevel`,`item:commerce:Vendor`,`item:commerce:PurchaseOrder`]},hidden:[`item:inventory:InventoryLocation`,`item:inventory:StockMovement`],moved:{"item:events:Event":`custom:appointments`,"item:events:EventType":`custom:appointments`,"item:events:EventSeries":`custom:appointments`,"item:commerce:Customer":`custom:clients`,"item:commerce:Order":`custom:checkout`,"item:commerce:Payment":`custom:checkout`,"item:commerce:Invoice":`custom:checkout`,"item:products:Product":`custom:shelf`,"item:inventory:StockLevel":`custom:shelf`,"item:commerce:Vendor":`custom:shelf`,"item:commerce:PurchaseOrder":`custom:shelf`},customSections:[{id:`custom:appointments`,label:`Appointments`},{id:`custom:clients`,label:`Clients`},{id:`custom:checkout`,label:`Checkout`},{id:`custom:shelf`,label:`Shelf`}],items:{"item:events:Event":{label:`Appointments`,description:`Every booking in the book, by stylist and chair.`},"item:events:EventType":{label:`Appointment types`,description:`The services you book, like a cut, a colour or a beard trim, with their length.`},"item:events:EventSeries":{label:`Standing appointments`,description:`Regulars who come back every few weeks, set up once.`},"item:commerce:Customer":{label:`Clients`,description:`Your clients, with how to reach them and what they usually have.`},"item:commerce:Order":{label:`Sales`,description:`Each visit’s ticket: the services done and anything bought at the desk.`},"item:commerce:Payment":{label:`Payments`,description:`Money taken at the desk, by card or cash.`},"item:commerce:Invoice":{label:`Invoices`,description:`Bills for bridal parties, packages and accounts that pay later.`},"item:products:Product":{label:`Services & products`,description:`Your services and the retail you sell, with prices.`},"item:inventory:StockLevel":{label:`Retail stock`,description:`Product on the shelf and at the backbar.`},"item:commerce:Vendor":{label:`Suppliers`,description:`The distributors you buy colour, product and towels from.`},"item:commerce:PurchaseOrder":{label:`Supply orders`,description:`Product you have ordered and when it arrives.`}},sections:{"custom:appointments":{icon:`calendar`},"custom:clients":{icon:`users`},"custom:checkout":{icon:`creditCard`},"custom:shelf":{icon:`shoppingBag`}}}}},{id:`roaster`,name:`Coffee roaster`,icon:`coffee`,summary:`Cafe accounts, online orders, green coffee, roast batches and importers for a small roastery or brewery.`,keywords:[`coffee roaster`,`roaster`,`roastery`,`coffee`,`beans`,`green coffee`,`espresso`,`cafe accounts`,`brewery`,`microbrewery`,`taproom`,`kegs`,`small batch`],settings:{currency:`USD`,paymentTerms:`Net 30`,taxRate:0},sectionDescriptions:{"custom:shop":`Sell to customers and keep their details.`,"custom:wholesale":`Orders, invoices and payments from trade customers.`,"custom:roastery":`Coffees, green coffee, stock and what you are roasting.`,"custom:buying":`Suppliers and what you order from them.`},document:{$schema:`https://s-m-r-t.dev/schemas/cookbook/v1.json`,version:1,theme:{custom:{primary:`#7c2d12`,fontFamily:`Georgia`}},recipes:[`commerce.customers`,`commerce.invoicing`,`commerce.purchases`,`commerce.sales`,`commerce.vendors`,`commerce.wholesale`,`inventory.stock`,`ledgers.bookkeeping`,`products.ingredients`,`products.simple`],features:[`@happyvertical/smrt-commerce:ProductionOrder`],policies:[{objectRef:`@happyvertical/smrt-commerce:Agreement`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 30"`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`paymentTerms`,scopeType:`app`,defaultValue:`"Net 30"`},{objectRef:`@happyvertical/smrt-commerce:Estimate`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 30"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`currency`,scopeType:`app`,defaultValue:`"USD"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 30"`},{objectRef:`@happyvertical/smrt-commerce:Lease`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 30"`},{objectRef:`@happyvertical/smrt-commerce:Order`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 30"`},{objectRef:`@happyvertical/smrt-commerce:ProductionOrder`,fieldName:`channelId`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:ProductionOrder`,fieldName:`expiryDate`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:ProductionOrder`,fieldName:`vendorId`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:WholesaleOrder`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 30"`}],layout:{version:1,sectionOrder:[`custom:shop`,`custom:wholesale`,`custom:roastery`,`custom:buying`,`section:accounting`],itemOrder:{"custom:shop":[`item:commerce:Order`,`item:commerce:Customer`],"custom:wholesale":[`item:commerce:WholesaleOrder`,`item:commerce:Invoice`,`item:commerce:Payment`],"custom:roastery":[`item:products:Product`,`item:products:Product:ingredients`,`item:inventory:StockLevel`,`item:commerce:ProductionOrder`],"custom:buying":[`item:commerce:Vendor`,`item:commerce:PurchaseOrder`]},hidden:[`item:inventory:InventoryLocation`,`item:inventory:StockMovement`],moved:{"item:commerce:Order":`custom:shop`,"item:commerce:Customer":`custom:shop`,"item:commerce:WholesaleOrder":`custom:wholesale`,"item:commerce:Invoice":`custom:wholesale`,"item:commerce:Payment":`custom:wholesale`,"item:products:Product":`custom:roastery`,"item:products:Product:ingredients":`custom:roastery`,"item:inventory:StockLevel":`custom:roastery`,"item:commerce:ProductionOrder":`custom:roastery`,"item:commerce:Vendor":`custom:buying`,"item:commerce:PurchaseOrder":`custom:buying`},customSections:[{id:`custom:shop`,label:`Shop`},{id:`custom:wholesale`,label:`Wholesale`},{id:`custom:roastery`,label:`Roastery`},{id:`custom:buying`,label:`Buying`}],items:{"item:commerce:Order":{label:`Online & retail orders`,description:`Orders from the website and the roastery door.`},"item:commerce:WholesaleOrder":{label:`Cafe orders`,description:`Standing and one-off orders from cafes, bars and grocers.`},"item:products:Product":{label:`Coffees`,description:`Roasted coffees and shop items, with prices.`},"item:products:Product:ingredients":{label:`Green coffee`,description:`Green coffee and packaging, by the bag, with costs.`},"item:inventory:StockLevel":{label:`Stock`,description:`Roasted and green coffee on hand today.`},"item:commerce:ProductionOrder":{label:`Roast batches`,description:`What you plan to roast, with the amounts and the day.`},"item:commerce:Vendor":{label:`Importers & suppliers`,description:`The importers and packaging suppliers you buy from.`},"item:commerce:PurchaseOrder":{label:`Green coffee orders`,description:`Green coffee you have bought and when the container lands.`}},sections:{"custom:shop":{icon:`shoppingBag`},"custom:wholesale":{icon:`briefcase`},"custom:roastery":{icon:`package`},"custom:buying":{icon:`truck`}}}}},{id:`equipment-rental`,name:`Equipment rental`,icon:`forklift`,summary:`Rentals, quotes, the fleet and its availability, pickups and returns, and billing for a hire yard.`,keywords:[`equipment rental`,`rental`,`rentals`,`hire`,`tool hire`,`plant hire`,`party rental`,`excavator`,`scaffolding`,`generators`,`bike rental`,`kayak rental`,`fleet`],settings:{currency:`USD`,paymentTerms:`Deposit on pickup, balance on return`,taxRate:.08,taxRounding:`document`},sectionDescriptions:{"custom:rentals":`Rentals, quotes and the customers they belong to.`,"custom:fleet":`Equipment, availability and who you buy from.`,"custom:schedule":`Appointments and what is on the calendar.`,"custom:billing":`Invoices and the payments against them.`},document:{$schema:`https://s-m-r-t.dev/schemas/cookbook/v1.json`,version:1,theme:{custom:{primary:`#a16207`}},recipes:[`commerce.customers`,`commerce.estimates`,`commerce.invoicing`,`commerce.leases`,`commerce.purchases`,`commerce.vendors`,`events.calendar`,`inventory.stock`,`ledgers.bookkeeping`,`products.simple`],features:[],policies:[{objectRef:`@happyvertical/smrt-commerce:Agreement`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Deposit on pickup, balance on return"`},{objectRef:`@happyvertical/smrt-commerce:Contract`,fieldName:`taxRoundingScope`,scopeType:`app`,defaultValue:`"document"`},{objectRef:`@happyvertical/smrt-commerce:ContractLineItem`,fieldName:`taxRate`,scopeType:`app`,defaultValue:`0.08`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`paymentTerms`,scopeType:`app`,defaultValue:`"Deposit on pickup, balance on return"`},{objectRef:`@happyvertical/smrt-commerce:Estimate`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Deposit on pickup, balance on return"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`currency`,scopeType:`app`,defaultValue:`"USD"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`taxRoundingScope`,scopeType:`app`,defaultValue:`"document"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Deposit on pickup, balance on return"`},{objectRef:`@happyvertical/smrt-commerce:InvoiceLineItem`,fieldName:`taxRate`,scopeType:`app`,defaultValue:`0.08`},{objectRef:`@happyvertical/smrt-commerce:Lease`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Deposit on pickup, balance on return"`},{objectRef:`@happyvertical/smrt-commerce:Order`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Deposit on pickup, balance on return"`},{objectRef:`@happyvertical/smrt-commerce:WholesaleOrder`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Deposit on pickup, balance on return"`}],layout:{version:1,sectionOrder:[`custom:rentals`,`custom:fleet`,`custom:schedule`,`custom:billing`,`section:accounting`],itemOrder:{"custom:rentals":[`item:commerce:Lease`,`item:commerce:Estimate`,`item:commerce:Customer`],"custom:fleet":[`item:products:Product`,`item:inventory:StockLevel`,`item:commerce:Vendor`,`item:commerce:PurchaseOrder`],"custom:schedule":[`item:events:Event`,`item:events:EventType`],"custom:billing":[`item:commerce:Invoice`,`item:commerce:Payment`]},hidden:[`item:events:EventSeries`,`item:inventory:InventoryLocation`,`item:inventory:StockMovement`],moved:{"item:commerce:Lease":`custom:rentals`,"item:commerce:Estimate":`custom:rentals`,"item:commerce:Customer":`custom:rentals`,"item:products:Product":`custom:fleet`,"item:inventory:StockLevel":`custom:fleet`,"item:commerce:Vendor":`custom:fleet`,"item:commerce:PurchaseOrder":`custom:fleet`,"item:events:Event":`custom:schedule`,"item:events:EventType":`custom:schedule`,"item:commerce:Invoice":`custom:billing`,"item:commerce:Payment":`custom:billing`},customSections:[{id:`custom:rentals`,label:`Rentals`},{id:`custom:fleet`,label:`Fleet`},{id:`custom:schedule`,label:`Schedule`},{id:`custom:billing`,label:`Billing`}],items:{"item:commerce:Lease":{label:`Rentals`,description:`Every rental out the gate, with the dates and what is due.`},"item:commerce:Estimate":{label:`Quotes`,description:`Quotes for a hire, ready to become a rental when accepted.`},"item:products:Product":{label:`Equipment`,description:`The machines and tools you hire out, with the daily rate.`},"item:inventory:StockLevel":{label:`Availability`,description:`What is in the yard, out on hire or in for service.`},"item:commerce:Vendor":{label:`Suppliers`,description:`The dealers and parts suppliers you buy from.`},"item:commerce:PurchaseOrder":{label:`Equipment & parts orders`,description:`Machines and parts you have ordered and when they arrive.`},"item:events:Event":{label:`Pickups & returns`,description:`Pickups, returns and deliveries on the calendar, by day.`},"item:events:EventType":{label:`Booking types`,description:`The kinds of booking you make, like a pickup, a return or a delivery.`}},sections:{"custom:rentals":{icon:`fileText`},"custom:fleet":{icon:`truck`},"custom:schedule":{icon:`calendar`},"custom:billing":{icon:`receipt`}}}}},{id:`nonprofit`,name:`Non-profit`,icon:`heart`,summary:`Members, memberships, dues and donations, events and the books for a club, society or charity.`,keywords:[`non-profit`,`nonprofit`,`charity`,`club`,`society`,`association`,`members`,`membership dues`,`donations`,`donors`,`fundraiser`,`volunteers`,`community group`],settings:{currency:`USD`,paymentTerms:`Due on receipt`,taxRate:0},sectionDescriptions:{"custom:members":`Members and their memberships.`,"custom:events":`Meetings, fundraisers and volunteer days.`,"custom:giving":`Dues, pledges and the money that comes in.`},document:{$schema:`https://s-m-r-t.dev/schemas/cookbook/v1.json`,version:1,theme:{custom:{primary:`#1d4ed8`}},recipes:[`commerce.agreements`,`commerce.customers`,`commerce.invoicing`,`events.calendar`,`ledgers.bookkeeping`],features:[],policies:[{objectRef:`@happyvertical/smrt-commerce:Agreement`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`creditLimit`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`customerType`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`paymentTerms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`taxExempt`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`taxId`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:Estimate`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`currency`,scopeType:`app`,defaultValue:`"USD"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:Lease`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:Order`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:WholesaleOrder`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`}],layout:{version:1,sectionOrder:[`custom:members`,`custom:events`,`custom:giving`,`section:accounting`],itemOrder:{"custom:members":[`item:commerce:Customer`,`item:commerce:Agreement`],"custom:events":[`item:events:Event`,`item:events:EventSeries`,`item:events:EventType`],"custom:giving":[`item:commerce:Invoice`,`item:commerce:Payment`]},hidden:[`item:commerce:Contract`],moved:{"item:commerce:Customer":`custom:members`,"item:commerce:Agreement":`custom:members`,"item:events:Event":`custom:events`,"item:events:EventSeries":`custom:events`,"item:events:EventType":`custom:events`,"item:commerce:Invoice":`custom:giving`,"item:commerce:Payment":`custom:giving`},customSections:[{id:`custom:members`,label:`Members`},{id:`custom:events`,label:`Events`},{id:`custom:giving`,label:`Giving`}],items:{"item:commerce:Customer":{label:`Members`,description:`Your members and donors, with how to reach them.`},"item:commerce:Agreement":{label:`Memberships`,description:`Annual, family and student memberships, with who holds them and when they renew.`},"item:events:Event":{label:`Events`,description:`Meetings, fundraisers and volunteer days, with who is coming.`},"item:events:EventSeries":{label:`Regular meetings`,description:`Meetings that repeat, like the monthly meetup, set up once.`},"item:events:EventType":{label:`Event types`,description:`The kinds of event you run, like a fundraiser or a clean-up.`},"item:commerce:Invoice":{label:`Dues & pledges`,description:`Dues and pledges you have asked for and which are still owed.`},"item:commerce:Payment":{label:`Donations & payments`,description:`Money that has come in, from dues, gifts and tickets.`}},sections:{"custom:members":{icon:`users`},"custom:events":{icon:`calendar`},"custom:giving":{icon:`creditCard`}}}}},{id:`agency`,name:`Agency`,icon:`pencil`,summary:`Clients, proposals, retainers, projects, time, expenses and invoices for a consulting or design studio.`,keywords:[`agency`,`design agency`,`consulting`,`consultant`,`consultancy`,`studio`,`design studio`,`freelance`,`retainer`,`proposals`,`billable hours`,`timesheets`,`creative`],settings:{currency:`USD`,paymentTerms:`Net 30`,taxRate:0},sectionDescriptions:{"custom:accounts":`Clients, proposals and the contracts you hold with them.`,"custom:work":`Projects, tasks, time and costs.`,"custom:meetings":`Meetings with clients and the studio.`,"custom:billing":`Invoices and the payments against them.`},document:{$schema:`https://s-m-r-t.dev/schemas/cookbook/v1.json`,version:1,theme:{custom:{primary:`#4338ca`}},recipes:[`commerce.agreements`,`commerce.customers`,`commerce.estimates`,`commerce.invoicing`,`commerce.vendors`,`events.calendar`,`expenses.tracking`,`ledgers.bookkeeping`,`projects.tracker`,`timesheets.time-entries`],features:[],policies:[{objectRef:`@happyvertical/smrt-commerce:Agreement`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 30"`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`creditLimit`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`customerType`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`paymentTerms`,scopeType:`app`,defaultValue:`"Net 30"`},{objectRef:`@happyvertical/smrt-commerce:Estimate`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 30"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`currency`,scopeType:`app`,defaultValue:`"USD"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 30"`},{objectRef:`@happyvertical/smrt-commerce:Lease`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 30"`},{objectRef:`@happyvertical/smrt-commerce:Order`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 30"`},{objectRef:`@happyvertical/smrt-commerce:WholesaleOrder`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 30"`}],layout:{version:1,sectionOrder:[`custom:accounts`,`custom:work`,`custom:meetings`,`custom:billing`,`section:accounting`],itemOrder:{"custom:accounts":[`item:commerce:Customer`,`item:commerce:Estimate`,`item:commerce:Agreement`],"custom:work":[`item:projects:Project`,`item:projects:Issue`,`item:timesheets:ServiceTimeEntry`,`item:expenses:Expense`],"custom:meetings":[`item:events:Event`,`item:events:EventType`],"custom:billing":[`item:commerce:Invoice`,`item:commerce:Payment`,`item:commerce:Vendor`]},hidden:[`item:commerce:Contract`,`item:projects:Label`,`item:events:EventSeries`],moved:{"item:commerce:Customer":`custom:accounts`,"item:commerce:Estimate":`custom:accounts`,"item:commerce:Agreement":`custom:accounts`,"item:projects:Project":`custom:work`,"item:projects:Issue":`custom:work`,"item:timesheets:ServiceTimeEntry":`custom:work`,"item:expenses:Expense":`custom:work`,"item:events:Event":`custom:meetings`,"item:events:EventType":`custom:meetings`,"item:commerce:Invoice":`custom:billing`,"item:commerce:Payment":`custom:billing`,"item:commerce:Vendor":`custom:billing`},customSections:[{id:`custom:accounts`,label:`Clients`},{id:`custom:work`,label:`Work`},{id:`custom:meetings`,label:`Meetings`},{id:`custom:billing`,label:`Billing`}],items:{"item:commerce:Customer":{label:`Clients`,description:`The companies you work for, with how to reach them.`},"item:commerce:Estimate":{label:`Proposals`,description:`Proposals you have sent, ready to become a contract when accepted.`},"item:commerce:Agreement":{label:`Contracts`,description:`Retainers and statements of work, with the terms and the dates.`},"item:projects:Project":{label:`Projects`,description:`Each engagement, with what it covers and where it stands.`},"item:projects:Issue":{label:`Tasks`,description:`The work inside each project, from to-do to done.`},"item:timesheets:ServiceTimeEntry":{label:`Time entries`,description:`Hours logged by person and project, from draft to approved.`},"item:expenses:Expense":{label:`Expenses`,description:`Costs on a project, with the receipt and whether to bill them on.`},"item:events:Event":{label:`Meetings`,description:`Kickoffs, reviews and check-ins with clients, by day.`},"item:events:EventType":{label:`Meeting types`,description:`The kinds of meeting you hold, like a kickoff or a review.`},"item:commerce:Vendor":{label:`Suppliers`,description:`The printers, photographers and freelancers you buy from.`}},sections:{"custom:accounts":{icon:`users`},"custom:work":{icon:`briefcase`},"custom:meetings":{icon:`calendar`},"custom:billing":{icon:`receipt`}}}}}]}.cookbooks;function n(e){return t.find(t=>t.id===e)}function r(t){return t.document.recipes.map(t=>e.get(t)?.label??t)}export{t as n,r,n as t};
|
|
1
|
+
import{x as e}from"./Dh5fne6n.js";var t={cookbooks:[{id:`bakery`,name:`Bakery`,icon:`bread`,summary:`Retail and cafe wholesale orders, ingredient stock, batches and suppliers.`,keywords:[`bake`,`baker`,`bakery`,`baking`,`bread`,`pastry`,`cake`,`cookies`,`cafe wholesale`,`coffee shop`,`patisserie`,`sourdough`],settings:{currency:`USD`,paymentTerms:`Net 15`,taxRate:0},document:{$schema:`https://s-m-r-t.dev/schemas/cookbook/v1.json`,version:1,theme:{custom:{primary:`#b45309`,fontFamily:`Georgia`}},recipes:[`commerce.customers`,`commerce.invoicing`,`commerce.purchases`,`commerce.sales`,`commerce.vendors`,`commerce.wholesale`,`inventory.stock`,`ledgers.bookkeeping`,`products.ingredients`,`products.simple`],features:[`@happyvertical/smrt-commerce:ProductionOrder`],policies:[{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`paymentTerms`,scopeType:`app`,defaultValue:`"Net 15"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`currency`,scopeType:`app`,defaultValue:`"USD"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 15"`},{objectRef:`@happyvertical/smrt-commerce:Order`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 15"`},{objectRef:`@happyvertical/smrt-commerce:ProductionOrder`,fieldName:`channelId`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:ProductionOrder`,fieldName:`expiryDate`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:ProductionOrder`,fieldName:`vendorId`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:WholesaleOrder`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 15"`}],layout:{version:1,sectionOrder:[`custom:shop`,`custom:wholesale`,`custom:kitchen`,`custom:buying`,`section:accounting`],itemOrder:{"custom:shop":[`item:commerce:Order`,`item:commerce:Customer`],"custom:wholesale":[`item:commerce:WholesaleOrder`,`item:commerce:Invoice`,`item:commerce:Payment`],"custom:kitchen":[`item:products:Product`,`item:products:Product:ingredients`,`item:inventory:StockLevel`,`item:commerce:ProductionOrder`],"custom:buying":[`item:commerce:Vendor`,`item:commerce:PurchaseOrder`]},hidden:[`item:inventory:InventoryLocation`,`item:inventory:StockMovement`],moved:{"item:commerce:Order":`custom:shop`,"item:commerce:Customer":`custom:shop`,"item:commerce:WholesaleOrder":`custom:wholesale`,"item:commerce:Invoice":`custom:wholesale`,"item:commerce:Payment":`custom:wholesale`,"item:products:Product":`custom:kitchen`,"item:inventory:StockLevel":`custom:kitchen`,"item:commerce:ProductionOrder":`custom:kitchen`,"item:commerce:Vendor":`custom:buying`,"item:commerce:PurchaseOrder":`custom:buying`,"item:products:Product:ingredients":`custom:kitchen`},customSections:[{id:`custom:shop`,label:`Shop`},{id:`custom:wholesale`,label:`Wholesale`},{id:`custom:kitchen`,label:`Kitchen`},{id:`custom:buying`,label:`Buying`}],items:{"item:commerce:Order":{label:`Orders`,description:`Orders from your shop and website customers.`},"item:commerce:WholesaleOrder":{label:`Cafe orders`,description:`Standing and one-off orders from cafes and shops.`},"item:inventory:StockLevel":{label:`Stock`,description:`Baked goods and supplies on hand today.`},"item:commerce:ProductionOrder":{label:`Batches`,description:`What you plan to bake, with the amounts and the day.`},"item:commerce:Vendor":{label:`Suppliers`,description:`The mills, dairies and suppliers you buy from.`},"item:products:Product:ingredients":{label:`Ingredients`,description:`Flour, butter, sugar and the rest, with costs and units.`}},sections:{"custom:shop":{icon:`shoppingBag`},"custom:wholesale":{icon:`briefcase`},"custom:kitchen":{icon:`package`},"custom:buying":{icon:`truck`}}}},sectionDescriptions:{"custom:shop":`Sell to customers and keep their details.`,"custom:wholesale":`Orders, invoices and payments from trade customers.`,"custom:kitchen":`Products, ingredients, stock and what you are making.`,"custom:buying":`Suppliers and what you order from them.`}},{id:`mechanic`,name:`Mechanic`,icon:`car`,summary:`Quotes, work orders, parts, appointments and billing for a repair shop.`,keywords:[`mechanic`,`garage`,`auto repair`,`car repair`,`fix cars`,`car`,`vehicle`,`brakes`,`oil change`,`tyres`,`tires`,`servicing`,`repair shop`],settings:{currency:`USD`,paymentTerms:`Due on receipt`,taxRate:.0825,taxRounding:`document`},document:{$schema:`https://s-m-r-t.dev/schemas/cookbook/v1.json`,version:1,theme:{preset:`smrt`},recipes:[`commerce.customers`,`commerce.estimates`,`commerce.invoicing`,`commerce.purchases`,`commerce.sales`,`commerce.vendors`,`events.calendar`,`inventory.stock`,`ledgers.bookkeeping`,`products.simple`],features:[],policies:[{objectRef:`@happyvertical/smrt-commerce:Contract`,fieldName:`taxRoundingScope`,scopeType:`app`,defaultValue:`"document"`},{objectRef:`@happyvertical/smrt-commerce:ContractLineItem`,fieldName:`taxRate`,scopeType:`app`,defaultValue:`0.0825`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`creditLimit`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`customerType`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`paymentTerms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:Estimate`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`currency`,scopeType:`app`,defaultValue:`"USD"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`taxRoundingScope`,scopeType:`app`,defaultValue:`"document"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:InvoiceLineItem`,fieldName:`taxRate`,scopeType:`app`,defaultValue:`0.0825`},{objectRef:`@happyvertical/smrt-commerce:Order`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`}],layout:{version:1,sectionOrder:[`custom:jobs`,`custom:parts`,`custom:billing`,`custom:schedule`,`section:accounting`],itemOrder:{"custom:jobs":[`item:commerce:Estimate`,`item:commerce:Order`,`item:commerce:Customer`],"custom:parts":[`item:products:Product`,`item:inventory:StockLevel`,`item:commerce:Vendor`,`item:commerce:PurchaseOrder`],"custom:billing":[`item:commerce:Invoice`,`item:commerce:Payment`],"custom:schedule":[`item:events:Event`,`item:events:EventType`]},hidden:[`item:events:EventSeries`,`item:inventory:InventoryLocation`,`item:inventory:StockMovement`],moved:{"item:commerce:Estimate":`custom:jobs`,"item:commerce:Order":`custom:jobs`,"item:commerce:Customer":`custom:jobs`,"item:products:Product":`custom:parts`,"item:inventory:StockLevel":`custom:parts`,"item:commerce:Vendor":`custom:parts`,"item:commerce:PurchaseOrder":`custom:parts`,"item:commerce:Invoice":`custom:billing`,"item:commerce:Payment":`custom:billing`,"item:events:Event":`custom:schedule`,"item:events:EventType":`custom:schedule`},customSections:[{id:`custom:jobs`,label:`Jobs`},{id:`custom:parts`,label:`Parts`},{id:`custom:billing`,label:`Billing`},{id:`custom:schedule`,label:`Schedule`}],items:{"item:commerce:Estimate":{label:`Quotes`,description:`Quotes for repairs, ready to become work orders once approved.`},"item:commerce:Order":{label:`Work orders`,description:`Every job in the shop, from drop-off to pick-up.`},"item:products:Product":{label:`Parts`,description:`The parts you sell and fit, with prices.`},"item:inventory:StockLevel":{label:`Parts on hand`,description:`Parts on the shelf, so you know what to reorder.`},"item:commerce:Vendor":{label:`Suppliers`,description:`The parts suppliers you buy from, with terms and contacts.`},"item:commerce:PurchaseOrder":{label:`Parts orders`,description:`Parts you have ordered and when they arrive.`},"item:events:Event":{label:`Appointments`,description:`Bookings on the shop calendar, by day and bay.`},"item:events:EventType":{label:`Appointment types`,description:`The kinds of service you book, like an oil change or inspection.`}},sections:{"custom:jobs":{icon:`wrench`},"custom:parts":{icon:`package`},"custom:billing":{icon:`receipt`},"custom:schedule":{icon:`calendar`}}}},sectionDescriptions:{"custom:jobs":`Work orders and the customers they belong to.`,"custom:parts":`Parts, materials and the stock on your shelves.`,"custom:billing":`Invoices and the payments against them.`,"custom:schedule":`Appointments and what is on the calendar.`}},{id:`welder`,name:`Welder`,icon:`flame`,summary:`Quotes, jobs, agreements, material and site visits for a welding business.`,keywords:[`weld`,`welder`,`welding`,`fabrication`,`fabricate`,`metal`,`steel`,`gates`,`railings`,`metalwork`,`boilermaker`],settings:{currency:`USD`,paymentTerms:`50% deposit, balance on completion`},document:{$schema:`https://s-m-r-t.dev/schemas/cookbook/v1.json`,version:1,theme:{preset:`studio`},recipes:[`commerce.agreements`,`commerce.customers`,`commerce.estimates`,`commerce.invoicing`,`commerce.purchases`,`commerce.sales`,`commerce.vendors`,`events.calendar`,`inventory.stock`,`ledgers.bookkeeping`,`products.simple`],features:[],policies:[{objectRef:`@happyvertical/smrt-commerce:Agreement`,fieldName:`terms`,scopeType:`app`,defaultValue:`"50% deposit, balance on completion"`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`paymentTerms`,scopeType:`app`,defaultValue:`"50% deposit, balance on completion"`},{objectRef:`@happyvertical/smrt-commerce:Estimate`,fieldName:`terms`,scopeType:`app`,defaultValue:`"50% deposit, balance on completion"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`currency`,scopeType:`app`,defaultValue:`"USD"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`terms`,scopeType:`app`,defaultValue:`"50% deposit, balance on completion"`},{objectRef:`@happyvertical/smrt-commerce:Order`,fieldName:`terms`,scopeType:`app`,defaultValue:`"50% deposit, balance on completion"`}],layout:{version:1,sectionOrder:[`custom:jobs`,`custom:material`,`custom:billing`,`custom:schedule`,`section:accounting`],itemOrder:{"custom:jobs":[`item:commerce:Order`,`item:commerce:Customer`,`item:commerce:Estimate`,`item:commerce:Agreement`],"custom:material":[`item:products:Product`,`item:inventory:StockLevel`,`item:commerce:Vendor`,`item:commerce:PurchaseOrder`],"custom:billing":[`item:commerce:Invoice`,`item:commerce:Payment`],"custom:schedule":[`item:events:Event`,`item:events:EventType`]},hidden:[`item:commerce:Contract`,`item:events:EventSeries`,`item:inventory:InventoryLocation`,`item:inventory:StockMovement`],moved:{"item:commerce:Customer":`custom:jobs`,"item:commerce:Estimate":`custom:jobs`,"item:commerce:Agreement":`custom:jobs`,"item:products:Product":`custom:material`,"item:inventory:StockLevel":`custom:material`,"item:commerce:Vendor":`custom:material`,"item:commerce:PurchaseOrder":`custom:material`,"item:commerce:Invoice":`custom:billing`,"item:commerce:Payment":`custom:billing`,"item:events:Event":`custom:schedule`,"item:events:EventType":`custom:schedule`,"item:commerce:Order":`custom:jobs`},customSections:[{id:`custom:jobs`,label:`Jobs`},{id:`custom:material`,label:`Material`},{id:`custom:billing`,label:`Billing`},{id:`custom:schedule`,label:`Schedule`}],items:{"item:commerce:Estimate":{label:`Quotes`,description:`Quotes for jobs, ready to turn into orders when accepted.`},"item:products:Product":{label:`Materials`,description:`Steel, rod, gas and other materials you stock and charge for.`},"item:inventory:StockLevel":{label:`Material on hand`,description:`Material on hand, so you know what to buy before the next job.`},"item:commerce:Vendor":{label:`Suppliers`,description:`The suppliers you buy metal and gas from.`},"item:commerce:PurchaseOrder":{label:`Material orders`,description:`Material you have ordered and when it lands.`},"item:events:Event":{label:`Site visits`,description:`Visits to measure, quote or install on site, by day.`},"item:events:EventType":{label:`Visit types`,description:`The kinds of visit you make, like a quote visit or install.`},"item:commerce:Order":{label:`Jobs`,description:`Every job you have won, from start to final invoice.`}},sections:{"custom:jobs":{icon:`wrench`},"custom:material":{icon:`layers`},"custom:billing":{icon:`receipt`},"custom:schedule":{icon:`calendar`}}}},sectionDescriptions:{"custom:jobs":`Work orders and the customers they belong to.`,"custom:material":`Material, stock and what you have ordered.`,"custom:billing":`Invoices and the payments against them.`,"custom:schedule":`Appointments and what is on the calendar.`}},{id:`yoga-studio`,name:`Yoga studio`,icon:`yoga`,summary:`Classes, class series, members, memberships and a small retail shop.`,keywords:[`yoga`,`yoga studio`,`pilates`,`studio`,`classes`,`class series`,`meditation`,`members`,`memberships`,`instructor`],settings:{currency:`USD`,paymentTerms:`Due on receipt`},document:{$schema:`https://s-m-r-t.dev/schemas/cookbook/v1.json`,version:1,theme:{custom:{primary:`#0f766e`,fontFamily:`ui-rounded`}},recipes:[`commerce.agreements`,`commerce.customers`,`commerce.invoicing`,`events.calendar`,`inventory.stock`,`ledgers.bookkeeping`,`products.simple`],features:[],policies:[{objectRef:`@happyvertical/smrt-commerce:Agreement`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`creditLimit`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`customerType`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`paymentTerms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`taxExempt`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`currency`,scopeType:`app`,defaultValue:`"USD"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`taxId`,scopeType:`app`,visibility:`hidden`}],layout:{version:1,sectionOrder:[`custom:classes`,`custom:members`,`custom:shop`,`custom:billing`,`section:accounting`],itemOrder:{"custom:classes":[`item:events:Event`,`item:events:EventSeries`,`item:events:EventType`],"custom:members":[`item:commerce:Customer`,`item:commerce:Agreement`],"custom:shop":[`item:products:Product`,`item:inventory:StockLevel`],"custom:billing":[`item:commerce:Invoice`,`item:commerce:Payment`]},hidden:[`item:commerce:Contract`,`item:inventory:InventoryLocation`,`item:inventory:StockMovement`],moved:{"item:events:Event":`custom:classes`,"item:events:EventSeries":`custom:classes`,"item:events:EventType":`custom:classes`,"item:commerce:Customer":`custom:members`,"item:commerce:Agreement":`custom:members`,"item:products:Product":`custom:shop`,"item:inventory:StockLevel":`custom:shop`,"item:commerce:Invoice":`custom:billing`,"item:commerce:Payment":`custom:billing`},customSections:[{id:`custom:classes`,label:`Classes`},{id:`custom:members`,label:`Members`},{id:`custom:shop`,label:`Shop`},{id:`custom:billing`,label:`Billing`}],items:{"item:events:Event":{label:`Classes`,description:`Every class on your timetable, with who's teaching and where.`},"item:events:EventSeries":{label:`Class series`,description:`Weekly classes that repeat, so you set them up once.`},"item:events:EventType":{label:`Class types`,description:`Your styles, like Vinyasa or Yin, with length and price.`},"item:commerce:Customer":{label:`Members`,description:`Your students, with how to reach them and what they have booked.`},"item:commerce:Agreement":{label:`Memberships`,description:`Memberships and class packs, with who holds them and when they renew.`},"item:inventory:StockLevel":{label:`Stock`,description:`Mats, props and retail items on hand.`}},sections:{"custom:classes":{icon:`school`},"custom:members":{icon:`users`},"custom:shop":{icon:`shoppingBag`},"custom:billing":{icon:`receipt`}}}},sectionDescriptions:{"custom:classes":`Classes, sessions and bookings.`,"custom:members":`Members and their memberships.`,"custom:shop":`Sell to customers and keep their details.`,"custom:billing":`Invoices and the payments against them.`}},{id:`landscaping`,name:`Landscaping`,icon:`leaf`,summary:`Quotes, jobs, maintenance contracts, materials and the crew schedule for a lawn and landscape business.`,keywords:[`landscaping`,`landscaper`,`lawn care`,`lawn`,`mowing`,`garden`,`gardener`,`yard work`,`hardscape`,`irrigation`,`tree service`,`snow removal`,`grounds`],settings:{currency:`USD`,paymentTerms:`Net 15`,taxRate:.06},sectionDescriptions:{"custom:jobs":`Work orders and the customers they belong to.`,"custom:schedule":`Appointments and what is on the calendar.`,"custom:yard":`Materials, stock and the suppliers you buy from.`,"custom:billing":`Invoices and the payments against them.`},document:{$schema:`https://s-m-r-t.dev/schemas/cookbook/v1.json`,version:1,theme:{custom:{primary:`#15803d`}},recipes:[`commerce.agreements`,`commerce.customers`,`commerce.estimates`,`commerce.invoicing`,`commerce.purchases`,`commerce.sales`,`commerce.vendors`,`events.calendar`,`inventory.stock`,`ledgers.bookkeeping`,`products.simple`],features:[],policies:[{objectRef:`@happyvertical/smrt-commerce:Agreement`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 15"`},{objectRef:`@happyvertical/smrt-commerce:ContractLineItem`,fieldName:`taxRate`,scopeType:`app`,defaultValue:`0.06`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`paymentTerms`,scopeType:`app`,defaultValue:`"Net 15"`},{objectRef:`@happyvertical/smrt-commerce:Estimate`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 15"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`currency`,scopeType:`app`,defaultValue:`"USD"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 15"`},{objectRef:`@happyvertical/smrt-commerce:InvoiceLineItem`,fieldName:`taxRate`,scopeType:`app`,defaultValue:`0.06`},{objectRef:`@happyvertical/smrt-commerce:Lease`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 15"`},{objectRef:`@happyvertical/smrt-commerce:Order`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 15"`},{objectRef:`@happyvertical/smrt-commerce:WholesaleOrder`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 15"`}],layout:{version:1,sectionOrder:[`custom:jobs`,`custom:schedule`,`custom:yard`,`custom:billing`,`section:accounting`],itemOrder:{"custom:jobs":[`item:commerce:Estimate`,`item:commerce:Order`,`item:commerce:Customer`,`item:commerce:Agreement`],"custom:schedule":[`item:events:Event`,`item:events:EventSeries`,`item:events:EventType`],"custom:yard":[`item:products:Product`,`item:inventory:StockLevel`,`item:commerce:Vendor`,`item:commerce:PurchaseOrder`],"custom:billing":[`item:commerce:Invoice`,`item:commerce:Payment`]},hidden:[`item:commerce:Contract`,`item:inventory:InventoryLocation`,`item:inventory:StockMovement`],moved:{"item:commerce:Estimate":`custom:jobs`,"item:commerce:Order":`custom:jobs`,"item:commerce:Customer":`custom:jobs`,"item:commerce:Agreement":`custom:jobs`,"item:events:Event":`custom:schedule`,"item:events:EventSeries":`custom:schedule`,"item:events:EventType":`custom:schedule`,"item:products:Product":`custom:yard`,"item:inventory:StockLevel":`custom:yard`,"item:commerce:Vendor":`custom:yard`,"item:commerce:PurchaseOrder":`custom:yard`,"item:commerce:Invoice":`custom:billing`,"item:commerce:Payment":`custom:billing`},customSections:[{id:`custom:jobs`,label:`Jobs`},{id:`custom:schedule`,label:`Schedule`},{id:`custom:yard`,label:`Yard`},{id:`custom:billing`,label:`Billing`}],items:{"item:commerce:Estimate":{label:`Quotes`,description:`Quotes for new work, ready to become jobs once approved.`},"item:commerce:Order":{label:`Jobs`,description:`Every job you have won, from the first visit to the final invoice.`},"item:commerce:Agreement":{label:`Maintenance contracts`,description:`Weekly mowing and seasonal programs, with who holds them and when they renew.`},"item:events:Event":{label:`Crew schedule`,description:`Visits on the calendar, by day and crew.`},"item:events:EventSeries":{label:`Recurring visits`,description:`Routes that repeat, like a Tuesday mowing round, set up once.`},"item:events:EventType":{label:`Visit types`,description:`The kinds of visit you make, like a mow, a clean-up or an install.`},"item:products:Product":{label:`Materials`,description:`Mulch, soil, sod, plants and the other things you sell and install.`},"item:inventory:StockLevel":{label:`Materials on hand`,description:`What is in the yard and on the trucks.`},"item:commerce:Vendor":{label:`Suppliers`,description:`The nurseries and stone yards you buy from.`},"item:commerce:PurchaseOrder":{label:`Material orders`,description:`Material you have ordered and when it lands.`}},sections:{"custom:jobs":{icon:`wrench`},"custom:schedule":{icon:`calendar`},"custom:yard":{icon:`package`},"custom:billing":{icon:`receipt`}}}}},{id:`salon`,name:`Hair salon`,icon:`scissors`,summary:`Appointments, clients, services, retail stock and payments at the desk for a salon or barbershop.`,keywords:[`salon`,`hair salon`,`barber`,`barbershop`,`hairdresser`,`stylist`,`haircut`,`hair colour`,`hair color`,`highlights`,`blow-dry`,`nails`,`beauty`,`spa`],settings:{currency:`USD`,paymentTerms:`Due on receipt`,taxRate:.07,pricesIncludeTax:!0},sectionDescriptions:{"custom:appointments":`Bookings and the services behind them.`,"custom:clients":`Clients and what they usually have.`,"custom:checkout":`Sales at the desk and the payments against them.`,"custom:shelf":`Retail, backbar stock and who you buy from.`},document:{$schema:`https://s-m-r-t.dev/schemas/cookbook/v1.json`,version:1,theme:{custom:{primary:`#9d174d`}},recipes:[`commerce.customers`,`commerce.invoicing`,`commerce.purchases`,`commerce.sales`,`commerce.vendors`,`events.calendar`,`inventory.stock`,`ledgers.bookkeeping`,`products.simple`],features:[],policies:[{objectRef:`@happyvertical/smrt-commerce:Agreement`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:Contract`,fieldName:`lineAmountType`,scopeType:`app`,defaultValue:`"inclusive"`},{objectRef:`@happyvertical/smrt-commerce:ContractLineItem`,fieldName:`taxRate`,scopeType:`app`,defaultValue:`0.07`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`creditLimit`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`customerType`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`paymentTerms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`taxExempt`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`taxId`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:Estimate`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`currency`,scopeType:`app`,defaultValue:`"USD"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`lineAmountType`,scopeType:`app`,defaultValue:`"inclusive"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:InvoiceLineItem`,fieldName:`taxRate`,scopeType:`app`,defaultValue:`0.07`},{objectRef:`@happyvertical/smrt-commerce:Lease`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:Order`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:WholesaleOrder`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`}],layout:{version:1,sectionOrder:[`custom:appointments`,`custom:clients`,`custom:checkout`,`custom:shelf`,`section:accounting`],itemOrder:{"custom:appointments":[`item:events:Event`,`item:events:EventType`,`item:events:EventSeries`],"custom:clients":[`item:commerce:Customer`],"custom:checkout":[`item:commerce:Order`,`item:commerce:Payment`,`item:commerce:Invoice`],"custom:shelf":[`item:products:Product`,`item:inventory:StockLevel`,`item:commerce:Vendor`,`item:commerce:PurchaseOrder`]},hidden:[`item:inventory:InventoryLocation`,`item:inventory:StockMovement`],moved:{"item:events:Event":`custom:appointments`,"item:events:EventType":`custom:appointments`,"item:events:EventSeries":`custom:appointments`,"item:commerce:Customer":`custom:clients`,"item:commerce:Order":`custom:checkout`,"item:commerce:Payment":`custom:checkout`,"item:commerce:Invoice":`custom:checkout`,"item:products:Product":`custom:shelf`,"item:inventory:StockLevel":`custom:shelf`,"item:commerce:Vendor":`custom:shelf`,"item:commerce:PurchaseOrder":`custom:shelf`},customSections:[{id:`custom:appointments`,label:`Appointments`},{id:`custom:clients`,label:`Clients`},{id:`custom:checkout`,label:`Checkout`},{id:`custom:shelf`,label:`Shelf`}],items:{"item:events:Event":{label:`Appointments`,description:`Every booking in the book, by stylist and chair.`},"item:events:EventType":{label:`Appointment types`,description:`The services you book, like a cut, a colour or a beard trim, with their length.`},"item:events:EventSeries":{label:`Standing appointments`,description:`Regulars who come back every few weeks, set up once.`},"item:commerce:Customer":{label:`Clients`,description:`Your clients, with how to reach them and what they usually have.`},"item:commerce:Order":{label:`Sales`,description:`Each visit’s ticket: the services done and anything bought at the desk.`},"item:commerce:Payment":{label:`Payments`,description:`Money taken at the desk, by card or cash.`},"item:commerce:Invoice":{label:`Invoices`,description:`Bills for bridal parties, packages and accounts that pay later.`},"item:products:Product":{label:`Services & products`,description:`Your services and the retail you sell, with prices.`},"item:inventory:StockLevel":{label:`Retail stock`,description:`Product on the shelf and at the backbar.`},"item:commerce:Vendor":{label:`Suppliers`,description:`The distributors you buy colour, product and towels from.`},"item:commerce:PurchaseOrder":{label:`Supply orders`,description:`Product you have ordered and when it arrives.`}},sections:{"custom:appointments":{icon:`calendar`},"custom:clients":{icon:`users`},"custom:checkout":{icon:`creditCard`},"custom:shelf":{icon:`shoppingBag`}}}}},{id:`roaster`,name:`Coffee roaster`,icon:`coffee`,summary:`Cafe accounts, online orders, green coffee, roast batches and importers for a small roastery or brewery.`,keywords:[`coffee roaster`,`roaster`,`roastery`,`coffee`,`beans`,`green coffee`,`espresso`,`cafe accounts`,`brewery`,`microbrewery`,`taproom`,`kegs`,`small batch`],settings:{currency:`USD`,paymentTerms:`Net 30`,taxRate:0},sectionDescriptions:{"custom:shop":`Sell to customers and keep their details.`,"custom:wholesale":`Orders, invoices and payments from trade customers.`,"custom:roastery":`Coffees, green coffee, stock and what you are roasting.`,"custom:buying":`Suppliers and what you order from them.`},document:{$schema:`https://s-m-r-t.dev/schemas/cookbook/v1.json`,version:1,theme:{custom:{primary:`#7c2d12`,fontFamily:`Georgia`}},recipes:[`commerce.customers`,`commerce.invoicing`,`commerce.purchases`,`commerce.sales`,`commerce.vendors`,`commerce.wholesale`,`inventory.stock`,`ledgers.bookkeeping`,`products.ingredients`,`products.simple`],features:[`@happyvertical/smrt-commerce:ProductionOrder`],policies:[{objectRef:`@happyvertical/smrt-commerce:Agreement`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 30"`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`paymentTerms`,scopeType:`app`,defaultValue:`"Net 30"`},{objectRef:`@happyvertical/smrt-commerce:Estimate`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 30"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`currency`,scopeType:`app`,defaultValue:`"USD"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 30"`},{objectRef:`@happyvertical/smrt-commerce:Lease`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 30"`},{objectRef:`@happyvertical/smrt-commerce:Order`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 30"`},{objectRef:`@happyvertical/smrt-commerce:ProductionOrder`,fieldName:`channelId`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:ProductionOrder`,fieldName:`expiryDate`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:ProductionOrder`,fieldName:`vendorId`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:WholesaleOrder`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 30"`}],layout:{version:1,sectionOrder:[`custom:shop`,`custom:wholesale`,`custom:roastery`,`custom:buying`,`section:accounting`],itemOrder:{"custom:shop":[`item:commerce:Order`,`item:commerce:Customer`],"custom:wholesale":[`item:commerce:WholesaleOrder`,`item:commerce:Invoice`,`item:commerce:Payment`],"custom:roastery":[`item:products:Product`,`item:products:Product:ingredients`,`item:inventory:StockLevel`,`item:commerce:ProductionOrder`],"custom:buying":[`item:commerce:Vendor`,`item:commerce:PurchaseOrder`]},hidden:[`item:inventory:InventoryLocation`,`item:inventory:StockMovement`],moved:{"item:commerce:Order":`custom:shop`,"item:commerce:Customer":`custom:shop`,"item:commerce:WholesaleOrder":`custom:wholesale`,"item:commerce:Invoice":`custom:wholesale`,"item:commerce:Payment":`custom:wholesale`,"item:products:Product":`custom:roastery`,"item:products:Product:ingredients":`custom:roastery`,"item:inventory:StockLevel":`custom:roastery`,"item:commerce:ProductionOrder":`custom:roastery`,"item:commerce:Vendor":`custom:buying`,"item:commerce:PurchaseOrder":`custom:buying`},customSections:[{id:`custom:shop`,label:`Shop`},{id:`custom:wholesale`,label:`Wholesale`},{id:`custom:roastery`,label:`Roastery`},{id:`custom:buying`,label:`Buying`}],items:{"item:commerce:Order":{label:`Online & retail orders`,description:`Orders from the website and the roastery door.`},"item:commerce:WholesaleOrder":{label:`Cafe orders`,description:`Standing and one-off orders from cafes, bars and grocers.`},"item:products:Product":{label:`Coffees`,description:`Roasted coffees and shop items, with prices.`},"item:products:Product:ingredients":{label:`Green coffee`,description:`Green coffee and packaging, by the bag, with costs.`},"item:inventory:StockLevel":{label:`Stock`,description:`Roasted and green coffee on hand today.`},"item:commerce:ProductionOrder":{label:`Roast batches`,description:`What you plan to roast, with the amounts and the day.`},"item:commerce:Vendor":{label:`Importers & suppliers`,description:`The importers and packaging suppliers you buy from.`},"item:commerce:PurchaseOrder":{label:`Green coffee orders`,description:`Green coffee you have bought and when the container lands.`}},sections:{"custom:shop":{icon:`shoppingBag`},"custom:wholesale":{icon:`briefcase`},"custom:roastery":{icon:`package`},"custom:buying":{icon:`truck`}}}}},{id:`equipment-rental`,name:`Equipment rental`,icon:`forklift`,summary:`Rentals, quotes, the fleet and its availability, pickups and returns, and billing for a hire yard.`,keywords:[`equipment rental`,`rental`,`rentals`,`hire`,`tool hire`,`plant hire`,`party rental`,`excavator`,`scaffolding`,`generators`,`bike rental`,`kayak rental`,`fleet`],settings:{currency:`USD`,paymentTerms:`Deposit on pickup, balance on return`,taxRate:.08,taxRounding:`document`},sectionDescriptions:{"custom:rentals":`Rentals, quotes and the customers they belong to.`,"custom:fleet":`Equipment, availability and who you buy from.`,"custom:schedule":`Appointments and what is on the calendar.`,"custom:billing":`Invoices and the payments against them.`},document:{$schema:`https://s-m-r-t.dev/schemas/cookbook/v1.json`,version:1,theme:{custom:{primary:`#a16207`}},recipes:[`commerce.customers`,`commerce.estimates`,`commerce.invoicing`,`commerce.leases`,`commerce.purchases`,`commerce.vendors`,`events.calendar`,`inventory.stock`,`ledgers.bookkeeping`,`products.simple`],features:[],policies:[{objectRef:`@happyvertical/smrt-commerce:Agreement`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Deposit on pickup, balance on return"`},{objectRef:`@happyvertical/smrt-commerce:Contract`,fieldName:`taxRoundingScope`,scopeType:`app`,defaultValue:`"document"`},{objectRef:`@happyvertical/smrt-commerce:ContractLineItem`,fieldName:`taxRate`,scopeType:`app`,defaultValue:`0.08`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`paymentTerms`,scopeType:`app`,defaultValue:`"Deposit on pickup, balance on return"`},{objectRef:`@happyvertical/smrt-commerce:Estimate`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Deposit on pickup, balance on return"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`currency`,scopeType:`app`,defaultValue:`"USD"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`taxRoundingScope`,scopeType:`app`,defaultValue:`"document"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Deposit on pickup, balance on return"`},{objectRef:`@happyvertical/smrt-commerce:InvoiceLineItem`,fieldName:`taxRate`,scopeType:`app`,defaultValue:`0.08`},{objectRef:`@happyvertical/smrt-commerce:Lease`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Deposit on pickup, balance on return"`},{objectRef:`@happyvertical/smrt-commerce:Order`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Deposit on pickup, balance on return"`},{objectRef:`@happyvertical/smrt-commerce:WholesaleOrder`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Deposit on pickup, balance on return"`}],layout:{version:1,sectionOrder:[`custom:rentals`,`custom:fleet`,`custom:schedule`,`custom:billing`,`section:accounting`],itemOrder:{"custom:rentals":[`item:commerce:Lease`,`item:commerce:Estimate`,`item:commerce:Customer`],"custom:fleet":[`item:products:Product`,`item:inventory:StockLevel`,`item:commerce:Vendor`,`item:commerce:PurchaseOrder`],"custom:schedule":[`item:events:Event`,`item:events:EventType`],"custom:billing":[`item:commerce:Invoice`,`item:commerce:Payment`]},hidden:[`item:events:EventSeries`,`item:inventory:InventoryLocation`,`item:inventory:StockMovement`],moved:{"item:commerce:Lease":`custom:rentals`,"item:commerce:Estimate":`custom:rentals`,"item:commerce:Customer":`custom:rentals`,"item:products:Product":`custom:fleet`,"item:inventory:StockLevel":`custom:fleet`,"item:commerce:Vendor":`custom:fleet`,"item:commerce:PurchaseOrder":`custom:fleet`,"item:events:Event":`custom:schedule`,"item:events:EventType":`custom:schedule`,"item:commerce:Invoice":`custom:billing`,"item:commerce:Payment":`custom:billing`},customSections:[{id:`custom:rentals`,label:`Rentals`},{id:`custom:fleet`,label:`Fleet`},{id:`custom:schedule`,label:`Schedule`},{id:`custom:billing`,label:`Billing`}],items:{"item:commerce:Lease":{label:`Rentals`,description:`Every rental out the gate, with the dates and what is due.`},"item:commerce:Estimate":{label:`Quotes`,description:`Quotes for a hire, ready to become a rental when accepted.`},"item:products:Product":{label:`Equipment`,description:`The machines and tools you hire out, with the daily rate.`},"item:inventory:StockLevel":{label:`Availability`,description:`What is in the yard, out on hire or in for service.`},"item:commerce:Vendor":{label:`Suppliers`,description:`The dealers and parts suppliers you buy from.`},"item:commerce:PurchaseOrder":{label:`Equipment & parts orders`,description:`Machines and parts you have ordered and when they arrive.`},"item:events:Event":{label:`Pickups & returns`,description:`Pickups, returns and deliveries on the calendar, by day.`},"item:events:EventType":{label:`Booking types`,description:`The kinds of booking you make, like a pickup, a return or a delivery.`}},sections:{"custom:rentals":{icon:`fileText`},"custom:fleet":{icon:`truck`},"custom:schedule":{icon:`calendar`},"custom:billing":{icon:`receipt`}}}}},{id:`nonprofit`,name:`Non-profit`,icon:`heart`,summary:`Members, memberships, dues and donations, events and the books for a club, society or charity.`,keywords:[`non-profit`,`nonprofit`,`charity`,`club`,`society`,`association`,`members`,`membership dues`,`donations`,`donors`,`fundraiser`,`volunteers`,`community group`],settings:{currency:`USD`,paymentTerms:`Due on receipt`,taxRate:0},sectionDescriptions:{"custom:members":`Members and their memberships.`,"custom:events":`Meetings, fundraisers and volunteer days.`,"custom:giving":`Dues, pledges and the money that comes in.`},document:{$schema:`https://s-m-r-t.dev/schemas/cookbook/v1.json`,version:1,theme:{custom:{primary:`#1d4ed8`}},recipes:[`commerce.agreements`,`commerce.customers`,`commerce.invoicing`,`events.calendar`,`ledgers.bookkeeping`],features:[],policies:[{objectRef:`@happyvertical/smrt-commerce:Agreement`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`creditLimit`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`customerType`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`paymentTerms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`taxExempt`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`taxId`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:Estimate`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`currency`,scopeType:`app`,defaultValue:`"USD"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:Lease`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:Order`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`},{objectRef:`@happyvertical/smrt-commerce:WholesaleOrder`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Due on receipt"`}],layout:{version:1,sectionOrder:[`custom:members`,`custom:events`,`custom:giving`,`section:accounting`],itemOrder:{"custom:members":[`item:commerce:Customer`,`item:commerce:Agreement`],"custom:events":[`item:events:Event`,`item:events:EventSeries`,`item:events:EventType`],"custom:giving":[`item:commerce:Invoice`,`item:commerce:Payment`]},hidden:[`item:commerce:Contract`],moved:{"item:commerce:Customer":`custom:members`,"item:commerce:Agreement":`custom:members`,"item:events:Event":`custom:events`,"item:events:EventSeries":`custom:events`,"item:events:EventType":`custom:events`,"item:commerce:Invoice":`custom:giving`,"item:commerce:Payment":`custom:giving`},customSections:[{id:`custom:members`,label:`Members`},{id:`custom:events`,label:`Events`},{id:`custom:giving`,label:`Giving`}],items:{"item:commerce:Customer":{label:`Members`,description:`Your members and donors, with how to reach them.`},"item:commerce:Agreement":{label:`Memberships`,description:`Annual, family and student memberships, with who holds them and when they renew.`},"item:events:Event":{label:`Events`,description:`Meetings, fundraisers and volunteer days, with who is coming.`},"item:events:EventSeries":{label:`Regular meetings`,description:`Meetings that repeat, like the monthly meetup, set up once.`},"item:events:EventType":{label:`Event types`,description:`The kinds of event you run, like a fundraiser or a clean-up.`},"item:commerce:Invoice":{label:`Dues & pledges`,description:`Dues and pledges you have asked for and which are still owed.`},"item:commerce:Payment":{label:`Donations & payments`,description:`Money that has come in, from dues, gifts and tickets.`}},sections:{"custom:members":{icon:`users`},"custom:events":{icon:`calendar`},"custom:giving":{icon:`creditCard`}}}}},{id:`agency`,name:`Agency`,icon:`pencil`,summary:`Clients, proposals, retainers, projects, time, expenses and invoices for a consulting or design studio.`,keywords:[`agency`,`design agency`,`consulting`,`consultant`,`consultancy`,`studio`,`design studio`,`freelance`,`retainer`,`proposals`,`billable hours`,`timesheets`,`creative`],settings:{currency:`USD`,paymentTerms:`Net 30`,taxRate:0},sectionDescriptions:{"custom:accounts":`Clients, proposals and the contracts you hold with them.`,"custom:work":`Projects, tasks, time and costs.`,"custom:meetings":`Meetings with clients and the studio.`,"custom:billing":`Invoices and the payments against them.`},document:{$schema:`https://s-m-r-t.dev/schemas/cookbook/v1.json`,version:1,theme:{custom:{primary:`#4338ca`}},recipes:[`commerce.agreements`,`commerce.customers`,`commerce.estimates`,`commerce.invoicing`,`commerce.vendors`,`events.calendar`,`expenses.tracking`,`ledgers.bookkeeping`,`projects.tracker`,`timesheets.time-entries`],features:[],policies:[{objectRef:`@happyvertical/smrt-commerce:Agreement`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 30"`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`creditLimit`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`customerType`,scopeType:`app`,visibility:`hidden`},{objectRef:`@happyvertical/smrt-commerce:Customer`,fieldName:`paymentTerms`,scopeType:`app`,defaultValue:`"Net 30"`},{objectRef:`@happyvertical/smrt-commerce:Estimate`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 30"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`currency`,scopeType:`app`,defaultValue:`"USD"`},{objectRef:`@happyvertical/smrt-commerce:Invoice`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 30"`},{objectRef:`@happyvertical/smrt-commerce:Lease`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 30"`},{objectRef:`@happyvertical/smrt-commerce:Order`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 30"`},{objectRef:`@happyvertical/smrt-commerce:WholesaleOrder`,fieldName:`terms`,scopeType:`app`,defaultValue:`"Net 30"`}],layout:{version:1,sectionOrder:[`custom:accounts`,`custom:work`,`custom:meetings`,`custom:billing`,`section:accounting`],itemOrder:{"custom:accounts":[`item:commerce:Customer`,`item:commerce:Estimate`,`item:commerce:Agreement`],"custom:work":[`item:projects:Project`,`item:projects:Issue`,`item:timesheets:ServiceTimeEntry`,`item:expenses:Expense`],"custom:meetings":[`item:events:Event`,`item:events:EventType`],"custom:billing":[`item:commerce:Invoice`,`item:commerce:Payment`,`item:commerce:Vendor`]},hidden:[`item:commerce:Contract`,`item:projects:Label`,`item:events:EventSeries`],moved:{"item:commerce:Customer":`custom:accounts`,"item:commerce:Estimate":`custom:accounts`,"item:commerce:Agreement":`custom:accounts`,"item:projects:Project":`custom:work`,"item:projects:Issue":`custom:work`,"item:timesheets:ServiceTimeEntry":`custom:work`,"item:expenses:Expense":`custom:work`,"item:events:Event":`custom:meetings`,"item:events:EventType":`custom:meetings`,"item:commerce:Invoice":`custom:billing`,"item:commerce:Payment":`custom:billing`,"item:commerce:Vendor":`custom:billing`},customSections:[{id:`custom:accounts`,label:`Clients`},{id:`custom:work`,label:`Work`},{id:`custom:meetings`,label:`Meetings`},{id:`custom:billing`,label:`Billing`}],items:{"item:commerce:Customer":{label:`Clients`,description:`The companies you work for, with how to reach them.`},"item:commerce:Estimate":{label:`Proposals`,description:`Proposals you have sent, ready to become a contract when accepted.`},"item:commerce:Agreement":{label:`Contracts`,description:`Retainers and statements of work, with the terms and the dates.`},"item:projects:Project":{label:`Projects`,description:`Each engagement, with what it covers and where it stands.`},"item:projects:Issue":{label:`Tasks`,description:`The work inside each project, from to-do to done.`},"item:timesheets:ServiceTimeEntry":{label:`Time entries`,description:`Hours logged by person and project, from draft to approved.`},"item:expenses:Expense":{label:`Expenses`,description:`Costs on a project, with the receipt and whether to bill them on.`},"item:events:Event":{label:`Meetings`,description:`Kickoffs, reviews and check-ins with clients, by day.`},"item:events:EventType":{label:`Meeting types`,description:`The kinds of meeting you hold, like a kickoff or a review.`},"item:commerce:Vendor":{label:`Suppliers`,description:`The printers, photographers and freelancers you buy from.`}},sections:{"custom:accounts":{icon:`users`},"custom:work":{icon:`briefcase`},"custom:meetings":{icon:`calendar`},"custom:billing":{icon:`receipt`}}}}}]}.cookbooks;function n(e){return t.find(t=>t.id===e)}function r(t){return t.document.recipes.map(t=>e.get(t)?.label??t)}export{t as n,r,n as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$ as e,B as t,Ct as n,Dt as r,E as i,F as a,Ft as o,G as s,H as c,J as l,K as u,L as d,Ot as f,R as p,T as m,U as h,W as g,X as _,Y as v,Z as y,a as b,bt as x,ct as S,d as C,dt as w,ft as T,ht as E,k as D,mt as O,pt as k,q as A,st as j,tt as M,v as N,vt as P}from"./vNEnXNLV.js";import"./xihTtKlq.js";import{i as F,t as I}from"./D0FW0z6R.js";function L(e,t,n,r=64){return n===`left`?-e>=r&&Math.abs(e)>Math.abs(t)*1.5:n===`right`?e>=r&&Math.abs(e)>Math.abs(t)*1.5:t>=r&&Math.abs(t)>Math.abs(e)*1.5}function R(e,t){let n=t,r=null;function i(e){if(n.enabled===!1||e.touches.length!==1)return;let t=e.touches[0];r={x:t.clientX,y:t.clientY}}function a(e){if(!r)return;let t=e.changedTouches[0],i=t.clientX-r.x,a=t.clientY-r.y;r=null,L(i,a,n.direction,n.threshold)&&n.onDismiss()}function o(){r=null}return e.addEventListener(`touchstart`,i,{passive:!0}),e.addEventListener(`touchend`,a),e.addEventListener(`touchcancel`,o),{update(e){n=e},destroy(){e.removeEventListener(`touchstart`,i),e.removeEventListener(`touchend`,a),e.removeEventListener(`touchcancel`,o)}}}var z=s(`<strong data-smrt-part="title" class="svelte-q9ijlg"> </strong>`),B=s(`<div class="smrt-alert__message svelte-q9ijlg" data-smrt-part="message"><!></div>`),V=s(`<div class="smrt-alert__action svelte-q9ijlg" data-smrt-part="actions"><!></div>`),H=s(`<button type="button" class="smrt-alert__dismiss svelte-q9ijlg" data-smrt-part="close" aria-label="Dismiss">×</button>`),U=s(`<div data-smrt-component="Alert"><span class="smrt-alert__marker svelte-q9ijlg" data-smrt-part="marker" aria-hidden="true"></span> <div class="smrt-alert__content svelte-q9ijlg" data-smrt-part="body"><!> <!></div> <!> <!></div>`);function W(r,s){let l=b(s,`variant`,3,`info`),u=b(s,`dismissible`,3,!1),d=b(s,`class`,3,``),f=n(()=>l()===`error`||l()===`warning`?`alert`:`status`);var p=U(),m=E(T(p),2),g=T(m),v=e=>{var t=z(),n=O(t,!0);j(()=>c(n,s.title)),h(e,t)};t(g,e=>{s.title&&e(v)});var y=E(g,2),x=e=>{var t=B(),n=T(t);a(n,()=>s.children),o(t),h(e,t)};t(y,e=>{s.children&&e(x)}),o(m);var S=E(m,2),C=e=>{var t=V(),n=T(t);a(n,()=>s.action),o(t),h(e,t)};t(S,e=>{s.action&&e(C)});var w=E(S,2),D=e=>{var t=H();_(`click`,t,function(...e){s.ondismiss?.apply(this,e)}),h(e,t)};t(w,e=>{u()&&e(D)}),o(p),j(()=>{i(p,1,`smrt-alert__root smrt-alert__${l()??``} ${d()??``}`,`svelte-q9ijlg`),N(p,`role`,e(f))}),h(r,p)}v([`click`]);var G=e=>{let t=()=>typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches,n=new Set,r=new Set,i=new Set,a=a=>{if(t())return;let o=e.getBoundingClientRect(),s=`touches`in a?a.touches[0].clientX:a.clientX,c=`touches`in a?a.touches[0].clientY:a.clientY,l=s-o.left,u=c-o.top,d=Math.max(o.width,o.height)*2.5,f=d/2,p=document.createElement(`span`);p.style.position=`absolute`,p.style.borderRadius=`50%`,p.style.pointerEvents=`none`,p.style.width=p.style.height=`${d}px`,p.style.left=`${l-f}px`,p.style.top=`${u-f}px`,p.style.backgroundColor=`var(--smrt-color-primary, currentColor)`,p.style.opacity=`0.12`,p.style.transform=`scale(0)`,p.style.transition=`transform 600ms cubic-bezier(0.4, 0, 0.2, 1), opacity 600ms linear`,p.classList.add(`smrt-ripple`),e.appendChild(p),n.add(p),requestAnimationFrame(()=>{p.style.transform=`scale(1)`});let m,h=()=>{window.removeEventListener(`mouseup`,m),window.removeEventListener(`touchend`,m),i.delete(m)};m=()=>{h(),p.style.opacity=`0`;let t=setTimeout(()=>{r.delete(t),n.delete(p),p.parentNode===e&&e.removeChild(p)},600);r.add(t)},i.add(m),window.addEventListener(`mouseup`,m,{once:!0}),window.addEventListener(`touchend`,m,{once:!0})};e.addEventListener(`mousedown`,a),e.addEventListener(`touchstart`,a,{passive:!0});let o=e.style.position,s=e.style.overflow;return(!e.style.position||e.style.position===`static`)&&(e.style.position=`relative`),e.style.overflow=`hidden`,{destroy(){e.removeEventListener(`mousedown`,a),e.removeEventListener(`touchstart`,a);for(let e of r)clearTimeout(e);r.clear();for(let e of i)window.removeEventListener(`mouseup`,e),window.removeEventListener(`touchend`,e);i.clear();for(let t of n)t.parentNode===e&&e.removeChild(t);n.clear(),e.style.position=o,e.style.overflow=s}}},K=s(`<span class="spinner svelte-1vtyna"></span>`),q=s(`<dialog class="dialog-backdrop svelte-1vtyna" aria-modal="true" tabindex="-1" data-smrt-component="ConfirmDialog"><div class="dialog-content svelte-1vtyna"><h2 class="dialog-title svelte-1vtyna"> </h2> <div class="dialog-message svelte-1vtyna"><!></div> <div class="dialog-actions svelte-1vtyna"><button type="button" class="btn btn-text svelte-1vtyna"> </button> <button type="button"><!> </button></div></div></dialog>`);function J(n,s){let u=A();f(s,!0);let d=b(s,`confirmLabel`,3,`Confirm`),p=b(s,`cancelLabel`,3,`Cancel`),m=b(s,`destructive`,3,!1),v=b(s,`loading`,3,!1),w=x(null),F=x(null),I=null;function L(){return e(w)?Array.from(e(w).querySelectorAll(`button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])`)):[]}S(()=>{let t=e(w);if(s.open&&t)return I=document.activeElement,t.showModal(),M().then(()=>{t.open&&(e(F)?.disabled?L()[0]??t:e(F))?.focus()}),()=>{t.open&&t.close(),I?.focus(),I=null}});function R(e){e.preventDefault(),e.stopPropagation(),s.oncancel?.()}function z(e){e.target===e.currentTarget&&s.oncancel?.()}function B(t){if(t.key===`Escape`){R(t);return}if(t.key!==`Tab`)return;let n=L();if(n.length===0){t.preventDefault();return}let r=n[0],i=n[n.length-1],a=document.activeElement;t.shiftKey?(a===r||!e(w)?.contains(a))&&(t.preventDefault(),i.focus()):(a===i||!e(w)?.contains(a))&&(t.preventDefault(),r.focus())}var V=g(),H=k(V),U=n=>{var r=q(),f=T(r),b=T(f),x=O(b,!0),S=E(b,2),A=T(S),M=e=>{var t=l();j(()=>c(t,s.message)),h(e,t)},I=e=>{var t=g(),n=k(t);a(n,()=>s.message),h(e,t)};t(A,e=>{typeof s.message==`string`?e(M):e(I,-1)}),o(S);var L=E(S,2),V=T(L),H=O(V,!0);D(V,e=>G?.(e));var U=E(V,2);let W;var J=T(U),Y=e=>{var t=K();h(e,t)};t(J,e=>{v()&&e(Y)});var X=E(J);o(U),C(U,e=>P(F,e),()=>e(F)),D(U,e=>G?.(e)),o(L),o(f),o(r),C(r,e=>P(w,e),()=>e(w)),j(()=>{N(r,`aria-labelledby`,`${u}-title`),N(r,`aria-describedby`,`${u}-message`),N(b,`id`,`${u}-title`),c(x,s.title),N(S,`id`,`${u}-message`),V.disabled=v(),c(H,p()),W=i(U,1,`btn btn-filled svelte-1vtyna`,null,W,{destructive:m()}),U.disabled=v(),c(X,` ${d()??``}`)}),_(`click`,r,z),_(`keydown`,r,B),y(`cancel`,r,R),_(`click`,V,function(...e){s.oncancel?.apply(this,e)}),_(`click`,U,function(...e){s.onconfirm?.apply(this,e)}),h(n,r)};t(H,e=>{s.open&&e(U)}),h(n,V),r()}v([`click`,`keydown`]);var Y=s(`<header class="modal__header modal__header--custom svelte-3xrtfb" data-smrt-part="header"><!></header>`),X=s(`<h2 class="modal__title svelte-3xrtfb" data-smrt-part="title"> </h2>`),ee=s(`<span></span>`),te=s(`<button type="button" class="modal__close svelte-3xrtfb" data-smrt-part="close"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button>`),ne=s(`<header class="modal__header svelte-3xrtfb" data-smrt-part="header"><!> <!></header>`),re=s(`<footer class="modal__footer svelte-3xrtfb" data-smrt-part="footer"><!></footer>`),ie=s(`<dialog data-smrt-component="Modal"><div class="modal__container svelte-3xrtfb"><!> <div class="modal__body svelte-3xrtfb" data-smrt-part="body"><!></div> <!></div></dialog>`);function Z(s,l){f(l,!0);let{t:u}=I(),d=b(l,`open`,15,!1),p=b(l,`size`,3,`md`),m=b(l,`placement`,3,`center`),v=b(l,`closeOnBackdrop`,3,!0),w=b(l,`closeOnEscape`,3,!0),D=b(l,`showClose`,3,!0),A=x(null);S(()=>{e(A)&&(d()&&!e(A).open?e(A).showModal():!d()&&e(A).open&&e(A).close())});function M(){d(!1),l.onClose?.()}function L(t){v()&&t.target===e(A)&&M()}function R(e){e.key===`Escape`&&w()&&(e.preventDefault(),M())}function z(e){e.preventDefault(),w()&&M()}let B={sm:`modal--sm`,md:`modal--md`,lg:`modal--lg`,xl:`modal--xl`,full:`modal--full`},V=n(()=>`modal--${m()}`);var H=ie(),U=T(H),W=T(U),G=e=>{var t=Y(),n=T(t);a(n,()=>l.header),o(t),h(e,t)},K=e=>{var n=ne(),r=T(n),i=e=>{var t=X(),n=O(t,!0);j(()=>c(n,l.title)),h(e,t)},a=e=>{var t=ee();h(e,t)};t(r,e=>{l.title?e(i):e(a,-1)});var s=E(r,2),d=e=>{var t=te();j(e=>N(t,`aria-label`,e),[()=>u(F[`ui.modal.close`])]),_(`click`,t,M),h(e,t)};t(s,e=>{D()&&e(d)}),o(n),h(e,n)};t(W,e=>{l.header?e(G):(l.title||D())&&e(K,1)});var q=E(W,2),J=T(q),Z=e=>{var t=g(),n=k(t);a(n,()=>l.children),h(e,t)};t(J,e=>{l.children&&e(Z)}),o(q);var Q=E(q,2),$=e=>{var t=re(),n=T(t);a(n,()=>l.footer),o(t),h(e,t)};t(Q,e=>{l.footer&&e($)}),o(U),o(H),C(H,e=>P(A,e),()=>e(A)),j(()=>{i(H,1,`modal ${B[p()]??``} ${e(V)??``}`,`svelte-3xrtfb`),N(H,`aria-label`,l.ariaLabel??l.title),N(H,`aria-describedby`,l.ariaDescribedBy)}),_(`click`,H,L),_(`keydown`,H,R),y(`cancel`,H,z),h(s,H),r()}v([`click`,`keydown`]);var Q=u(`<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" class="icon error svelte-ij7b4u"><circle cx="12" cy="12" r="10" stroke-width="2"></circle><path d="M12 8v4m0 4h.01" stroke-width="2" stroke-linecap="round"></path></svg>`),$=u(`<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" class="icon spinner svelte-ij7b4u"><path d="M12 2a10 10 0 0 1 10 10" stroke-width="2" stroke-linecap="round"></path></svg>`),ae=s(`<div class="progress-container svelte-ij7b4u"><div class="progress-bar svelte-ij7b4u"><div class="progress-fill svelte-ij7b4u"></div></div> <span class="progress-text svelte-ij7b4u"> </span></div>`),oe=s(`<span class="item-badge svelte-ij7b4u"> </span>`),se=s(`<div class="items-container svelte-ij7b4u" id="loading-items"></div>`),ce=s(`<p class="error-message svelte-ij7b4u" role="alert" aria-live="assertive"> </p>`),le=s(`<button type="button" class="dismiss-btn svelte-ij7b4u">Continue</button>`),ue=s(`<div role="dialog" aria-modal="true" aria-labelledby="loading-title" data-smrt-component="LoadingOverlay"><div class="overlay-backdrop svelte-ij7b4u"></div> <div class="overlay-content svelte-ij7b4u"><div class="loading-icon svelte-ij7b4u"><!></div> <h2 id="loading-title" class="title svelte-ij7b4u"> </h2> <!> <!> <!> <!></div></div>`);function de(n,a){f(a,!0);let s=b(a,`show`,3,!1),l=b(a,`message`,3,`Loading...`),u=b(a,`progress`,3,0),v=b(a,`items`,19,()=>[]),C=b(a,`error`,3,null),D=b(a,`dismissible`,3,!1),A=b(a,`class`,3,``),M=x(!1);S(()=>{s()||P(M,!1)});function F(){D()&&(P(M,!0),a.ondismiss?.())}function I(e){e.key===`Escape`&&D()&&(e.preventDefault(),F())}var L=g();y(`keydown`,w,I);var R=k(L),z=n=>{var r=ue(),a=E(T(r),2),s=T(a),f=T(s),g=e=>{var t=Q();h(e,t)},y=e=>{var t=$();h(e,t)};t(f,e=>{C()?e(g):e(y,-1)}),o(s);var b=E(s,2),x=O(b,!0),S=E(b,2),w=e=>{var t=ae(),n=T(t),r=T(n);let i;o(n);var a=E(n,2),s=O(a);o(t),j(()=>{i=m(r,``,i,{width:`${u()??``}%`}),c(s,`${u()??``}%`)}),h(e,t)};t(S,e=>{u()>0&&e(w)});var k=E(S,2),M=t=>{var n=se();d(n,21,v,p,(t,n)=>{var r=oe(),i=O(r,!0);j(()=>c(i,e(n))),h(t,r)}),o(n),h(t,n)};t(k,e=>{v().length>0&&e(M)});var P=E(k,2),I=e=>{var t=ce(),n=O(t,!0);j(()=>c(n,C().message)),h(e,t)};t(P,e=>{C()&&e(I)});var L=E(P,2),R=e=>{var t=le();_(`click`,t,F),h(e,t)};t(L,e=>{D()&&e(R)}),o(a),o(r),j(()=>{i(r,1,`loading-overlay ${A()??``}`,`svelte-ij7b4u`),N(r,`aria-describedby`,v().length>0?`loading-items`:void 0),N(r,`aria-busy`,!C()),c(x,l())}),h(n,r)};t(R,t=>{s()&&!e(M)&&t(z)}),h(n,L),r()}v([`click`]);var fe=s(`<span class="phone-sheet__grabber svelte-1iapwin" aria-hidden="true"></span>`),pe=s(`<div role="dialog" aria-modal="false" tabindex="-1" data-escape-scope="" data-testid="phone-sheet" data-smrt-component="PhoneSheet"><header class="phone-sheet__header svelte-1iapwin"><!> <h2 class="svelte-1iapwin"> </h2> <button type="button" class="phone-sheet__close svelte-1iapwin"><svg viewBox="0 0 24 24" width="22" height="22" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M18 6 6 18M6 6l12 12"></path></svg></button></header> <div class="phone-sheet__body svelte-1iapwin"><!></div></div>`);function me(n,s){let l=A();f(s,!0);let u=b(s,`variant`,3,`page`),{t:d}=I(),p=`phone-sheet-${l}`,m=x(void 0),g=null;S(()=>{if(s.open)return g=document.activeElement instanceof HTMLElement?document.activeElement:null,M().then(()=>e(m)?.focus({preventScroll:!0})),()=>{let e=g;g=null,e&&document.contains(e)&&e.focus({preventScroll:!0})}});function v(e){e.key!==`Escape`||e.defaultPrevented||(e.preventDefault(),e.stopPropagation(),s.onclose())}var y=pe();let w;var k=T(y),L=T(k),z=e=>{var t=fe();h(e,t)};t(L,e=>{u()===`sheet`&&e(z)});var B=E(L,2),V=O(B,!0),H=E(B,2);o(k),D(k,(e,t)=>R?.(e,t),()=>({direction:`down`,onDismiss:s.onclose,enabled:u()===`sheet`}));var U=E(k,2),W=T(U);a(W,()=>s.children),o(U),o(y),C(y,e=>P(m,e),()=>e(m)),j(e=>{N(y,`id`,s.id),w=i(y,1,`phone-sheet phone-sheet--${u()??``}`,`svelte-1iapwin`,w,{open:s.open}),N(y,`aria-labelledby`,p),N(y,`aria-hidden`,!s.open),y.inert=!s.open,N(B,`id`,p),c(V,s.title),N(H,`aria-label`,e)},[()=>s.closeLabel??d(F[`ui.phone_sheet.close`],{title:s.title})]),_(`keydown`,y,v),_(`click`,H,function(...e){s.onclose?.apply(this,e)}),h(n,y),r()}v([`keydown`,`click`]),v([`focusin`,`focusout`,`click`]),v([`keydown`,`click`]);export{G as a,J as i,de as n,W as o,Z as r,R as s,me as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{D as e,M as t,w as n}from"./
|
|
1
|
+
import{D as e,M as t,w as n}from"./DYuawOB3.js";import{r}from"./BUhghcIm.js";var i=`@happyvertical/smrt-assets:Asset`,a=`@happyvertical/smrt-products:ProductAsset`,o=`assets.library`;function s(e,t,n){let r=new Map(t.map(e=>[e.id,e]));return n.filter(t=>t.productId===e).flatMap(e=>{let t=r.get(String(e.assetId)),n=t?.sourceUri;return!t||typeof n!=`string`?[]:[{id:t.id,name:String(t.name??`Product image`),sourceUri:n,mimeType:String(t.mimeType??`image/*`),description:String(t.description??``),sortOrder:Number(e.sortOrder??0)}]}).sort((e,t)=>e.sortOrder-t.sortOrder||e.name.localeCompare(t.name))}function c(e,t,n,o){return[{op:`save`,as:`asset`,model:r(i),values:{name:t.name||`Product image`,sourceUri:n,mimeType:t.type||`image/*`,description:`Image selected for this product in the browser demo.`,sourceType:`browser-demo`}},{op:`save`,model:r(a),values:{productId:e,assetId:{ref:`asset`},relationship:`gallery`,sortOrder:o}}]}function l(e,t){return t.filter(t=>t.productId===e).flatMap(e=>[{op:`delete`,model:r(a),id:e.id},{op:`delete`,model:r(i),id:String(e.assetId)}])}var u=`@happyvertical/smrt-products:Product`,d=`@happyvertical/smrt-products:ProductVariant`,f=`@happyvertical/smrt-products:Sku`,p=`@happyvertical/smrt-inventory:StockLevel`,m=`@happyvertical/smrt-profiles:ProfileType`,h=`@happyvertical/smrt-inventory:InventoryLocation`;function g(r){return{[h]:{from:[],make:()=>(t().locations??[]).map((e,t)=>({id:n(`${h}:sample:${t}`),...e,placeId:``,active:!0}))},[f]:{from:[r(u)],make:([e])=>(e??[]).map((e,t)=>({id:n(`${f}:sample:${e.id}`),productId:e.id,code:`SKU-${String(t+1).padStart(3,`0`)}`,barcode:``,name:String(e.name??``),attributes:``,parentSkuId:``,active:!0}))},[p]:{from:[r(f),r(h)],make:([r,i])=>{let a=t(),o=new Map(a.products.map(e=>[e.name,e.at]));return(r??[]).flatMap(t=>(i??[]).flatMap((r,i)=>{let a=e(`${t.id}:${r.id}`),s=o.get(String(t.name));if(s!==void 0){if(s!==i)return[]}else if(i>0&&a%3==0)return[];let c=10+a%4*5;return[{id:n(`${p}:sample:${t.id}:${r.id}`),skuId:t.id,locationId:r.id,state:`available`,qty:a%5==0?c-3:c+a%40,reorderPoint:c,reorderQuantity:c*3}]}))}}}}function _(e,t){let n=new Map(e.map(e=>[e.id,e.productId])),r=new Map;for(let e of t){let t=n.get(String(e.skuId));typeof t==`string`&&r.set(t,(r.get(t)??0)+Number(e.qty??0))}return r}function v(e,t,n,r=[]){return[...l(e,r),...t.flatMap(e=>[{op:`delete`,model:n(p),match:{skuId:e.id}},{op:`delete`,model:n(f),id:e.id}]),{op:`delete`,model:n(d),match:{productId:e}},{op:`delete`,model:n(u),id:e}]}export{d as a,g as c,a as d,c as f,p as i,i as l,m as n,v as o,s as p,f as r,_ as s,u as t,o as u};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{$ as e,B as t,Ct as n,D as r,Dt as i,E as a,Ft as o,G as s,H as c,J as l,L as u,Ot as d,Pt as f,U as p,W as m,X as h,Y as g,a as _,b as v,bt as y,ct as b,ft as x,ht as S,mt as C,pt as w,st as T,v as E,vt as D}from"./vNEnXNLV.js";import"./xihTtKlq.js";import{n as O}from"./
|
|
1
|
+
import{$ as e,B as t,Ct as n,D as r,Dt as i,E as a,Ft as o,G as s,H as c,J as l,L as u,Ot as d,Pt as f,U as p,W as m,X as h,Y as g,a as _,b as v,bt as y,ct as b,ft as x,ht as S,mt as C,pt as w,st as T,v as E,vt as D}from"./vNEnXNLV.js";import"./xihTtKlq.js";import{n as O}from"./DfCLzLZc.js";import{t as k}from"./D-3Ri0zJ.js";import{i as A,v as j,y as M}from"./CF6zSg_o.js";import{C as N,D as P,E as F,O as I,T as L,_ as R,i as z,k as B,n as V,r as ee,t as H,v as U,w as W}from"./c57ZlocB.js";import{et as G}from"./Dh5fne6n.js";var te=s(`<p class="notice svelte-19u3zp7" role="status"> </p>`),K=s(`<option> </option>`),ne=s(`<label class="svelte-19u3zp7">Assistant mode <!></label> <p class="meta svelte-19u3zp7">Changing modes happens only when you choose it here.</p>`,1),re=s(`<p class="status svelte-19u3zp7">Inference off</p> <p class="meta svelte-19u3zp7">Build, edit, validate and export your cookbook without a model. No
|
|
2
2
|
provider is contacted and no browser model is downloaded.</p>`,1),ie=s(`<p class="status svelte-19u3zp7">Server</p> <p class="meta svelte-19u3zp7">This site's server answers the assistant. What you type, and a short
|
|
3
3
|
summary of your plan, is sent to it. Nothing is downloaded.</p>`,1),ae=s(`<p class="meta svelte-19u3zp7">A key is saved for another address, so it is not used here. Paste it again for this address.</p>`),oe=s(`<div class="field svelte-19u3zp7"><!> <!></div> <!> <p class="meta svelte-19u3zp7"> <button class="link svelte-19u3zp7" type="button">Forget the key</button></p>`,1),se=s(`<p class="meta svelte-19u3zp7"><strong>Browser access.</strong> </p>`),ce=s(`<p> </p>`),le=s(`<p class="status svelte-19u3zp7" role="status"> </p>`),ue=s(`<label class="svelte-19u3zp7">Model provider <!></label> <div class="field svelte-19u3zp7"><!> <!></div> <div class="field svelte-19u3zp7"><!> <!></div> <!> <!> <p class="meta svelte-19u3zp7">What you type, and a short summary of your plan, is sent to this
|
|
4
4
|
endpoint.</p> <!> <!> <div class="actions svelte-19u3zp7"><!> <!></div>`,1),de=s(`<p role="status" class="svelte-19u3zp7">This browser has no WebGPU, which the model needs. Try a recent
|