@happyvertical/smrt-planner 0.57.11 → 0.57.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (618) hide show
  1. package/README.md +136 -0
  2. package/agents/assistant.md +49 -0
  3. package/agents/commands.md +2 -2
  4. package/agents/cookbook.md +3 -1
  5. package/agents/shell.md +9 -7
  6. package/app/404.html +21 -21
  7. package/app/_app/immutable/assets/2.D3Ee82Nk.css +1 -0
  8. package/app/_app/immutable/assets/AppShell.Y0ysizZK.css +1 -0
  9. package/app/_app/immutable/assets/{icons.BDx21rPt.css → icons.DFiHs25V.css} +1 -1
  10. package/app/_app/immutable/chunks/3dpUaAuL.js +1 -0
  11. package/app/_app/immutable/chunks/{BxyJ_Q7v.js → B7IsOdeU.js} +1 -1
  12. package/app/_app/immutable/chunks/{C26hsvAf.js → BErRmq61.js} +1 -1
  13. package/app/_app/immutable/chunks/BFzGVZ83.js +1 -0
  14. package/app/_app/immutable/chunks/{CUhs1G9L.js → BLDa0UGj.js} +1 -1
  15. package/app/_app/immutable/chunks/BMXU0KTB.js +1 -0
  16. package/app/_app/immutable/chunks/{D-G7Teh9.js → B_D0zDev.js} +1 -1
  17. package/app/_app/immutable/chunks/{DdoIOUTJ.js → BmSVFsOo.js} +2 -2
  18. package/app/_app/immutable/chunks/{CsaWd8kG.js → Bs5WxZDd.js} +1 -1
  19. package/app/_app/immutable/chunks/By9nPosf.js +1 -0
  20. package/app/_app/immutable/chunks/CB9iikrD.js +4 -0
  21. package/app/_app/immutable/chunks/{DJxCUhtq.js → CBxjHrPs.js} +1 -1
  22. package/app/_app/immutable/chunks/CO-Ek-HE.js +1 -0
  23. package/app/_app/immutable/chunks/{XqNh9vZm.js → COQfu_Wm.js} +1 -1
  24. package/app/_app/immutable/chunks/{Bxy7okxu.js → CQ3bytDT.js} +1 -1
  25. package/app/_app/immutable/chunks/{BA7oEUVv.js → CQOJdp0U.js} +1 -1
  26. package/app/_app/immutable/chunks/{YhY72Uhf.js → CT1UgNrl.js} +1 -1
  27. package/app/_app/immutable/chunks/{mzvl-05K.js → CrMrQCWf.js} +1 -1
  28. package/app/_app/immutable/chunks/{CMoev5sM.js → CwTLkgbW.js} +1 -1
  29. package/app/_app/immutable/chunks/{DgQFYubu.js → CyuTEXp6.js} +1 -1
  30. package/app/_app/immutable/chunks/CzqXjCHa.js +16 -0
  31. package/app/_app/immutable/chunks/DMDdJExi.js +10 -0
  32. package/app/_app/immutable/chunks/{CN11a3UB.js → DPbSjNti.js} +1 -1
  33. package/app/_app/immutable/chunks/{BpZyWfxI.js → DSKWzY3b.js} +2 -2
  34. package/app/_app/immutable/chunks/{Cv4-Km2e.js → DcYfN1RJ.js} +1 -1
  35. package/app/_app/immutable/chunks/KILEpkAY.js +26 -0
  36. package/app/_app/immutable/chunks/Uwmgg65i.js +1 -0
  37. package/app/_app/immutable/chunks/XcCBLn0p.js +2 -0
  38. package/app/_app/immutable/chunks/{CXgA0Uxg.js → aqYPhamJ.js} +1 -1
  39. package/app/_app/immutable/chunks/{BFJgNGCw.js → c4Y8im5f.js} +22 -22
  40. package/app/_app/immutable/chunks/{DnAGA0N-.js → gObjQOc6.js} +1 -1
  41. package/app/_app/immutable/chunks/{Cc_ZlCEA.js → jY83yXmZ.js} +1 -1
  42. package/app/_app/immutable/chunks/k-HWowNp.js +2 -0
  43. package/app/_app/immutable/entry/{app.C8ZDox8Z.js → app.BFvVYIAu.js} +2 -2
  44. package/app/_app/immutable/entry/start.CjnnBAhi.js +1 -0
  45. package/app/_app/immutable/nodes/0.BV0A9Ub7.js +7 -0
  46. package/app/_app/immutable/nodes/{1.BiH6Jnil.js → 1.B8lnDjjl.js} +1 -1
  47. package/app/_app/immutable/nodes/10.Dga6nV_M.js +3 -0
  48. package/app/_app/immutable/nodes/{11.DFy1XrHB.js → 11.SN8IoTqm.js} +1 -1
  49. package/app/_app/immutable/nodes/{12.1ZLx0UOF.js → 12.CmhheIVU.js} +1 -1
  50. package/app/_app/immutable/nodes/{13.XPn_VuBW.js → 13.Eh2aPgMP.js} +1 -1
  51. package/app/_app/immutable/nodes/14.ReLktgLz.js +1 -0
  52. package/app/_app/immutable/nodes/2.Dc32ZcWd.js +22 -0
  53. package/app/_app/immutable/nodes/{3.wBVp_ZTI.js → 3.CuIErDvM.js} +1 -1
  54. package/app/_app/immutable/nodes/{4.BlCuYUUW.js → 4.62S4SMa5.js} +1 -1
  55. package/app/_app/immutable/nodes/{5.CPPegUVU.js → 5.DZx2uQQp.js} +1 -1
  56. package/app/_app/immutable/nodes/{6.CJiT2vuV.js → 6.Dzh2j8Eu.js} +1 -1
  57. package/app/_app/immutable/nodes/7.BndE5mEj.js +1 -0
  58. package/app/_app/immutable/nodes/{8.CrS_Sgnk.js → 8.B79dJpLW.js} +1 -1
  59. package/app/_app/immutable/nodes/{9.DrSeLPdB.js → 9.Di1DpDGF.js} +1 -1
  60. package/app/_app/version.json +1 -1
  61. package/app/advanced-styles/index.html +24 -24
  62. package/app/ai/index.html +28 -28
  63. package/app/blueprint/index.html +22 -22
  64. package/app/cookbook/index.html +22 -22
  65. package/app/index.html +38 -40
  66. package/app/m/ads/AdDeliveryTier/index.html +27 -27
  67. package/app/m/ads/AdEvent/index.html +27 -27
  68. package/app/m/ads/AdFormat/index.html +27 -27
  69. package/app/m/ads/AdGroup/index.html +27 -27
  70. package/app/m/ads/AdVariation/index.html +27 -27
  71. package/app/m/analytics/AnalyticsDataStream/index.html +27 -27
  72. package/app/m/analytics/AnalyticsEvent/index.html +27 -27
  73. package/app/m/analytics/AnalyticsProperty/index.html +27 -27
  74. package/app/m/analytics/AnalyticsReport/index.html +27 -27
  75. package/app/m/approvals/ApprovalEvent/index.html +27 -27
  76. package/app/m/approvals/ApprovalPolicy/index.html +27 -27
  77. package/app/m/approvals/ApprovalRequest/index.html +27 -27
  78. package/app/m/assets/Asset/attachments/index.html +28 -28
  79. package/app/m/assets/Asset/index.html +27 -27
  80. package/app/m/assets/AssetAssociation/index.html +27 -27
  81. package/app/m/assets/AssetMetafield/index.html +27 -27
  82. package/app/m/assets/AssetStatus/index.html +27 -27
  83. package/app/m/assets/AssetType/index.html +27 -27
  84. package/app/m/assets/Folder/index.html +27 -27
  85. package/app/m/chat/AgentSession/index.html +27 -27
  86. package/app/m/chat/ChatMessage/index.html +27 -27
  87. package/app/m/chat/ChatParticipant/index.html +27 -27
  88. package/app/m/chat/ChatReaction/index.html +27 -27
  89. package/app/m/chat/ChatRoom/index.html +27 -27
  90. package/app/m/chat/ChatThread/index.html +27 -27
  91. package/app/m/chat/VoiceGatewayTurn/index.html +27 -27
  92. package/app/m/chat/VoiceSession/index.html +27 -27
  93. package/app/m/commerce/Agreement/index.html +27 -27
  94. package/app/m/commerce/Cart/index.html +27 -27
  95. package/app/m/commerce/Contract/index.html +27 -27
  96. package/app/m/commerce/ContractLineItem/index.html +27 -27
  97. package/app/m/commerce/Customer/index.html +27 -27
  98. package/app/m/commerce/DocumentTax/index.html +27 -27
  99. package/app/m/commerce/Estimate/index.html +27 -27
  100. package/app/m/commerce/Fulfillment/index.html +27 -27
  101. package/app/m/commerce/FulfillmentLineItem/index.html +27 -27
  102. package/app/m/commerce/HistoricalCustomerFunds/index.html +27 -27
  103. package/app/m/commerce/HistoricalCustomerFundsAllocation/index.html +27 -27
  104. package/app/m/commerce/HistoricalSalesLine/index.html +27 -27
  105. package/app/m/commerce/Invoice/index.html +27 -27
  106. package/app/m/commerce/InvoiceLineItem/index.html +27 -27
  107. package/app/m/commerce/Lease/index.html +27 -27
  108. package/app/m/commerce/LicenseSale/index.html +27 -27
  109. package/app/m/commerce/Order/index.html +27 -27
  110. package/app/m/commerce/Payment/index.html +27 -27
  111. package/app/m/commerce/PaymentAllocation/index.html +27 -27
  112. package/app/m/commerce/PaymentInstrument/index.html +27 -27
  113. package/app/m/commerce/PaymentIntent/index.html +27 -27
  114. package/app/m/commerce/Payout/index.html +27 -27
  115. package/app/m/commerce/ProductionOrder/index.html +27 -27
  116. package/app/m/commerce/PurchaseContract/index.html +27 -27
  117. package/app/m/commerce/PurchaseOrder/index.html +27 -27
  118. package/app/m/commerce/SalesContract/index.html +27 -27
  119. package/app/m/commerce/SupplierQuote/index.html +27 -27
  120. package/app/m/commerce/TaxCode/index.html +27 -27
  121. package/app/m/commerce/TaxComponent/index.html +27 -27
  122. package/app/m/commerce/TaxSettings/index.html +27 -27
  123. package/app/m/commerce/TaxSummaryReport/index.html +27 -27
  124. package/app/m/commerce/TenantPaymentAccount/index.html +27 -27
  125. package/app/m/commerce/Vendor/index.html +27 -27
  126. package/app/m/commerce/WholesaleOrder/index.html +27 -27
  127. package/app/m/content/Content/index.html +27 -27
  128. package/app/m/content/ContentContribution/index.html +27 -27
  129. package/app/m/content/ContentContributionAttachment/index.html +27 -27
  130. package/app/m/content/ContentContributionRevision/index.html +27 -27
  131. package/app/m/content/ContentContributionType/index.html +27 -27
  132. package/app/m/content/ContentContributor/index.html +27 -27
  133. package/app/m/content/ContentCorrection/index.html +27 -27
  134. package/app/m/content/ContentFeedSource/index.html +27 -27
  135. package/app/m/content/ContentGovernanceAssignment/index.html +27 -27
  136. package/app/m/content/ContentGovernancePolicy/index.html +27 -27
  137. package/app/m/content/ContentGovernanceProfile/index.html +27 -27
  138. package/app/m/content/ContentReference/index.html +27 -27
  139. package/app/m/content/ContentReview/index.html +27 -27
  140. package/app/m/content/ContentVersion/index.html +27 -27
  141. package/app/m/events/Event/index.html +27 -27
  142. package/app/m/events/EventParticipant/index.html +27 -27
  143. package/app/m/events/EventSeries/index.html +27 -27
  144. package/app/m/events/EventType/index.html +27 -27
  145. package/app/m/expenses/Expense/index.html +27 -27
  146. package/app/m/facts/Fact/index.html +27 -27
  147. package/app/m/facts/FactContent/index.html +27 -27
  148. package/app/m/facts/FactEvidence/index.html +27 -27
  149. package/app/m/facts/FactSource/index.html +27 -27
  150. package/app/m/facts/FactSubject/index.html +27 -27
  151. package/app/m/facts/FactTag/index.html +27 -27
  152. package/app/m/fields/FieldPolicy/index.html +27 -27
  153. package/app/m/fields/FieldPolicySuggestion/index.html +27 -27
  154. package/app/m/fields/FieldUsageCounter/index.html +27 -27
  155. package/app/m/images/Image/index.html +27 -27
  156. package/app/m/inventory/InventoryLocation/index.html +27 -27
  157. package/app/m/inventory/StockLevel/index.html +27 -27
  158. package/app/m/inventory/StockMovement/index.html +27 -27
  159. package/app/m/ledgers/Account/index.html +27 -27
  160. package/app/m/ledgers/Journal/index.html +27 -27
  161. package/app/m/ledgers/JournalEntry/index.html +27 -27
  162. package/app/m/ledgers/Ledger/index.html +27 -27
  163. package/app/m/manufacturing/Assembly/index.html +27 -27
  164. package/app/m/manufacturing/BillOfMaterials/index.html +27 -27
  165. package/app/m/manufacturing/BomLine/index.html +27 -27
  166. package/app/m/manufacturing/Operation/index.html +27 -27
  167. package/app/m/manufacturing/ProductionRun/index.html +27 -27
  168. package/app/m/manufacturing/ProductionRunCompletion/index.html +27 -27
  169. package/app/m/manufacturing/RoutingStep/index.html +27 -27
  170. package/app/m/marketing/Campaign/index.html +27 -27
  171. package/app/m/marketing/CampaignChannel/index.html +27 -27
  172. package/app/m/marketing/CampaignMetricSnapshot/index.html +27 -27
  173. package/app/m/messages/Account/index.html +27 -27
  174. package/app/m/messages/Attachment/index.html +27 -27
  175. package/app/m/messages/Blacklist/index.html +27 -27
  176. package/app/m/messages/Email/failed-sends/index.html +28 -28
  177. package/app/m/messages/Email/index.html +27 -27
  178. package/app/m/messages/Email/mailbox/index.html +28 -28
  179. package/app/m/messages/EmailAccount/index.html +27 -27
  180. package/app/m/messages/EmailAttachment/index.html +27 -27
  181. package/app/m/messages/EmailFolder/index.html +27 -27
  182. package/app/m/messages/Message/index.html +27 -27
  183. package/app/m/messages/MessagingEndpoint/index.html +27 -27
  184. package/app/m/messages/PersonaMessageRoute/index.html +27 -27
  185. package/app/m/messages/SlackAccount/index.html +27 -27
  186. package/app/m/messages/SlackMessage/index.html +27 -27
  187. package/app/m/messages/TelegramAccount/index.html +27 -27
  188. package/app/m/messages/Tweet/index.html +27 -27
  189. package/app/m/messages/TwitterAccount/index.html +27 -27
  190. package/app/m/messages/Whitelist/index.html +27 -27
  191. package/app/m/messages/ZulipAccount/index.html +27 -27
  192. package/app/m/places/Place/index.html +27 -27
  193. package/app/m/places/PlaceType/index.html +27 -27
  194. package/app/m/products/Category/index.html +27 -27
  195. package/app/m/products/Material/index.html +27 -27
  196. package/app/m/products/Product/index.html +27 -27
  197. package/app/m/products/Product/ingredients/index.html +28 -28
  198. package/app/m/products/ProductVariant/index.html +27 -27
  199. package/app/m/products/Sku/index.html +27 -27
  200. package/app/m/profiles/ApiKey/index.html +27 -27
  201. package/app/m/profiles/Bot/index.html +27 -27
  202. package/app/m/profiles/MagicLinkToken/index.html +27 -27
  203. package/app/m/profiles/NostrIdentity/index.html +27 -27
  204. package/app/m/profiles/OidcIdentity/index.html +27 -27
  205. package/app/m/profiles/Organization/index.html +27 -27
  206. package/app/m/profiles/Person/index.html +27 -27
  207. package/app/m/profiles/Profile/index.html +27 -27
  208. package/app/m/profiles/ProfileMetadata/index.html +27 -27
  209. package/app/m/profiles/ProfileMetafield/index.html +27 -27
  210. package/app/m/profiles/ProfileRelationship/index.html +27 -27
  211. package/app/m/profiles/ProfileRelationshipTerm/index.html +27 -27
  212. package/app/m/profiles/ProfileRelationshipType/index.html +27 -27
  213. package/app/m/profiles/ProfileType/index.html +27 -27
  214. package/app/m/projects/Comment/index.html +27 -27
  215. package/app/m/projects/Issue/index.html +27 -27
  216. package/app/m/projects/Label/index.html +27 -27
  217. package/app/m/projects/Project/index.html +27 -27
  218. package/app/m/projects/ProjectIntegration/index.html +27 -27
  219. package/app/m/projects/PullRequest/index.html +27 -27
  220. package/app/m/projects/Repository/index.html +27 -27
  221. package/app/m/properties/Property/index.html +27 -27
  222. package/app/m/properties/Zone/index.html +27 -27
  223. package/app/m/reports/RuntimeReport/index.html +27 -27
  224. package/app/m/reports/SmrtPrincipalReportRefreshTask/index.html +27 -27
  225. package/app/m/reports/SmrtReportLock/index.html +27 -27
  226. package/app/m/reports/SmrtReportRefreshTask/index.html +27 -27
  227. package/app/m/reports/SmrtReportRun/index.html +27 -27
  228. package/app/m/reports/SmrtReportSchedule/index.html +27 -27
  229. package/app/m/reports/SmrtReportWatermark/index.html +27 -27
  230. package/app/m/sales/Agreement/index.html +27 -27
  231. package/app/m/sales/AttributionException/index.html +27 -27
  232. package/app/m/sales/AttributionPolicy/index.html +27 -27
  233. package/app/m/sales/Commission/index.html +27 -27
  234. package/app/m/sales/CommissionAdjustment/index.html +27 -27
  235. package/app/m/sales/CommissionPayout/index.html +27 -27
  236. package/app/m/sales/CommissionPlan/index.html +27 -27
  237. package/app/m/sales/Earner/index.html +27 -27
  238. package/app/m/sales/EarnerSourceAttribution/index.html +27 -27
  239. package/app/m/sales/EarningEvent/index.html +27 -27
  240. package/app/m/sales/ExecutedAgreement/index.html +27 -27
  241. package/app/m/sales/Lead/index.html +27 -27
  242. package/app/m/sales/Opportunity/index.html +27 -27
  243. package/app/m/sales/OpportunityConversion/index.html +27 -27
  244. package/app/m/sales/PipelineDefinition/index.html +27 -27
  245. package/app/m/sales/PipelineStage/index.html +27 -27
  246. package/app/m/sales/Referral/index.html +27 -27
  247. package/app/m/sales/ReferralAgreement/index.html +27 -27
  248. package/app/m/sales/ReferralLink/index.html +27 -27
  249. package/app/m/sales/ReferralProgram/index.html +27 -27
  250. package/app/m/sales/ReferralTermSnapshot/index.html +27 -27
  251. package/app/m/sales/ReferralTouch/index.html +27 -27
  252. package/app/m/sales/Referrer/index.html +27 -27
  253. package/app/m/sales/SalesActivity/index.html +27 -27
  254. package/app/m/sales/SalesRepresentative/index.html +27 -27
  255. package/app/m/sites/Site/index.html +27 -27
  256. package/app/m/sites/SiteAgentBinding/index.html +27 -27
  257. package/app/m/social/OAuthState/index.html +27 -27
  258. package/app/m/social/SocialAccount/index.html +27 -27
  259. package/app/m/social/SocialPost/index.html +27 -27
  260. package/app/m/social/SocialPostAnalyticsSnapshot/index.html +27 -27
  261. package/app/m/subscriptions/BillingAdjustment/index.html +27 -27
  262. package/app/m/subscriptions/ClientCharge/index.html +27 -27
  263. package/app/m/subscriptions/CreditGrant/index.html +27 -27
  264. package/app/m/subscriptions/PricingRule/index.html +27 -27
  265. package/app/m/subscriptions/RetailCharge/index.html +27 -27
  266. package/app/m/subscriptions/SpendingPolicy/index.html +27 -27
  267. package/app/m/subscriptions/SubscriptionPlan/index.html +27 -27
  268. package/app/m/subscriptions/SubscriptionPlanVersion/index.html +27 -27
  269. package/app/m/subscriptions/TenantSubscription/index.html +27 -27
  270. package/app/m/subscriptions/TenantUsageMetric/index.html +27 -27
  271. package/app/m/support/ServiceTimeEntry/index.html +27 -27
  272. package/app/m/support/SupportAiRun/index.html +27 -27
  273. package/app/m/support/SupportAvailability/index.html +27 -27
  274. package/app/m/support/SupportCase/index.html +27 -27
  275. package/app/m/support/SupportCaseEvent/index.html +27 -27
  276. package/app/m/support/SupportChannelBinding/index.html +27 -27
  277. package/app/m/support/SupportCharge/index.html +27 -27
  278. package/app/m/support/SupportCompensation/index.html +27 -27
  279. package/app/m/support/SupportCompensationPlan/index.html +27 -27
  280. package/app/m/support/SupportEscalation/index.html +27 -27
  281. package/app/m/support/SupportInteraction/index.html +27 -27
  282. package/app/m/support/SupportPlan/index.html +27 -27
  283. package/app/m/support/SupportPolicy/index.html +27 -27
  284. package/app/m/support/SupportQualification/index.html +27 -27
  285. package/app/m/support/SupportServiceTarget/index.html +27 -27
  286. package/app/m/support/SupportSpecialist/index.html +27 -27
  287. package/app/m/support/SupportWorkLink/index.html +27 -27
  288. package/app/m/tags/Tag/index.html +27 -27
  289. package/app/m/tags/TagAlias/index.html +27 -27
  290. package/app/m/timesheets/AttendanceBreak/index.html +27 -27
  291. package/app/m/timesheets/AttendancePunch/index.html +27 -27
  292. package/app/m/timesheets/AttendanceSegment/index.html +27 -27
  293. package/app/m/timesheets/ServiceChargeSnapshot/index.html +27 -27
  294. package/app/m/timesheets/ServiceCompensationSnapshot/index.html +27 -27
  295. package/app/m/timesheets/ServiceTimeEntry/index.html +27 -27
  296. package/app/m/users/Group/index.html +27 -27
  297. package/app/m/users/GroupMember/index.html +27 -27
  298. package/app/m/users/GroupRole/index.html +27 -27
  299. package/app/m/users/Membership/index.html +27 -27
  300. package/app/m/users/MembershipOverride/index.html +27 -27
  301. package/app/m/users/Permission/index.html +27 -27
  302. package/app/m/users/Role/index.html +27 -27
  303. package/app/m/users/RolePermission/index.html +27 -27
  304. package/app/m/users/Session/index.html +27 -27
  305. package/app/m/users/Tenant/index.html +27 -27
  306. package/app/m/users/TenantIntegration/index.html +27 -27
  307. package/app/m/users/TenantPermissionOverride/index.html +27 -27
  308. package/app/m/users/User/index.html +27 -27
  309. package/app/m/video/Character/index.html +27 -27
  310. package/app/m/video/CharacterAsset/index.html +27 -27
  311. package/app/m/video/CompositeJob/index.html +27 -27
  312. package/app/m/video/Performer/index.html +27 -27
  313. package/app/m/video/PerformerAsset/index.html +27 -27
  314. package/app/m/video/Scene/index.html +27 -27
  315. package/app/m/video/SceneAsset/index.html +27 -27
  316. package/app/m/video/VideoComposition/index.html +27 -27
  317. package/app/m/video/VideoCompositionAsset/index.html +27 -27
  318. package/app/m/video/VideoSequence/index.html +27 -27
  319. package/app/m/video/VideoSequenceAsset/index.html +27 -27
  320. package/app/m/video/VideoShot/index.html +27 -27
  321. package/app/m/video/VideoShotAsset/index.html +27 -27
  322. package/app/m/video/VideoShotCharacter/index.html +27 -27
  323. package/app/m/video/VideoWorkflow/index.html +27 -27
  324. package/app/m/voice/VoiceOutput/index.html +27 -27
  325. package/app/m/voice/VoiceProfile/index.html +27 -27
  326. package/app/m/voice/VoiceSample/index.html +27 -27
  327. package/app/mcp.html +2 -2
  328. package/app/packages/ads/index.html +24 -24
  329. package/app/packages/analytics/index.html +24 -24
  330. package/app/packages/approvals/index.html +24 -24
  331. package/app/packages/assets/index.html +24 -24
  332. package/app/packages/chat/index.html +24 -24
  333. package/app/packages/comments/index.html +24 -24
  334. package/app/packages/commerce/index.html +24 -24
  335. package/app/packages/content/index.html +24 -24
  336. package/app/packages/events/index.html +24 -24
  337. package/app/packages/expenses/index.html +24 -24
  338. package/app/packages/facts/index.html +24 -24
  339. package/app/packages/fields/index.html +24 -24
  340. package/app/packages/human-resources/index.html +24 -24
  341. package/app/packages/images/index.html +24 -24
  342. package/app/packages/index.html +23 -23
  343. package/app/packages/ingestion/index.html +24 -24
  344. package/app/packages/inventory/index.html +24 -24
  345. package/app/packages/ledgers/index.html +24 -24
  346. package/app/packages/manufacturing/index.html +24 -24
  347. package/app/packages/marketing/index.html +24 -24
  348. package/app/packages/messages/index.html +24 -24
  349. package/app/packages/places/index.html +24 -24
  350. package/app/packages/preferences/index.html +24 -24
  351. package/app/packages/products/index.html +24 -24
  352. package/app/packages/profiles/index.html +24 -24
  353. package/app/packages/projects/index.html +24 -24
  354. package/app/packages/properties/index.html +24 -24
  355. package/app/packages/reports/index.html +24 -24
  356. package/app/packages/sales/index.html +24 -24
  357. package/app/packages/sites/index.html +24 -24
  358. package/app/packages/social/index.html +24 -24
  359. package/app/packages/subscriptions/index.html +24 -24
  360. package/app/packages/support/index.html +24 -24
  361. package/app/packages/tags/index.html +24 -24
  362. package/app/packages/timesheets/index.html +24 -24
  363. package/app/packages/users/index.html +24 -24
  364. package/app/packages/video/index.html +24 -24
  365. package/app/packages/voice/index.html +24 -24
  366. package/app/packages/webhooks/index.html +24 -24
  367. package/app/recipes/account-access/help/index.html +24 -24
  368. package/app/recipes/account-access/index.html +26 -26
  369. package/app/recipes/activity/help/index.html +24 -24
  370. package/app/recipes/activity/index.html +26 -26
  371. package/app/recipes/agreements/help/index.html +24 -24
  372. package/app/recipes/agreements/index.html +26 -26
  373. package/app/recipes/analytics.reports/help/index.html +24 -24
  374. package/app/recipes/analytics.reports/index.html +26 -26
  375. package/app/recipes/assets/help/index.html +24 -24
  376. package/app/recipes/assets/index.html +26 -26
  377. package/app/recipes/billing/help/index.html +24 -24
  378. package/app/recipes/billing/index.html +26 -26
  379. package/app/recipes/chat.assistant/help/index.html +24 -24
  380. package/app/recipes/chat.assistant/index.html +26 -26
  381. package/app/recipes/comments/help/index.html +24 -24
  382. package/app/recipes/comments/index.html +26 -26
  383. package/app/recipes/commerce.customers/help/index.html +24 -24
  384. package/app/recipes/commerce.customers/index.html +26 -26
  385. package/app/recipes/commerce.estimates/help/index.html +24 -24
  386. package/app/recipes/commerce.estimates/index.html +26 -26
  387. package/app/recipes/commerce.purchases/help/index.html +24 -24
  388. package/app/recipes/commerce.purchases/index.html +26 -26
  389. package/app/recipes/commerce.sales/help/index.html +24 -24
  390. package/app/recipes/commerce.sales/index.html +26 -26
  391. package/app/recipes/commerce.vendors/help/index.html +24 -24
  392. package/app/recipes/commerce.vendors/index.html +26 -26
  393. package/app/recipes/commerce.wholesale/help/index.html +24 -24
  394. package/app/recipes/commerce.wholesale/index.html +26 -26
  395. package/app/recipes/events.calendar/help/index.html +24 -24
  396. package/app/recipes/events.calendar/index.html +26 -26
  397. package/app/recipes/expenses.tracking/help/index.html +24 -24
  398. package/app/recipes/expenses.tracking/index.html +26 -26
  399. package/app/recipes/fields.form-customization/help/index.html +24 -24
  400. package/app/recipes/fields.form-customization/index.html +26 -26
  401. package/app/recipes/ingestion/help/index.html +24 -24
  402. package/app/recipes/ingestion/index.html +26 -26
  403. package/app/recipes/integrations/help/index.html +24 -24
  404. package/app/recipes/integrations/index.html +26 -26
  405. package/app/recipes/inventory.stock/help/index.html +24 -24
  406. package/app/recipes/inventory.stock/index.html +26 -26
  407. package/app/recipes/ledgers.bookkeeping/help/index.html +24 -24
  408. package/app/recipes/ledgers.bookkeeping/index.html +26 -26
  409. package/app/recipes/messages/help/index.html +24 -24
  410. package/app/recipes/messages/index.html +26 -26
  411. package/app/recipes/products/help/index.html +24 -24
  412. package/app/recipes/products/index.html +26 -26
  413. package/app/recipes/projects.tracker/help/index.html +24 -24
  414. package/app/recipes/projects.tracker/index.html +26 -26
  415. package/app/recipes/reports.materialized/help/index.html +24 -24
  416. package/app/recipes/reports.materialized/index.html +26 -26
  417. package/app/recipes/reports.runtime/help/index.html +24 -24
  418. package/app/recipes/reports.runtime/index.html +26 -26
  419. package/app/recipes/sales.pipeline/help/index.html +24 -24
  420. package/app/recipes/sales.pipeline/index.html +26 -26
  421. package/app/recipes/tags.taxonomy/help/index.html +24 -24
  422. package/app/recipes/tags.taxonomy/index.html +26 -26
  423. package/app/recipes/team-collaboration/help/index.html +24 -24
  424. package/app/recipes/team-collaboration/index.html +26 -26
  425. package/app/recipes/timesheets.time-entries/help/index.html +24 -24
  426. package/app/recipes/timesheets.time-entries/index.html +26 -26
  427. package/app/s/custom-accounts/index.html +23 -23
  428. package/app/s/custom-appointments/index.html +23 -23
  429. package/app/s/custom-billing/index.html +23 -23
  430. package/app/s/custom-bookings/index.html +23 -23
  431. package/app/s/custom-buying/index.html +23 -23
  432. package/app/s/custom-checkout/index.html +23 -23
  433. package/app/s/custom-classes/index.html +23 -23
  434. package/app/s/custom-clients/index.html +23 -23
  435. package/app/s/custom-events/index.html +23 -23
  436. package/app/s/custom-fleet/index.html +23 -23
  437. package/app/s/custom-gigs/index.html +23 -23
  438. package/app/s/custom-giving/index.html +23 -23
  439. package/app/s/custom-instruments/index.html +23 -23
  440. package/app/s/custom-jobs/index.html +23 -23
  441. package/app/s/custom-kitchen/index.html +23 -23
  442. package/app/s/custom-lessons/index.html +23 -23
  443. package/app/s/custom-material/index.html +23 -23
  444. package/app/s/custom-meetings/index.html +23 -23
  445. package/app/s/custom-members/index.html +23 -23
  446. package/app/s/custom-merch/index.html +23 -23
  447. package/app/s/custom-money/index.html +23 -23
  448. package/app/s/custom-paint/index.html +23 -23
  449. package/app/s/custom-parts/index.html +23 -23
  450. package/app/s/custom-rentals/index.html +23 -23
  451. package/app/s/custom-roastery/index.html +23 -23
  452. package/app/s/custom-schedule/index.html +23 -23
  453. package/app/s/custom-shelf/index.html +23 -23
  454. package/app/s/custom-shop/index.html +23 -23
  455. package/app/s/custom-students/index.html +23 -23
  456. package/app/s/custom-wholesale/index.html +23 -23
  457. package/app/s/custom-work/index.html +23 -23
  458. package/app/s/custom-yard/index.html +23 -23
  459. package/app/s/section-access-control/index.html +23 -23
  460. package/app/s/section-account-security/index.html +23 -23
  461. package/app/s/section-accounting/index.html +23 -23
  462. package/app/s/section-activity/index.html +23 -23
  463. package/app/s/section-agreements/index.html +23 -23
  464. package/app/s/section-analytics/index.html +23 -23
  465. package/app/s/section-assets/index.html +23 -23
  466. package/app/s/section-billing/index.html +23 -23
  467. package/app/s/section-calendar/index.html +23 -23
  468. package/app/s/section-catalog/index.html +23 -23
  469. package/app/s/section-chat.assistant/index.html +23 -23
  470. package/app/s/section-comments/index.html +23 -23
  471. package/app/s/section-fields.form-customization/index.html +23 -23
  472. package/app/s/section-ingestion/index.html +23 -23
  473. package/app/s/section-integrations/index.html +23 -23
  474. package/app/s/section-messages/index.html +23 -23
  475. package/app/s/section-more/index.html +23 -23
  476. package/app/s/section-operations/index.html +23 -23
  477. package/app/s/section-projects/index.html +23 -23
  478. package/app/s/section-purchasing/index.html +23 -23
  479. package/app/s/section-reports.materialized/index.html +23 -23
  480. package/app/s/section-reports.runtime/index.html +23 -23
  481. package/app/s/section-sales/index.html +23 -23
  482. package/app/s/section-taxonomy/index.html +23 -23
  483. package/app/s/section-team/index.html +23 -23
  484. package/app/s/section-work/index.html +23 -23
  485. package/dist/ai/instance.d.ts.map +1 -1
  486. package/dist/ai/instance.js +2 -0
  487. package/dist/assistant/change.d.ts +2 -0
  488. package/dist/assistant/change.d.ts.map +1 -1
  489. package/dist/assistant/change.js +5 -0
  490. package/dist/assistant/coaching.d.ts +7 -0
  491. package/dist/assistant/coaching.d.ts.map +1 -0
  492. package/dist/assistant/coaching.js +42 -0
  493. package/dist/assistant/prompt.d.ts.map +1 -1
  494. package/dist/assistant/prompt.js +1 -0
  495. package/dist/assistant/session.svelte.d.ts +4 -1
  496. package/dist/assistant/session.svelte.d.ts.map +1 -1
  497. package/dist/assistant/session.svelte.js +5 -1
  498. package/dist/assistant/starters.d.ts +7 -0
  499. package/dist/assistant/starters.d.ts.map +1 -0
  500. package/dist/assistant/starters.js +33 -0
  501. package/dist/assistant/transport.d.ts +37 -2
  502. package/dist/assistant/transport.d.ts.map +1 -1
  503. package/dist/assistant/transport.js +257 -56
  504. package/dist/catalog/catalog.json +38 -38
  505. package/dist/components/BrowserAssistant.svelte +20 -0
  506. package/dist/components/BrowserAssistant.svelte.d.ts.map +1 -1
  507. package/dist/components/ExportPanel.svelte +176 -118
  508. package/dist/components/ExportPanel.svelte.d.ts +8 -0
  509. package/dist/components/ExportPanel.svelte.d.ts.map +1 -1
  510. package/dist/components/HeaderIconLink.svelte +8 -0
  511. package/dist/components/HeaderIconLink.svelte.d.ts +1 -0
  512. package/dist/components/HeaderIconLink.svelte.d.ts.map +1 -1
  513. package/dist/components/ProjectControls.svelte +133 -0
  514. package/dist/components/ProjectControls.svelte.d.ts +15 -0
  515. package/dist/components/ProjectControls.svelte.d.ts.map +1 -0
  516. package/dist/components/SectionOverview.svelte +4 -5
  517. package/dist/components/SectionOverview.svelte.d.ts +1 -1
  518. package/dist/components/SectionOverview.svelte.d.ts.map +1 -1
  519. package/dist/components/SettingsPanel.svelte +37 -1
  520. package/dist/components/SettingsPanel.svelte.d.ts +7 -1
  521. package/dist/components/SettingsPanel.svelte.d.ts.map +1 -1
  522. package/dist/cookbook/file.d.ts +5 -0
  523. package/dist/cookbook/file.d.ts.map +1 -1
  524. package/dist/cookbook/file.js +9 -2
  525. package/dist/cookbook/store.svelte.d.ts +4 -1
  526. package/dist/cookbook/store.svelte.d.ts.map +1 -1
  527. package/dist/cookbook/store.svelte.js +9 -10
  528. package/dist/core/index.d.ts +1 -0
  529. package/dist/core/index.d.ts.map +1 -1
  530. package/dist/core/index.js +1 -0
  531. package/dist/core/prompt.d.ts.map +1 -1
  532. package/dist/core/prompt.js +10 -0
  533. package/dist/core/reply.d.ts +2 -0
  534. package/dist/core/reply.d.ts.map +1 -1
  535. package/dist/core/reply.js +4 -0
  536. package/dist/data/packs.d.ts.map +1 -1
  537. package/dist/data/packs.js +14 -7
  538. package/dist/data/planner-source.d.ts.map +1 -1
  539. package/dist/data/planner-source.js +4 -3
  540. package/dist/data/sample-context.d.ts +84 -0
  541. package/dist/data/sample-context.d.ts.map +1 -0
  542. package/dist/data/sample-context.js +106 -0
  543. package/dist/data/source.d.ts.map +1 -1
  544. package/dist/data/source.js +2 -0
  545. package/dist/index.d.ts +8 -1
  546. package/dist/index.d.ts.map +1 -1
  547. package/dist/index.js +3 -0
  548. package/dist/library/state.svelte.d.ts.map +1 -1
  549. package/dist/library/state.svelte.js +3 -3
  550. package/dist/overviews/definitions.d.ts +2 -2
  551. package/dist/overviews/definitions.d.ts.map +1 -1
  552. package/dist/overviews/definitions.js +19 -31
  553. package/dist/overviews/page.d.ts.map +1 -1
  554. package/dist/overviews/page.js +4 -1
  555. package/dist/overviews/registry.d.ts +1 -1
  556. package/dist/overviews/registry.js +3 -3
  557. package/dist/overviews/validate.d.ts.map +1 -1
  558. package/dist/overviews/validate.js +15 -2
  559. package/dist/planner/Planner.svelte +46 -4
  560. package/dist/planner/Planner.svelte.d.ts.map +1 -1
  561. package/dist/planner/PlannerControls.svelte +18 -2
  562. package/dist/planner/PlannerControls.svelte.d.ts +2 -0
  563. package/dist/planner/PlannerControls.svelte.d.ts.map +1 -1
  564. package/dist/planner/PlannerHostAction.svelte +61 -0
  565. package/dist/planner/PlannerHostAction.svelte.d.ts +12 -0
  566. package/dist/planner/PlannerHostAction.svelte.d.ts.map +1 -0
  567. package/dist/planner/PlannerLifecycle.svelte +75 -5
  568. package/dist/planner/PlannerLifecycle.svelte.d.ts +2 -1
  569. package/dist/planner/PlannerLifecycle.svelte.d.ts.map +1 -1
  570. package/dist/planner/bridge.d.ts +73 -0
  571. package/dist/planner/bridge.d.ts.map +1 -0
  572. package/dist/planner/bridge.js +303 -0
  573. package/dist/planner/commands/adapter.d.ts +2 -0
  574. package/dist/planner/commands/adapter.d.ts.map +1 -1
  575. package/dist/planner/commands/adapter.js +19 -0
  576. package/dist/planner/export-context.d.ts +6 -0
  577. package/dist/planner/export-context.d.ts.map +1 -0
  578. package/dist/planner/export-context.js +14 -0
  579. package/dist/planner/guide.d.ts +69 -0
  580. package/dist/planner/guide.d.ts.map +1 -0
  581. package/dist/planner/guide.js +115 -0
  582. package/dist/planner/host-reply.d.ts +22 -0
  583. package/dist/planner/host-reply.d.ts.map +1 -0
  584. package/dist/planner/host-reply.js +71 -0
  585. package/dist/planner/shell.d.ts +6 -0
  586. package/dist/planner/shell.d.ts.map +1 -1
  587. package/dist/planner/shell.js +2 -0
  588. package/dist/planner/types.d.ts +39 -1
  589. package/dist/planner/types.d.ts.map +1 -1
  590. package/dist/planner/workspace-storage.d.ts +29 -0
  591. package/dist/planner/workspace-storage.d.ts.map +1 -0
  592. package/dist/planner/workspace-storage.js +355 -0
  593. package/dist/planner/workspace.svelte.d.ts +19 -0
  594. package/dist/planner/workspace.svelte.d.ts.map +1 -0
  595. package/dist/planner/workspace.svelte.js +52 -0
  596. package/dist/smrt-version.d.ts +1 -1
  597. package/dist/smrt-version.js +1 -1
  598. package/package.json +54 -54
  599. package/app/_app/immutable/assets/2.CdEXvRg0.css +0 -1
  600. package/app/_app/immutable/assets/AppShell.BkKNrxND.css +0 -1
  601. package/app/_app/immutable/chunks/B2hfN2VL.js +0 -10
  602. package/app/_app/immutable/chunks/BFBrKYIZ.js +0 -26
  603. package/app/_app/immutable/chunks/BPIRT1pR.js +0 -4
  604. package/app/_app/immutable/chunks/Cq7I_-C0.js +0 -1
  605. package/app/_app/immutable/chunks/Cye6FWwy.js +0 -1
  606. package/app/_app/immutable/chunks/D0ibYqDu.js +0 -2
  607. package/app/_app/immutable/chunks/D71UrO5c.js +0 -1
  608. package/app/_app/immutable/chunks/DF-0MxNw.js +0 -1
  609. package/app/_app/immutable/chunks/DN0-Cx7Y.js +0 -1
  610. package/app/_app/immutable/chunks/DS1ApqxJ.js +0 -16
  611. package/app/_app/immutable/chunks/DSxP4IQt.js +0 -1
  612. package/app/_app/immutable/chunks/Dx1VzWCD.js +0 -2
  613. package/app/_app/immutable/entry/start.Dg2NiCvD.js +0 -1
  614. package/app/_app/immutable/nodes/0.DE5huPD8.js +0 -7
  615. package/app/_app/immutable/nodes/10.C_KB8ejn.js +0 -3
  616. package/app/_app/immutable/nodes/14.Ercp5Yal.js +0 -1
  617. package/app/_app/immutable/nodes/2.D_BYCG3U.js +0 -24
  618. package/app/_app/immutable/nodes/7.-bKoHvi1.js +0 -1
@@ -2,9 +2,11 @@
2
2
  import { Button, Chip, Disclosure } from '@happyvertical/smrt-ui';
3
3
  import { Alert, ConfirmDialog } from '@happyvertical/smrt-ui/feedback';
4
4
  import { Textarea } from '@happyvertical/smrt-ui/forms';
5
+ import { onMount, tick } from 'svelte';
6
+ import type { BrowserAssistantTransport } from '../assistant/transport.js';
5
7
  import { describeCookbook, summarizeCookbook } from '../cookbook/describe.js';
6
8
  import {
7
- downloadCookbook,
9
+ downloadCookbookFile,
8
10
  exportFileName,
9
11
  exportFileSize,
10
12
  formatSize,
@@ -18,11 +20,18 @@ import {
18
20
  import { cookbookStore } from '../cookbook/store.svelte.js';
19
21
  import type { Cookbook } from '../cookbook/types.js';
20
22
  import { parseCookbookText } from '../cookbook/validate.js';
21
- import { useDataSource } from '../data/context.js';
22
23
  import { kitchenState } from '../kitchen/state.svelte.js';
23
24
  import { getLibraryCookbook } from '../library/index.js';
24
25
  import { libraryState } from '../library/state.svelte.js';
26
+ import type {
27
+ ExportData,
28
+ PlannerController,
29
+ } from '../planner/commands/index.js';
30
+ import { capturePlannerExport } from '../planner/export-context.js';
31
+ import { plannerController } from '../planner/instance.js';
32
+ import type { PlannerExportAction } from '../planner/types.js';
25
33
  import CopyButton from './CopyButton.svelte';
34
+ import ProjectControls from './ProjectControls.svelte';
26
35
 
27
36
  /**
28
37
  * The Export tab: what the cookbook holds, a prompt that hands it to a coding
@@ -32,9 +41,49 @@ import CopyButton from './CopyButton.svelte';
32
41
  interface Props {
33
42
  /** Replaces `navigator.clipboard.writeText` (tests). */
34
43
  write?: (text: string) => Promise<void>;
44
+ exportAction?: PlannerExportAction;
45
+ controller?: PlannerController;
46
+ nativeAssistant?: BrowserAssistantTransport;
47
+ onreset?: () => void;
48
+ resetDisabledReason?: string;
35
49
  }
36
50
 
37
- let { write }: Props = $props();
51
+ let {
52
+ write,
53
+ exportAction,
54
+ controller = plannerController,
55
+ nativeAssistant,
56
+ onreset,
57
+ resetDisabledReason,
58
+ }: Props = $props();
59
+ let actionPending = $state(false);
60
+ let assistantBusy = $state(false);
61
+ let actionError = $state('');
62
+ onMount(() =>
63
+ nativeAssistant?.subscribeConversation(() => {
64
+ assistantBusy = nativeAssistant?.busy ?? false;
65
+ }),
66
+ );
67
+ function downloadCurrent() {
68
+ const result = controller.run({ name: 'export_cookbook', input: {} });
69
+ if (result.ok) downloadCookbookFile(result.data as ExportData);
70
+ else actionError = result.error.message;
71
+ }
72
+ async function runExportAction() {
73
+ if (!exportAction || actionPending) return;
74
+ actionError = '';
75
+ actionPending = true;
76
+ try {
77
+ await exportAction.run(capturePlannerExport(controller, nativeAssistant));
78
+ } catch (cause) {
79
+ actionError =
80
+ cause instanceof Error
81
+ ? cause.message
82
+ : 'The export action could not finish. Try again.';
83
+ } finally {
84
+ actionPending = false;
85
+ }
86
+ }
38
87
 
39
88
  let fileInput: HTMLInputElement | undefined = $state();
40
89
  let promptBox: ReturnType<typeof Textarea> | undefined = $state();
@@ -46,7 +95,7 @@ let pendingDropped = $state<string[]>([]);
46
95
  let error = $state('');
47
96
  let notice = $state('');
48
97
  let copyNotice = $state('');
49
- let confirmingReset = $state(false);
98
+ let promptOpen = $state(false);
50
99
 
51
100
  // A file is named for the cookbook's own name, else the library cookbook last
52
101
  // applied, else a generic name.
@@ -67,7 +116,9 @@ const command = $derived(applyCommand(fileName, appName));
67
116
  const COPY_BY_HAND =
68
117
  'Copying is not available here. The text is selected: press Ctrl+C (Cmd+C on a Mac) to copy it.';
69
118
 
70
- function promptCopyFailed() {
119
+ async function promptCopyFailed() {
120
+ promptOpen = true;
121
+ await tick();
71
122
  const element = promptBox?.getElement();
72
123
  element?.focus();
73
124
  element?.select();
@@ -110,93 +161,74 @@ function confirmImport() {
110
161
  pending = null;
111
162
  pendingDropped = [];
112
163
  }
113
-
114
- const dataSource = useDataSource();
115
-
116
- function confirmReset() {
117
- cookbookStore.reset();
118
- // Rows the visitor added, edited or deleted go with the cookbook.
119
- dataSource.reset?.();
120
- confirmingReset = false;
121
- // The shell holds its settings in memory too; reload so it starts from its
122
- // defaults (the cookbook is already saved empty).
123
- cookbookStore.flush();
124
- location.reload();
125
- }
126
164
  </script>
127
165
 
128
166
  <div class="export">
129
- <p class="meta">
130
- Your recipes, their options, the theme, the layout and customised pages,
131
- kept together in this browser as one cookbook. Sample records are not part
132
- of it.
133
- </p>
134
-
135
- <section class="block" aria-labelledby="summary-heading" data-export-section="summary">
136
- <h2 id="summary-heading">In this cookbook</h2>
137
- {#if summary.length}
138
- <dl class="summary">
139
- {#each summary as line (line.id)}
140
- <dt>{line.label}</dt>
141
- <dd>
142
- {#if line.chips}
143
- <ul class="chips">
144
- {#each line.chips as chip, i (`${chip}:${i}`)}
145
- <li><Chip label={chip} size="sm" /></li>
146
- {/each}
147
- </ul>
148
- {:else}
149
- {line.text}
150
- {/if}
151
- </dd>
152
- {/each}
153
- </dl>
154
- {:else}
155
- <p class="quiet">Nothing customised yet. Add recipes or apply a cookbook first.</p>
156
- {/if}
157
- </section>
158
-
159
167
  <section class="block" aria-labelledby="prompt-heading" data-export-section="prompt">
160
- <h2 id="prompt-heading">Copy prompt for your coding agent</h2>
161
- <p class="meta" id="prompt-note">
162
- Paste it into Claude Code, Codex or another coding agent. The prompt
163
- carries the cookbook, creates the app <code>{appName}</code> with the smrt CLI {prompt.version} and
164
- starts it. About {formatSize(prompt.bytes)}.
165
- </p>
166
- <Textarea
167
- bind:this={promptBox}
168
- class="prompt"
169
- value={prompt.text}
170
- readonly
171
- rows={10}
172
- spellcheck={false}
173
- wrap="soft"
174
- aria-label="Prompt for your coding agent"
175
- aria-describedby="prompt-note"
176
- interaction={false}
177
- />
178
- <div class="actions" data-export-actions="primary">
179
- <CopyButton
180
- text={() => prompt.text}
181
- label="Copy prompt"
182
- {write}
183
- oncopied={() => (copyNotice = 'Prompt copied.')}
184
- onfail={promptCopyFailed}
185
- />
186
- {#if kitchenState.config}
187
- <Button
188
- variant="secondary"
189
- disabled={kitchenState.status === 'sending'}
190
- onclick={() => kitchenState.send(cookbookStore.snapshot())}
191
- >{kitchenState.status === 'sending' ? 'Sending to kitchen…' : 'Send to kitchen'}</Button>
168
+ <div class="export-intro">
169
+ <p class="eyebrow">Your app plan</p>
170
+ <h2 id="prompt-heading">Ready for the next step?</h2>
171
+ <p class="meta">Your recipes, theme, layout and customised pages travel together as a cookbook. Sample records stay in this preview.</p>
172
+ </div>
173
+ <div class="next-steps" data-export-actions="primary">
174
+ {#if exportAction}
175
+ <div class="build-step">
176
+ <h3>Build your app</h3>
177
+ <p class="meta">Continue with your current plan.</p>
178
+ <div class="actions">
179
+ <Button disabled={actionPending || assistantBusy} onclick={runExportAction}>{exportAction.label}</Button>
180
+ </div>
181
+ </div>
192
182
  {/if}
193
- <Button variant="secondary" onclick={() => downloadCookbook(current, current.name ?? libraryName)}>Download cookbook</Button>
183
+ <div class="copy-step">
184
+ <h3>Keep a copy</h3>
185
+ <p class="meta">Download your cookbook or copy a prompt for your coding agent.</p>
186
+ <div class="actions">
187
+ <CopyButton
188
+ text={() => prompt.text}
189
+ label="Copy prompt"
190
+ variant={exportAction ? 'secondary' : 'primary'}
191
+ {write}
192
+ oncopied={() => (copyNotice = 'Prompt copied.')}
193
+ onfail={promptCopyFailed}
194
+ />
195
+ {#if kitchenState.config}
196
+ <Button
197
+ variant="secondary"
198
+ disabled={kitchenState.status === 'sending'}
199
+ onclick={() => kitchenState.send(cookbookStore.snapshot())}
200
+ >{kitchenState.status === 'sending' ? 'Sending to kitchen…' : 'Send to kitchen'}</Button>
201
+ {/if}
202
+ <Button variant="secondary" onclick={downloadCurrent}>Download cookbook</Button>
203
+ </div>
204
+ </div>
194
205
  </div>
206
+ {#if actionError}<Alert variant="error" title="Export action failed">{actionError}</Alert>{/if}
207
+ {#if exportAction && assistantBusy}<p class="meta" role="status">Wait for the assistant to finish, or stop it, before continuing.</p>{/if}
195
208
  <p class="notice" role="status" aria-live="polite">{copyNotice}</p>
209
+ <Disclosure title="Preview coding-agent prompt" bind:open={promptOpen}>
210
+ <p class="meta" id="prompt-note">
211
+ Paste it into Claude Code, Codex or another coding agent. The prompt
212
+ carries the cookbook, creates the app <code>{appName}</code> with the smrt CLI {prompt.version} and
213
+ starts it. About {formatSize(prompt.bytes)}.
214
+ </p>
215
+ <Textarea
216
+ bind:this={promptBox}
217
+ class="prompt"
218
+ value={prompt.text}
219
+ readonly
220
+ rows={7}
221
+ spellcheck={false}
222
+ wrap="soft"
223
+ aria-label="Prompt for your coding agent"
224
+ aria-describedby="prompt-note"
225
+ interaction={false}
226
+ />
227
+ </Disclosure>
196
228
  </section>
197
229
 
198
- <section class="block" aria-labelledby="file-heading" data-export-section="file">
199
- <h2 id="file-heading">The downloaded file</h2>
230
+ <section class="block" aria-label="Downloaded file instructions" data-export-section="file">
231
+ <Disclosure title="Use the downloaded file yourself">
200
232
  <p class="meta">
201
233
  Download writes <code>{fileName}</code> ({fileSize}). To make the app from
202
234
  it yourself, run this where the file is:
@@ -215,6 +247,32 @@ function confirmReset() {
215
247
  <Disclosure title="Preview JSON">
216
248
  <pre class="json">{serializeCookbook(current)}</pre>
217
249
  </Disclosure>
250
+ </Disclosure>
251
+ </section>
252
+
253
+ <section class="block" aria-label="Cookbook summary" data-export-section="summary">
254
+ <Disclosure title="In this cookbook">
255
+ {#if summary.length}
256
+ <dl class="summary">
257
+ {#each summary as line (line.id)}
258
+ <dt>{line.label}</dt>
259
+ <dd>
260
+ {#if line.chips}
261
+ <ul class="chips">
262
+ {#each line.chips as chip, i (`${chip}:${i}`)}
263
+ <li><Chip label={chip} size="sm" /></li>
264
+ {/each}
265
+ </ul>
266
+ {:else}
267
+ {line.text}
268
+ {/if}
269
+ </dd>
270
+ {/each}
271
+ </dl>
272
+ {:else}
273
+ <p class="quiet">Nothing customised yet. Add recipes or apply a cookbook first.</p>
274
+ {/if}
275
+ </Disclosure>
218
276
  </section>
219
277
 
220
278
  {#if kitchenState.needsLink}
@@ -259,31 +317,33 @@ function confirmReset() {
259
317
  </div>
260
318
  {/if}
261
319
 
262
- <section class="block replace" aria-labelledby="replace-heading" data-export-section="replace">
263
- <h2 id="replace-heading">Replace or start over</h2>
264
- <p class="meta">
265
- Both replace everything listed above; download a copy first to keep it.
266
- </p>
267
- <div class="actions" data-export-actions="replace">
268
- <Button variant="secondary" onclick={() => fileInput?.click()}>Import cookbook…</Button>
269
- <Button variant="ghost" onclick={() => (confirmingReset = true)}>Reset</Button>
270
- </div>
271
- <p class="meta">
272
- Import swaps this cookbook for one from a file. Reset empties it and
273
- removes the sample records you added or changed.
274
- </p>
275
- <input
276
- bind:this={fileInput}
277
- type="file"
278
- accept="application/json,.json"
279
- hidden
280
- aria-label="Cookbook file"
281
- onchange={choose}
282
- />
283
- {#if error}
284
- <Alert variant="error" title="Import failed">{error}</Alert>
285
- {/if}
286
- <p class="notice" role="status" aria-live="polite">{notice}</p>
320
+ <section class="block replace" aria-label="Import or reset project" data-export-section="replace">
321
+ <Disclosure title="Import or reset project">
322
+ <p class="meta">
323
+ Both replace everything listed above; download a copy first to keep it.
324
+ </p>
325
+ <div class="actions" data-export-actions="replace">
326
+ <Button variant="secondary" onclick={() => fileInput?.click()}>Import cookbook…</Button>
327
+
328
+ </div>
329
+ <p class="meta">
330
+ Import swaps this cookbook for one from a file. Reset project also clears
331
+ your conversation, sample records and current Build it draft.
332
+ </p>
333
+ <ProjectControls resetOnly {controller} {nativeAssistant} {onreset} {resetDisabledReason} />
334
+ <input
335
+ bind:this={fileInput}
336
+ type="file"
337
+ accept="application/json,.json"
338
+ hidden
339
+ aria-label="Cookbook file"
340
+ onchange={choose}
341
+ />
342
+ {#if error}
343
+ <Alert variant="error" title="Import failed">{error}</Alert>
344
+ {/if}
345
+ <p class="notice" role="status" aria-live="polite">{notice}</p>
346
+ </Disclosure>
287
347
  </section>
288
348
  </div>
289
349
 
@@ -299,16 +359,6 @@ function confirmReset() {
299
359
  oncancel={() => (pending = null)}
300
360
  />
301
361
 
302
- <ConfirmDialog
303
- open={confirmingReset}
304
- title="Reset the cookbook?"
305
- message="This removes every recipe, saved option, theme and layout change, and the sample records you added or changed. Download a copy first to keep it."
306
- confirmLabel="Reset"
307
- destructive
308
- onconfirm={confirmReset}
309
- oncancel={() => (confirmingReset = false)}
310
- />
311
-
312
362
  <style>
313
363
  @layer smrt.reset, smrt.structure, smrt.theme;
314
364
  @layer smrt.theme {
@@ -319,6 +369,7 @@ function confirmReset() {
319
369
  }
320
370
 
321
371
  h2,
372
+ h3,
322
373
  p,
323
374
  dl,
324
375
  dd,
@@ -330,6 +381,12 @@ function confirmReset() {
330
381
  font: var(--smrt-typography-title-medium-font);
331
382
  }
332
383
 
384
+ h3 { font: var(--smrt-typography-title-small-font); }
385
+ .eyebrow { color: var(--smrt-color-on-surface-variant); font: var(--smrt-typography-label-large-font); }
386
+ .export-intro, .build-step, .copy-step { display: grid; gap: var(--smrt-spacing-3); min-inline-size: 0; }
387
+ .next-steps { display: grid; gap: var(--smrt-spacing-4); }
388
+ .build-step { padding: var(--smrt-spacing-4); border: var(--smrt-hairline); border-radius: var(--smrt-control-radius); background: var(--smrt-surface-sunken); }
389
+
333
390
  .block {
334
391
  display: grid;
335
392
  gap: var(--smrt-spacing-3);
@@ -443,6 +500,7 @@ function confirmReset() {
443
500
 
444
501
  /* Forced colours: the command and preview boxes keep a visible edge. */
445
502
  @media (forced-colors: active) {
503
+ .build-step,
446
504
  .command code,
447
505
  .json {
448
506
  border-color: CanvasText;
@@ -1,3 +1,6 @@
1
+ import type { BrowserAssistantTransport } from '../assistant/transport.ts';
2
+ import type { PlannerController } from '../planner/commands/index.ts';
3
+ import type { PlannerExportAction } from '../planner/types.ts';
1
4
  /**
2
5
  * The Export tab: what the cookbook holds, a prompt that hands it to a coding
3
6
  * agent, the file download (and the command the file needs), Send to kitchen
@@ -6,6 +9,11 @@
6
9
  interface Props {
7
10
  /** Replaces `navigator.clipboard.writeText` (tests). */
8
11
  write?: (text: string) => Promise<void>;
12
+ exportAction?: PlannerExportAction;
13
+ controller?: PlannerController;
14
+ nativeAssistant?: BrowserAssistantTransport;
15
+ onreset?: () => void;
16
+ resetDisabledReason?: string;
9
17
  }
10
18
  declare const ExportPanel: import("svelte").Component<Props, {}, "">;
11
19
  type ExportPanel = ReturnType<typeof ExportPanel>;
@@ -1 +1 @@
1
- {"version":3,"file":"ExportPanel.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/ExportPanel.svelte.ts"],"names":[],"mappings":"AA6BA;;;;GAIG;AACH,UAAU,KAAK;IACb,wDAAwD;IACxD,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC;AAqPD,QAAA,MAAM,WAAW,2CAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"ExportPanel.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/ExportPanel.svelte.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAoB3E,OAAO,KAAK,EAEV,iBAAiB,EAClB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAK/D;;;;GAIG;AACH,UAAU,KAAK;IACb,wDAAwD;IACxD,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,eAAe,CAAC,EAAE,yBAAyB,CAAC;IAC5C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAsSD,QAAA,MAAM,WAAW,2CAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
@@ -7,10 +7,15 @@
7
7
  * (`aria-current="page"`); `transitionName` is the `view-transition-name` it
8
8
  * carries while a route transition runs (one per control, unique on screen).
9
9
  */
10
+ import {
11
+ shellTargetAction,
12
+ tryUseShellTargets,
13
+ } from '@happyvertical/smrt-svelte/workspace';
10
14
  import { Icon } from '@happyvertical/smrt-ui';
11
15
 
12
16
  interface Props {
13
17
  href: string;
18
+ guideTarget?: string;
14
19
  label: string;
15
20
  /** A smrt-ui preset icon name. */
16
21
  icon?: string;
@@ -23,6 +28,7 @@ interface Props {
23
28
 
24
29
  let {
25
30
  href,
31
+ guideTarget,
26
32
  label,
27
33
  icon,
28
34
  path,
@@ -30,9 +36,11 @@ let {
30
36
  transitionName,
31
37
  onclick,
32
38
  }: Props = $props();
39
+ const target = shellTargetAction(tryUseShellTargets());
33
40
  </script>
34
41
 
35
42
  <a
43
+ use:target={guideTarget ?? `item:${transitionName}`}
36
44
  class="header-link"
37
45
  {href}
38
46
  aria-label={label}
@@ -1,5 +1,6 @@
1
1
  interface Props {
2
2
  href: string;
3
+ guideTarget?: string;
3
4
  label: string;
4
5
  /** A smrt-ui preset icon name. */
5
6
  icon?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderIconLink.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/HeaderIconLink.svelte.ts"],"names":[],"mappings":"AAcA,UAAU,KAAK;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CACvC;AAyBD,QAAA,MAAM,cAAc,2CAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"HeaderIconLink.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/HeaderIconLink.svelte.ts"],"names":[],"mappings":"AAkBA,UAAU,KAAK;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CACvC;AA4BD,QAAA,MAAM,cAAc,2CAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
@@ -0,0 +1,133 @@
1
+ <script lang="ts">
2
+ import { Button } from '@happyvertical/smrt-ui';
3
+ import { Alert, ConfirmDialog } from '@happyvertical/smrt-ui/feedback';
4
+ import { Switch } from '@happyvertical/smrt-ui/forms';
5
+ import { tick } from 'svelte';
6
+ import type { BrowserAssistantTransport } from '../assistant/transport.js';
7
+ import { useDataSource } from '../data/context.js';
8
+ import type { PlannerController } from '../planner/commands/index.js';
9
+ import { plannerController } from '../planner/instance.js';
10
+ import type { PlannerProjectPersistence } from '../planner/types.js';
11
+ import {
12
+ resetWorkspace,
13
+ workspacePersistence,
14
+ } from '../planner/workspace.svelte.js';
15
+
16
+ interface Props {
17
+ controller?: PlannerController;
18
+ nativeAssistant?: BrowserAssistantTransport;
19
+ onreset?: () => void;
20
+ resetDisabledReason?: string;
21
+ resetOnly?: boolean;
22
+ projectPersistence?: PlannerProjectPersistence | null;
23
+ }
24
+ let {
25
+ controller = plannerController,
26
+ nativeAssistant,
27
+ onreset,
28
+ resetDisabledReason,
29
+ resetOnly = false,
30
+ projectPersistence = workspacePersistence,
31
+ }: Props = $props();
32
+ const dataSource = useDataSource();
33
+ let confirming = $state(false);
34
+ let recovering = $state(false);
35
+ let error = $state('');
36
+ let notice = $state('');
37
+ let remembering = $derived(projectPersistence?.remembering ?? false);
38
+
39
+ function remember(value: boolean) {
40
+ error = projectPersistence?.setRemember(value)
41
+ ? ''
42
+ : 'Your storage preference could not be changed. Your existing plan is preserved.';
43
+ }
44
+ function reset() {
45
+ confirming = false;
46
+ if (resetDisabledReason) return;
47
+ error = '';
48
+ if (!resetWorkspace({ controller, dataSource, nativeAssistant, onreset })) {
49
+ error = 'The project could not be fully reset. Please try again.';
50
+ return;
51
+ }
52
+ notice = 'Project reset. Start a new plan whenever you are ready.';
53
+ }
54
+ function recover() {
55
+ recovering = false;
56
+ if (resetDisabledReason) return;
57
+ if (!projectPersistence?.recover()) {
58
+ error =
59
+ 'The previous plan could not be recovered. Its saved copy is preserved.';
60
+ return;
61
+ }
62
+ location.reload();
63
+ }
64
+ function discard() {
65
+ error = projectPersistence?.discardRecovery()
66
+ ? ''
67
+ : 'The previous saved copy could not be removed. Please try again.';
68
+ }
69
+ </script>
70
+
71
+ <section class="project" aria-label="Project">
72
+ {#if !resetOnly && projectPersistence}
73
+ <h2>Project</h2>
74
+ <p class="meta">Your plan, sample records and settings stay in this browser session by default. Conversations and contact or request drafts stay in the current tab session.</p>
75
+ <Switch
76
+ label="Remember this plan"
77
+ bind:checked={remembering}
78
+ onchange={async (event) => {
79
+ const input = event.currentTarget;
80
+ remember(input.checked);
81
+ await tick();
82
+ remembering = projectPersistence?.remembering ?? false;
83
+ input.checked = remembering;
84
+ }}
85
+ />
86
+ <p class="meta">Remembering keeps your cookbook, sample records and settings on this device after the session ends. Conversations and contact or request drafts still stay in the current tab session. Turn it off to remove the remembered project copy.</p>
87
+ {#if projectPersistence?.recoveryAvailable}
88
+ <Alert variant="info" title="Previous saved plan available">
89
+ An earlier project has been kept as a recovery copy of its cookbook, sample records and settings. Recover it to replace this project, or discard the copy. Conversations are not remembered.
90
+ </Alert>
91
+ <div class="actions">
92
+ <Button variant="secondary" onclick={() => (recovering = true)} disabled={!!resetDisabledReason}>Recover previous plan</Button>
93
+ <Button variant="ghost" onclick={discard}>Discard saved copy</Button>
94
+ </div>
95
+ {/if}
96
+ {/if}
97
+ <div class="actions">
98
+ <Button variant="ghost" disabled={!!resetDisabledReason} onclick={() => (confirming = true)}>Reset project</Button>
99
+ </div>
100
+ {#if resetDisabledReason}<p class="meta" role="status">{resetDisabledReason}</p>{/if}
101
+ {#if error}<Alert variant="error" title="Project action could not finish">{error}</Alert>{/if}
102
+ {#if notice}<p role="status">{notice}</p>{/if}
103
+ </section>
104
+
105
+ <ConfirmDialog
106
+ open={recovering}
107
+ title="Recover the previous plan?"
108
+ message="Recovering replaces this project with its previous cookbook, sample records and settings. Current manual edits will be lost. It does not recover conversations or contact and request drafts."
109
+ confirmLabel="Recover plan"
110
+ destructive
111
+ onconfirm={recover}
112
+ oncancel={() => (recovering = false)}
113
+ />
114
+
115
+ <ConfirmDialog
116
+ open={confirming}
117
+ title="Reset this project?"
118
+ message="This clears your plan, conversation, sample records, manual edits and current Build it draft. Manual edits will be lost. Your theme preference and identity settings are kept. Download the cookbook first if you want a copy. A reset cannot unsend a request you already sent."
119
+ confirmLabel="Reset project"
120
+ destructive
121
+ onconfirm={reset}
122
+ oncancel={() => (confirming = false)}
123
+ />
124
+
125
+ <style>
126
+ @layer smrt.reset, smrt.structure, smrt.theme;
127
+ @layer smrt.theme {
128
+ .project { display: grid; gap: var(--smrt-spacing-3); }
129
+ h2, p { margin: 0; }
130
+ .meta { color: var(--smrt-color-on-surface-variant); }
131
+ .actions { display: flex; flex-wrap: wrap; gap: var(--smrt-spacing-2); }
132
+ }
133
+ </style>
@@ -0,0 +1,15 @@
1
+ import type { BrowserAssistantTransport } from '../assistant/transport.ts';
2
+ import type { PlannerController } from '../planner/commands/index.ts';
3
+ import type { PlannerProjectPersistence } from '../planner/types.ts';
4
+ interface Props {
5
+ controller?: PlannerController;
6
+ nativeAssistant?: BrowserAssistantTransport;
7
+ onreset?: () => void;
8
+ resetDisabledReason?: string;
9
+ resetOnly?: boolean;
10
+ projectPersistence?: PlannerProjectPersistence | null;
11
+ }
12
+ declare const ProjectControls: import("svelte").Component<Props, {}, "">;
13
+ type ProjectControls = ReturnType<typeof ProjectControls>;
14
+ export default ProjectControls;
15
+ //# sourceMappingURL=ProjectControls.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectControls.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/ProjectControls.svelte.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAE3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAOrE,UAAU,KAAK;IACb,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,eAAe,CAAC,EAAE,yBAAyB,CAAC;IAC5C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kBAAkB,CAAC,EAAE,yBAAyB,GAAG,IAAI,CAAC;CACvD;AAkGD,QAAA,MAAM,eAAe,2CAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}
@@ -6,9 +6,8 @@
6
6
  // The shell's pencil edits it like the layout; widget data comes from the
7
7
  // in-browser sample source. Mount it under `{#key}` on the section id.
8
8
  //
9
- // The widgets are page sections, not cards in a card: the grid's `plain`
10
- // presentation drops the tile frame (edit mode brings it back with the
11
- // controls) and each title is drawn as a section heading.
9
+ // The grid defaults to the existing themed card presentation. Explicit plain
10
+ // presentation remains available; edit mode keeps its controls and frame.
12
11
  import {
13
12
  type OverviewDefinition,
14
13
  OverviewGrid,
@@ -34,7 +33,7 @@ interface SectionOverviewProps {
34
33
  models: readonly OverviewModelChoice[];
35
34
  /** Accessible name of the grid. */
36
35
  label: string;
37
- /** Page sections (`plain`, the default) or framed tiles (`card`). */
36
+ /** Existing themed tiles (`card`, default) or unframed page sections (`plain`). */
38
37
  presentation?: 'card' | 'plain';
39
38
  /** An in-app path with the app query; the standalone page's `appHref`. */
40
39
  href?: (path: string) => string;
@@ -45,7 +44,7 @@ let {
45
44
  entries,
46
45
  models,
47
46
  label,
48
- presentation = 'plain',
47
+ presentation = 'card',
49
48
  href = appHref,
50
49
  }: SectionOverviewProps = $props();
51
50
 
@@ -8,7 +8,7 @@ interface SectionOverviewProps {
8
8
  models: readonly OverviewModelChoice[];
9
9
  /** Accessible name of the grid. */
10
10
  label: string;
11
- /** Page sections (`plain`, the default) or framed tiles (`card`). */
11
+ /** Existing themed tiles (`card`, default) or unframed page sections (`plain`). */
12
12
  presentation?: 'card' | 'plain';
13
13
  /** An in-app path with the app query; the standalone page's `appHref`. */
14
14
  href?: (path: string) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"SectionOverview.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/SectionOverview.svelte.ts"],"names":[],"mappings":"AAaA,OAAO,EACL,KAAK,kBAAkB,EAEvB,KAAK,mBAAmB,EAIzB,MAAM,qCAAqC,CAAC;AAQ7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG3D,UAAU,oBAAoB;IAC5B,UAAU,EAAE,kBAAkB,CAAC;IAC/B,2EAA2E;IAC3E,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC3C,mDAAmD;IACnD,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACvC,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,0EAA0E;IAC1E,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACjC;AA2FD,QAAA,MAAM,eAAe,0DAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"SectionOverview.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/SectionOverview.svelte.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,KAAK,kBAAkB,EAEvB,KAAK,mBAAmB,EAIzB,MAAM,qCAAqC,CAAC;AAQ7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG3D,UAAU,oBAAoB;IAC5B,UAAU,EAAE,kBAAkB,CAAC;IAC/B,2EAA2E;IAC3E,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC3C,mDAAmD;IACnD,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACvC,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,0EAA0E;IAC1E,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACjC;AA0FD,QAAA,MAAM,eAAe,0DAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}