@mavea/mavea 1.2.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (389) hide show
  1. package/CHANGELOG.md +96 -0
  2. package/PRIVACY.md +1 -0
  3. package/README.md +8 -4
  4. package/TERMS.md +1 -1
  5. package/THIRD-PARTY.txt +13 -5
  6. package/bin/mavea.mjs +143 -2
  7. package/dist/.vite/manifest.json +1473 -861
  8. package/dist/assets/AnnotationLayer-Cccb12ps.js +0 -0
  9. package/dist/assets/{AppCommandPalette-BHaYBZ5e.js → AppCommandPalette-DdOPNZ0e.js} +1 -1
  10. package/dist/assets/AtlasView-B7yObdf8.css +1 -0
  11. package/dist/assets/{AtlasView-B82UfrEX.js → AtlasView-DO_p0TdZ.js} +1 -1
  12. package/dist/assets/BriefingPlayer-DHV4vMga.css +1 -0
  13. package/dist/assets/{CadenceCard-P4teI7Se.js → CadenceCard-DxceyiPA.js} +1 -1
  14. package/dist/assets/{CanvasSkeleton-CRGWlafo.js → CanvasSkeleton-BmGjJHUQ.js} +1 -1
  15. package/dist/assets/CanvasSkeleton-DYASkTjW.css +1 -0
  16. package/dist/assets/CardEditor-CiAfT78z.css +1 -0
  17. package/dist/assets/{CardEditor-DABIhGdQ.js → CardEditor-D4slxmIM.js} +1 -1
  18. package/dist/assets/{CheckLogRail-DkHIHL0E.js → CheckLogRail-BibJTid0.js} +1 -1
  19. package/dist/assets/ConversationVideoStudio-CSO3jHXD.css +1 -0
  20. package/dist/assets/ConversationVideoStudio-DMIPUCcq.js +1 -0
  21. package/dist/assets/CourseLessonReader-D29Kix4f.js +2 -0
  22. package/dist/assets/{CourseRail-DXt3bzjU.js → CourseRail-BQmUsG6v.js} +1 -1
  23. package/dist/assets/CoursesApp-DcDsS_ZS.js +2 -0
  24. package/dist/assets/CrossExamPanel-BafTqkbf.css +1 -0
  25. package/dist/assets/{DashPresent-5SRScC2i.js → DashPresent-BDWgO9am.js} +1 -1
  26. package/dist/assets/DashboardDetail-BrnAdWfy.js +2 -0
  27. package/dist/assets/DashboardLoopGate-NxMcQ4rD.js +2 -0
  28. package/dist/assets/DashboardLoopRuntime-Dsy9u1wa.js +1 -0
  29. package/dist/assets/{DashboardSettings-CE0B2y2y.js → DashboardSettings-DJon1Q4o.js} +1 -1
  30. package/dist/assets/DashboardsApp-DxyMn3x_.js +2 -0
  31. package/dist/assets/DeepZoomApp-CVwmnRGN.css +1 -0
  32. package/dist/assets/{DeepZoomApp-BOLEl-kQ.js → DeepZoomApp-nNjqoyYE.js} +1 -1
  33. package/dist/assets/DelegatePanel-D17XvWYd.css +1 -0
  34. package/dist/assets/DelegatePanel-DN_ZL0j7.js +33 -0
  35. package/dist/assets/DemoGallery-DrSlMsnu.js +1 -0
  36. package/dist/assets/{DropSelect-DilESAgA.css → DropSelect-B4lqCEjw.css} +1 -1
  37. package/dist/assets/{DropSelect-DjbdVfIR.js → DropSelect-GwIXHA5o.js} +1 -1
  38. package/dist/assets/{ExportModal-CLobMv1F.js → ExportModal-DBUjC71U.js} +1 -1
  39. package/dist/assets/{ExtractionPreview-QZ2VHmsb.js → ExtractionPreview-D4M6eXqb.js} +1 -1
  40. package/dist/assets/{FeatureUseNotice-Dc8joBGM.js → FeatureUseNotice-Bda9jr3W.js} +1 -1
  41. package/dist/assets/{FlagshipCommandPalette-DnWuBjYI.js → FlagshipCommandPalette-DAO849RC.js} +1 -1
  42. package/dist/assets/FlagshipShowcase-g2x-1c70.js +1 -0
  43. package/dist/assets/{FlashcardsApp-BQGM-Tr1.js → FlashcardsApp-BUKzCr65.js} +1 -1
  44. package/dist/assets/ForecastPanel-Cq_yDhNQ.css +1 -0
  45. package/dist/assets/GalleryApp-ot_A7ZF-.js +1 -0
  46. package/dist/assets/{HonestByDesign-57LDf-gm.js → HonestByDesign-DgZFEpEx.js} +1 -1
  47. package/dist/assets/{HowItWorks-DMfPX3GK.js → HowItWorks-DPFpdeGE.js} +1 -1
  48. package/dist/assets/{LegalApp-CcO5Qq6R.js → LegalApp-C56kWdmK.js} +1 -1
  49. package/dist/assets/{LegalMarkdownDocument-Be_fQbZ_.js → LegalMarkdownDocument-BBTHuW_M.js} +1 -1
  50. package/dist/assets/{LegalPageShell-B-HY1WG7.js → LegalPageShell-hMA-7JLf.js} +1 -1
  51. package/dist/assets/LeverPanel-HOEwIr8k.css +1 -0
  52. package/dist/assets/{Library-DmdzY2se.js → Library-CVj7R6F4.js} +1 -1
  53. package/dist/assets/LibraryOverlay-BkPYm0Bs.css +1 -0
  54. package/dist/assets/{LibraryOverlay-BilW6q_z.js → LibraryOverlay-DSUWcUe4.js} +1 -1
  55. package/dist/assets/LiveApp-B62EMybC.js +79 -0
  56. package/dist/assets/LiveApp-CziqEsOb.css +1 -0
  57. package/dist/assets/LiveSettings-BITIaMoT.js +6 -0
  58. package/dist/assets/LiveSettings-Dho0OxlM.css +1 -0
  59. package/dist/assets/{MindMapViewerDrawer-DI_S7fRZ.js → MindMapViewerDrawer-CKdJtHno.js} +1 -1
  60. package/dist/assets/MindShape-B3lg_z4X.js +1 -0
  61. package/dist/assets/MindShape-CozR9W8M.css +1 -0
  62. package/dist/assets/{PinToDashboard-Cz5UJCmq.js → PinToDashboard-DpQjBLPa.js} +1 -1
  63. package/dist/assets/{PlanReview-CmUxzNqL.js → PlanReview-CrTbmMAd.js} +1 -1
  64. package/dist/assets/PresentationDeck-CfYadu9V.js +1 -0
  65. package/dist/assets/PrismApp-bRKK_3JA.js +2 -0
  66. package/dist/assets/PrismAskController-68gbUO5u.css +1 -0
  67. package/dist/assets/{PrismAskController-Bt0k9hAA.js → PrismAskController-C4MuB8om.js} +1 -1
  68. package/dist/assets/{PrismBriefingPlayer-DzdtnFj4.js → PrismBriefingPlayer-ChJj6hSS.js} +2 -2
  69. package/dist/assets/PrismOverlay-BwnF4BEn.css +1 -0
  70. package/dist/assets/{PrismOverlay-D1cDZamt.js → PrismOverlay-Pp6ZKmTc.js} +4 -4
  71. package/dist/assets/{PrismWorkbench-BEIp4MiL.js → PrismWorkbench-BCV7r4Oa.js} +1 -1
  72. package/dist/assets/{PrivacyApp-B4DT2RUz.js → PrivacyApp-A2Bu6LVd.js} +2 -1
  73. package/dist/assets/{Recap-T9DtFaEk.js → Recap-BOl3SUh0.js} +1 -1
  74. package/dist/assets/Recap-D3NlzM1p.css +1 -0
  75. package/dist/assets/{ReplayCard-Dx46HCBT.js → ReplayCard-B6NYiYzQ.js} +2 -2
  76. package/dist/assets/{ReplayOverlay-CnJAxf0u.js → ReplayOverlay-BJKtJ-vc.js} +1 -1
  77. package/dist/assets/{RewindOverlay-CousnxXo.js → RewindOverlay-BO7YgDsW.js} +1 -1
  78. package/dist/assets/RippleApp-BXt7tenS.js +2 -0
  79. package/dist/assets/{RippleAskController-9SxpZnHX.js → RippleAskController-BzdwYcYY.js} +1 -1
  80. package/dist/assets/RippleOverlay-B3hg2KMN.css +1 -0
  81. package/dist/assets/RippleOverlay-BSxubBwj.js +6 -0
  82. package/dist/assets/SeeDontRead-0He5hS2C.js +1 -0
  83. package/dist/assets/ShareModal-I_sxHKLv.css +1 -0
  84. package/dist/assets/ShareModal-xYdZWJxy.js +2 -0
  85. package/dist/assets/{ShipCourse-BavQppkt.js → ShipCourse-Dg6kCWyH.js} +1 -1
  86. package/dist/assets/{SignatureLoop-L8W2h62w.js → SignatureLoop-QPwB2oNN.js} +1 -1
  87. package/dist/assets/SrsReview-DmBcJCMa.css +1 -0
  88. package/dist/assets/{SrsReview-DhWNYYv7.js → SrsReview-Gr6Y0QTQ.js} +1 -1
  89. package/dist/assets/{SynthesisApp-C2O6pFeM.js → SynthesisApp-DrCq6NDa.js} +2 -2
  90. package/dist/assets/{SynthesisOverlay-DLvwiSMv.js → SynthesisOverlay-DCa-2Pz_.js} +1 -1
  91. package/dist/assets/{TermsApp-CxY1yorm.js → TermsApp-zcPDYfuh.js} +2 -2
  92. package/dist/assets/TopicCanvas-Bw4bMFpe.js +2 -0
  93. package/dist/assets/TopicCanvas-DWTm611H.css +1 -0
  94. package/dist/assets/{TourPrism-CI-iJZil.js → TourPrism-DbinDupp.js} +1 -1
  95. package/dist/assets/{TrackerTile-oz6IoG8m.js → TrackerTile-CrT9u1I4.js} +2 -2
  96. package/dist/assets/{TwoSurfaces-Rnf-_WgY.js → TwoSurfaces-L0CDuyOZ.js} +1 -1
  97. package/dist/assets/WhyMachineOverlay-Rav-cuMm.css +1 -0
  98. package/dist/assets/WorldOverlay-BcjqG1BR.js +2 -0
  99. package/dist/assets/{WowFeatures-C4efSbNV.js → WowFeatures-CwBk4ZMO.js} +1 -1
  100. package/dist/assets/ZoomDeck-DdLNsrHV.css +1 -0
  101. package/dist/assets/{ZoomDeck-CBrr0yfy.js → ZoomDeck-DlnesweX.js} +1 -1
  102. package/dist/assets/{annotationAuto-CDv6Es44.js → annotationAuto-B2UdfJNj.js} +1 -1
  103. package/dist/assets/{backup-ZrlVatXc.js → backup-685QrAjt.js} +1 -1
  104. package/dist/assets/canvas-C3O7MEA3.js +1 -0
  105. package/dist/assets/capture-DgJLQ_0-.js +2 -0
  106. package/dist/assets/{chapters-Dqm4iLDa.js → chapters-CIvdCeBC.js} +1 -1
  107. package/dist/assets/{confirmAdd-DzMO9jKV.js → confirmAdd-CZ829Mbx.js} +1 -1
  108. package/dist/assets/{dashboardEvents-DKl5rrTD.js → dashboardEvents-CiayRLrH.js} +1 -1
  109. package/dist/assets/dashboards-Cvs28p3Z.css +1 -0
  110. package/dist/assets/deepen-DAeHHFiI.js +11 -0
  111. package/dist/assets/deepenStore-BWLLzLCY.js +1 -0
  112. package/dist/assets/effort-jJe4iMIq.js +39 -0
  113. package/dist/assets/{explode-BgZIWY9m.js → explode-CPnvJiTg.js} +1 -1
  114. package/dist/assets/{fitText-DQ2omSN0.js → fitText-DHbmSS-q.js} +1 -1
  115. package/dist/assets/{generate-Dl2EJ_SR.js → generate-COfYQFmT.js} +4 -4
  116. package/dist/assets/{generateBeats-DZHkvFvh.js → generateBeats-COflu5Zi.js} +1 -1
  117. package/dist/assets/{generateCourse-C9qvaJRo.js → generateCourse-BldPpgdh.js} +1 -1
  118. package/dist/assets/generateLive-DGwnpIip.js +24 -0
  119. package/dist/assets/homeTarget-CwFsJYwb.js +1 -0
  120. package/dist/assets/index-BIUYTk1W.css +1 -0
  121. package/dist/assets/index-LiHcEJt_.js +22 -0
  122. package/dist/assets/kokoro-DXRj0KQX.js +1 -0
  123. package/dist/assets/ledger-BssK9Pv2.js +1 -0
  124. package/dist/assets/{lib-DMAxsZKm.css → lib-DP9Kuxqk.css} +1 -1
  125. package/dist/assets/{liveSchema-B4bQtO88.js → liveSchema-DyfND6P2.js} +2 -2
  126. package/dist/assets/{loader-DKJEcbPm.js → loader-DgMLGfAC.js} +2 -2
  127. package/dist/assets/localBudget-CxLP6bjE.js +1 -0
  128. package/dist/assets/{mastery-CUfDeuqO.js → mastery-DB5qpRAy.js} +1 -1
  129. package/dist/assets/{media-BvwzACIX.js → media-VLRh6CX2.js} +2 -2
  130. package/dist/assets/{model-BFRTN9Eh.js → model-CAewjw45.js} +1 -1
  131. package/dist/assets/{neighborhoods-D7QjURnE.js → neighborhoods-CqECCmo8.js} +1 -1
  132. package/dist/assets/{notes-B0-EE0FK.js → notes-DzIAEESd.js} +1 -1
  133. package/dist/assets/pen-DtEW1xf4.js +24 -0
  134. package/dist/assets/{perfProbe-B9zJpjo9.js → perfProbe-ezVn1mOu.js} +1 -1
  135. package/dist/assets/{pin-CZAIlpXt.js → pin-BPGVDgnq.js} +1 -1
  136. package/dist/assets/pin-BXyyKnci.css +1 -0
  137. package/dist/assets/{planTracker-KKAtTBWs.js → planTracker-BwoKEftp.js} +1 -1
  138. package/dist/assets/portal-B9DmFo6J.js +1 -0
  139. package/dist/assets/{prewarm-B4ELBOxf.js → prewarm-BgUqAJbF.js} +1 -1
  140. package/dist/assets/providers-0DthJW_I.js +1 -0
  141. package/dist/assets/quietHours-DyynzDyC.js +1 -0
  142. package/dist/assets/{ready-jtAUOb62.js → ready-yBSGJubb.js} +1 -1
  143. package/dist/assets/{registry-CqhpLHM7.js → registry-7tKTrzeZ.js} +1 -1
  144. package/dist/assets/{registry-BFrgx1tE.js → registry-B53EEn8S.js} +1 -1
  145. package/dist/assets/{registry-CPiwQhAm.js → registry-BDXwUn3i.js} +1 -1
  146. package/dist/assets/{registry-CD1s3eQ-.js → registry-BJEvFgoL.js} +1 -1
  147. package/dist/assets/{registry-B0GIHERt.js → registry-BQzvA61G.js} +1 -1
  148. package/dist/assets/{registry-6DGRAB1m.js → registry-BT6ydF33.js} +1 -1
  149. package/dist/assets/{registry-D8O0apUT.js → registry-BdHj_oIs.js} +1 -1
  150. package/dist/assets/{registry-Dru0JcTa.css → registry-BgWzEkxc.css} +1 -1
  151. package/dist/assets/{registry-Vp8VuMV0.js → registry-Bl2qfp5V.js} +1 -1
  152. package/dist/assets/registry-Bl7zAWKt.js +2 -0
  153. package/dist/assets/{registry-6MOD-I7p.js → registry-BlujNlQJ.js} +1 -1
  154. package/dist/assets/{registry-C28gYnVq.js → registry-CE1T0z9x.js} +1 -1
  155. package/dist/assets/{registry-4mMEt1Xy.css → registry-CEV5h2cu.css} +1 -1
  156. package/dist/assets/{registry-ZOWzhOHk.css → registry-CGB0jkFI.css} +1 -1
  157. package/dist/assets/{registry-BFbfXK-W.js → registry-Cgo4C0ux.js} +1 -1
  158. package/dist/assets/registry-CwRTUk0R.js +1 -0
  159. package/dist/assets/{registry-GeAC3ZD7.js → registry-D06LKiUk.js} +1 -1
  160. package/dist/assets/registry-Dbe9TQPw.css +1 -0
  161. package/dist/assets/registry-Diyud3DF.js +1 -0
  162. package/dist/assets/registry-DjvftnY2.css +1 -0
  163. package/dist/assets/{registry-w4R6c89s.js → registry-KRYoVMCh.js} +1 -1
  164. package/dist/assets/registry-QbArAJKB.js +1 -0
  165. package/dist/assets/registry-dmR14XnY.css +1 -0
  166. package/dist/assets/registry-g2sBcIrf.css +1 -0
  167. package/dist/assets/{registry-CcOO8UZr.js → registry-qRfnKTt4.js} +1 -1
  168. package/dist/assets/{relate-BYdM5eiV.js → relate-aQFFr11O.js} +1 -1
  169. package/dist/assets/{replay-TYXO0Brm.js → replay-CalqEgdW.js} +1 -1
  170. package/dist/assets/route-CMdTFx0P.js +1 -0
  171. package/dist/assets/{run-Df10YPyB.js → run-CuHaB8wF.js} +1 -1
  172. package/dist/assets/{run-gmqUaxcL.js → run-CwMSPOps.js} +1 -1
  173. package/dist/assets/{run-DlvA3l28.js → run-DCQrxgHA.js} +1 -1
  174. package/dist/assets/select-wEtBn9U6.js +3 -0
  175. package/dist/assets/shapes-BwoDrn09.js +1 -0
  176. package/dist/assets/shard000-Bx6Nmt0m.js +1 -0
  177. package/dist/assets/shard001-CL6O9SLr.js +1 -0
  178. package/dist/assets/shard002-vLQ0Ss-O.js +1 -0
  179. package/dist/assets/shard003-kKZdpzuh.js +1 -0
  180. package/dist/assets/shard004-CdVohAu1.js +1 -0
  181. package/dist/assets/shard005-CMzF_uJB.js +1 -0
  182. package/dist/assets/shard006-DQoDWuoN.js +1 -0
  183. package/dist/assets/shard007-Ck0N0IUk.js +1 -0
  184. package/dist/assets/shard008-Dt395x0Q.js +1 -0
  185. package/dist/assets/shard009-D_z8Lhqh.js +1 -0
  186. package/dist/assets/shard010-CQfR6lnk.js +1 -0
  187. package/dist/assets/shard011-l-w2t2Ie.js +1 -0
  188. package/dist/assets/shard012-BTw_UO1C.js +1 -0
  189. package/dist/assets/shard013-D8ZjKKYb.js +1 -0
  190. package/dist/assets/shard014-Cth_76It.js +1 -0
  191. package/dist/assets/shard015-DdYJVsHx.js +1 -0
  192. package/dist/assets/shard016-BdlBf9uZ.js +1 -0
  193. package/dist/assets/shard017-C3HTxh6t.js +1 -0
  194. package/dist/assets/shard018-Mf4wvqVk.js +1 -0
  195. package/dist/assets/shard019-Dpcy1Arx.js +1 -0
  196. package/dist/assets/shard020-BNvKfQld.js +1 -0
  197. package/dist/assets/shard021-D0kpI_PQ.js +1 -0
  198. package/dist/assets/shard022-Cjms7kAe.js +1 -0
  199. package/dist/assets/shard023-Bdwci7fy.js +1 -0
  200. package/dist/assets/shard024-BBoyPtpP.js +1 -0
  201. package/dist/assets/shard025-lMGpgN_0.js +3 -0
  202. package/dist/assets/shard026-Bp3UVI4_.js +1 -0
  203. package/dist/assets/shard027-C4HTpdeT.js +1 -0
  204. package/dist/assets/shard028-BsFTH3Sf.js +1 -0
  205. package/dist/assets/shard029-B3dEcXPy.js +1 -0
  206. package/dist/assets/shard030-DWwA-fNs.js +5 -0
  207. package/dist/assets/shard031-RhqA_0nH.js +1 -0
  208. package/dist/assets/shard032-BlZdG1Yi.js +1 -0
  209. package/dist/assets/shard033-Dmx2lOjI.js +1 -0
  210. package/dist/assets/shard034-BLOFKJT4.js +1 -0
  211. package/dist/assets/shard035-DMXdH733.js +1 -0
  212. package/dist/assets/shard036-DzOiEn23.js +1 -0
  213. package/dist/assets/shard037-BcHfVaYM.js +1 -0
  214. package/dist/assets/shard038-KozOx-Jh.js +1 -0
  215. package/dist/assets/shard039-apdILQwC.js +1 -0
  216. package/dist/assets/shard040-BrNXGaBi.js +1 -0
  217. package/dist/assets/shard041-D6eq9h1u.js +4 -0
  218. package/dist/assets/shard042-M-L34DbY.js +1 -0
  219. package/dist/assets/shard043-Ct6_C2pN.js +1 -0
  220. package/dist/assets/shard044-Bo0iaVHx.js +1 -0
  221. package/dist/assets/shard045-9ccZ4Y_N.js +1 -0
  222. package/dist/assets/shard046-eXoP478L.js +1 -0
  223. package/dist/assets/shard047-N56r6Lsz.js +1 -0
  224. package/dist/assets/shard048-BeKX7cI8.js +1 -0
  225. package/dist/assets/shard049-hPaNN2sL.js +1 -0
  226. package/dist/assets/shard050-B-YpP0B6.js +1 -0
  227. package/dist/assets/shard051-Bww5_KB2.js +1 -0
  228. package/dist/assets/shard052-DErwF8Df.js +1 -0
  229. package/dist/assets/shard053-C-qGH4jz.js +1 -0
  230. package/dist/assets/shard054-kcSxZrSj.js +1 -0
  231. package/dist/assets/shard055-CsETBTqa.js +1 -0
  232. package/dist/assets/shard056-CdBR4qTC.js +1 -0
  233. package/dist/assets/shard057-yRUG8B9e.js +1 -0
  234. package/dist/assets/shard058-DeDAnECG.js +1 -0
  235. package/dist/assets/shard059-Dh6jbDnW.js +1 -0
  236. package/dist/assets/shard060-B5kpWrhW.js +1 -0
  237. package/dist/assets/shard061-BTnj5LZA.js +1 -0
  238. package/dist/assets/shard062-DC7LTaNc.js +1 -0
  239. package/dist/assets/shard063-C8SIGCfd.js +1 -0
  240. package/dist/assets/shard064-DLyASocW.js +1 -0
  241. package/dist/assets/shard065-Cy_yV4ry.js +1 -0
  242. package/dist/assets/shard066-BmjVQqFX.js +1 -0
  243. package/dist/assets/shard067-uZUJsqtF.js +1 -0
  244. package/dist/assets/shard068-CXVjyJU4.js +1 -0
  245. package/dist/assets/shard069-CyfmjAm-.js +4 -0
  246. package/dist/assets/shard070-CxN3xiuY.js +12 -0
  247. package/dist/assets/shard071-CP1WrYC-.js +1 -0
  248. package/dist/assets/shard072-D6L5Yr05.js +1 -0
  249. package/dist/assets/shard073-DFEzkwg2.js +1 -0
  250. package/dist/assets/shard074-BSv3rvRL.js +1 -0
  251. package/dist/assets/shard075-Bt0OjGVd.js +1 -0
  252. package/dist/assets/shard076-DZHs0uzd.js +1 -0
  253. package/dist/assets/{share-kW3pZ027.js → share--tpc1nLE.js} +1 -1
  254. package/dist/assets/speed-BOytg6bC.js +1 -0
  255. package/dist/assets/store-B2Rpbqgg.js +1 -0
  256. package/dist/assets/store-Ba9vzL4H.js +1 -0
  257. package/dist/assets/store-BwyOArJl.js +1 -0
  258. package/dist/assets/store-ruEsXJjU.js +1 -0
  259. package/dist/assets/streamParse-BX0bAppQ.js +2 -0
  260. package/dist/assets/{templates-DHeyJ32F.css → templates-BIkAr4YH.css} +1 -1
  261. package/dist/assets/{theme-7IrMJ70_.js → theme-D5D55hZi.js} +1 -1
  262. package/dist/assets/{threads-Cu2t3070.js → threads-DNfxMTwx.js} +1 -1
  263. package/dist/assets/{useDashboardLoop-DDqCFJKY.js → useDashboardLoop-ifcuVRo-.js} +3 -3
  264. package/dist/assets/{useDashboards-SRk8LqHe.js → useDashboards-lgQnk2Al.js} +1 -1
  265. package/dist/assets/useFocusTrap-CJmpNZv2.js +1 -0
  266. package/dist/assets/useInView-DsTvv7L_.js +1 -0
  267. package/dist/assets/useInterval-DDgFrel2.js +1 -0
  268. package/dist/assets/{useLiveConfig-Cpy0_E_-.js → useLiveConfig-B4CmBiAK.js} +1 -1
  269. package/dist/assets/useStudy-CySgE3Cx.js +1 -0
  270. package/dist/assets/{walkSync-CPsd-xu7.js → walkSync-DBne70gg.js} +1 -1
  271. package/dist/demo-assets/CREDITS.md +94 -50
  272. package/dist/demo-assets/images/arnel-lighthouse.avif +0 -0
  273. package/dist/demo-assets/images/cliff-fields.avif +0 -0
  274. package/dist/demo-assets/images/crater-panorama.avif +0 -0
  275. package/dist/demo-assets/images/furnas-lake.avif +0 -0
  276. package/dist/demo-assets/images/green-coast-raw.avif +0 -0
  277. package/dist/demo-assets/images/green-coast.avif +0 -0
  278. package/dist/demo-assets/images/island-coast-poster.avif +0 -0
  279. package/dist/demo-assets/images/nordeste-town.avif +0 -0
  280. package/dist/demo-assets/images/sea-cliffs.avif +0 -0
  281. package/dist/demo-assets/images/sete-cidades.avif +0 -0
  282. package/dist/demo-assets/images/tea-terraces.avif +0 -0
  283. package/dist/demo-assets/pdf/cfd-primer.pdf +0 -0
  284. package/dist/demo-assets/video/island-coast.webm +0 -0
  285. package/dist/fonts/fonts.css +18 -0
  286. package/dist/index.html +38 -10
  287. package/dist/legal/PRIVACY.md +1 -0
  288. package/dist/legal/TERMS.md +1 -1
  289. package/dist/legal/THIRD-PARTY.txt +13 -5
  290. package/package.json +3 -2
  291. package/dist/assets/AnnotationLayer-qV6CIUZv.js +0 -0
  292. package/dist/assets/AtlasView-B5fkQhO6.css +0 -1
  293. package/dist/assets/BriefingPlayer-TpFZB77N.css +0 -1
  294. package/dist/assets/CanvasSkeleton-iy6DBvde.css +0 -1
  295. package/dist/assets/CardEditor-BY1bZiV6.css +0 -1
  296. package/dist/assets/ConversationVideoStudio-C1sd4k53.js +0 -1
  297. package/dist/assets/ConversationVideoStudio-CIAMxElj.css +0 -1
  298. package/dist/assets/CourseLessonReader-YCcNKEW7.js +0 -2
  299. package/dist/assets/CoursesApp-Dz6xjf4V.js +0 -2
  300. package/dist/assets/CrossExamPanel-CZ0ShGma.css +0 -1
  301. package/dist/assets/DashboardDetail-DOfm8UCQ.js +0 -2
  302. package/dist/assets/DashboardLoopGate-Cf0y_HQ7.js +0 -2
  303. package/dist/assets/DashboardLoopRuntime-CnN5VayH.js +0 -1
  304. package/dist/assets/DashboardsApp-_gbfdbX6.js +0 -2
  305. package/dist/assets/DeepZoomApp-fRXCJHHZ.css +0 -1
  306. package/dist/assets/DelegatePanel-CHEB-OZl.js +0 -33
  307. package/dist/assets/DelegatePanel-Cf85-0qE.css +0 -1
  308. package/dist/assets/DemoGallery-DBqnu8TR.js +0 -1
  309. package/dist/assets/FlagshipShowcase-3qQDOK6g.js +0 -1
  310. package/dist/assets/ForecastPanel-Da2ZBUrE.css +0 -1
  311. package/dist/assets/GalleryApp-BWQ-J450.js +0 -1
  312. package/dist/assets/LeverPanel-DhpJY76O.css +0 -1
  313. package/dist/assets/LibraryOverlay-CnKWDMG_.css +0 -1
  314. package/dist/assets/LiveApp-C-OPBybd.css +0 -1
  315. package/dist/assets/LiveApp-DH3OxJFV.js +0 -79
  316. package/dist/assets/LiveSettings-CmgrMqvK.css +0 -1
  317. package/dist/assets/LiveSettings-CuVMy7rZ.js +0 -6
  318. package/dist/assets/MindShape-C_Bo9hW9.js +0 -1
  319. package/dist/assets/MindShape-CaPeUo-a.css +0 -1
  320. package/dist/assets/PresentationDeck-B_EI33Pp.js +0 -1
  321. package/dist/assets/PrismApp-DtLsPiQF.js +0 -2
  322. package/dist/assets/PrismAskController-DBoxQSJR.css +0 -1
  323. package/dist/assets/PrismOverlay-BTfAicBt.css +0 -1
  324. package/dist/assets/Recap-DCiiWNiV.css +0 -1
  325. package/dist/assets/RippleApp-D5j2VCt2.js +0 -2
  326. package/dist/assets/RippleOverlay-_iiZsQVZ.css +0 -1
  327. package/dist/assets/RippleOverlay-zcXAHPuJ.js +0 -6
  328. package/dist/assets/SeeDontRead-Dqfzha0V.js +0 -1
  329. package/dist/assets/ShareModal-D1QuQEko.css +0 -1
  330. package/dist/assets/ShareModal-DWxlrJSz.js +0 -2
  331. package/dist/assets/SrsReview-B1B2VekR.css +0 -1
  332. package/dist/assets/TopicCanvas-LMI0zC7R.js +0 -2
  333. package/dist/assets/TopicCanvas-uRuHi99s.css +0 -1
  334. package/dist/assets/WhyMachineOverlay-BZk3PVTl.css +0 -1
  335. package/dist/assets/WorldOverlay-BaQNNClA.js +0 -2
  336. package/dist/assets/ZoomDeck-B2SjNwY7.css +0 -1
  337. package/dist/assets/canvas-Bsx3eSaS.js +0 -1
  338. package/dist/assets/capture-D8uPIcfj.js +0 -2
  339. package/dist/assets/dashboards-C1u2ks-d.css +0 -1
  340. package/dist/assets/generateLive-B6purd69.js +0 -51
  341. package/dist/assets/homeTarget-CsO8nY7z.js +0 -1
  342. package/dist/assets/index-Dk0QapqQ.js +0 -22
  343. package/dist/assets/index-DmKgC_TJ.css +0 -1
  344. package/dist/assets/kokoro-P_fkcX-A.js +0 -1
  345. package/dist/assets/layout-CEoNLr-w.js +0 -1
  346. package/dist/assets/pageVisibility-BxUVsw7Z.js +0 -1
  347. package/dist/assets/pen-DNMslo3e.js +0 -24
  348. package/dist/assets/pin-D-4Zjiik.css +0 -1
  349. package/dist/assets/portal-Dogggsub.js +0 -1
  350. package/dist/assets/providers-BovElgRL.js +0 -1
  351. package/dist/assets/quietHours-CeBje_uU.js +0 -1
  352. package/dist/assets/registry-BSX3aFUw.js +0 -1
  353. package/dist/assets/registry-Bv1f5UU4.js +0 -2
  354. package/dist/assets/registry-Cse2wF7x.css +0 -1
  355. package/dist/assets/registry-Dye5m3qt.css +0 -1
  356. package/dist/assets/registry-GeSy4i7R.css +0 -1
  357. package/dist/assets/registry-WHd1PwU3.js +0 -1
  358. package/dist/assets/registry-Xl8mAnKq.js +0 -1
  359. package/dist/assets/registry-tkd3UhWn.css +0 -1
  360. package/dist/assets/shapes-Cx5SCKgj.js +0 -39
  361. package/dist/assets/speed-K5_Ebj-8.js +0 -1
  362. package/dist/assets/store-BfHRbVKz.js +0 -1
  363. package/dist/assets/store-CsjDEADX.js +0 -1
  364. package/dist/assets/store-DpObYU1u.js +0 -1
  365. package/dist/assets/store-gohr8YVT.js +0 -1
  366. package/dist/assets/streamParse-B-Gjwa9T.js +0 -2
  367. package/dist/assets/useFocusTrap-DBtkeyRy.js +0 -1
  368. package/dist/assets/useInView-CXTOAEV3.js +0 -1
  369. package/dist/assets/useStudy-GwNcQWtv.js +0 -1
  370. package/dist/demo-assets/images/basalt-cliffs.jpg +0 -0
  371. package/dist/demo-assets/images/capelinhos.jpg +0 -0
  372. package/dist/demo-assets/images/cliff-fields.jpg +0 -0
  373. package/dist/demo-assets/images/crater-panorama.jpg +0 -0
  374. package/dist/demo-assets/images/furnas-lake.jpg +0 -0
  375. package/dist/demo-assets/images/green-coast.jpg +0 -0
  376. package/dist/demo-assets/images/overcast-coast.jpg +0 -0
  377. package/dist/demo-assets/images/patchwork-fields.jpg +0 -0
  378. package/dist/demo-assets/images/ponta-delgada.jpg +0 -0
  379. package/dist/demo-assets/images/sete-cidades.jpg +0 -0
  380. package/dist/demo-assets/images/village-street.jpg +0 -0
  381. package/dist/demo-assets/video/azores-film.webm +0 -0
  382. /package/dist/assets/{BriefingPlayer-C0D_2ILa.js → BriefingPlayer-74mRKyjl.js} +0 -0
  383. /package/dist/assets/{CrossExamPanel-CdIYUu-B.js → CrossExamPanel-BfeGr5iw.js} +0 -0
  384. /package/dist/assets/{ForecastPanel-zPUh2ClQ.js → ForecastPanel-OfW39WGS.js} +0 -0
  385. /package/dist/assets/{LeverPanel-D1SNRGdm.js → LeverPanel-vco5UK2U.js} +0 -0
  386. /package/dist/assets/{WhyMachineOverlay-ks9-rRiL.js → WhyMachineOverlay-D2K7y8SA.js} +0 -0
  387. /package/dist/assets/{lib-B7OE1ZQQ.js → lib-u95BsX_B.js} +0 -0
  388. /package/dist/assets/{registry-7poQfBaM.js → registry-C4Yh05pk.js} +0 -0
  389. /package/dist/assets/{registry-Daypk4uR.js → registry-S3j4OpCH.js} +0 -0
@@ -0,0 +1 @@
1
+ var e={redline:{title:`How the abstract's claim was tightened`,icon:`edit`,iconColor:`var(--warning)`,docName:`Draft conclusion · v3 → v4`,tokens:[{text:`Semaglutide `},{del:`cures obesity`,by:`AM`},{ins:`produces clinically meaningful weight loss`,by:`AM`},{text:` and `},{del:`eliminates`,by:`ED`}],footer:`2 deletions · 2 insertions, softening "cure" to "clinically meaningful."`},annotateddoc:{title:`The trial abstract, annotated`,icon:`doc`,iconColor:`var(--presence)`,docName:`STEP 1 · NEJM 2021 · abstract`,paragraphs:[`In this 68-week, double-blind trial, we randomly assigned 1,961 adults with a body-mass i…`,`The mean change in body weight from baseline to week 68 was −14.9% in the semaglutide gro…`,`Nausea and diarrhea were the most common adverse events; they were typically transient an…`],highlights:[{phrase:`1,961 adults`,note:`Large, adequately powered sample for a Phase 3 obesity RCT.`,color:`var(--insight)`,author:`Sample`},{phrase:`−14.9%`,note:`The headline efficacy figure, replicated downstream in STEP 2–4.`,color:`var(--presence)`,author:`Endpoint`},{phrase:`Nausea and diarrhea`,note:`Real but tolerable, drives much of the early discontinuation.`,color:`var(--warning)`,author:`Safety`}],footer:`Click a highlight to read why it matters to the verdict.`},docoutline:{title:`How the report is structured`,icon:`layers`,iconColor:`var(--insight)`,docName:`GLP-1 evidence review`,activeIndex:1,sections:[{heading:`1 · The question`,loc:`p.1`,weight:6},{heading:`2 · Efficacy evidence`,loc:`p.2`,weight:40,children:[{heading:`2.1 Anchor RCT (STEP 1)`,loc:`p.2`,weight:16},{heading:`2.2 Tirzepatide comparison`,loc:`p.4`,weight:14},{heading:`2.3 Meta-analysis`,loc:`p.5`,weight:10}]},{heading:`3 · Real-world impact`,loc:`p.6`,weight:28,children:[{heading:`3.1 Adherence & persistence`,loc:`p.6`,weight:16},{heading:`3.2 Access & cost`,loc:`p.7`,weight:12}]},{heading:`4 · Verdict & caveats`,loc:`p.8`,weight:14}],footer:`The efficacy section carries the most weight, and the strongest evidence.`},network:{title:`How the trials cite each other`,icon:`share`,iconColor:`var(--presence-soft)`,layout:`circle`,nodes:[{id:`step1`,label:`STEP 1`,group:0,weight:9,color:`var(--insight)`},{id:`step2`,label:`STEP 2`,group:0,weight:6,color:`var(--insight)`},{id:`step4`,label:`STEP 4`,group:0,weight:5,color:`var(--insight)`},{id:`surmount`,label:`SURMOUNT-1`,group:1,weight:7,color:`var(--presence)`},{id:`select`,label:`SELECT`,group:2,weight:8,color:`var(--presence-soft)`}],edges:[{source:`cochrane`,target:`step1`,weight:3},{source:`cochrane`,target:`step2`,weight:2},{source:`cochrane`,target:`step4`,weight:2},{source:`cochrane`,target:`surmount`,weight:2},{source:`surmount`,target:`step1`,weight:2}],footer:`STEP 1 and the Cochrane review are the hubs, everything leans on them.`},sunburst:{title:`Where the research time went`,icon:`chart`,iconColor:`var(--insight)`,unit:`min`,root:{label:`Research`,value:100,children:[{label:`Reading`,value:52,color:`var(--insight)`,children:[{label:`RCTs`,value:30},{label:`Meta-analyses`,value:14},{label:`Guidelines`,value:8}]},{label:`Verifying`,value:30,color:`var(--presence)`,children:[{label:`Cross-check`,value:18},{label:`Claims data`,value:12}]},{label:`Writing`,value:18,color:`var(--presence-soft)`,children:[{label:`Synthesis`,value:12},{label:`Caveats`,value:6}]}]},footer:`More than half the time was reading, and nearly a third was checking.`},researchsummary:{title:`GLP-1 agonists, evidence summary`,question:`Are GLP-1 receptor agonists effective and safe for long-term weight management in adults …`,method:`Cochrane systematic review + meta-analysis of 14 RCTs`,sampleSize:`~18,000 participants, follow-up 52–208 weeks`,year:`2023`,findings:[`Semaglutide 2.4 mg achieved mean body-weight reduction of 12–15% vs 2–3% for placebo.`,`All GLP-1 agonists outperformed placebo on the primary weight outcome (high certainty).`,`Cardiovascular event rates fell significantly in high-risk populations (SELECT trial).`,`Gastrointestinal side-effects (nausea, vomiting) are common but typically transient.`],conclusion:`GLP-1 agonists are the most effective pharmacotherapy for obesity currently available. Lo…`,limitations:`Most trials exclude people with prior GI surgery; long-term safety beyond 5 years is not …`,source:`Iepsen et al. · Cochrane Database Syst Rev · 2023`},hypothesiscard:{title:`SELECT trial, primary hypothesis`,icon:`proof`,iconColor:`var(--presence)`,h0:`Semaglutide 2.4 mg does not reduce the rate of major adverse cardiovascular events (MACE)…`,h1:`Semaglutide 2.4 mg reduces the rate of MACE versus placebo in this population.`,direction:`two-tailed`,alpha:.05,variables:{iv:`Treatment arm, semaglutide 2.4 mg vs placebo`,dv:`Time to first MACE (CV death, non-fatal MI, non-fatal stroke)`},rejected:!0,footer:`HR 0.80 (95% CI 0.72–0.90), p < 0.001 — a highly significant reduction in …`},dotplot:{title:`Weight Loss Distribution, STEP 1 Trial`,values:[3,5,7,8,9],label:`% body weight lost at 68 weeks`,color:`var(--presence)`,note:`Most participants lost 10–16%; the long right tail shows a subgroup exceeding 20%.`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={controlchart:{title:`Adherence Rate, 8-Week Titration`,yLabel:`% on therapy`,centerLine:82,ucl:92,lcl:72,points:[{label:`W1`,value:98},{label:`W2`,value:94},{label:`W3`,value:88},{label:`W4`,value:84},{label:`W5`,value:79}],note:`Week 6 dipped below the lower control limit, GI side-effects drove early discontinuation.`},errorbars:{title:`HbA1c Reduction by Semaglutide Dose (SUSTAIN-7)`,yLabel:`HbA1c change (%)`,unit:`%`,groups:[{label:`Placebo`,mean:-.1,ci:.12,color:`var(--text-muted)`},{label:`0.5 mg`,mean:-1.5,ci:.13,color:`var(--insight)`},{label:`1.0 mg`,mean:-1.8,ci:.13,color:`var(--presence)`}],reference:{value:0,label:`no change`},bracket:{from:0,to:2,label:`p < 0.0001`},footer:`Both doses cut HbA1c far more than placebo, and the two confidence intervals barely overl…`},kpi:{title:`Run at a glance`,icon:`spark`,iconColor:`var(--presence)`,kpis:[{val:`2.4M`,label:`cells`},{val:`3h 12m`,label:`wall-time`},{val:`64`,label:`cores`},{val:`7.8×`,label:`speedup`,color:`var(--insight)`}],footer:`Strong scaling held to 64 cores; past that, halo exchange dominates.`},plot:{title:`Residual convergence`,icon:`chart`,iconColor:`var(--presence)`,xLabel:`iteration`,yLabel:`residual (×10⁻³)`,xDomain:[0,1900],yDomain:[0,10],origin:!0,curves:[{label:`continuity residual`,color:`var(--presence)`,points:[{x:0,y:9.5},{x:200,y:5},{x:400,y:2.6},{x:600,y:1.4},{x:800,y:.8}]}],markers:[{x:1840,y:.05,label:`tol 5e-5`,color:`var(--insight)`}],footer:`Clean exponential decay after the first ~300 iterations, the scheme is stable here.`},matrix:{title:`The discretized operator`,icon:`table`,iconColor:`var(--presence)`,caption:`A, 5-point Laplacian stencil (4×4 of a 2.4M² sparse system)`,bracket:!0,rows:[{cells:[{v:4,hot:!0},{v:-1},{v:0},{v:-1}]},{cells:[{v:-1},{v:4,hot:!0},{v:-1},{v:0}]},{cells:[{v:0},{v:-1},{v:4,hot:!0},{v:-1}]},{cells:[{v:-1},{v:0},{v:-1},{v:4,hot:!0}]}],footer:`Each row is one cell’s 5-point stencil; the solver inverts this banded, diagonally-domina…`},diagram:{title:`The domain & boundary conditions`,icon:`image`,iconColor:`var(--presence)`,ratio:2.1,shapes:[{kind:`rect`,x:10,y:8,w:82,h:32,color:`var(--text-muted)`},{kind:`circle`,cx:36,cy:24,r:6,color:`var(--presence)`,fill:`var(--presence-soft)`},{kind:`line`,x1:1,y1:24,x2:9,y2:24,color:`var(--insight)`,arrow:!0},{kind:`line`,x1:92,y1:24,x2:99,y2:24,color:`var(--warning)`,arrow:!0}],labels:[{x:5,y:24,text:`inlet`,side:`bottom`,color:`var(--insight)`},{x:95,y:24,text:`outlet`,side:`bottom`,color:`var(--warning)`},{x:51,y:8,text:`no-slip wall`,side:`top`,color:`var(--text-muted)`},{x:36,y:24,text:`obstacle`,side:`right`,color:`var(--presence)`}],footer:`Uniform inflow left, pressure outlet right, no-slip on the walls and the obstacle.`},diagramflow:{title:`The solver loop`,icon:`layers`,iconColor:`var(--presence)`,layout:`cycle`,nodes:[{id:`init`,label:`Initialize field`,kind:`start`},{id:`assemble`,label:`Assemble system`,sub:`discretize PDE`},{id:`solve`,label:`Solve linear system`,kind:`accent`},{id:`check`,label:`Residual < tol?`,kind:`muted`},{id:`done`,label:`Converged`,kind:`good`}],edges:[{from:`init`,to:`assemble`},{from:`assemble`,to:`solve`},{from:`solve`,to:`check`},{from:`check`,to:`assemble`,label:`no`,kind:`warn`,dashed:!0},{from:`check`,to:`done`,label:`yes`,kind:`good`}],footer:`Each iteration re-assembles and re-solves until the residual falls below tolerance.`},docview:{title:`The method paper, the scheme I used`,icon:`doc`,iconColor:`var(--presence)`,source:`Hoffmann et al. · uploaded · 22 pp`,page:{n:7,of:22},blocks:[{kind:`h2`,text:`§4.1, Pressure-velocity coupling`},{kind:`p`,text:`We use a collocated finite-volume discretization with Rhie–Chow interpolation to suppress…`},{kind:`p`,text:`Stability requires the under-relaxation factors to satisfy α_p + α_u ≤ 1 on stretched mes…`,spot:!0},{kind:`eq`,text:`α_p = 0.3 , α_u = 0.7 ⇒ α_p + α_u = 1.0`},{kind:`p`,text:`Outside this bound the continuity residual stalls rather than decays, the failure mode in…`}],note:`This is the line your run 043 violated (you had α_u = 0.85). Run 044 sits exactly on the …`,footer:`I pulled the stability condition straight from the paper and tied it to why 043 stalled a…`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={pdfreader:{title:`The reference, in full`,icon:`doc`,iconColor:`var(--text-muted)`,source:`NASA CR, A First Course in CFD · public domain`,file:`/demo-assets/pdf/cfd-primer.pdf`,footer:`The actual report, embedded, scroll the real PDF for the derivations behind the scheme.`},datastructure:{title:`Binary search tree — searching for 40`,icon:`share`,iconColor:`var(--presence)`,kind:`bst`,nodes:[{id:`a`,value:50,left:`b`,right:`c`},{id:`b`,value:30,left:`d`,right:`e`},{id:`c`,value:70,left:`f`,right:`g`},{id:`d`,value:20},{id:`e`,value:40}],highlight:`e`,footer:`Search visits <b>50 → 30 → 40</b>: 40 &lt; 50 go left, 40 &gt; 30 go right, match. Three …`},bigo:{title:`How algorithm cost grows with input`,icon:`chart`,iconColor:`var(--presence)`,classes:[`o-1`,`o-logn`,`o-n`,`o-nlogn`,`o-n2`],maxN:16,highlight:`o-nlogn`,algorithm:{name:`merge sort`,complexity:`o-nlogn`},xLabel:`input size (n)`,yLabel:`operations`,footer:`Binary search hugs the floor at O(log n), merge sort scales gracefully at O(n log n), but…`},complexitysummary:{title:`Same lookup, three approaches`,icon:`clock`,iconColor:`var(--presence)`,approaches:[{name:`Linear scan`,timeComplexity:`O(n)`,spaceComplexity:`O(1)`,notes:`No setup cost — fine for a one-off search over unsorted data.`},{name:`Binary search`,timeComplexity:`O(log n)`,spaceComplexity:`O(1)`,notes:`Needs the array sorted first; free here since merge sort already sorted it.`},{name:`Merge sort + binary search`,timeComplexity:`O(n log n)`,spaceComplexity:`O(n)`,notes:`Pays off once the same array is searched many times, not for a single query.`}],footer:`For a single lookup, linear scan wins on simplicity; sort once and binary search pays for…`},confusionmatrix:{title:`Classifier results on the held-out test set`,icon:`table`,iconColor:`var(--presence)`,classes:[`Setosa`,`Versicolor`,`Virginica`],matrix:[[50,0,0],[0,47,3],[0,4,46]],showTotals:!0,readout:`perclass`,countLabel:`samples`,footer:`Setosa separates cleanly; the only confusion is between Versicolor and Virginica, where t…`},protocolstack:{title:`The TCP/IP stack: how a request travels down`,icon:`layers`,iconColor:`var(--presence)`,layers:[{name:`Application`,role:`Your request lives here — the actual message a program speaks.`,protocols:[`HTTP`,`DNS`,`TLS`,`SMTP`]},{name:`Transport`,role:`Splits the message into segments and guarantees order & delivery.`,protocols:[`TCP`,`UDP`]},{name:`Internet`,role:`Wraps each segment in a packet and routes it across networks by IP address.`,protocols:[`IP`,`ICMP`]},{name:`Link`,role:`Frames the packet for the local wire and addresses the next hop by MAC.`,protocols:[`Ethernet`,`Wi-Fi`,`ARP`]}],packet:[{header:`Ethernet`,layer:`Link`},{header:`IP`,layer:`Internet`},{header:`TCP`,layer:`Transport`},{header:`HTTP`,layer:`Application`},{header:`Your request`,layer:`Application`}],caption:`Each layer adds its own header on the way down, then the receiver peels them off in rever…`},logicgates:{title:`Half Adder`,icon:`share`,iconColor:`var(--presence)`,inputs:[{id:`A`,label:`A`,value:1},{id:`B`,label:`B`,value:0}],gates:[{id:`sum`,kind:`XOR`,inputs:[`A`,`B`]},{id:`carry`,kind:`AND`,inputs:[`A`,`B`]}],output:{from:`sum`,label:`Sum`},truth:[{row:[0,0],out:0},{row:[0,1],out:1},{row:[1,0],out:1},{row:[1,1],out:0}],caption:`A half adder sums two bits: the XOR gate produces the sum, the AND gate produces the carr…`,footer:`The truth table row matching the live inputs is highlighted; flip A or B in your head and…`},algorithmtrace:{title:`Bubble Sort — First Pass`,icon:`layers`,iconColor:`var(--presence)`,values:[5,1,4,2,8],steps:[{caption:`Start the pass: compare the first adjacent pair, 5 and 1.`,compare:[0,1],pointer:{i:0,j:1}},{caption:`5 > 1, so swap them — the larger value bubbles right.`,swapped:[0,1],pointer:{i:0,j:1}},{caption:`Advance the window and compare 5 and 4.`,compare:[1,2],pointer:{i:1,j:2}},{caption:`5 > 4, swap again.`,swapped:[1,2],pointer:{i:1,j:2}},{caption:`Compare 5 and 2.`,compare:[2,3],pointer:{i:2,j:3}}],caption:`Step through one full pass: each comparison either holds or swaps, walking the largest re…`,footer:`After this pass the maximum (8) is locked in its final position; bubble sort repeats over…`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={sortingviz:{title:`Bubble Sort step-by-step`,algorithm:`Bubble Sort`,complexity:`o-n2`,values:[5,3,8,1,6],steps:[{caption:`Pass 1: compare 5 and 3.`,values:[5,3,8,1,6],compared:[0,1]},{caption:`5 > 3 → swap.`,values:[3,5,8,1,6],swapped:[0,1]},{caption:`Compare 5 and 8. No swap.`,values:[3,5,8,1,6],compared:[1,2]},{caption:`Compare 8 and 1.`,values:[3,5,8,1,6],compared:[2,3]},{caption:`8 > 1 → swap.`,values:[3,5,1,8,6],swapped:[2,3]}],footer:`Bubble sort: O(n²) time. Each pass bubbles the largest unsorted element to its final posi…`},graphtrace:{title:`BFS Graph Traversal`,algorithm:`bfs`,nodes:[{id:`A`,label:`A`,x:50,y:10},{id:`B`,label:`B`,x:20,y:40},{id:`C`,label:`C`,x:80,y:40},{id:`D`,label:`D`,x:10,y:75},{id:`E`,label:`E`,x:40,y:75}],edges:[{from:`A`,to:`B`},{from:`A`,to:`C`},{from:`B`,to:`D`},{from:`B`,to:`E`},{from:`C`,to:`F`}],steps:[{caption:`Start BFS at A. Add A to queue.`,current:`A`,frontier:[`A`],visited:[]},{caption:`Dequeue A. Enqueue neighbors B and C.`,current:`A`,visited:[`A`],frontier:[`B`,`C`]},{caption:`Dequeue B. Enqueue neighbors D and E.`,current:`B`,visited:[`A`,`B`],frontier:[`C`,`D`,`E`]},{caption:`Dequeue C. Enqueue neighbor F.`,current:`C`,visited:[`A`,`B`,`C`],frontier:[`D`,`E`,`F`]},{caption:`Dequeue D. No unvisited neighbors.`,current:`D`,visited:[`A`,`B`,`C`,`D`],frontier:[`E`,`F`]}],footer:`BFS visits nodes level-by-level (breadth-first). Queue is FIFO. Time: O(V+E). Contrast wi…`},binarytree:{title:`BST Search — find 7`,nodes:[{id:`n10`,value:10,left:`n5`,right:`n15`},{id:`n5`,value:5,left:`n3`,right:`n7`},{id:`n15`,value:15},{id:`n3`,value:3},{id:`n7`,value:7}],root:`n10`,steps:[{caption:`Start at root: 10. Is 7 == 10?`,states:{n10:`visiting`}},{caption:`7 < 10 → go left to 5.`,states:{n10:`visited`,n5:`visiting`}},{caption:`7 > 5 → go right to 7.`,states:{n10:`visited`,n5:`visited`,n7:`visiting`}},{caption:`7 == 7 → Found! 3 comparisons.`,states:{n10:`visited`,n5:`visited`,n7:`found`}}],footer:`BST search: O(h) time where h is tree height — O(log n) balanced, O(n) worst case. Each c…`},dptable:{title:`LCS — Longest Common Subsequence: "ABCB" vs "BCAB"`,recurrence:`dp[i][j] = dp[i-1][j-1]+1 if s[i]=t[j], else max(dp[i-1][j], dp[i][j-1])`,cols:[`ε`,`B`,`C`,`A`,`B`],rows:[`ε`,`A`,`B`,`C`,`B`],cells:[[0,0,0,0,0],[0,0,0,1,1],[0,1,1,1,2],[0,1,2,2,2],[0,1,2,2,3]],path:[[1,3],[2,4],[3,2],[4,4]],steps:[{caption:`Base case: row 0 and col 0 are all 0 — empty string has LCS 0 with anything.`,current:[0,0],deps:[]},{caption:`dp[1][3]: A matches A → dp[0][2]+1 = 1. First character matched.`,current:[1,3],deps:[[0,2]]},{caption:`dp[2][4]: B matches B → dp[1][3]+1 = 2. Two-character match.`,current:[2,4],deps:[[1,3]]},{caption:`dp[3][2]: C matches C → dp[2][1]+1 = 2.`,current:[3,2],deps:[[2,1]]},{caption:`dp[4][4]: B matches B → dp[3][3]+1 = 3. Final answer: LCS = "BCB" (length 3).`,current:[4,4],deps:[[3,3]]}],footer:`LCS is <b>"BCB"</b> (length 3). Backtrack from dp[4][4]=3 via diagonal match cells. Class…`},hashtable:{title:`Hash table — separate chaining, h(k) = k mod 7`,size:7,hashFn:`h(k) = k mod 7`,entries:[{key:14,value:`Alice`},{key:21,value:`Bob`},{key:7,value:`Carol`},{key:3,value:`Dan`},{key:10,value:`Eve`}],highlight:10,footer:`Keys 7, 14 and 21 hash to bucket 0 (all divisible by 7). Key 10 hashes to bucket 3, colli…`},trie:{title:`Prefix tree (Trie) — autocomplete words`,words:[`apple`,`app`,`apt`,`apply`,`bat`],highlight:`apply`,footer:`Trie lookup: O(m) where m = word length, regardless of dictionary size. Each edge is one …`},gridtrace:{title:`BFS Shortest Path on a Grid`,algorithm:`BFS`,steps:[{caption:`Find shortest path S→E. Walls (#) block movement.`,grid:[[{state:`start`},{state:`empty`},{state:`wall`},{state:`empty`}],[{state:`empty`},{state:`empty`},{state:`empty`},{state:`empty`}],[{state:`empty`},{state:`empty`},{state:`empty`},{state:`end`}]]},{caption:`BFS expands: S visited, neighbors queued.`,grid:[[{state:`visited`},{state:`queued`},{state:`wall`},{state:`empty`}],[{state:`queued`},{state:`empty`},{state:`empty`},{state:`empty`}],[{state:`empty`},{state:`empty`},{state:`empty`},{state:`end`}]]},{caption:`Wave reaches E. Shortest path length = 5.`,grid:[[{state:`path`},{state:`visited`},{state:`wall`},{state:`visited`}],[{state:`path`},{state:`path`},{state:`path`},{state:`visited`}],[{state:`visited`},{state:`visited`},{state:`visited`},{state:`end`}]]}],footer:`BFS guarantees shortest path in unweighted grids. O(rows×cols). Classic FAANG: islands (L…`},sysarchdiagram:{title:`Whiteboard: a URL shortener at scale`,icon:`share`,iconColor:`var(--presence)`,nodes:[{id:`client`,label:`Client`,kind:`client`},{id:`cdn`,label:`CDN`,kind:`cdn`,sub:`static assets`},{id:`lb`,label:`Load Balancer`,kind:`loadbalancer`},{id:`api`,label:`API Service`,kind:`service`,sub:`×12 instances`},{id:`cache`,label:`Redis Cache`,kind:`cache`,sub:`hot slugs`}],edges:[{from:`client`,to:`cdn`,protocol:`HTTPS`},{from:`client`,to:`gw`,protocol:`HTTPS`},{from:`gw`,to:`lb`},{from:`lb`,to:`api`,protocol:`HTTP/2`},{from:`api`,to:`cache`,label:`read-through`}],footer:`Reads hit the cache first (sub-ms for hot slugs); writes go through the queue so Postgres…`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={recursiontree:{title:`Naive Recursive fib(4)`,icon:`spark`,iconColor:`var(--presence)`,root:{call:`fib(4)`,result:3,children:[{call:`fib(3)`,result:2,children:[{call:`fib(2)`,result:1,children:[{call:`fib(1)`,result:1},{call:`fib(0)`,result:0}]},{call:`fib(1)`,result:1}]},{call:`fib(2)`,result:1,children:[{call:`fib(1)`,result:1},{call:`fib(0)`,result:0}]}]},footer:`fib(2) is recomputed twice here and the redundant subtree only grows with n — O(2ⁿ) calls…`},sequencealign:{title:`The LCS problem, on real reads`,icon:`layers`,iconColor:`var(--presence)`,kind:`dna`,sequences:[{label:`Reference`,chars:`ATGGCTAACGTTAGC`},{label:`Read 1`,chars:`ATGGCTAAAGTTAGC`},{label:`Read 2`,chars:`ATGGCTA--GTTAGC`}],consensus:`Consensus`,highlightMismatches:!0,footer:`Read 1 carries a single-base substitution (C→A); Read 2 has a 2-base deletion right where…`},compare:{eyebrow:`Differential, what else fits, and why not`,options:[{name:`Pneumonia (CAP)`,sub:`working dx`,pick:!0},{name:`CHF exacerbation`},{name:`Pulmonary embolism`}],criteria:[{label:`Imaging`,cells:[{v:`Focal consolidation`,win:!0},{v:`Bilateral, vascular`},{v:`Often normal CXR`}]},{label:`Fever / CRP↑`,cells:[{v:`Yes`,win:!0},{v:`No`},{v:`Low-grade`}]},{label:`Onset`,cells:[{v:`Days`,win:!0},{v:`Days–weeks`},{v:`Sudden`}]},{label:`D-dimer / risk`,cells:[{v:`n/a`},{v:`BNP↑`},{v:`Wells low`,win:!1}]}],recommendation:`<b>CAP fits this picture best.</b> No orthopnea/edema and a normal BNP argue against CHF;…`},timeline:{eyebrow:`Course so far`,events:[{time:`Day −3`,title:`Productive cough, malaise`,color:`var(--text-muted)`},{time:`Day 0 · 02:10`,title:`ED: T 39.4°, SpO₂ 90%`,tag:`admit`,color:`var(--warning)`},{time:`Day 0 · 03:00`,title:`First antibiotic dose`,tag:`started`,color:`var(--insight)`},{time:`Day 1`,title:`Fever breaking, O₂ weaning`,color:`var(--insight)`}]},clinicaltimeline:{title:`Admission timeline, Mr. Alvarez`,events:[{date:`48h ago`,type:`symptom`,label:`Fever 39.1°C, productive cough, dyspnoea on exertion`},{date:`36h ago`,type:`visit`,label:`ED presentation, SpO₂ 91% on room air`},{date:`34h ago`,type:`test`,label:`CXR ordered, right lower lobe infiltrate`},{date:`34h ago`,type:`test`,label:`Blood cultures × 2, CBC, CRP, procalcitonin`},{date:`30h ago`,type:`result`,label:`WBC 14.2, CRP 187, procalcitonin 2.1, bacterial picture`}]},medicationschedule:{title:`Current medication orders`,medications:[{name:`Amoxicillin-clavulanate`,dose:`1.2g IV`,frequency:`every 8 hours`,times:[`6:00 AM`,`2:00 PM`,`10:00 PM`],withFood:!1,notes:`Switch to oral when tolerating`},{name:`Paracetamol`,dose:`1g IV/oral`,frequency:`every 6 hours PRN`,times:[`6:00 AM`,`12:00 PM`,`6:00 PM`,`12:00 AM`],withFood:!1,notes:`For fever > 38.5°C only`}]},clearancematrix:{title:`Common over-the-counter combos`,icon:`shield`,iconColor:`var(--insight)`,rows:[`Ibuprofen`,`Acetaminophen`,`Aspirin`,`Antihistamine`],columns:[`With alcohol`,`On an empty stomach`,`During pregnancy`,`With a blood thinner`],cells:[{row:`Ibuprofen`,col:`With alcohol`,level:`caution`,reason:`Both irritate the stomach lining — space them out.`},{row:`Ibuprofen`,col:`On an empty stomach`,level:`caution`,reason:`Take with food to limit stomach upset.`},{row:`Ibuprofen`,col:`During pregnancy`,level:`avoid`,reason:`Not advised in the third trimester.`},{row:`Ibuprofen`,col:`With a blood thinner`,level:`avoid`,reason:`Raises bleeding risk markedly.`},{row:`Acetaminophen`,col:`With alcohol`,level:`caution`,reason:`Heavy drinking strains the liver — keep doses low.`}],footer:`General guidance, not medical advice — unrated pairings read “check a pro,” and your phar…`},anatomyfigure:{title:`Anatomy of the heart`,icon:`spark`,iconColor:`var(--danger)`,organ:`heart`,view:`anterior`,pins:[{x:33,y:40,label:`Right atrium`,note:`Receives deoxygenated blood from the body via the venae cavae.`},{x:67,y:40,label:`Left atrium`,note:`Receives oxygen-rich blood returning from the lungs.`},{x:36,y:66,label:`Right ventricle`,note:`Pumps blood to the lungs through the pulmonary artery.`},{x:63,y:66,label:`Left ventricle`,note:`The thickest chamber — drives blood out to the whole body.`},{x:50,y:18,label:`Aorta`,note:`The main artery carrying oxygenated blood from the left ventricle.`}],caption:`The four chambers and the great vessels, viewed from the front.`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={odontogram:{title:`Adult dental chart`,icon:`doc`,iconColor:`var(--presence)`,system:`universal`,teeth:[{n:3,status:`filling`,surface:`O`},{n:14,status:`filling`,surface:`MOD`},{n:19,status:`crown`,note:`porcelain-fused-to-metal`},{n:30,status:`missing`},{n:31,status:`implant`,note:`titanium fixture, placed 2024`}],caption:`Universal numbering: teeth 1–16 across the upper arch, 17–32 across the lower.`},ecgstrip:{title:`Rhythm strip · lead II`,iconColor:`var(--danger)`,rateBpm:72,rhythm:`Normal sinus rhythm`,gridMs:40,intervals:[{label:`PR`,fromMs:125,toMs:285},{label:`QRS`,fromMs:300,toMs:390},{label:`QT`,fromMs:300,toMs:700}],caption:`Regular, narrow-complex, every P followed by a QRS — sinus at 72. PR 160 ms, QRS 90 ms, Q…`},vitalstrip:{title:`Bedside monitor`,iconColor:`var(--presence)`,windowLabel:`last 30 min`,channels:[{label:`HR`,unit:`bpm`,normal:[60,100],series:[108,104,99,96,94]},{label:`BP (sys)`,unit:`mmHg`,normal:[90,140],series:[126,124,122,121,120]},{label:`SpO₂`,unit:`%`,color:`var(--warning)`,normal:[94,100],series:[96,95,95,94,93]},{label:`RR`,unit:`/min`,normal:[12,20],series:[22,21,21,20,20]}],caption:`SpO₂ has slipped to 91% on 2 L — below the 94–100% band and flagged. HR settling back int…`},careplan:{title:`Care plan — day 1 post-op`,icon:`shield`,iconColor:`var(--presence)`,caption:`Med-surg · evening shift handoff`,entries:[{assessment:`Rates pain 7/10 at the incision, guarding on movement`,diagnosis:`Acute pain related to surgical incision`,goal:`Pain reported ≤ 3/10 within 24 hours`,interventions:[`Give scheduled analgesia and assess effect at 30 min`,`Reposition and support the incision before activity`,`Reassess pain score every 4 hours`],rationale:`Multimodal, scheduled analgesia controls pain better than PRN-only dosing and supports ea…`,status:`partial`},{assessment:`Clean, dry surgical wound; indwelling IV and urinary catheter in place`,diagnosis:`Risk for infection related to surgical wound and invasive lines`,goal:`Remains afebrile with no signs of wound or line infection`,interventions:[`Hand hygiene and aseptic technique at every contact`,`Inspect wound and line sites each shift for redness or drainage`,`Remove the urinary catheter as soon as clinically appropriate`],rationale:`Early line removal and daily site checks catch infection before it spreads and shorten ex…`,status:`ongoing`},{assessment:`Steady on standby-assist; lungs clear, encouraged to walk`,diagnosis:`Risk for impaired mobility related to post-operative pain`,goal:`Walks the hallway with standby assist by day 2`,interventions:[`Pre-medicate for pain 30 min before ambulation`,`Assist out of bed three times daily`,`Coach incentive spirometry hourly while awake`],rationale:`Early ambulation lowers the risk of pneumonia and venous thromboembolism.`,status:`met`}],footer:`Reassess each goal at the next shift and update the status as outcomes are met.`},triageboard:{title:`Meanwhile, down in the ED`,icon:`alert`,iconColor:`var(--danger)`,patients:[{chiefComplaint:`Crushing chest pain, radiating to left arm`,esiLevel:1,vitals:[{label:`HR`,value:`118`,abnormal:!0},{label:`BP`,value:`88/56`,abnormal:!0},{label:`SpO₂`,value:`91%`,abnormal:!0}],waitTime:`being seen`},{chiefComplaint:`Fall from ladder, deformed forearm`,esiLevel:2,vitals:[{label:`HR`,value:`96`},{label:`Pain`,value:`8/10`,abnormal:!0}],waitTime:`6 min`},{chiefComplaint:`Fever and cough, 3 days`,esiLevel:3,vitals:[{label:`Temp`,value:`38.9°C`,abnormal:!0}],waitTime:`42 min`},{chiefComplaint:`Twisted ankle playing soccer`,esiLevel:4,waitTime:`1h 10m`},{chiefComplaint:`Refill request, ran out of a maintenance medication`,esiLevel:5,waitTime:`1h 45m`}],footer:`The chest-pain patient jumped the queue the moment they walked in, everyone else holds th…`},mentalhealthscreen:{title:`Routine screen on admission — Mr. Alvarez`,icon:`chat`,iconColor:`var(--presence)`,instrument:`PHQ-9`,items:[{prompt:`Little interest or pleasure in doing things`,score:1,anchor:`Several days`},{prompt:`Feeling down, depressed, or hopeless`,score:1,anchor:`Several days`},{prompt:`Trouble falling or staying asleep, or sleeping too much`,score:2,anchor:`More than half the days`},{prompt:`Feeling tired or having little energy`,score:2,anchor:`More than half the days`},{prompt:`Poor appetite or overeating`,score:1,anchor:`Several days`}],total:8,maxTotal:27,bands:[{label:`Minimal`,range:[0,4],tone:`ok`},{label:`Mild`,range:[5,9],tone:`mild`},{label:`Moderate`,range:[10,14],tone:`moderate`},{label:`Mod. severe`,range:[15,19],tone:`moderate`},{label:`Severe`,range:[20,27],tone:`severe`}],footer:`Sleep and fatigue are likely the acute admission talking, not a standalone mood concern, …`},callout:{title:`Recommendation`,icon:`shield`,iconColor:`var(--warning)`,tone:`warn`,kicker:`Before signing`,body:`Sign-ready <b>after three redlines</b> to §8.2 and the liability cap. The economics are f…`,points:[`Redline §8.2: notice 90 → 30 days; consider deleting auto-renew entirely.`,`Raise the liability cap from 1× to 12× annual fees (data processor).`,`Either way, <b>calendar the Nov 30 2027 notice deadline now</b>.`],footer:`Want me to draft the redline markup and a one-paragraph cover note to their counsel?`},casebrief:{title:`The precedent behind that redline`,icon:`proof`,iconColor:`var(--presence)`,citation:`812 F. Supp. 2d 501 (D. Del. 2019)`,parties:{plaintiff:`Bell Fabrication, Inc.`,defendant:`Meridian Systems, LLC`},facts:`Bell signed a 24-month services agreement with a silent auto-renewal clause requiring 90 …`,issue:`Whether a 90-day auto-renewal notice window, buried in a boilerplate term clause, is enfo…`,holding:`Enforceable, but only narrowly — the clause was conspicuously formatted and the buyer had…`,reasoning:`The court weighed three things: whether the term was buried or set apart, whether the buy…`,footer:`The takeaway for §8.2: a 90-day window is defensible, but only barely, negotiating it dow…`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={discoverytracker:{title:`Meanwhile: Meridian's discovery requests`,icon:`doc`,iconColor:`var(--presence)`,requests:[{num:1,description:`All communications regarding the Acme MSA renewal terms`,requestingParty:`Meridian Systems`,status:`produced`,batesRange:`ACME-000412–000488`,dueDate:`Apr 3, 2026`},{num:2,description:`Board minutes discussing the 2025 vendor consolidation`,requestingParty:`Meridian Systems`,status:`objected`,dueDate:`Apr 3, 2026`},{num:3,description:`Outside counsel's memo on liability-cap exposure`,requestingParty:`Meridian Systems`,status:`privileged`,privilegeBasis:`attorney-client privilege`,dueDate:`Apr 3, 2026`},{num:4,description:`All Order Forms executed under the MSA since 2024`,requestingParty:`Meridian Systems`,status:`outstanding`,dueDate:`Apr 17, 2026`},{num:5,description:`Internal escalation emails re: the 90-day notice miss`,requestingParty:`Meridian Systems`,status:`outstanding`,dueDate:`Apr 17, 2026`}],footer:`Same file, a different matter — Meridian is compelling production on the renewal dispute.…`},patentclaimchart:{title:`One more diligence check: Acme's sync engine against a live patent`,icon:`table`,iconColor:`var(--presence)`,claimElements:[{id:`1.1`,text:`receiving, at a server, a stream of shipment-location updates from a plurality of mobile …`},{id:`1.2`,text:`storing each location update in a distributed ledger replicated across at least three nod…`},{id:`1.3`,text:`detecting a conflict between two location updates for the same shipment received within a…`},{id:`1.4`,text:`automatically resolving the conflict using a timestamp-priority rule without human interv…`},{id:`1.5`,text:`pushing the resolved location to a customer-facing dashboard in real time`}],references:[`Acme's platform (accused)`,`US 9,112,233 (prior art)`],cells:[[{state:`disclosed`,quote:`Edge devices stream GPS pings to the ingest cluster every 4 seconds.`},{state:`disclosed`,quote:`Sensor readings are logged to a central event bus polled by field units.`}],[{state:`disclosed`,quote:`Every update is written to a 3-node Raft-replicated ledger before ack.`},{state:`disclosed`,quote:`Readings are mirrored to a backup store for durability.`}],[{state:`disputed`,quote:`Acme’s docs describe "duplicate suppression," which may or may not be the claimed conflic…`},{state:`not-disclosed`}],[{state:`not-disclosed`},{state:`not-disclosed`}],[{state:`disclosed`,quote:`Resolved coordinates post to the live tracking map within 400ms.`},{state:`not-disclosed`}]],footer:`Acme's platform is missing element 1.4 — conflicts get flagged for manual review, not aut…`},litigationtimeline:{title:`If the renewal dispute escalates`,icon:`proof`,iconColor:`var(--presence)`,events:[{date:`2026-08-03`,kind:`filing`,court:`D. Del.`,party:`Plaintiff`,urgency:`routine`,detail:`Complaint for breach of contract, if the 90-day notice window gets missed.`},{date:`2026-08-24`,kind:`motion`,court:`D. Del.`,party:`Defendant`,urgency:`soon`,detail:`Motion to dismiss, citing Bell v. Meridian on the notice-window question.`},{date:`2026-09-14`,kind:`hearing`,court:`D. Del.`,urgency:`soon`,detail:`Oral argument on the motion to dismiss.`},{date:`2026-09-28`,kind:`deadline`,urgency:`critical`,detail:`Last day to file non-renewal notice before the term silently rolls another year.`},{date:`2026-10-19`,kind:`order`,court:`D. Del.`,urgency:`routine`,detail:`Ruling expected on the motion to dismiss.`}],footer:`The track record Bell v. Meridian sets, worth avoiding by redlining §8.2 now.`},billtracker:{title:`The bill that could reshape this MSA`,icon:`chart`,iconColor:`var(--insight)`,bill:`S. 1189 — Data Broker Registration Act`,stages:[{name:`Introduced`,status:`done`},{name:`Committee`,status:`done`,voteTally:{yea:14,nay:6}},{name:`Floor Vote`,status:`done`,voteTally:{yea:62,nay:38}},{name:`Other Chamber`,status:`current`},{name:`Signed`,status:`pending`}],footer:`If it passes, data processors like Acme pick up new registration duties, worth its own cl…`},immigrationcase:{title:`Case status — employment-based petition`,icon:`globe`,iconColor:`var(--presence)`,visaCategory:`EB-2 · I-140 Immigrant Petition`,priorityDate:`Mar 15, 2024`,rfeDeadline:`2026-07-20`,stages:[{name:`I-140 filed`,status:`done`,date:`Mar 15, 2024`},{name:`Biometrics`,status:`done`,date:`May 2, 2024`},{name:`Request for Evidence issued`,status:`current`,date:`Jun 10, 2026`},{name:`Decision`,status:`pending`}],footer:`The RFE asks for updated proof of the employer’s ability to pay, gather the last two year…`},caseload:{title:`Open cases`,icon:`shield`,iconColor:`var(--presence)`,cases:[{clientRef:`J.M.-0192`,status:`Active · in-home visits`,nextContact:`Overdue since Thu`,riskLevel:`high`,note:`Housing instability, follow-up on shelter placement.`},{clientRef:`R.K.-0207`,status:`Active · monthly check-in`,nextContact:`Fri`,riskLevel:`high`,note:`Recently reunified; monitoring the transition closely.`},{clientRef:`A.T.-0118`,status:`Active · biweekly check-in`,nextContact:`Mon`,riskLevel:`medium`},{clientRef:`S.D.-0224`,status:`Active · monthly check-in`,nextContact:`Jun 30`,riskLevel:`low`},{clientRef:`M.P.-0055`,status:`Pending intake review`,nextContact:`Jul 3`}],footer:`J.M.-0192 is the one to move today — overdue and high-risk is the combination that matter…`},verdictcard:{title:`The call`,stance:`caution`,label:`Ship it, carefully`,verdict:`Build the search rewrite first, behind a flag, and gate the quarter on its p95.`,reason:`Four of five headline features ride on the new index, derisk it before anything leans on …`,caveat:`If the index migration slips two weeks, cut Polish from Q3, not the search hardening.`,confidence:`medium`,footer:`The roadmap below holds either way, this only changes what ships <strong>last</strong>.`},scenarioset:{title:`How the search rewrite could land`,icon:`chart`,iconColor:`var(--insight)`,metric:`Search p95 at end of quarter (target 400ms)`,scenarios:[{kind:`best`,value:`~320ms`,detail:`Index migration lands on time; cache hit-rate holds.`,points:[`All five features ship`,`Polish keeps its Q3 slot`]},{kind:`likely`,value:`~480ms`,detail:`A two-week migration slip, recovered with cache tuning.`,points:[`Four features ship on time`,`Polish slips ~2 weeks`]},{kind:`worst`,value:`~900ms`,detail:`Index rewrite stalls; fall back to the old path.`,points:[`Search-dependent features held`,`Quarter re-planned`]}],footer:`A range, not a promise, we revisit at the mid-quarter checkpoint.`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={divider:{title:`The roadmap`,eyebrow:`Section 01`,heading:`The roadmap`,sub:`Three releases across the quarter, each one unblocks the next.`,badge:`Q2 → Q3`,badgeColor:`var(--insight)`,icon:`layers`,iconColor:`var(--insight)`,chips:[{label:`Foundation`,color:`var(--presence)`},{label:`Search`,color:`var(--insight)`},{label:`Polish`,color:`var(--warning)`}]},wizard:{title:`Release plan · four gates`,icon:`check`,iconColor:`var(--presence-soft)`,activeStep:1,steps:[{label:`Foundation`,caption:`Weeks 1–3`,status:`done`,body:`Stand up the typed core and the migration shim. Dual-write the legacy stores.`,bullets:[`Typed core service live`,`Dual-write shim shipped`,`Read traffic still on legacy`]},{label:`Search index`,caption:`Weeks 4–7`,status:`active`,body:`Build and backfill the new inverted index; shadow-read against legacy for parity.`,bullets:[`Backfill 41M docs`,`Shadow-read parity ≥ 99.5%`,`Cut over behind a flag`]},{label:`Surface features`,caption:`Weeks 8–10`,status:`todo`,body:`Ship saved views, instant filters, and the command bar on top of the new index.`,bullets:[`Saved views`,`Instant filters`,`Command-K`]},{label:`Polish + GA`,caption:`Weeks 11–12`,status:`todo`,body:`Performance pass, decommission legacy reads, and open the gate to GA.`,bullets:[`Kill legacy reads`,`p95 budget check`,`GA flag flip`]}],footer:`We are mid-gate two, the search backfill is the critical path.`},goaltree:{title:`The quarter in OKRs`,icon:`spark`,iconColor:`var(--insight)`,objectives:[{name:`Make Atlas feel instant`,owner:`Priya`,progress:58,keyResults:[{label:`Search p95 < 400ms`,progress:40,target:`400ms`,color:`var(--insight)`},{label:`Cold load < 1.2s`,progress:72,target:`1.2s`,color:`var(--presence)`},{label:`Zero 5xx on cutover`,progress:62,target:`0`,color:`var(--warning)`}]},{name:`One platform, not three`,owner:`Marco`,progress:71,keyResults:[{label:`Services collapsed`,progress:66,target:`3→1`,color:`var(--presence-soft)`},{label:`Legacy reads retired`,progress:35,target:`100%`,color:`var(--danger)`}]}],footer:`On track for "instant"; the platform collapse trails on legacy read retirement.`},candlestick:{title:`Search latency p95 · weekly (ms)`,icon:`chart`,iconColor:`var(--warning)`,unit:`ms`,candles:[{label:`W1`,o:1980,h:2100,l:1900,c:1940,vol:41},{label:`W2`,o:1940,h:1980,l:1610,c:1680,vol:44},{label:`W3`,o:1680,h:1720,l:1180,c:1240,vol:47},{label:`W4`,o:1240,h:1300,l:820,c:880,vol:52},{label:`W5`,o:880,h:940,l:540,c:610,vol:55}],footer:`Each backfill batch drags the floor down. The 400ms target is one batch away.`},lollipop:{title:`Effort left by workstream`,icon:`layers`,iconColor:`var(--presence-soft)`,unit:` pts`,rows:[{label:`Search index`,value:34,color:`var(--insight)`,sub:`critical path`},{label:`Command bar`,value:21,color:`var(--presence)`,sub:`depends on index`},{label:`Saved views`,value:18,color:`var(--presence-soft)`},{label:`Migration shim`,value:9,color:`var(--warning)`,sub:`almost done`},{label:`Docs + GA`,value:6,color:`var(--text-muted)`}],footer:`88 points remain, over a third sit on the search index alone.`},decisiontree:{title:`RFC-114 · how we chose the search engine`,icon:`shield`,iconColor:`var(--insight)`,rootId:`scale`,nodes:[{id:`scale`,question:`Will the corpus pass 40M docs in a year?`,detail:`Current 41M, growing ~9%/qtr.`,yes:`latency`,no:`managed`},{id:`latency`,question:`Is sub-400ms p95 a hard requirement?`,detail:`It is, search gates four features.`,yes:`self`,no:`managed`},{id:`self`,question:`Can we staff index ops in-house?`,detail:`Two infra engineers committed.`,yes:`own`,no:`cloud`},{id:`own`,question:``,outcome:`Self-host the new index on our cluster`,outcomeColor:`var(--presence)`},{id:`cloud`,question:``,outcome:`Managed search with a latency SLA`,outcomeColor:`var(--insight)`}],footer:`We landed on self-host, the only path that hits the latency budget at our scale.`},slopegraph:{title:`Before → after the re-platform`,icon:`arrowDown`,iconColor:`var(--insight)`,beforeLabel:`v2 today`,afterLabel:`v3 target`,unit:``,rows:[{label:`Deploy time (min)`,before:28,after:6,color:`var(--insight)`},{label:`Services to page`,before:11,after:4,color:`var(--presence)`},{label:`p95 search (s)`,before:1.9,after:.4,color:`var(--warning)`},{label:`On-call alerts/wk`,before:37,after:12,color:`var(--danger)`}],footer:`Every operational line moves the right direction, fewer moving parts pays compounding int…`},dumbbell:{title:`Build estimate vs. actual · by epic`,icon:`clock`,iconColor:`var(--warning)`,unit:` days`,startLabel:`estimate`,endLabel:`actual`,startColor:`var(--text-muted)`,endColor:`var(--insight)`,domain:[0,30],rows:[{label:`Typed core`,start:8,end:10,tag:`shipped`},{label:`Migration shim`,start:5,end:6,tag:`shipped`},{label:`Index backfill`,start:12,end:19,tag:`over`},{label:`Shadow-read parity`,start:6,end:7,tag:`in flight`},{label:`Command bar`,start:9,end:9,tag:`planned`}],footer:`The index backfill ran 7 days long, the source of most schedule pressure this quarter.`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={powersample:{title:`Command bar test · sample size`,icon:`chart`,iconColor:`var(--presence)`,effectSize:.1,alpha:.05,power:.8,curve:[{n:400,power:.29},{n:800,power:.52},{n:1200,power:.69},{n:1600,power:.81},{n:2400,power:.93}],footer:`We pre-registered for a conservative 5-point lift; the real effect turned out much bigger…`},abtestresult:{title:`Command bar A/B test · search completion`,icon:`chart`,iconColor:`var(--presence)`,control:{name:`Old search bar`,n:8412,conversionRate:.612},variant:{name:`New command bar`,n:8350,conversionRate:.724},pValue:8e-4,confidenceInterval:[9.2,26.4],footer:`The command bar shipped to 50% for two weeks; the interval sits well clear of zero, so th…`},orgchart:{title:`Who owns what`,icon:`share`,iconColor:`var(--presence-soft)`,rootId:`lead`,nodes:[{id:`lead`,name:`Dana R.`,role:`Eng lead · Atlas`,accent:`var(--presence)`,children:[`search`,`platform`,`surface`]},{id:`search`,name:`Priya M.`,role:`Search squad`,accent:`var(--insight)`,children:[`s1`,`s2`]},{id:`platform`,name:`Marco V.`,role:`Platform squad`,accent:`var(--presence-soft)`,children:[`p1`]},{id:`surface`,name:`Lena K.`,role:`Surface squad`,accent:`var(--warning)`,children:[`u1`]},{id:`s1`,name:`Index + backfill`,role:`2 engineers`,accent:`var(--insight)`}],footer:`Eight engineers across three squads, with the search squad on the critical path.`},treemap:{title:`Where the codebase mass sits`,icon:`doc`,iconColor:`var(--insight)`,unit:` kLOC`,root:{label:`Atlas`,value:0,children:[{label:`core`,value:0,color:`var(--presence)`,children:[{label:`typed-core`,value:48,color:`var(--presence)`},{label:`migration`,value:22,color:`var(--presence-soft)`}]},{label:`search`,value:0,color:`var(--insight)`,children:[{label:`index`,value:39,color:`var(--insight)`},{label:`relevance`,value:17,color:`var(--insight-soft)`}]},{label:`surface`,value:0,color:`var(--warning)`,children:[{label:`web app`,value:64,color:`var(--warning)`},{label:`command bar`,value:12,color:`var(--warning-soft)`}]},{label:`shared`,value:28,color:`var(--text-muted)`}]},footer:`The web surface is still the heaviest module, search is catching up fast.`},processflow:{title:`A search query, end to end`,icon:`spark`,iconColor:`var(--insight)`,steps:[{label:`Edge`,detail:`TLS + auth at the edge`,icon:`lock`},{label:`Gateway`,detail:`Rate-limit, route, trace`,icon:`share`,branch:`cache hit → return in <20ms`},{label:`Query planner`,detail:`Parse + expand the query`,icon:`edit`},{label:`Index`,detail:`Inverted index lookup`,icon:`table`},{label:`Ranker`,detail:`Relevance + personalization`,icon:`chart`}],footer:`The planner → index → ranker hop is where the latency budget is won or lost.`},journeymap:{title:`What a developer feels adopting the new SDK`,icon:`chat`,iconColor:`var(--presence-soft)`,persona:`Integrating partner engineer`,stages:[{name:`Discover`,action:`Finds the v3 SDK in the docs`,emotion:1,touchpoints:[`Docs site`,`Changelog`],opportunity:`Lead with a 5-line quickstart`},{name:`Install`,action:`Adds the package, runs init`,emotion:1,touchpoints:[`npm`,`CLI`],opportunity:`Auto-detect the legacy config`},{name:`Migrate`,action:`Rewrites legacy search calls`,emotion:-2,touchpoints:[`Migration guide`,`Codemod`],opportunity:`Ship a codemod, this is the cliff`},{name:`Verify`,action:`Diffs results vs. v2`,emotion:0,touchpoints:[`Shadow mode`,`Parity report`],opportunity:`Surface a parity score inline`},{name:`Ship`,action:`Flips the flag in prod`,emotion:2,touchpoints:[`Dashboard`,`Alerts`],opportunity:`Celebrate + capture a quote`}],footer:`Migration is the emotional low, a codemod turns the cliff into a step.`},userpersona:{title:`Who the migration journey is for`,icon:`eye`,iconColor:`var(--presence-soft)`,name:`Priya Nandakumar`,role:`Integrating partner engineer`,quote:`I don't want to learn your whole platform, I just want my search calls to work.`,goals:[`Ship the v3 migration without a multi-week detour reading docs`,`Verify parity against v2 before flipping the flag in prod`,`Keep the integration boring, no surprise breaking changes later`],frustrations:[`The migration guide assumes she already knows our internal terms`,`No single command tells her how far the codemod actually got`,`Shadow-mode parity results are buried in a log, not surfaced inline`],behaviors:[`Skims docs for code samples first`,`Copies from the changelog, not the guide`],footer:`Priya is why the codemod and an inline parity score outrank more docs.`},swimlane:{title:`Cutover week · who does what, when`,icon:`clock`,iconColor:`var(--warning)`,ticks:[`Mon`,`Tue`,`Wed`,`Thu`,`Fri`],lanes:[{actor:`Search squad`,sub:`Priya`,events:[{at:0,span:.35,label:`Final backfill`,detail:`Drain the last batch`,color:`var(--insight)`},{at:.4,label:`Parity sign-off`,detail:`≥99.5% match`,color:`var(--presence)`}]},{actor:`Platform`,sub:`Marco`,events:[{at:.2,span:.3,label:`Flag wiring`,detail:`Gradual ramp 1→100%`,color:`var(--presence-soft)`},{at:.75,label:`Kill legacy reads`,detail:`Decommission`,color:`var(--danger)`}]},{actor:`Surface`,sub:`Lena`,events:[{at:.5,span:.25,label:`UI smoke pass`,detail:`Command bar + views`,color:`var(--warning)`}]},{actor:`On-call`,sub:`rotation`,events:[{at:.55,span:.4,label:`Heightened watch`,detail:`5xx + p95 dashboards`,color:`var(--text-muted)`}]}],footer:`The ramp starts Tuesday; legacy reads die Thursday once parity holds.`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={bubble:{title:`Feature bets · reach × effort, sized by lift`,icon:`spark`,iconColor:`var(--insight)`,xLabel:`Effort (eng-weeks)`,yLabel:`Reach (% of users)`,xDomain:[0,14],yDomain:[0,100],categories:[{name:`Must ship`,color:`var(--insight)`},{name:`Fast follow`,color:`var(--presence)`},{name:`Later`,color:`var(--text-muted)`}],points:[{label:`Search rewrite`,x:11,y:92,size:60,cat:`Must ship`},{label:`Command bar`,x:5,y:74,size:38,cat:`Must ship`},{label:`Saved views`,x:4,y:61,size:30,cat:`Fast follow`},{label:`Instant filters`,x:3,y:58,size:26,cat:`Fast follow`},{label:`Theming`,x:6,y:22,size:14,cat:`Later`}],footer:`Top-left is the sweet spot, the command bar is the best reach-per-week after search.`},matrixgrid:{title:`Dependency matrix · who blocks whom`,icon:`layers`,iconColor:`var(--warning)`,rowLabels:[`Core`,`Index`,`Ranker`,`Cmd bar`,`Views`],colLabels:[`Core`,`Index`,`Rank`,`Cmd`,`View`],cells:[[0,0,0,0,0],[3,0,0,0,0],[1,3,0,0,0],[0,3,2,0,0],[1,2,0,0,0]],min:0,max:3,accent:`var(--warning)`,unit:``,legend:[`no dep`,`hard dep`],footer:`Read down a column to see what it unblocks, the index unblocks almost everything.`},treetable:{title:`Issue backlog by area`,icon:`table`,iconColor:`var(--insight)`,valueLabel:`Open`,accent:`var(--insight)`,nodes:[{label:`Search`,value:`108`,pct:.44,tag:`critical`,color:`var(--insight)`,open:!0,children:[{label:`Index + backfill`,value:`61`,pct:.25,color:`var(--insight)`},{label:`Relevance tuning`,value:`29`,pct:.12,color:`var(--insight-soft)`},{label:`Shadow parity`,value:`18`,pct:.07,color:`var(--presence-soft)`}]},{label:`Platform`,value:`74`,pct:.3,color:`var(--presence-soft)`,children:[{label:`Migration shim`,value:`40`,pct:.16,color:`var(--presence-soft)`},{label:`Observability`,value:`34`,pct:.14,color:`var(--text-muted)`}]},{label:`Surface`,value:`66`,pct:.26,color:`var(--warning)`,children:[{label:`Command bar`,value:`38`,pct:.15,color:`var(--warning)`},{label:`Saved views`,value:`28`,pct:.11,color:`var(--warning-soft)`}]}],footer:`248 open issues, search carries nearly half, concentrated in the backfill.`},footnotetable:{title:`Release readiness scorecard`,icon:`check`,iconColor:`var(--presence-soft)`,columns:[`Workstream`,`Status`,`Confidence`,`Gate`],rows:[{cells:[{v:`Typed core`},{v:`Shipped`,color:`var(--presence)`},{v:`High`},{v:`Passed`}]},{cells:[{v:`Search index`},{v:`In flight`,color:`var(--insight)`,note:1},{v:`Medium`,note:2},{v:`W7`}]},{cells:[{v:`Command bar`},{v:`Not started`,color:`var(--text-muted)`},{v:`Medium`},{v:`W10`}]},{cells:[{v:`Legacy retire`},{v:`Blocked`,color:`var(--danger)`,note:3},{v:`Low`},{v:`W11`}]}],notes:[`Backfill is <b>88% complete</b>; the final batch lands in W6.`,`Confidence is gated on the <mark>shadow-read parity</mark> result, expected ≥99.5%.`,`Blocked until cutover, we cannot retire legacy reads before the flag flips.`],footer:`Two greens, one in flight, one blocked behind cutover. No surprises.`},tabs:{title:`The detail, by lens`,icon:`doc`,iconColor:`var(--insight)`,accent:`var(--insight)`,defaultTab:0,tabs:[{label:`Scope`,icon:`layers`,badge:5,body:`<b>In:</b> typed core, new search index, command bar, saved views, instant filters. <b>Ou…`},{label:`Risks`,icon:`alert`,badge:3,body:`The <mark>backfill</mark> is the top risk and already 7 days long. Secondary risks: relev…`},{label:`Metrics`,icon:`chart`,body:`Headline: search <b>p95 < 400ms</b>, cold load <b>< 1.2s</b>, <b>zero 5xx</b> on cutover,…`},{label:`Rollout`,icon:`send`,body:`Flag-gated ramp 1% → 100% across cutover week, shadow-read parity as the go/no-go gate, i…`}],footer:`Tap a lens, same plan, four angles.`},deflist:{title:`Glossary`,icon:`quote`,iconColor:`var(--text-muted)`,placeholder:`Filter terms…`,items:[{term:`Dual-write`,def:`Writing every change to <b>both</b> the legacy and new stores during migration so we can …`,tag:`migration`,color:`var(--presence-soft)`},{term:`Shadow read`,def:`Running the new index <mark>silently</mark> alongside legacy and diffing results to measu…`,tag:`search`,color:`var(--insight)`},{term:`Backfill`,def:`Indexing the existing 41M documents into the new structure before cutover.`,tag:`search`,color:`var(--insight)`},{term:`p95`,def:`The latency the <b>95th-percentile</b> request stays under, our headline speed metric.`,tag:`metrics`,color:`var(--warning)`},{term:`Cutover`,def:`The moment we flip read traffic from legacy to the new index.`,tag:`rollout`,color:`var(--danger)`}],footer:`Five terms that show up in every standup.`},faq:{title:`Questions the team keeps asking`,icon:`chat`,iconColor:`var(--presence-soft)`,defaultOpen:0,multi:!1,items:[{q:`Why re-platform instead of patching v2?`,a:`Three services with diverging schemas made every search change a three-way migration. One…`,tag:`strategy`},{q:`What happens if the backfill slips again?`,a:`The flag stays at 0% and we ship the command bar against the <mark>legacy</mark> index as…`,tag:`risk`},{q:`Can partners stay on the old SDK?`,a:`Yes, the v2 SDK is supported through the end of next quarter. A codemod migrates 90% of c…`,tag:`sdk`},{q:`How do we roll back during cutover?`,a:`The flag flips read traffic back to legacy in seconds. We keep legacy reads warm until W1…`,tag:`rollout`}],footer:`If your question is not here, drop it in #atlas-v3 and we will add it.`},accordion:{title:`The rollout plan, section by section`,icon:`layers`,iconColor:`var(--presence)`,defaultOpen:0,multi:!1,sections:[{label:`Phase 1, Typed core behind a flag`,icon:`shield`,meta:`Weeks 1–4`,tag:`foundation`,body:`Stand up the single typed search core, dark-shipped at <b>0%</b> traffic. Every read stil…`},{label:`Phase 2, Backfill & shadow reads`,icon:`clock`,meta:`Weeks 5–8`,tag:`migration`,tagColor:`var(--warning)`,body:`Backfill the historical index and ramp shadow reads to 100%. The gate to advance is a <ma…`},{label:`Phase 3, Cutover to GA`,icon:`check`,meta:`Weeks 9–11`,tag:`launch`,tagColor:`var(--insight)`,body:`Flip read traffic over in steps (5 → 25 → 100%), keeping legacy reads warm the whole time…`}],footer:`Each phase is independently reversible, the flag is the safety net at every step.`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={riskmatrix:{title:`Launch risk matrix`,icon:`shield`,size:5,caption:`Likelihood × impact, scored 1–5`,risks:[{label:`Onboarding drop-off`,likelihood:4,impact:4,owner:`Growth`,mitigation:`Ship the 3-step guided setup and instrument each step before GA.`},{label:`Scaling spikes`,likelihood:3,impact:5,owner:`Platform`,mitigation:`Load-test to 5× peak; add autoscaling and a read-replica fallback.`},{label:`Pricing confusion`,likelihood:3,impact:2,owner:`GTM`,mitigation:`Simplify to three tiers; add an in-app plan comparison.`},{label:`Data migration errors`,likelihood:2,impact:4,owner:`Data`,mitigation:`Dry-run on a shadow copy; reconcile row counts before cutover.`},{label:`Support backlog`,likelihood:2,impact:2,owner:`Support`,mitigation:`Pre-write a help-center launch FAQ and staff a launch-week rota.`}],footer:`<b>Onboarding drop-off</b> and <b>scaling spikes</b> sit in the red band — gate GA on bot…`},threatmodel:{title:`Threat model — the Atlas v3 search path`,icon:`shield`,iconColor:`var(--danger)`,assets:[{id:`client`,name:`Web / mobile client`,kind:`external-entity`},{id:`gateway`,name:`API Gateway`,kind:`process`},{id:`search`,name:`Search Service`,kind:`process`},{id:`auth`,name:`Auth Service`,kind:`process`},{id:`userdb`,name:`User DB`,kind:`datastore`}],boundaries:[{label:`Public internet`,contains:[`client`]},{label:`Application tier`,contains:[`gateway`,`search`,`auth`]},{label:`Data tier`,contains:[`userdb`,`index`]}],threats:[{assetId:`gateway`,stride:`spoofing`,mitigation:`mTLS + signed JWT on every internal hop.`,status:`mitigated`},{assetId:`gateway`,stride:`repudiation`,mitigation:`Structured audit log per request.`,status:`mitigated`},{assetId:`auth`,stride:`tampering`,mitigation:`Request signing lands with RFC-114 phase 2.`,status:`open`},{assetId:`search`,stride:`info-disclosure`,mitigation:`Field-level redaction on index responses.`,status:`mitigated`},{assetId:`index`,stride:`dos`,mitigation:`Rate limiting at the gateway.`,status:`mitigated`}],footer:`Two threats are still open — request signing on Auth ships with RFC-114 phase 2, and the …`},pricingtable:{title:`Simplified to three tiers`,icon:`cart`,iconColor:`var(--presence)`,caption:`Resolves the "pricing confusion" risk above.`,plans:[{name:`Starter`,price:`$29`,period:`/mo`,tagline:`Solo + small teams`},{name:`Growth`,price:`$79`,period:`/mo`,tagline:`Most teams start here`,ctaLabel:`Recommended`,highlighted:!0},{name:`Scale`,price:`Custom`,tagline:`Org-wide rollout`,ctaLabel:`Talk to sales`}],features:[{label:`Seats`,values:[`Up to 5`,`Up to 25`,`Unlimited`]},{label:`Atlas search`,values:[!0,!0,!0]},{label:`Guided onboarding`,values:[!1,!0,!0]},{label:`Autoscaling`,values:[!1,!0,!0]},{label:`Migration support`,values:[!1,`Self-serve`,`White-glove`]}],footer:`Down from five overlapping tiers today, one plan per team size instead of per feature.`},raci:{title:`Who owns the launch`,icon:`table`,iconColor:`var(--presence)`,tasks:[`Search rewrite`,`Data migration`,`Onboarding redesign`,`Autoscaling rollout`,`Launch comms`],roles:[`Engineering`,`Product`,`Design`,`GTM`,`Support`],cells:[{task:`Search rewrite`,role:`Engineering`,rating:`R`},{task:`Search rewrite`,role:`Product`,rating:`A`},{task:`Search rewrite`,role:`Design`,rating:`C`},{task:`Search rewrite`,role:`GTM`,rating:`I`},{task:`Search rewrite`,role:`Support`,rating:`I`}],footer:`<b>Product is Accountable</b> on every workstream but the two engineering-only builds — t…`},dimensiondrawing:{title:`Mounting bracket — shop drawing`,icon:`edit`,iconColor:`var(--presence)`,outline:[{x:0,y:0},{x:60,y:0},{x:60,y:18},{x:18,y:18},{x:18,y:50}],dimensions:[{from:[0,0],to:[60,0],label:`60`},{from:[0,0],to:[0,50],label:`50`},{from:[0,0],to:[18,0],label:`18`},{from:[60,0],to:[60,18],label:`18`}],tolerance:`±0.1 unless noted`,titleBlock:{part:`BRK-204`,scale:`1:1`,units:`mm`},caption:`L-bracket profile with overall envelope and flange dimensions called out.`,footer:`The dimension lines read the <b>true profile</b> — the drawing auto-fits to scale, so the…`},explodedview:{title:`Flat-pack stool — exploded view`,icon:`layers`,iconColor:`var(--presence)`,axis:`vertical`,parts:[{n:1,name:`Seat panel`,qty:1},{n:2,name:`Tapered leg`,qty:4},{n:3,name:`M6 hex bolt`,qty:8},{n:4,name:`Cam lock`,qty:4},{n:5,name:`Allen wrench`,qty:1}],caption:`Five distinct part types thread onto the centerline in assembly order.`,footer:`Eighteen pieces, <b>five part types</b> — the balloon numbers match the parts list so you…`},weldsymbol:{title:`Bracket-to-base weld callout`,icon:`edit`,iconColor:`var(--warning)`,joint:`fillet`,side:`arrow`,size:`6`,length:`50`,pitch:`100`,process:`GMAW`,caption:`A 6&nbsp;mm fillet on the arrow side, welded intermittently 50&nbsp;long every 100.`,footer:`The glyph below the reference line means <b>arrow-side</b>; <b>50-100</b> reads “50&nbsp;…`},cutlist:{title:`Bookcase — plywood cut list`,icon:`layers`,iconColor:`var(--insight)`,unit:`mm`,stock:{w:2440,h:1220,label:`18mm birch ply — 8×4 sheet`},parts:[{label:`Side`,w:1180,h:360,qty:2},{label:`Shelf`,w:780,h:340,qty:3},{label:`Top`,w:1180,h:340,qty:1},{label:`Base`,w:1180,h:340,qty:1}],caption:`Seven parts nested onto one sheet; the leftover strip is the offcut.`,footer:`All seven parts nest from a <b>single 8×4 sheet</b> at <b>82% yield</b> — one trip to the…`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={linebalance:{title:`Bookcase assembly line — station balance`,icon:`chart`,iconColor:`var(--presence)`,takt:90,unit:`s`,stations:[{name:`Panel cut + edge-band`,cycleTime:74},{name:`Dowel + glue-up`,cycleTime:82},{name:`Clamp + cure`,cycleTime:68},{name:`Hardware install`,cycleTime:101,bottleneck:!0},{name:`Inspect + pack`,cycleTime:58}],footer:`Demand sets a <b>90s takt</b>; hardware install runs 101s and is the one station pulling …`},moodboard:{title:`The mood`,icon:`image`,iconColor:`var(--presence)`,tiles:[{kind:`image`,span:2,rows:2,from:`var(--presence-deep)`,to:`var(--presence-soft)`,label:`Sete Cidades · twin lakes from the rim`,src:`/demo-assets/images/sete-cidades.avif`},{kind:`text`,span:2,text:`Calm, vast, green. Let the landscape be the loud thing.`},{kind:`color`,swatch:`var(--presence)`,hex:`#2f9e7a`,label:`Caldera green`},{kind:`image`,from:`var(--text-muted)`,to:`var(--presence-soft)`,label:`Green coast · hydrangeas`,src:`/demo-assets/images/green-coast.avif`},{kind:`color`,swatch:`var(--insight)`,hex:`#6ea8ff`,label:`Atlantic grey-blue`}],footer:`Eight tiles pulled straight from your folder, drag to re-rank what leads.`},palette:{title:`The colorway`,icon:`sparkle`,iconColor:`var(--insight)`,swatches:[{name:`Caldera`,hex:`#1d6b4f`,contrast:`AAA`},{name:`Moss`,hex:`#2f9e7a`,contrast:`AA`},{name:`Atlantic`,hex:`#3f6f9c`,contrast:`AAA`},{name:`Mist`,hex:`#cdd8d4`,contrast:`fail`,light:!0},{name:`Ochre`,hex:`#e8b04b`,contrast:`fail`,light:!0}],footer:`Grade every shot toward these, Mist and Ochre stay accents only.`},photo:{title:`Mood frame`,src:`/demo-assets/images/arnel-lighthouse.avif`,alt:`The red lantern of Farol do Arnel above the sea, Nordeste`,caption:`Reference frame, match the grade and light to this.`},geomap:{title:`The route, mapped`,icon:`share`,iconColor:`var(--presence)`,markers:[{lat:37.7412,lng:-25.6756,name:`Ponta Delgada`,detail:`Base · fly in, two nights to settle.`,color:`var(--text-muted)`},{lat:37.8607,lng:-25.7936,name:`Sete Cidades`,detail:`Day 2 · twin lakes, shoot the rim at first light.`,color:`var(--presence)`},{lat:37.8217,lng:-25.4036,name:`Gorreana tea`,detail:`Day 4 · Europe's only tea estate, green terraces.`,color:`var(--warning)`},{lat:37.7726,lng:-25.3094,name:`Furnas`,detail:`Day 5 · steam vents + the hot-spring gardens.`,color:`var(--insight)`},{lat:37.8297,lng:-25.1456,name:`Nordeste`,detail:`Day 6 · cliff viewpoints, the quiet east.`,color:`var(--presence-soft)`}],footer:`Tap a pin for the why, golden hours are pinned to each stop.`},bars:{title:`Days per region`,icon:`globe`,iconColor:`var(--insight)`,unit:` days`,bars:[{label:`West · Sete Cidades`,value:2},{label:`Central · Ponta Delgada`,value:2},{label:`East · Furnas & Nordeste`,value:3,hot:!0}],footer:`The green east gets the most time, it earns it.`},storystrip:{title:`The arc of the film`,icon:`play`,iconColor:`var(--presence)`,panels:[{heading:`Arrival`,icon:`globe`,body:`Land in the grey. Wet cobbles, low cloud, set the calm.`,color:`var(--text-muted)`,caption:`Day 1`},{heading:`The rim`,icon:`image`,body:`Climb to Sete Cidades. The green opens up. This is the breath.`,color:`var(--presence)`,caption:`Day 2`},{heading:`The work`,icon:`spark`,body:`Tea terraces and steam. People in the landscape, hands, not faces.`,color:`var(--warning)`,caption:`Day 4–5`},{heading:`The edge`,icon:`share`,body:`Nordeste cliffs. The vastness pays off. Let a shot run long.`,color:`var(--insight)`,caption:`Day 6`},{heading:`Leaving`,icon:`send`,body:`Back to grey, but changed. End on still water.`,color:`var(--presence-soft)`,caption:`Day 7`}],footer:`Five beats, calm, breath, work, edge, return.`},carousel:{title:`Hero-shot candidates`,icon:`image`,iconColor:`var(--insight)`,start:0,slides:[{label:`Lakes from the rim`,caption:`The poster frame, wide, symmetrical.`,from:`var(--presence-deep)`,to:`var(--presence-soft)`,tag:`open`,src:`/demo-assets/images/sete-cidades.avif`},{label:`Green coast`,caption:`Lead line through the hydrangeas.`,from:`var(--insight)`,to:`var(--presence)`,tag:`transition`,src:`/demo-assets/images/green-coast.avif`},{label:`Furnas lake`,caption:`Still, mood-heavy, the mid.`,from:`var(--text-muted)`,to:`var(--warning)`,tag:`mid`,src:`/demo-assets/images/furnas-lake.avif`},{label:`Sea cliffs`,caption:`The held wide, the close.`,from:`var(--presence)`,to:`var(--insight)`,tag:`close`,src:`/demo-assets/images/sea-cliffs.avif`}],footer:`Swipe through the four anchor frames the cut hangs on.`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={lightbox:{title:`Shot list · the grid`,icon:`layers`,iconColor:`var(--presence)`,items:[{label:`Nordeste · arrival`,caption:`Day 1 · 35mm · grey`,from:`var(--text-muted)`,to:`var(--presence-deep)`,src:`/demo-assets/images/nordeste-town.avif`},{label:`Twin lakes · wide`,caption:`Day 2 · 24mm · golden`,from:`var(--presence-deep)`,to:`var(--presence-soft)`,src:`/demo-assets/images/sete-cidades.avif`},{label:`Tea terraces · detail`,caption:`Day 4 · 85mm · interior`,from:`var(--warning)`,to:`var(--presence)`,src:`/demo-assets/images/tea-terraces.avif`},{label:`Furnas lake · mood`,caption:`Day 5 · 50mm · still`,from:`var(--insight)`,to:`var(--text-muted)`,src:`/demo-assets/images/furnas-lake.avif`},{label:`Cliff edge · held`,caption:`Day 6 · 24mm · vast`,from:`var(--presence)`,to:`var(--insight)`,src:`/demo-assets/images/cliff-fields.avif`}],footer:`Click any tile to open it full-frame.`},beforeafter:{title:`The grade`,icon:`sparkle`,iconColor:`var(--warning)`,before:{label:`RAW`,from:`var(--text-muted)`,to:`var(--presence-deep)`,caption:`Flat, cool, true to sensor`,src:`/demo-assets/images/green-coast-raw.avif`},after:{label:`Graded`,from:`var(--presence)`,to:`var(--insight)`,caption:`Greens lifted, mist warmed`,src:`/demo-assets/images/green-coast.avif`},position:46,footer:`Drag the divider, the look is a soft green lift with crushed basalt shadows.`},imagecallouts:{title:`Composing the rim shot`,icon:`eye`,iconColor:`var(--insight)`,image:{from:`var(--presence-deep)`,to:`var(--presence-soft)`,label:`Sete Cidades · the wide`,src:`/demo-assets/images/sete-cidades.avif`},callouts:[{x:50,y:26,label:`Horizon high`,detail:`Sky to the top third, the caldera rim is the subject.`,color:`var(--presence)`},{x:37,y:52,label:`Blue lake`,detail:`The deeper water holds the middle band.`,color:`var(--insight)`},{x:64,y:70,label:`Green lake`,detail:`The warmer green balances it, low and right.`,color:`var(--warning)`},{x:50,y:92,label:`Foreground trees`,detail:`A screen of cryptomeria grounds the frame.`,color:`var(--text-muted)`}],footer:`Four pins for the one frame everything else supports.`},annotcallouts:{title:`Contact sheet · notes`,icon:`doc`,iconColor:`var(--presence)`,caption:`Day 2 selects, what made the cut and why.`,ratio:1.7777777777777777,callouts:[{x:20,y:30,label:`01 · keep`,note:`Cleanest horizon line of the morning, <b>this is the poster</b>.`,color:`var(--presence)`},{x:56,y:26,label:`02 · maybe`,note:`Nice light, but a tourist on the path. <mark>Clone-out or cut.</mark>`,color:`var(--warning)`},{x:38,y:70,label:`03 · cut`,note:`Cloud went flat here, no separation in the greens.`,color:`var(--danger)`},{x:80,y:64,label:`04 · keep`,note:`The transition frame for the hydrangea road.`,color:`var(--insight)`}],footer:`Pins map to the selects in your edit folder.`},videoembed:{title:`The cut, so far`,icon:`play`,iconColor:`var(--presence)`,thumb:{from:`var(--presence-deep)`,to:`var(--insight)`,label:`Rough plate · sea and rock`},video:`/demo-assets/video/island-coast.webm`,poster:`/demo-assets/images/island-coast-poster.avif`,durationLabel:`0:20`,active:1,chapters:[{time:`0:00`,at:0,title:`Cold open · the shelf`},{time:`0:06`,at:30,title:`The set builds`},{time:`0:09`,at:45,title:`The break`},{time:`0:15`,at:74,title:`Still water · out`}],footer:`A twenty-second plate for the cold open, cut to length.`},waveform:{title:`Scratch track`,icon:`speaker`,iconColor:`var(--insight)`,durationLabel:`1:32`,color:`var(--presence)`,position:22,bars:[.12,.2,.16,.3,.42],markers:[{at:20,label:`swell in`},{at:48,label:`rhythm`},{at:91,label:`tail out`}],footer:`Ambient piano under field-recorded wind, builds with the arc.`},sankey:{title:`How the seven days flow`,icon:`chart`,iconColor:`var(--presence)`,unit:` days`,nodes:[{id:`trip`,label:`7 days`,layer:0,color:`var(--presence)`},{id:`west`,label:`West coast`,layer:1,color:`var(--insight)`},{id:`east`,label:`East coast`,layer:1,color:`var(--warning)`},{id:`base`,label:`Base · PDL`,layer:1,color:`var(--text-muted)`},{id:`shoot`,label:`Shoot days`,layer:2,color:`var(--presence-soft)`}],links:[{source:`trip`,target:`west`,value:2},{source:`trip`,target:`east`,value:3},{source:`trip`,target:`base`,value:2},{source:`west`,target:`shoot`,value:2},{source:`east`,target:`shoot`,value:2}],footer:`Five real shoot days, two to scout and breathe.`},proscons:{title:`Drone, pack it?`,icon:`layers`,iconColor:`var(--insight)`,prosLabel:`Bring it`,consLabel:`Leave it`,pros:[{text:`The rim wides are <b>made</b> for the air`,weight:5,note:`Sete Cidades from above is the signature frame.`},{text:`Cliff scale at Nordeste`,weight:4},{text:`Light to carry`,weight:2}],cons:[{text:`Azores wind is <mark>relentless</mark>`,weight:4,note:`Gusts over the calderas are no joke.`},{text:`No-fly near Furnas park`,weight:3},{text:`One more battery system`,weight:2}],verdict:`Pack it, but plan air shots for the <b>calm dawn windows only</b>.`,footer:`Weighted on the frames you actually need.`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={casestudy:{title:`A reference that worked`,icon:`spark`,iconColor:`var(--warning)`,subject:`How a 3-day Faroe Islands edit hit a calm, vast feel`,defaultStage:`result`,setup:{body:`Same brief, different rock: <b>calm, green, vast</b>, and the same grey-light problem.`},action:{body:`They shot almost entirely at the <mark>edges of the day</mark> and graded toward two colo…`,metric:`2-color grade`},result:{body:`The film felt like one breath. It traveled, picked up by three travel outlets in a week.`,metric:`1.2M views`},lesson:{body:`Constraint is the look. Fewer colors, fewer hours, more patience.`},footer:`We're borrowing the two-color discipline, moss + slate.`},pullquote:{title:`The line we shoot to`,icon:`quote`,iconColor:`var(--presence)`,quote:`Let the landscape be the loud thing, and stand still long enough to hear it.`,author:`Your brief`,role:`"calm, green, vast"`,tone:`success`,variants:[{quote:`No fast cuts. The island has one speed; match it.`,author:`Edit note`},{quote:`Hands in the frame, never faces, let it stay a place, not a portrait.`,author:`Shot rule`}],footer:`Pinned above the timeline for the whole edit.`},takeaways:{title:`The brief in five`,icon:`check`,iconColor:`var(--insight)`,heading:`What to remember on the island`,items:[{text:`Shoot the <b>edges of the day</b>, grey midday is for scouting.`,color:`var(--presence)`,detail:`Golden + blue hour are pinned per stop.`},{text:`Grade toward <b>moss + slate</b>; ochre is an accent only.`,color:`var(--warning)`},{text:`Hold the wides <b>long</b>, let vastness breathe.`,color:`var(--insight)`,detail:`Min 8 seconds on the cliff and rim shots.`},{text:`Keep <b>Day 2 & 3 open</b> for the one clear rim morning.`,color:`var(--text-muted)`},{text:`Hands, not faces, keep it a place.`,color:`var(--presence-soft)`}],footer:`Tap each as you bag it.`},skeleton:{title:`Pulling 12 more refs`,icon:`image`,iconColor:`var(--text-muted)`,variant:`media`,rows:4,loadedLabel:`Show what loaded`,footer:`Importing the rest of your saved pins, the board grows as they land.`},emptystate:{title:`Soundtrack`,icon:`speaker`,iconColor:`var(--insight)`,art:`spark`,headline:`No licensed track yet`,copy:`The cut is running on a scratch piano. Pick a final track and I'll <b>re-time the chapter…`,action:`Browse calm scores`,actionIcon:`play`,secondary:`Keep the scratch`,color:`var(--presence)`,footer:`One missing piece before this film is shareable.`},mediacard:{title:`Reference film to study before the cut`,icon:`play`,iconColor:`var(--presence)`,cover:{src:`/demo-assets/images/sete-cidades.avif`,from:`var(--presence-deep)`,to:`var(--presence-soft)`},year:`2018`,runtime:`1h 32m`,rating:`TV-PG`,score:88,genres:[`Travel`,`Documentary`,`Slow cinema`],logline:`A patient, near-wordless portrait of a volcanic island in the Atlantic — mist over calder…`,providers:[`Mubi`,`Criterion`,`Vimeo`],footer:`Watch the first ten minutes for pacing, then mirror its wide-to-still rhythm.`},voicestyle:{title:`Your Writing Voice`,icon:`spark`,iconColor:`var(--presence)`,traits:[{trait:`Short, punchy sentences`,example:`Ship it. Then iterate.`},{trait:`Dry, understated humour`},{trait:`Leads with the verb`},{trait:`Skips the warm-up`,example:`No "I hope this finds you well."`}],sample:{generic:`I wanted to reach out to let you know that we have completed the project and it is now re…`,inYourVoice:`Project's done. Ready for your eyes whenever.`},footer:`Learned from <b>40 of your messages</b> — I'll keep this on for drafts.`},exposuretriangle:{title:`Portrait exposure`,icon:`image`,iconColor:`var(--presence)`,aperture:`f/2.8`,shutter:`1/250`,iso:200,ev:`EV 11`,effects:[{axis:`aperture`,note:`Shallow depth of field — soft, blurred background.`},{axis:`shutter`,note:`Fast enough to freeze a small head turn.`},{axis:`iso`,note:`Low ISO keeps skin tones clean and noise-free.`}],caption:`A classic available-light portrait: wide aperture to isolate the subject, low ISO for cle…`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={colorwheel:{title:`Triadic color scheme`,icon:`spark`,iconColor:`var(--presence)`,baseHue:210,harmony:`triad`,swatches:[{hue:210,hex:`#2f80ed`,role:`base`},{hue:330,hex:`#e84393`,role:`accent`},{hue:90,hex:`#8cc63f`,role:`accent`}],caption:`Three hues spaced 120° apart — vivid and balanced, with one dominant and two supporting.`},artanalysis:{title:`Reading the composition`,icon:`image`,iconColor:`var(--presence)`,overlay:`thirds`,regions:[{x:56,y:22,w:32,h:46,label:`Subject`},{x:8,y:58,w:30,h:30,label:`Foreground`}],palette:[{hex:`#e8c39e`,role:`highlight`},{hex:`#b5723a`,role:`midtone`},{hex:`#2e2117`,role:`shadow`}],notes:[{label:`Composition`,text:`The subject sits on the right vertical third — the eye lands there first.`},{label:`Light`,text:`Warm key light from frame-left rakes across the form, deep shadow on the right.`},{label:`Style`,text:`A restrained earth palette gives a quiet, classical feel.`}],caption:`A rule-of-thirds read: the focal subject anchored on the right intersection.`},shotlist:{title:`Opening scene — shot breakdown`,icon:`play`,iconColor:`var(--warning)`,shots:[{n:1,size:`WS`,movement:`Slow push-in`,lens:`24mm`,duration:`6s`,action:`Establish the empty studio at dawn; light bleeds across the floor as she steps into frame.`},{n:2,size:`MS`,movement:`Static`,lens:`50mm`,duration:`4s`,action:`She sets the camera down and exhales, reading the room.`,dialogue:`Okay. One more time, from the top.`},{n:3,size:`CU`,movement:`Slight rack focus`,lens:`85mm`,duration:`3s`,action:`Her hands frame the shot on the small monitor; focus pulls from fingers to screen.`},{n:4,size:`OTS`,movement:`Handheld drift`,lens:`35mm`,duration:`5s`,action:`From behind her shoulder we see the playback begin — the take she has been chasing.`,dialogue:`There it is.`}],caption:`Wide to establish, then tighten with each beat so the room shrinks to a single decisive m…`},runofshow:{title:`Coastal shoot day — run of show`,icon:`clock`,iconColor:`var(--presence)`,eventDate:`Day 3 · Ponta da Ferraria`,cues:[{time:`5:40 AM`,cue:`Crew call, load the van`,owner:`Mara`,state:`done`},{time:`6:15 AM`,cue:`Sunrise coastline wides`,owner:`Mara`,duration:`25 min`,state:`done`},{time:`7:10 AM`,cue:`Drone pass, north cliffs`,owner:`Dev`,duration:`20 min`,state:`live`},{time:`8:00 AM`,cue:`Interview setup, hot spring overlook`,owner:`Théo`,duration:`15 min`,state:`next`},{time:`8:30 AM`,cue:`Interview take`,owner:`Mara`,duration:`30 min`}],footer:`The drone window closes once wind picks up after 7:30 — Dev is racing it now.`},beatsheet:{title:`Beat sheet`,icon:`edit`,iconColor:`var(--presence)`,framework:`Save the Cat`,beats:[{name:`Opening Image`,at:`1%`,line:`A snapshot of the flawed world before anything changes.`},{name:`Catalyst`,at:`10%`,line:`The call that breaks the routine and forces a choice.`},{name:`Break into Two`,at:`20%`,line:`The hero commits and crosses into the new world.`},{name:`Midpoint`,at:`50%`,line:`A false victory (or defeat) raises the stakes for real.`},{name:`All Is Lost`,at:`75%`,line:`The lowest point — the old way clearly fails.`}],tension:[1,2,3,5,8],caption:`Tension climbs to the Midpoint, dips at the false low, then spikes through the Finale.`},craftchart:{title:`Cross-stitch heart motif`,icon:`edit`,iconColor:`var(--insight)`,craft:`crossstitch`,rows:12,cols:12,cells:[{r:1,c:2,color:`var(--danger)`,symbol:`×`},{r:1,c:3,color:`var(--danger)`,symbol:`×`},{r:1,c:8,color:`var(--danger)`,symbol:`×`},{r:1,c:9,color:`var(--danger)`,symbol:`×`},{r:2,c:1,color:`var(--danger)`,symbol:`×`}],legend:[{symbol:`×`,color:`var(--danger)`,meaning:`DMC 321 — red (full cross-stitch)`},{symbol:`o`,color:`var(--warning-soft)`,meaning:`DMC 819 — pale pink (highlight glint)`},{meaning:`Blank — leave the fabric unworked`}],caption:`Work each ×: bring the needle up at the bottom-left of the square and down at the top-rig…`},patternpiece:{title:`Simple tote bag — cutting layout`,icon:`edit`,iconColor:`var(--presence)`,fabric:{w:90,h:70,label:`90 × 70 cm cotton canvas (folded)`},pieces:[{label:`Body panel`,w:38,h:42,x:0,y:4,fold:!0,qty:1},{label:`Lining panel`,w:38,h:42,x:44,y:4,fold:!0,qty:1},{label:`Strap`,w:70,h:8,x:4,y:52,qty:2}],unit:`cm`,caption:`Body and lining are cut on the fold; the two carry straps nest along the bottom.`},storyarc:{title:`Short-Film Arc — Freytag`,icon:`layers`,iconColor:`var(--presence)`,framework:`freytag`,beats:[{stage:`Rising Action`,label:`The storm rolls in`},{stage:`Climax`,label:`The lighthouse fails`},{stage:`Falling Action`,label:`Dawn rescue`}]}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={castmap:{title:`Cast Map — The Keeper`,icon:`share`,iconColor:`var(--presence)`,nodes:[{id:`elara`,name:`Elara`,role:`The lighthouse keeper`,faction:`The Island`},{id:`mira`,name:`Mira`,role:`A runaway she shelters`,faction:`The Island`},{id:`bram`,name:`Old Bram`,role:`The keeper before her`,faction:`The Island`},{id:`davo`,name:`Captain Davo`,role:`Master of the Wrenn`,faction:`The Sea`},{id:`tomas`,name:`Tomas`,role:`Davo's first mate`,faction:`The Sea`}],links:[{from:`elara`,to:`mira`,kind:`ally`,label:`shelters`},{from:`bram`,to:`elara`,kind:`mentor`,label:`taught the light`},{from:`davo`,to:`mira`,kind:`family`,label:`her father`},{from:`elara`,to:`davo`,kind:`ally`,label:`saves the Wrenn`},{from:`warden`,to:`mira`,kind:`rival`,label:`hunts`}],caption:`Who protects whom — and who is hunting the runaway.`,footer:`The hidden <strong>father</strong> and the first mate’s <strong>betrayal</strong> are the…`},devicemark:{title:`Literary Devices — Opening Line`,text:`The lighthouse stood like a silent sentinel, its beam sweeping the hungry dark with the p…`,marks:[{phrase:`like a silent sentinel`,device:`simile`,note:`compares the lighthouse to a guard`},{phrase:`hungry dark`,device:`personification`,note:`darkness described as if it consumes`},{phrase:`patience of the tide`,device:`metaphor`,note:`slow, inevitable rhythm`}]},creativetest:{title:`Two launch posts for the film`,icon:`image`,iconColor:`var(--presence)`,variants:[{label:`Variant A · wide rim shot`,src:`/demo-assets/images/sete-cidades.avif`,headline:`Seven days. One quiet island.`,metrics:[{label:`CTR`,value:`2.1%`},{label:`Saves`,value:`340`},{label:`Watch-through`,value:`38%`}]},{label:`Variant B · the crater lake`,src:`/demo-assets/images/crater-panorama.avif`,headline:`The film I almost didn't make.`,metrics:[{label:`CTR`,value:`3.4%`,delta:`+1.3pp`,deltaDir:`good`},{label:`Saves`,value:`812`,delta:`+472`,deltaDir:`good`},{label:`Watch-through`,value:`61%`,delta:`+23pp`,deltaDir:`good`}]}],winner:1,footer:`Variant B wins on every metric, the confessional hook out-pulls pure scenery.`},brandguide:{title:`The São Miguel story kit`,icon:`doc`,iconColor:`var(--insight)`,colors:[{name:`Caldera`,hex:`#1d6b4f`,contrast:`AAA`},{name:`Moss`,hex:`#2f9e7a`,contrast:`AA`},{name:`Atlantic`,hex:`#3f6f9c`,contrast:`AAA`},{name:`Mist`,hex:`#cdd8d4`,contrast:`fail`,light:!0},{name:`Ochre`,hex:`#e8b04b`,contrast:`fail`,light:!0}],typography:[{name:`Display`,sample:`'Iowan Old Style', Georgia, serif`,weight:`600`},{name:`Caption`,sample:`ui-sans-serif, system-ui, sans-serif`,weight:`500`},{name:`Overlay numerals`,sample:`ui-monospace, 'JetBrains Mono', monospace`,weight:`600`}],voiceNotes:[`Short sentences, let the landscape do the talking.`,`One plain claim per caption, no exclamation points.`,`Always name the place, never just "the island."`],footer:`Apply this to every caption and thumbnail before it ships.`},musicstaff:{title:`C major scale (treble clef)`,icon:`sparkle`,iconColor:`var(--presence)`,clef:`treble`,timeSignature:`4/4`,tempo:120,notes:[{pitch:`C4`,duration:`quarter`},{pitch:`D4`,duration:`quarter`},{pitch:`E4`,duration:`quarter`},{pitch:`F4`,duration:`quarter`},{pitch:`G4`,duration:`quarter`}],footer:`C major uses only white keys, no sharps or flats. Every other major scale is this same pa…`},flashcard:{title:`Interval ear-training deck`,icon:`spark`,iconColor:`var(--warning)`,cards:[{front:`Perfect 5th (C → G)`,back:`Sounds like: "Twinkle Twinkle" opening. 7 semitones. The power chord of classical harmony.`},{front:`Major 3rd (C → E)`,back:`Sounds like: "When the Saints Go Marching In." 4 semitones. Defines a major chord.`},{front:`Minor 3rd (A → C)`,back:`Sounds like: "Smoke on the Water" riff. 3 semitones. Defines a minor chord, darker colour.`},{front:`Octave (C4 → C5)`,back:`Sounds like: "Somewhere Over the Rainbow" opening leap. 12 semitones. Same note, doubled …`},{front:`Tritone (C → F#)`,back:`The Devil's interval, 6 semitones, right in the middle of the octave. Unstable; resolves …`}],footer:`Flip each card after singing the interval. Aim for instant recognition, the goal is heari…`},chronologicaltimeline:{title:`Staff notation through the centuries`,icon:`clock`,iconColor:`var(--presence)`,startLabel:`900 AD`,endLabel:`1800s`,events:[{at:0,date:`~900 AD`,title:`Neumes`,detail:`Earliest written notation, squiggles above text hinting at melodic contour, no pitch prec…`},{at:18,date:`1025`,title:`Guido of Arezzo`,detail:`Invented the four-line staff and the sol-fa syllable system (ut re mi fa sol la). First r…`,color:`var(--presence)`},{at:34,date:`1200s`,title:`Mensural notation`,detail:`Rhythm encoded for the first time via note shapes, unlocks polyphony (multiple independen…`},{at:55,date:`1450s`,title:`Music printing press`,detail:`Ottaviano Petrucci's moveable-type music printing spreads sheet music across Europe.`,color:`var(--insight)`},{at:73,date:`1600s`,title:`Baroque conventions`,detail:`Five-line treble and bass staves standardised; figured bass shorthand speeds up harmonisa…`}],footer:`Western notation is ~1,000 years old. Non-Western traditions (Indian raga, Arabic maqam, …`},chorddiagram:{title:`G Major chord`,chordName:`G`,instrument:`Guitar`,frets:[3,2,0,0,0],fingers:[2,1,null,null,null],notes:[`G`,`B`,`G`,`D`,`G`]}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={mixerboard:{title:`Track arrangement`,icon:`sliders`,iconColor:`var(--presence)`,bars:8,tracks:[{name:`Drums`,color:`var(--presence)`,volume:86,pan:0,clips:[{start:0,len:8,label:`Beat`}]},{name:`Bass`,color:`var(--insight)`,volume:78,pan:-12,mute:!0,clips:[{start:0,len:6,label:`Groove`}]},{name:`Keys`,color:`var(--warning)`,volume:64,pan:28,clips:[{start:2,len:4,label:`Pad`},{start:6,len:2,label:`Stab`}]},{name:`Vox`,color:`var(--presence-soft)`,volume:72,pan:0,solo:!0,clips:[{start:1,len:3,label:`Verse`},{start:4,len:4,label:`Chorus`}]}],caption:`Four lanes on an 8-bar grid: bass is muted while the vocal is soloed for a focused listen.`},pianokeys:{title:`C major 7 chord`,icon:`play`,iconColor:`var(--presence)`,chordName:`Cmaj7`,startNote:`C4`,octaves:2,showLabels:!0,highlight:[{note:`C4`,role:`root`},{note:`E4`,role:`3rd`},{note:`G4`,role:`5th`},{note:`B4`,role:`7th`}],caption:`A major-7 stacks a major triad with a major 7th: C–E–G–B.`,footer:`The bright, jazzy colour comes from that major-7th interval (B over C) — a half-step belo…`},fretboardmap:{title:`A minor pentatonic`,icon:`sparkle`,iconColor:`var(--presence)`,scaleName:`A minor pentatonic`,strings:6,frets:12,tuning:[`E`,`A`,`D`,`G`,`B`],dots:[{string:6,fret:5,label:`R`,role:`root`},{string:6,fret:8,label:`b3`,role:`third`},{string:5,fret:5,label:`4`,role:`other`},{string:5,fret:7,label:`5`,role:`fifth`},{string:4,fret:5,label:`b7`,role:`other`}],caption:`The box-1 shape at the 5th fret — roots on the low E, D, and high E strings anchor the po…`},circleoffifths:{title:`Circle of fifths`,icon:`sparkle`,iconColor:`var(--insight)`,highlightKey:`G`,showMinors:!0,related:[`C`,`D`,`Em`],caption:`G major sits one sharp clockwise of C: its IV is C, its V is D, and Em is its relative mi…`},practicelog:{title:`Two weeks of piano practice`,icon:`clock`,iconColor:`var(--presence)`,instrument:`Piano`,sessions:[{date:`2026-06-19`,minutes:25,focus:`scales`,note:`Hanon exercises`},{date:`2026-06-20`,minutes:40,piece:`Clair de Lune`,note:`Started the arpeggio section`},{date:`2026-06-21`,minutes:30,piece:`Clair de Lune`},{date:`2026-06-22`,minutes:20,focus:`sight-reading`},{date:`2026-06-23`,minutes:45,piece:`Clair de Lune`,note:`Tempo still rushes in the climax`}]},gallery:{eyebrow:`Planet photos · from space telescopes`,items:[{label:`Earth, the blue marble`,source:`nasa.gov`,tag:`home`,h1:`#3a7bd5`,h2:`#16314f`},{label:`Mars, the red planet`,source:`nasa.gov`,tag:`rusty`,h1:`#c1440e`,h2:`#5e2207`},{label:`Jupiter & the Great Red Spot`,source:`esa.int`,tag:`biggest`,h1:`#d9a066`,h2:`#6e4a28`},{label:`Saturn and its rings`,source:`nasa.gov`,tag:`rings`,h1:`#e0c074`,h2:`#6b5826`},{label:`Neptune, deep blue`,source:`nasa.gov`,tag:`windy`,h1:`#2c5fb3`,h2:`#13284f`}],footer:`These are real pictures taken by spacecraft and telescopes. Pretty cool, right?`},togglegroup:{title:`Which planet has the most moons?`,icon:`moon`,iconColor:`var(--insight)`,mode:`single`,items:[{label:`Earth (1)`,title:`Earth has just our one Moon`},{label:`Mars (2)`,title:`Mars has two tiny potato-shaped moons`},{label:`Saturn (146)`,title:`Saturn is the moon champion!`,on:!0}],hint:`Tap a planet! Saturn wins with over 140 moons. Earth has just one, the one you see at nig…`,color:`var(--insight)`,footer:`Some moons have oceans hidden under ice. Scientists wonder what might live there!`},radiogroup:{title:`Quick quiz: which planet do we live on?`,icon:`spark`,iconColor:`var(--presence)`,layout:`card`,options:[{label:`Mars`,caption:`The red one with rovers`,icon:`globe`,value:`4th`},{label:`Earth`,caption:`The blue one with water and YOU`,icon:`check`,value:`✅ correct!`},{label:`Jupiter`,caption:`The giant gas one`,icon:`globe`,value:`5th`},{label:`The Sun`,caption:`Actually a star, not a planet!`,icon:`sun`,value:`tricky`}],selected:1,color:`var(--presence)`,footer:`You got it, Earth, the third planet from the Sun. The only home we’ve ever had.`}};export{e as E};
@@ -0,0 +1,3 @@
1
+ var e={svgblock:{title:`The solar system, to (very rough) scale`,icon:`sparkle`,iconColor:`var(--warning)`,svg:`<svg viewBox="0 0 560 120" xmlns="http://www.w3.org/2000/svg">
2
+ <defs>
3
+ <radialGradie…`,caption:`Sizes are roughly proportional; distances are heavily compressed, real gaps are millions …`,footer:`Jupiter alone contains more mass than all other planets combined. Saturn’s rings are 99.9…`},scalefelt:{title:`How Big Is It, Really?`,icon:`layers`,iconColor:`var(--presence)`,value:`6.5`,unit:`metres across (primary mirror)`,comparisons:[{to:`a tall adult giraffe`,howMany:1.2,note:`Webb's mirror would slightly out-reach the tallest land animal.`},{to:`stacked dinner plates edge to edge`,howMany:24,note:`Each gold-coated hexagon segment is about a metre wide.`},{to:`Hubble mirrors by light-collecting area`,howMany:6,note:`Roughly six times Hubble's gathering power, in infrared.`},{to:`a school bus, in folded launch width`,howMany:`about one`,note:`It folded origami-style to fit inside the Ariane 5 fairing.`}],footer:`Figures from NASA. Equivalences are approximate, for a feel of the scale.`},moonphase:{title:`The Moon tonight`,icon:`moon`,iconColor:`var(--presence)`,illumination:.72,waxing:!0,phaseName:`Waxing Gibbous`,date:`Jun 20, 2026`,upcoming:[{date:`Sat 21`,illumination:.81},{date:`Sun 22`,illumination:.89},{date:`Mon 23`,illumination:.95},{date:`Tue 24`,illumination:.99}],caption:`Brightening toward the full Moon on the 25th — good light for landscapes, tougher for fai…`},skychart:{title:`The Summer Triangle, overhead`,icon:`sparkle`,iconColor:`var(--presence)`,stars:[{x:.5,y:.32,mag:.03,name:`Vega`},{x:.64,y:.58,mag:.77,name:`Altair`},{x:.36,y:.55,mag:1.25,name:`Deneb`},{x:.46,y:.46,mag:3.2},{x:.57,y:.44,mag:2.9}],constellations:[{name:`Summer Triangle`,lines:[[0,1],[1,2],[2,0]]},{name:`Lyra`,lines:[[0,3],[3,4]]}],planets:[{name:`Saturn`,x:.74,y:.5}],caption:`Three first-magnitude stars across three constellations — the anchor of the northern summ…`},orbitdiagram:{title:`The inner solar system`,icon:`globe`,iconColor:`var(--warning)`,center:`Sun`,toScale:!1,bodies:[{name:`Mercury`,orbitRadius:.39,size:1,distance:`0.39 AU`,period:`88 days`,color:`var(--text-muted)`},{name:`Venus`,orbitRadius:.72,size:2,distance:`0.72 AU`,period:`225 days`,color:`var(--warning)`},{name:`Earth`,orbitRadius:1,size:2,distance:`1.00 AU`,period:`365 days`,color:`var(--presence)`},{name:`Mars`,orbitRadius:1.52,size:1,distance:`1.52 AU`,period:`687 days`,color:`var(--danger)`}],caption:`Orbit spacing is compressed so all four fit; periods grow with distance (Kepler’s third l…`},sizecompare:{title:`Line them up: shapes to scale`,icon:`layers`,iconColor:`var(--insight)`,unit:`m`,subjects:[{label:`You (a kid)`,length:1.4,shape:`human`},{label:`School bus`,length:12,shape:`bus`},{label:`T. rex`,length:12,shape:`generic`},{label:`Argentinosaurus`,length:37,shape:`generic`}],footer:`Same shapes, same real scale, one shared ground line.`},donut:{title:`What did dinosaurs eat?`,icon:`chart`,iconColor:`var(--presence-soft)`,rows:[{label:`Plant-eaters`,pct:65,color:`var(--insight)`},{label:`Meat-eaters`,pct:28,color:`var(--danger)`},{label:`Ate both`,pct:7,color:`var(--warning)`}],footer:`Most dinosaurs were gentle plant-eaters, only some were scary hunters.`},foodweb:{title:`Who ate whom in the Cretaceous`,icon:`globe`,iconColor:`var(--insight)`,tiers:[`Plants`,`Plant-eaters`,`Hunters`,`Top predator`],organisms:[{id:`ferns`,tier:0,label:`Ferns & cycads`},{id:`conifers`,tier:0,label:`Conifers`},{id:`tric`,tier:1,label:`Triceratops`},{id:`edmont`,tier:1,label:`Edmontosaurus`},{id:`ankyl`,tier:1,label:`Ankylosaurus`}],links:[{from:`ferns`,to:`tric`},{from:`conifers`,to:`edmont`},{from:`ferns`,to:`ankyl`},{from:`conifers`,to:`tric`},{from:`tric`,to:`dromae`}],footer:`T. rex sat at the top, but it likely scavenged just as often as it hunted.`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={taxonrank:{title:`Where T. rex fits in the tree of life`,icon:`layers`,iconColor:`var(--warning)`,scientificName:`Tyrannosaurus rex`,ranks:[{level:`Kingdom`,name:`Animalia`},{level:`Phylum`,name:`Chordata`},{level:`Class`,name:`Reptilia`},{level:`Order`,name:`Saurischia`},{level:`Family`,name:`Tyrannosauridae`}],footer:`Every rung down the ladder gets more specific — "Animalia" fits every animal ever, "T. re…`},list:{title:`5 things to tell your friends`,icon:`check`,iconColor:`var(--presence-soft)`,items:[`<b>Dinosaurs ruled for 165 million years</b>, way longer than people have been around.`,`<b>Argentinosaurus</b> was the heaviest, as long as 3 school buses.`,`<b>T. rex</b> had the strongest bite of any land animal ever.`,`<b>Birds are living dinosaurs</b>, look at a chicken and say hi to a dino cousin!`,`A <b>giant asteroid</b> ended their reign 66 million years ago.`]},speciescard:{title:`Field guide: backyard bird`,icon:`globe`,iconColor:`var(--presence)`,commonName:`American Robin`,scientificName:`Turdus migratorius`,image:{from:`var(--presence-deep)`,to:`var(--insight-soft)`},status:`Least concern`,caption:`A thrush — and a living dinosaur! Every bird is descended from feathered theropods.`,marks:[{label:`Size`,value:`23–28 cm long, robin-sized`},{label:`Colour`,value:`Rusty-orange breast, dark grey back, white eye-ring`},{label:`Habitat`,value:`Lawns, parks, woodland edges — hops on open grass`},{label:`Range`,value:`Across North America; many migrate south in winter`},{label:`Song`,value:`Cheery rolling "cheerily, cheer-up, cheerio"`}],lookalikes:[`Spotted Towhee`,`Eastern Towhee`,`Varied Thrush`],footer:`Tip: a tugging robin on the lawn is <b>listening</b> for worms, not just looking.`},scoreboard:{title:`Tonight around the league`,icon:`chart`,iconColor:`var(--presence)`,games:[{away:`LAL`,home:`GSW`,as:`102`,hs:`108`,status:`Q4 · 4:12`,hot:!0},{away:`BOS`,home:`NYK`,as:`99`,hs:`94`,status:`Q4 · 2:38`},{away:`DEN`,home:`MIN`,as:`88`,hs:`91`,status:`Q3 · 5:01`},{away:`MIL`,home:`PHI`,as:`116`,hs:`112`,status:`Final`},{away:`PHX`,home:`DAL`,as:`71`,hs:`69`,status:`Half`}],footer:`Your game is the close one, Warriors by 6 and pulling away.`},ring:{title:`Steph's night, by the numbers`,icon:`sparkle`,iconColor:`var(--insight)`,rings:[{pct:.62,display:`8/13`,unit:``,label:`From three`,color:`var(--insight)`},{pct:.71,display:`12/17`,unit:``,label:`Field goals`,color:`var(--presence)`},{pct:1,display:`6/6`,unit:``,label:`Free throws`,color:`var(--presence-soft)`}],footer:`62% from deep on 13 attempts, this is a heat check that never cooled off.`},standings:{title:`Western Conference`,icon:`table`,iconColor:`var(--presence-soft)`,rows:[{team:`Thunder`,rec:`41–9`,gb:`-`},{team:`Nuggets`,rec:`36–14`,gb:`5.0`},{team:`Warriors`,rec:`34–16`,gb:`7.0`},{team:`Timberwolves`,rec:`33–17`,gb:`8.0`},{team:`Lakers`,rec:`31–19`,gb:`10.0`}],footer:`A win tonight moves the Warriors within a game of Denver for the 2-seed.`},bump:{title:`West seeding race · by month`,icon:`chart`,iconColor:`var(--presence)`,periods:[`Nov`,`Dec`,`Jan`,`Feb`,`Mar`],series:[{label:`Thunder`,color:`var(--presence)`,ranks:[2,1,1,1,1]},{label:`Nuggets`,color:`var(--insight)`,ranks:[1,2,2,3,2]},{label:`Warriors`,color:`var(--warning)`,ranks:[5,4,4,2,3]},{label:`Wolves`,color:`var(--presence-soft)`,ranks:[3,3,3,4,4]},{label:`Lakers`,color:`var(--text-muted)`,ranks:[4,5,6,5,5]}],footer:`The Thunder seized the top seed in December and never let go; the Warriors’ February surg…`},scoutingreport:{title:`Up next: scouting Thursday's Nuggets`,icon:`chart`,iconColor:`var(--presence)`,opponent:`Denver Nuggets`,tendencies:[`Run their offense almost entirely through Jokić at the elbow, he's averaging 9 assists a …`,`Switch aggressively on the perimeter, which has bothered Golden State's off-ball movement…`,`Struggle to defend in transition, allowing the 4th-most fast-break points in the league.`,`Lean heavily on their bench trio in the second quarter, often their most vulnerable defen…`],matchupNotes:[{label:`Pace`,note:`Denver plays slower than Golden State prefers; expect the Warriors to push tempo early ra…`},{label:`Rebounding`,note:`The Nuggets crash the offensive glass hard, Golden State needs to box out or risk giving …`},{label:`3-point defense`,note:`Denver ranks middle-of-the-pack defending the arc, exactly where Golden State's offense l…`}],keyPlayers:[{name:`Nikola Jokić`,role:`C`,note:`Reigning MVP-caliber center who doubles as their point guard from the elbow. He's a step …`},{name:`Jamal Murray`,role:`PG`,note:`Streaky scorer who heats up in isolation late in games; live with early clock jumpers rat…`},{name:`Aaron Gordon`,role:`PF`,note:`Their best transition finisher, get back on makes and misses alike.`}],footer:`A win Thursday pulls the Warriors within one game of Denver for the 2-seed, exactly the m…`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={tournamentbracket:{title:`Your projected playoff bracket`,icon:`share`,iconColor:`var(--presence)`,rounds:[`Wild Card`,`Semifinal`,`Final`],matchups:[{id:`wc-1`,round:0,slot:0,a:`Dynasty Dave`,winner:`a`},{id:`wc-2`,round:0,slot:1,a:`You · Gridiron`,winner:`a`},{id:`wc-3`,round:0,slot:2,a:`The Karens`,b:`Bottom Feeders`},{id:`wc-4`,round:0,slot:3,a:`Brady Bunch`,b:`Waiver Warriors`},{id:`sf-1`,round:1,slot:0,a:`Dynasty Dave`}],footer:`Dynasty Dave and you both clinch a Wild Card bye with a win this week, everyone else play…`},banner:{title:`Please read first`,tone:`warning`,bannerIcon:`shield`,iconColor:`var(--warning)`,message:`I’m Mavéa, not a doctor, this is general information, <b>not a diagnosis</b>.`,detail:`Use it to feel calmer and more prepared, then trust your gut. If anything worries you, ca…`,action:`I understand`,dismissible:!1,footer:`When in doubt, a real clinician who can see your child wins over any guide.`},checklist:{title:`Comfort measures for tonight`,icon:`check`,iconColor:`var(--presence)`,rows:[{t:`Offer small sips often, water, milk, breastmilk, or an oral rehydration drink`,st:`doing`},{t:`Dress in one light layer; a too-warm room makes a fever feel worse`,st:`doing`},{t:`Rest and cuddles, let them sleep; don’t force food, do keep fluids up`,st:`todo`},{t:`A lukewarm (not cold) sponge or bath if they’re uncomfortable`,st:`todo`},{t:`Check on them overnight; note the time and temp of each reading`,st:`todo`}],footer:`Standard pediatric guidance (AAP, NHS), not a prescription. Goal is comfort, not chasing …`},epicurve:{title:`Local flu + RSV activity this season`,icon:`chart`,iconColor:`var(--presence-soft)`,cases:[{period:`Wk 1`,count:40,classification:`confirmed`},{period:`Wk 1`,count:22,classification:`probable`},{period:`Wk 2`,count:58,classification:`confirmed`},{period:`Wk 2`,count:30,classification:`probable`},{period:`Wk 3`,count:86,classification:`confirmed`}],threshold:{value:100,label:`Elevated-activity threshold`},phases:[{label:`School break`,period:`Wk 5`}],footer:`This season peaked right at the elevated-activity line, then eased once school let out fo…`},web:{title:`Where this comes from`,live:!0,results:[{domain:`healthychildren.org`,path:` · AAP`,color:`var(--insight)`,title:`Fever and Your Child`,excerpt:`The American Academy of Pediatrics: focus on <mark>comfort and behavior</mark>, not the e…`},{domain:`mayoclinic.org`,color:`var(--presence)`,title:`Fever in children, first aid`,excerpt:`When to seek care, and how to <mark>safely lower a fever</mark> at home.`},{domain:`nhs.uk`,color:`var(--presence-soft)`,title:`High temperature (fever) in children`,excerpt:`The NHS guide, including the <mark>glass test</mark> for a rash that doesn’t fade.`}]},positioncard:{title:`How worried should you be tonight?`,icon:`alert`,levels:[{label:`Usually fine`,tone:`good`,detail:`Alert between spikes, drinking, wetting diapers — a fever the body is handling.`},{label:`Watch closely`,tone:`caution`,detail:`Clingy and drained but still responsive; recheck in a few hours.`},{label:`Call tonight`,tone:`bad`,detail:`Hard to rouse, breathing fast, or under 3 months with any fever.`}],atLevel:0,marker:`From what you described`,reason:`A playful-between-spikes, drinking child sits at the reassuring end — how they look matte…`,watchFor:[`Under 3 months with any fever`,`A stiff neck, a rash that does not fade under a glass, or trouble breathing`,`No wet diaper in 8 hours, or no tears when crying`],caveat:`This places the situation, it does not diagnose it — your read of your child wins.`},differential:{title:`What is usually behind a fever like this`,icon:`eye`,causes:[{name:`A common viral infection`,likelihood:`common`,tell:`Runny nose or cough, comes and goes over a few days`,pointsAway:`A fever lasting past day 5 with no other symptoms`},{name:`Ear or throat infection`,likelihood:`common`,tell:`Tugging at an ear, pain swallowing, or fussier lying down`,pointsAway:`No ear or throat complaints at all`},{name:`A urinary infection`,likelihood:`less-common`,tell:`Fever with no cold symptoms, especially in younger kids`,pointsAway:`An obvious cold already explaining it`},{name:`A serious bacterial infection`,likelihood:`rare`,serious:!0,tell:`Very drowsy, stiff neck, or a non-fading rash`,pointsAway:`Alert and interactive between spikes`}],prompt:`Look for the tell-tale signs above — a cough or runny nose usually points to the common, …`,caveat:`These are possibilities with honest odds, not a diagnosis; a clinician can examine and co…`},growthcurve:{title:`Weight-for-age · boys, 0–12 months`,iconColor:`var(--presence)`,metric:`weight`,unit:`kg`,ageUnit:`months`,percentiles:[{p:3,points:[{age:0,value:2.5},{age:2,value:4.4},{age:4,value:5.6},{age:6,value:6.4},{age:9,value:7.1}]},{p:15,points:[{age:0,value:2.9},{age:2,value:5},{age:4,value:6.2},{age:6,value:7.1},{age:9,value:7.9}]},{p:50,points:[{age:0,value:3.3},{age:2,value:5.6},{age:4,value:7},{age:6,value:7.9},{age:9,value:8.9}]},{p:85,points:[{age:0,value:3.9},{age:2,value:6.3},{age:4,value:7.8},{age:6,value:8.8},{age:9,value:9.9}]},{p:97,points:[{age:0,value:4.4},{age:2,value:7},{age:4,value:8.6},{age:6,value:9.7},{age:9,value:11}]}],plotted:[{age:0,value:3.4},{age:2,value:5.7},{age:4,value:7.1},{age:6,value:8},{age:9,value:9}],caption:`Every measurement lands right on the 50th-percentile curve — steady tracking along one ba…`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={painscale:{title:`How bad is the pain right now?`,icon:`sparkle`,iconColor:`var(--warning)`,kind:`faces`,value:6,caption:`Moderate — interferes with focus`,anchors:[`No pain`,`Worst imaginable`],footer:`Six or higher is worth flagging to a clinician if it persists past a few days.`},badgeset:{title:`Tonight's categories`,icon:`layers`,iconColor:`var(--presence-soft)`,badges:[{label:`Animals`,variant:`solid`,color:`var(--presence)`,icon:`spark`},{label:`Space`,variant:`soft`,color:`var(--insight)`,icon:`moon`},{label:`Movies`,variant:`soft`,color:`var(--presence-soft)`,icon:`play`},{label:`Food`,variant:`outline`,color:`var(--warning)`,icon:`cart`},{label:`Geography`,variant:`dot`,color:`var(--text-muted)`,icon:`globe`}],countIcon:`bell`,count:3,countColor:`var(--warning)`,footer:`Three questions queued. Tap the bell when the room is ready.`},livescore:{title:`Keep score yourself`,icon:`spark`,unit:`pts`,step:1,entries:[{name:`The Martins`,score:9,color:`var(--presence)`},{name:`Gomez crew`,score:7,color:`var(--warning)`},{name:`Kid Squad`,score:6,color:`var(--insight)`}],footer:`Tap +/- as each round lands — the ranking updates as you go.`},gameboard:{title:`Ruy López — the opening position`,icon:`layers`,iconColor:`var(--presence)`,board:`chess`,size:8,pieces:[{row:7,col:4,glyph:`♔`,side:`a`},{row:7,col:5,glyph:`♗`,side:`a`},{row:7,col:6,glyph:`♘`,side:`a`},{row:4,col:4,glyph:`♙`,side:`a`},{row:6,col:4,glyph:`♟`,side:`b`}],highlights:[{row:5,col:2},{row:3,col:1}],moves:[{from:[7,5],to:[3,1]},{from:[7,6],to:[5,5]}],caption:`After 1.e4 e5 2.Nf3 Nc6 3.Bb5, White’s bishop pressures the c6 knight — the Ruy López.`},boardgamescore:{title:`Wingspan, the side table`,icon:`table`,iconColor:`var(--insight)`,game:`Wingspan`,players:[{name:`Dana`,roundScores:[8,11,14,9],total:42},{name:`Marco`,roundScores:[10,9,15,12],total:46},{name:`Priya`,roundScores:[7,10,12,10],total:39}],footer:`Round 4 bird-cards bonus still to add once everyone reveals their hand.`},tierlist:{title:`Category tier list, by how the room did`,icon:`layers`,iconColor:`var(--warning)`,caption:`Ranked by tonight's hit rate, not difficulty on paper.`,rows:[{tier:`S`,color:`var(--danger)`,items:[`Movie quotes`,`90s cartoons`]},{tier:`A`,color:`var(--warning)`,items:[`World capitals`,`Music trivia`]},{tier:`B`,color:`var(--insight)`,items:[`Sports history`]},{tier:`C`,color:`var(--text-muted)`,items:[]}],footer:`Nobody touched a C-tier question tonight — maybe next round.`},seatingchart:{title:`Table assignments`,icon:`table`,iconColor:`var(--presence)`,venue:`O'Malley's back room`,tables:[{id:`t1`,label:`Team Martin`,seats:4,shape:`round`},{id:`t2`,label:`Gomez Crew`,seats:4,shape:`round`},{id:`t3`,label:`The Aunties`,seats:4,shape:`round`},{id:`t4`,label:`Kid Squad`,seats:6,shape:`rect`}],assignments:[{tableId:`t1`,seatIndex:0,guest:`Dana Martin`},{tableId:`t1`,seatIndex:1,guest:`Rob Martin`},{tableId:`t1`,seatIndex:2,guest:`Pepper (the dog)`},{tableId:`t2`,seatIndex:0,guest:`Elena Gomez`},{tableId:`t2`,seatIndex:1,guest:`Marco Gomez`}],footer:`A few open seats left at Team Martin and Kid Squad — send stragglers there.`},checkboxgroup:{title:`Ingredients checklist`,icon:`cart`,iconColor:`var(--insight)`,allLabel:`Tick everything as you gather it`,items:[{label:`4 mini pizza bases (or English muffins)`,caption:`Pre-made = the easy mode`,checked:!0},{label:`1 cup pizza or pasta sauce`,caption:`Smooth, mild, kid-approved`,checked:!0},{label:`1½ cups shredded mozzarella`,caption:`The big handful of cheese`,checked:!0},{label:`Cherry tomatoes, halved`,caption:`Grown-up does the halving`},{label:`Sweetcorn + a little ham or pepperoni`,caption:`Pick your favourites`}],footer:`Six things, most are probably already in your fridge.`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={numberstepper:{title:`How many little chefs?`,icon:`plus`,iconColor:`var(--warning)`,label:`Pizzas to make`,value:4,min:1,max:12,step:1,suffix:`pizzas`,caption:`At <b>4 pizzas</b>: 1 cup sauce · 1½ cups cheese · 4 bases. Tap <b>+</b> and I’ll scale e…`,color:`var(--warning)`},picturesequence:{title:`How to make a sandwich — put the steps in order`,icon:`layers`,iconColor:`var(--warning)`,panels:[{label:`Get two slices of bread`,marker:`first`,caption:`Lay them flat on the plate.`},{label:`Spread the filling`,marker:`then`,caption:`Butter, jam, or peanut butter — your pick.`},{label:`Add what you like`,marker:`next`,caption:`Cheese, banana slices, or a little honey.`},{label:`Press the slices together and cut`,marker:`last`,caption:`Triangles or squares — then take a bite!`}],caption:`Read it left to right: first, then, next, last.`},vaxschedule:{title:`Shot series, on the age axis`,icon:`shield`,iconColor:`var(--insight)`,doses:[{vaccine:`DHPP · 1st`,dueAt:`8 weeks`,status:`done`},{vaccine:`Deworming`,dueAt:`8 weeks`,status:`done`},{vaccine:`DHPP · 2nd`,dueAt:`12 weeks`,status:`due`,note:`Book the booster now to hold the slot.`},{vaccine:`Bordetella`,dueAt:`12 weeks`,status:`due`},{vaccine:`DHPP · 3rd`,dueAt:`16 weeks`,status:`due`}],footer:`Same series as above, laid out by when each shot actually falls due.`},vetpatientchart:{title:`Biscuit's first wellness exam`,icon:`doc`,iconColor:`var(--presence)`,species:`Canine`,name:`Biscuit`,breed:`Golden Retriever`,sex:`Male`,weightKg:5,vitals:[{label:`Temperature`,value:101.8,unit:`°F`},{label:`Heart rate`,value:150,unit:`bpm`},{label:`Respiratory rate`,value:24,unit:`bpm`},{label:`Body condition score`,value:`5/9`},{label:`Gum color`,value:`Pink`}],problems:[`Transient loose stool — post-adoption stress, monitoring`],footer:`All vitals normal for a 9-week Golden. The loose stool is expected from the move; call Ma…`},stickerchart:{title:`Potty training chart`,icon:`sparkle`,iconColor:`var(--warning)`,behavior:`Went potty outside`,days:[`Mon`,`Tue`,`Wed`,`Thu`,`Fri`],marks:[{day:`Mon`,earned:!0},{day:`Tue`,earned:!0},{day:`Wed`,earned:!1},{day:`Thu`,earned:!0},{day:`Fri`,earned:!0}],rewardAt:20,footer:`5 stars this week — 15 to go before the new chew toy.`},avatar:{title:`<Avatar />`,icon:`eye`,iconColor:`var(--presence-soft)`,name:`Maya Chen`,initials:`MC`,size:`lg`,status:`online`,ring:!0,color:`var(--presence)`,role:`Design Systems Lead`,footer:`Falls back: image → initials → glyph. Presence dot is a single prop.`},avatargroup:{title:`<AvatarGroup />`,icon:`share`,iconColor:`var(--insight)`,max:5,size:`md`,members:[{name:`Maya Chen`,initials:`MC`,color:`var(--presence)`,status:`online`,role:`Systems Lead`},{name:`Dev Patel`,initials:`DP`,color:`var(--insight)`,status:`busy`,role:`Engineer`},{name:`Lena Ortiz`,initials:`LO`,color:`var(--presence-soft)`,status:`online`,role:`Designer`},{name:`Sam Okafor`,initials:`SO`,color:`var(--warning)`,status:`away`,role:`PM`},{name:`Ivy Brooks`,initials:`IB`,color:`var(--insight)`,status:`offline`,role:`Engineer`}],caption:`<b>12 contributors</b> on Aria Core this quarter`,footer:`Hover to spread the stack and name a face; overflow collapses to “+N”.`},chipset:{title:`<Chip />, filter the registry`,icon:`table`,iconColor:`var(--insight)`,mode:`multi`,color:`var(--presence)`,chips:[{label:`Inputs`,icon:`edit`,color:`var(--presence)`,selected:!0},{label:`Overlays`,icon:`layers`,color:`var(--insight)`,selected:!0},{label:`Data viz`,icon:`chart`,color:`var(--presence-soft)`},{label:`Layout`,icon:`screen`,color:`var(--text-muted)`,removable:!0},{label:`Feedback`,icon:`bell`,color:`var(--warning)`,removable:!0}],summary:`Showing <b>2 categories</b>, toggle to filter, × to remove.`,footer:`Single or multi-select; chips can carry a leading icon or avatar.`}};export{e as E};
@@ -0,0 +1,5 @@
1
+ var e={kbd:{title:`Docs keyboard shortcuts`,icon:`screen`,iconColor:`var(--presence-soft)`,active:0,color:`var(--presence)`,shortcuts:[{keys:[`⌘`,`K`],label:`Search the component registry`,icon:`spark`},{keys:[`⌘`,`⇧`,`C`],label:`Copy the import statement`,icon:`doc`},{keys:[`[`],label:`Toggle the props panel`,icon:`table`},{keys:[`G`,`T`],label:`Jump to tokens`,icon:`layers`},{keys:[`?`],label:`Show all shortcuts`,icon:`eye`}],footer:`Hover a row to highlight its key-caps, same kbd primitive used in ⌘K.`},codeblock:{title:`Usage, <Button />`,icon:`doc`,iconColor:`var(--insight)`,lang:`tsx`,filename:`CheckoutCard.tsx`,lineNumbers:!0,highlight:[5],code:`import { Button } from 'aria-ui';
2
+
3
+ export function Pay() {
4
+ return (
5
+ <Button variant…`,footer:`Real syntax highlighting + copy button, line 5 is the prop API you’ll reach for most.`},toaststack:{title:`<Toast />, stacked & auto-dismiss`,icon:`bell`,iconColor:`var(--presence)`,duration:4e3,pushLabel:`Push a toast`,toasts:[{kind:`success`,title:`Component published`,desc:`<b>Avatar</b> v3.4 is live on the registry.`,icon:`check`},{kind:`info`,title:`Tokens synced`,desc:`Figma → code pushed <b>18 token</b> updates.`,icon:`layers`}],pool:[{kind:`warning`,title:`Deprecation`,desc:`<b>LegacyModal</b> ships its last patch this month.`,icon:`alert`},{kind:`error`,title:`Build failed`,desc:`Storybook visual diff found <b>2 regressions</b>.`,icon:`x`},{kind:`success`,title:`Snapshot approved`,desc:`All 240 stories matched baseline.`,icon:`check`}],footer:`Auto-dismiss bar counts down; the button cycles the pool.`},spinner:{title:`<Spinner />, loading states`,icon:`clock`,iconColor:`var(--presence-soft)`,caption:`Sizes S/M/L, plus an indeterminate bar for unknown durations.`,buttonLabel:`Publish component`,loadingLabel:`Publishing…`,color:`var(--presence)`,footer:`Press the button to see the in-flight state every async action shares.`},notification:{title:`<NotificationList />, registry activity`,icon:`bell`,iconColor:`var(--presence)`,markAllLabel:`Mark all read`,items:[{avatar:`MC`,color:`var(--presence)`,title:`<strong>Maya Chen</strong> published Avatar v3.4`,time:`8m`,unread:!0},{avatar:`DP`,color:`var(--insight)`,title:`<strong>Dev Patel</strong> opened a PR on Tooltip`,time:`41m`,unread:!0},{icon:`shield`,color:`var(--warning)`,title:`A11y audit flagged <strong>2 contrast</strong> warnings`,time:`2h`,unread:!0},{avatar:`LO`,color:`var(--presence-soft)`,title:`<strong>Lena Ortiz</strong> approved the token sync`,time:`5h`},{icon:`check`,color:`var(--insight)`,title:`Nightly visual diff passed, <strong>240/240</strong>`,time:`9h`}],footer:`Avatar or icon, relative time, unread dots, the in-app changelog feed.`},tooltip:{title:`<Tooltip />, four placements`,icon:`eye`,iconColor:`var(--insight)`,prompt:`Hover any control to read its <b>hint</b>:`,color:`var(--presence)`,targets:[{label:`Copy import`,icon:`doc`,tip:`Copies the named import to your clipboard`,placement:`top`},{label:`Tokens`,icon:`layers`,tip:`Open the live token reference`,placement:`right`},{label:`Deprecate`,icon:`alert`,tip:`Flags the component for removal next major`,placement:`bottom`},{label:`Source`,icon:`external`,tip:`View the component source on GitHub`,placement:`left`}]},hovercard:{title:`<HoverCard />, @mention preview`,icon:`spark`,iconColor:`var(--presence-soft)`,lead:`The Tooltip refactor was reviewed by `,mention:`@maya.chen`,name:`Maya Chen`,handle:`@maya.chen`,avatar:`MC`,bio:`Leads the Aria design system. Owns the token pipeline and the overlay primitives.`,stats:[{label:`Components`,value:`23`},{label:`Reviews`,value:`184`},{label:`Since`,value:`2023`}],action:`View profile`,color:`var(--presence)`},a11yaudit:{title:`Accessibility audit — checkout flow`,icon:`shield`,iconColor:`var(--insight)`,score:`82/100`,checks:[{label:`Keyboard navigation`,status:`pass`,note:`Every control is reachable and operable with Tab and Enter.`},{label:`Focus order`,status:`pass`,note:`Tab order follows the visual reading order top to bottom.`},{label:`Colour contrast`,status:`warn`,note:`Placeholder text sits at 3.9:1 — below the 4.5:1 target for body copy.`},{label:`Image alt text`,status:`pass`,note:`All informative images carry descriptive alt; decorative ones are empty.`},{label:`Form field labels`,status:`fail`,note:`The promo-code input has no associated label, so screen readers announce it as "edit text…`}],footer:`Two issues block the AA bar: the unlabelled promo field and the low-contrast placeholders.`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={usabilityfindings:{title:`Usability test — checkout flow`,icon:`eye`,iconColor:`var(--presence)`,taskSuccessRate:78,avgTimeOnTask:`2m 14s`,issues:[{label:`Promo-code field has no visible label`,severity:`critical`,affectedUsers:6,note:`Four of six testers typed the code into the wrong field on the first try.`},{label:`Low-contrast placeholder text reads as filled-in`,severity:`major`,affectedUsers:3,note:`Two testers skipped the field, assuming it already had a value.`},{label:`Remove-item icon is easy to miss on touch`,severity:`minor`,affectedUsers:2}],footer:`Both blockers trace to the same two components flagged in the audit above.`},typespec:{title:`Type scale`,icon:`edit`,iconColor:`var(--presence)`,styles:[{name:`Display`,sample:`Design with intent`,sizePx:44,weight:700,lineHeight:1.05,tracking:`-0.03em`,family:`Inter`,color:`var(--presence)`},{name:`H1`,sample:`A clear, confident heading`,sizePx:30,weight:680,lineHeight:1.15,tracking:`-0.02em`,family:`Inter`},{name:`H2`,sample:`Supporting section title`,sizePx:22,weight:620,lineHeight:1.2,tracking:`-0.01em`,family:`Inter`},{name:`Body`,sample:`The quick brown fox jumps over the lazy dog.`,sizePx:16,weight:400,lineHeight:1.55,family:`Inter`},{name:`Caption`,sample:`Small print, captions, and labels.`,sizePx:12,weight:500,lineHeight:1.4,tracking:`0.01em`,family:`Inter`,color:`var(--text-muted)`}],pairing:{heading:`Fraunces`,body:`Inter`},caption:`A 1.4-ish modular scale keeps each step distinct without the jumps feeling abrupt.`},navbar:{title:`The global top bar`,icon:`layers`,iconColor:`var(--insight)`,brand:`Northwind`,brandIcon:`spark`,links:[{label:`Overview`,icon:`chart`},{label:`Reports`,icon:`doc`,badge:4},{label:`Sources`,icon:`globe`},{label:`Alerts`,icon:`bell`,badge:2}],active:0,searchPlaceholder:`Search dashboards, metrics, people…`,avatar:`AM`,color:`var(--insight)`,footer:`Identity left, search center, you right, the same on every screen.`},sidenav:{title:`The grouped sidebar`,icon:`layers`,iconColor:`var(--presence-soft)`,brand:`Northwind`,brandIcon:`spark`,groups:[{heading:`Workspace`,items:[{label:`Overview`,icon:`chart`},{label:`Reports`,icon:`doc`,badge:4},{label:`Dashboards`,icon:`layers`}]},{heading:`Data`,items:[{label:`Sources`,icon:`globe`},{label:`Pipelines`,icon:`share`},{label:`Alerts`,icon:`bell`,badge:2}]},{heading:`Admin`,items:[{label:`Team`,icon:`share`},{label:`Settings`,icon:`edit`}]}],active:`0.0`,color:`var(--presence)`,footer:`Three groups keep the rail scannable, collapse it to icons on small screens.`},treeview:{title:`The reports tree`,icon:`doc`,iconColor:`var(--insight)`,nodes:[{label:`Reports`,open:!0,children:[{label:`Revenue`,open:!0,children:[{label:`MRR by plan`,meta:`live`},{label:`Churn cohort`,meta:`2d ago`},{label:`Expansion`,meta:`1w ago`}]},{label:`Product`,children:[{label:`Activation funnel`,meta:`live`},{label:`Feature usage`,meta:`4h ago`}]},{label:`Exec summary`,icon:`proof`,meta:`pinned`}]},{label:`Drafts`,children:[{label:`Q3 board deck`,meta:`wip`}]}],selected:`MRR by plan`,color:`var(--insight)`,footer:`Expand-collapse with nesting, the same tree powers the move-to picker.`},breadcrumb:{title:`Where you are, always`,icon:`chevR`,iconColor:`var(--text-muted)`,items:[{label:`Workspace`,icon:`layers`},{label:`Reports`,icon:`doc`},{label:`Revenue`},{label:`MRR by plan`}],maxVisible:4,color:`var(--presence-soft)`,footer:`Every crumb is clickable; a long trail collapses to a “…” overflow menu.`},menubar:{title:`The application menu bar`,icon:`edit`,iconColor:`var(--presence)`,menus:[{label:`File`,entries:[{label:`New report`,icon:`plus`,shortcut:`⌘N`},{label:`Open…`,icon:`doc`,shortcut:`⌘O`,divider:!0},{label:`Export PDF`,icon:`export`,shortcut:`⌘E`},{label:`Print`,icon:`doc`,shortcut:`⌘P`,disabled:!0}]},{label:`Edit`,entries:[{label:`Undo`,icon:`undo`,shortcut:`⌘Z`},{label:`Redo`,shortcut:`⇧⌘Z`,divider:!0},{label:`Find in report`,icon:`eye`,shortcut:`⌘F`}]},{label:`View`,entries:[{label:`Toggle sidebar`,icon:`layers`,shortcut:`⌘\\`},{label:`Dark mode`,icon:`moon`,shortcut:`⌘D`},{label:`Full screen`,icon:`screen`,shortcut:`⌃⌘F`}]}],color:`var(--presence)`,footer:`Familiar File / Edit / View, click a title to drop its menu with shortcuts.`},toolbar:{title:`The report-editor toolbar`,icon:`edit`,iconColor:`var(--insight)`,groups:[{buttons:[{icon:`chart`,label:`Add chart`},{icon:`table`,label:`Add table`},{icon:`image`,label:`Add image`}]},{buttons:[{icon:`edit`,label:`Bold`,toggle:!0,on:!0},{icon:`quote`,label:`Quote`,toggle:!0},{icon:`link`,label:`Link`,toggle:!0}]},{buttons:[{icon:`undo`,label:`Undo`},{icon:`share`,label:`Share`},{icon:`export`,label:`Export`}]}],color:`var(--insight)`,footer:`Grouped icon buttons with dividers, toggles stay pressed like Bold.`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={megamenu:{title:`The “Sources” mega-menu`,icon:`globe`,iconColor:`var(--presence-soft)`,tabs:[`Overview`,`Sources`,`Templates`,`Pricing`],trigger:1,columns:[{heading:`Databases`,links:[{label:`PostgreSQL`,icon:`layers`,desc:`Live sync every 5 min`},{label:`BigQuery`,icon:`layers`,desc:`Warehouse-scale queries`},{label:`Snowflake`,icon:`layers`,desc:`Cost-aware reads`,badge:`New`}]},{heading:`SaaS apps`,links:[{label:`Stripe`,icon:`cart`,desc:`Revenue + subscriptions`},{label:`Salesforce`,icon:`share`,desc:`Pipeline + accounts`},{label:`HubSpot`,icon:`mail`,desc:`Marketing funnels`}]},{heading:`Files`,links:[{label:`Google Sheets`,icon:`table`,desc:`Schedule a refresh`},{label:`CSV upload`,icon:`upload`,desc:`Drag-and-drop import`}]}],promoTitle:`60+ connectors`,promoCopy:`Most teams are live in <b>under ten minutes</b>, no engineering needed.`,color:`var(--presence-soft)`,footer:`Hover “Sources” to open a three-column panel with a promo rail.`},commandbar:{title:`The bulk-action command bar`,icon:`check`,iconColor:`var(--presence)`,noun:`report`,totalItems:6,selected:3,rows:[{label:`MRR by plan`,meta:`Revenue · live`,icon:`chart`},{label:`Churn cohort`,meta:`Revenue · 2d ago`,icon:`table`},{label:`Activation funnel`,meta:`Product · live`,icon:`chart`},{label:`Feature usage`,meta:`Product · 4h ago`,icon:`doc`},{label:`Exec summary`,meta:`Pinned`,icon:`proof`}],actions:[{label:`Move`,icon:`share`},{label:`Export`,icon:`export`},{label:`Share`,icon:`mail`},{label:`Delete`,icon:`x`,danger:!0}],color:`var(--presence)`,footer:`Select rows and a contextual bar rises with the actions for that selection.`},pagination:{title:`Paging the results table`,icon:`table`,iconColor:`var(--insight)`,total:24,page:3,siblings:1,unitLabel:`reports`,perPage:20,color:`var(--insight)`,footer:`First / prev, numbered pages with an ellipsis, next / last, the live page tracks.`},commandk:{title:`The ⌘K command palette`,icon:`sparkle`,iconColor:`var(--insight)`,trigger:`Open command palette`,triggerIcon:`sparkle`,description:`One palette to jump anywhere or run any action, the keyboard-first core.`,placeholder:`Type a command or search…`,groups:[{label:`Navigate`,commands:[{label:`Go to Overview`,icon:`chart`,shortcut:`G O`},{label:`Go to Reports`,icon:`doc`,shortcut:`G R`},{label:`Go to Alerts`,icon:`bell`,shortcut:`G A`}]},{label:`Create`,commands:[{label:`New report`,icon:`plus`,shortcut:`⌘N`,hint:`Blank or from template`},{label:`Connect a source`,icon:`globe`,hint:`60+ connectors`}]},{label:`Account`,commands:[{label:`Toggle dark mode`,icon:`moon`,shortcut:`⌘D`},{label:`Sign out`,icon:`lock`,danger:!0}]}],color:`var(--insight)`},modal:{title:`The “New report” dialog`,icon:`plus`,iconColor:`var(--presence)`,trigger:`New report`,triggerIcon:`plus`,description:`A focused, centered dialog for the one decision that starts everything.`,heading:`Create a new report`,body:`Pick a starting point. You can switch the data source and layout any time, nothing here i…`,confirm:`Create report`,cancel:`Cancel`,color:`var(--presence)`},drawer:{title:`The right-side inspector drawer`,icon:`eye`,iconColor:`var(--insight)`,trigger:`Open inspector`,triggerIcon:`eye`,description:`Slides in from the right for details, without losing your place on the page.`,heading:`MRR by plan`,subhead:`Revenue · updated live`,rows:[{label:`Owner`,value:`John S.`,icon:`share`},{label:`Source`,value:`Stripe`,icon:`cart`},{label:`Refresh`,value:`Every 5 min`,icon:`clock`},{label:`Visibility`,value:`Team · 12 people`,icon:`globe`},{label:`Last edited`,value:`2 days ago`,icon:`edit`}],confirm:`Save changes`,cancel:`Close`,color:`var(--insight)`},bottomnav:{title:`The mobile bottom nav`,icon:`screen`,iconColor:`var(--presence-soft)`,tabs:[{label:`Home`,icon:`chart`},{label:`Reports`,icon:`doc`,badge:4},{label:`Alerts`,icon:`bell`,badge:2},{label:`You`,icon:`share`}],active:0,screens:[`Home, your KPIs at a glance`,`Reports, every dashboard, paged`,`Alerts, 2 thresholds tripped`,`You, account & preferences`],color:`var(--presence-soft)`,footer:`On phones the sidebar folds into four thumb-reach tabs with live badges.`},screenmap:{title:`The screens this shell wraps`,screens:[{name:`Overview`,kind:`dashboard`},{name:`Reports`,kind:`table`},{name:`Pipelines`,kind:`board`},{name:`Report detail`,kind:`detail`},{name:`Alerts`,kind:`list`}],footer:`Same chrome, five layouts, the navigation makes them feel like one product.`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={wireframe:{title:`Landing page — before a line of code`,icon:`screen`,iconColor:`var(--presence-soft)`,cols:12,regions:[{kind:`header`,label:`Top bar`,col:12,rows:1},{kind:`hero`,label:`Hero`,col:12,rows:3},{kind:`card`,label:`Feature`,col:4,rows:2},{kind:`card`,label:`Feature`,col:4,rows:2},{kind:`card`,label:`Feature`,col:4,rows:2}],caption:`Above the fold → three feature cards → one clear call to action.`,footer:`Low-fi on purpose — settle structure first, polish pixels later.`},textfield:{title:`Your profile`,icon:`edit`,iconColor:`var(--presence)`,color:`var(--presence)`,fields:[{label:`Full name`,value:`John Smith`,icon:`edit`,state:`success`,helper:`Looks good, this is how Mavéa will greet you.`},{label:`Display handle`,placeholder:`@you`,value:`@johnsmith`,icon:`spark`,state:`success`,helper:`@johnsmith is available.`},{label:`Work email`,value:`john.smith@example.com`,icon:`mail`,state:`default`,helper:`We'll send a 6-digit code to verify this below.`},{label:`Set a password`,placeholder:`At least 10 characters`,password:!0,icon:`lock`,state:`error`,helper:`Add one number and one symbol to make it strong.`,optional:!0}],footer:`Two are pre-filled, just confirm the rest.`},fileupload:{title:`Profile photo`,icon:`image`,iconColor:`var(--insight)`,color:`var(--insight)`,prompt:`Drop a photo here, or click to browse`,hint:`PNG, JPG or GIF · up to 5 MB · square looks best`,files:[{name:`john-headshot.jpg`,size:`2.4 MB`,progress:100,kind:`image`},{name:`team-offsite-2025.png`,size:`4.1 MB`,progress:62,kind:`image`}],footer:`The first photo is set as your avatar.`},textarea:{title:`A short bio`,icon:`quote`,iconColor:`var(--presence-soft)`,color:`var(--presence-soft)`,label:`Tell Mavéa a little about you`,placeholder:`What do you work on? What are you here to figure out?`,value:`Product lead exploring voice-first AI. I want Mavéa to help me reason through decisions a…`,max:240,minRows:3,footer:`This helps me tailor what I show you, totally optional.`},combobox:{title:`Where are you based?`,icon:`globe`,iconColor:`var(--insight)`,color:`var(--insight)`,label:`Time zone`,placeholder:`Search cities or zones…`,noun:`zones`,selected:1,items:[{label:`San Francisco`,meta:`PT · UTC−8`,icon:`globe`},{label:`New York`,meta:`ET · UTC−5`,icon:`globe`},{label:`London`,meta:`GMT · UTC+0`,icon:`globe`},{label:`Berlin`,meta:`CET · UTC+1`,icon:`globe`},{label:`Bengaluru`,meta:`IST · UTC+5:30`,icon:`globe`}],footer:`I detected New York from your sign-in, change it if that’s off.`},formpanel:{title:`Name your workspace`,icon:`layers`,iconColor:`var(--presence)`,color:`var(--presence)`,heading:`This is where your conversations and canvases live.`,fields:[{key:`wsname`,label:`Workspace name`,type:`text`,value:`John’s Studio`,required:!0,hint:`Shown in the top-left of every canvas.`},{key:`wsurl`,label:`Workspace URL`,type:`text`,value:`john-studio`,required:!0,hint:`mavea.app/john-studio`},{key:`team`,label:`Team size`,type:`select`,options:[`Just me`,`2–5 people`,`6–20 people`,`20+ people`],value:`Just me`},{key:`use`,label:`Primary use`,type:`select`,options:[`Research & decisions`,`Product & design`,`Data & analytics`,`Writing`],value:`Research & decisions`}],submitLabel:`Create workspace`,success:`Workspace created, mavea.app/john-studio is yours.`,footer:`You can rename or add teammates anytime.`},select:{title:`Default canvas theme`,icon:`image`,iconColor:`var(--presence-soft)`,color:`var(--presence-soft)`,label:`Appearance`,placeholder:`Pick a theme`,selected:2,options:[{label:`Light`,caption:`Bright, high-contrast`,icon:`sun`},{label:`Dark`,caption:`Easy on the eyes at night`,icon:`moon`},{label:`Match system`,caption:`Follows your device`,icon:`screen`}],footer:`You can switch instantly from any canvas.`},buttonbar:{title:`Quick actions`,icon:`spark`,iconColor:`var(--presence)`,color:`var(--presence)`,hint:`Saved, your workspace defaults are set.`,buttons:[{label:`Save defaults`,variant:`primary`,icon:`check`},{label:`Invite a teammate`,variant:`outline`,icon:`plus`},{label:`Import settings`,variant:`secondary`,icon:`upload`},{variant:`icon`,icon:`share`},{label:`Reset`,variant:`ghost`,icon:`undo`}],footer:`Delete is disabled until your workspace has data.`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={switchset:{title:`Notifications`,icon:`bell`,iconColor:`var(--insight)`,color:`var(--insight)`,items:[{label:`Product updates`,description:`New components and canvas features.`,icon:`sparkle`,on:!0},{label:`Weekly digest`,description:`A Monday recap of your conversations.`,icon:`mail`,on:!0},{label:`Mentions & replies`,description:`When a teammate tags you.`,icon:`chat`,on:!1},{label:`Marketing emails`,description:`Occasional tips and offers.`,icon:`send`,on:!1},{label:`Do Not Disturb`,description:`Pause everything 10pm–8am, your time.`,icon:`moon`,on:!0}],footer:`You’ll always get security alerts, those can’t be turned off.`},actionchecklist:{title:`Finish setting up`,icon:`check`,iconColor:`var(--presence)`,color:`var(--presence)`,subtitle:`A few quick steps and your workspace is ready, tick them off as you go.`,items:[{label:`Confirm your profile basics`,detail:`Name, role, and a photo so teammates recognize you.`,meta:`Step 1`,done:!0},{label:`Name your workspace`,detail:`Where all your canvases live.`,priority:`medium`,meta:`Step 2`,done:!0},{label:`Choose notification preferences`,detail:`Pick only the alerts that are actually useful.`,priority:`low`,meta:`Step 3`},{label:`Verify your email`,detail:`Enter the 6-digit code to unlock everything.`,priority:`high`,meta:`Step 4`},{label:`Invite a teammate`,detail:`Optional, you can always do this later.`,priority:`low`,meta:`Optional`}],footer:`You can change any of these later in Settings.`},otp:{title:`Verify your email`,icon:`lock`,iconColor:`var(--insight)`,color:`var(--insight)`,prompt:`Demo UI only — enter the example 6-digit code`,length:6,code:`428913`,resendLabel:`Didn’t get it? Resend in 0:24`,footer:`Gallery fixture only. Mavéa does not create an account or send this email.`},trustmap:{title:`Example privacy map · fictional product`,icon:`shield`,iconColor:`var(--presence)`,flows:[{data:`Email and name`,location:`Fictional database for this UI example`,access:`Not collected by Mavéa`,retention:`Example only`},{data:`Saved memories`,location:`Browser storage in the real app`,access:`Anyone with browser or device access may reach it`,retention:`Until feature deletion, site-data clearing, or browser eviction`},{data:`Voice recordings`,location:`Browser, speech endpoint, or browser-vendor service`,access:`Depends on the selected speech path`,retention:`Provider and deployment policies apply`},{data:`Usage analytics`,location:`Not collected by the unmodified Mavéa project`,access:`A modified deployment may differ`,retention:`Deployment operator must disclose changes`}],checklist:[{label:`Two-factor authentication is on`,ok:!0},{label:`Login alerts for new devices`,ok:!0},{label:`Data export available anytime`,ok:!0},{label:`A recovery email is still missing`,ok:!1}],note:`This block demonstrates a privacy-map UI; it is not a claim about a hosted Mavéa account.`,footer:`See Mavéa’s <b>Privacy Policy</b> for the project’s actual data flows.`},datepicker:{title:`Pick your session date`,icon:`clock`,iconColor:`var(--insight)`,label:`Session date`,value:`2026-06-14`,placeholder:`Choose a day`,month:`2026-06`,color:`var(--presence)`,footer:`Saturdays book out first, the 14th is still open.`},calendarpick:{title:`When the studio is free this month`,icon:`check`,iconColor:`var(--presence-soft)`,month:`2026-06`,value:`2026-06-14`,color:`var(--presence)`,events:[{date:`2026-06-07`,color:`var(--text-muted)`,label:`Booked · full day`},{date:`2026-06-14`,color:`var(--insight)`,label:`Open · your slot`},{date:`2026-06-15`,color:`var(--presence)`,label:`Open · afternoon only`},{date:`2026-06-21`,color:`var(--text-muted)`,label:`Booked · wedding crew`},{date:`2026-06-28`,color:`var(--warning)`,label:`Maintenance · closed`}],footer:`Green is wide open, grey is taken, the 14th is your highlighted day.`},timepicker:{title:`Set your start time`,icon:`clock`,iconColor:`var(--insight)`,label:`Arrival`,format:12,hour:9,minute:0,meridiem:`AM`,step:15,color:`var(--presence)`,footer:`Doors at <b>9:00</b>, the light is best for the first 2.5 hours.`},daterange:{title:`Need more than a morning?`,icon:`clock`,iconColor:`var(--presence-soft)`,month:`2026-06`,start:`2026-06-14`,end:`2026-06-15`,presets:[`Single morning`,`Full weekend`,`Three-day shoot`],color:`var(--presence)`,footer:`Block a range for a multi-day shoot, weekend rate saves <b>15%</b>.`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={colorpicker:{title:`Choose your backdrop`,icon:`image`,iconColor:`var(--presence-soft)`,label:`Seamless paper`,value:`#e7dcc8`,color:`var(--presence)`,swatches:[{hex:`#e7dcc8`,name:`Warm Sand`},{hex:`#f4f1ea`,name:`Bone White`},{hex:`#9fb3a1`,name:`Sage`},{hex:`#c79bff`,name:`Lilac`},{hex:`#2b2b30`,name:`Charcoal`}],footer:`Warm Sand flatters the east light, soft, not stark.`},tagsinput:{title:`Tag the mood for your photographer`,icon:`sparkle`,iconColor:`var(--insight)`,label:`Moodboard`,tags:[`warm`,`editorial`,`natural light`],placeholder:`Add a vibe and press Enter`,suggestions:[`minimal`,`candid`,`film grain`,`high-key`,`cozy`],max:8,color:`var(--presence)`,footer:`These ride along to your photographer so the first frame already feels like you.`},searchselect:{title:`Pick your photographer`,icon:`eye`,iconColor:`var(--presence-soft)`,label:`Lead photographer`,placeholder:`Search the studio roster…`,selected:0,options:[{label:`Maya Chen`,meta:`Portrait · your last 3 sessions`,icon:`eye`},{label:`Dev Okafor`,meta:`Editorial · golden-hour specialist`,icon:`sparkle`},{label:`Lena Ross`,meta:`Product · crisp & high-key`,icon:`image`},{label:`Sol Marín`,meta:`Film · grain & motion`,icon:`play`}],footer:`Maya shot your last three, she already knows the room and the light.`},sheet:{title:`Review your booking`,icon:`doc`,iconColor:`var(--insight)`,trigger:`Review the details`,triggerIcon:`doc`,description:`Everything you picked, gathered into one slip before you commit.`,heading:`Saturday, Jun 14 · 9:00 AM`,subhead:`Aria Studio · Loft B`,color:`var(--presence)`,options:[{label:`Maya Chen, lead photographer`,icon:`eye`,selected:!0,meta:`2.5 hrs`},{label:`Warm Sand backdrop`,icon:`image`,meta:`seamless`},{label:`Party of 4`,icon:`plus`,meta:`Loft B`},{label:`Mood: warm · editorial · natural light`,icon:`sparkle`}]},menu:{title:`Add an extra to your session`,icon:`plus`,iconColor:`var(--presence-soft)`,trigger:`Add-ons`,triggerIcon:`plus`,description:`Optional extras the studio can stage before you arrive.`,menuLabel:`Aria Studio · Loft B extras`,color:`var(--presence)`,items:[{label:`Hair & makeup chair`,icon:`spark`,shortcut:`+$90`},{label:`Second strobe kit`,icon:`image`,shortcut:`+$40`},{label:`Same-day edited gallery`,icon:`sparkle`,shortcut:`+$150`},{label:`Print release`,icon:`doc`,shortcut:`+$25`,separator:!0},{label:`Remove all add-ons`,icon:`x`,danger:!0,separator:!0}]},popover:{title:`How the deposit works`,icon:`shield`,iconColor:`var(--insight)`,trigger:`About the deposit`,triggerIcon:`shield`,description:`A small hold keeps the slot yours.`,heading:`Refundable hold`,body:`A <b>$120</b> deposit holds Loft B for <mark>48 hours</mark>. Cancel up to 24 hours befor…`,stat:`$120`,statLabel:`refundable`,action:`Got it`,color:`var(--presence)`},contextmenu:{title:`Right-click the 14th for quick actions`,icon:`clock`,iconColor:`var(--presence-soft)`,target:`Sat Jun 14 · 9:00 AM · Loft B`,targetIcon:`clock`,description:`Adjust the slot without leaving the flow.`,color:`var(--presence)`,items:[{label:`Move to 9:30 AM`,icon:`clock`},{label:`Switch to Loft A`,icon:`share`},{label:`Invite the crew`,icon:`mail`},{label:`Copy booking link`,icon:`link`,shortcut:`⌘C`},{label:`Release this slot`,icon:`x`,danger:!0,separator:!0}]},confirmdialog:{title:`Confirm and hold the slot`,icon:`check`,iconColor:`var(--insight)`,trigger:`Confirm booking`,triggerIcon:`check`,description:`One tap places the refundable $120 hold and books <b>Maya Chen · Sat Jun 14 · 9:00 AM</b>.`,heading:`Hold Loft B for Saturday?`,body:`This authorizes a <mark>$120 refundable deposit</mark> and reserves Loft B for <b>2.5 hou…`,alertIcon:`shield`,confirm:`Hold my slot`,cancel:`Not yet`,color:`var(--presence)`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={roomblockdashboard:{title:`Every room in the building, right now`,icon:`bell`,iconColor:`var(--presence)`,cols:4,cells:[{label:`Loft A`,level:`booked`,value:`Wedding party · full day`},{label:`Loft B`,level:`held`,value:`Your session · 9:00 AM`},{label:`Loft C`,level:`checked-in`,value:`Product shoot · since 8:00 AM`},{label:`Cyc Wall`,level:`open`},{label:`Editing Suite 1`,level:`checked-in`,value:`Sol Marín · editing`}],footer:`Loft B is the only room still just a hold, confirm and it flips to booked.`},messagedraft:{title:`Draft Email`,icon:`mail`,iconColor:`var(--presence)`,subject:`Following up on the project timeline`,to:`Sarah Chen <sarah@example.com>`,from:`Alex`,greeting:`Hi Sarah,`,body:`I wanted to follow up on our conversation from last Tuesday. We're making good progress o…`,closing:`Thanks so much,`,signature:`Alex`,tone:`friendly`,footer:`Adjust the subject or tone before sending.`},chatthread:{title:`Example Chat`,icon:`chat`,iconColor:`var(--insight)`,participants:`You + Support`,messages:[{role:`other`,name:`Support`,text:`Hi! How can I help you today?`,time:`10:30 AM`},{role:`user`,name:`You`,text:`I'm having trouble resetting my password, the link in the email expired.`,time:`10:31 AM`},{role:`other`,name:`Support`,text:`No problem! I'll send a new reset link to your registered email right now. It'll be valid…`,time:`10:31 AM`,status:`read`},{role:`user`,name:`You`,text:`Got it, thank you!`,time:`10:33 AM`}],footer:`Example support thread, adapt for your own context.`},dialogue:{title:`Interview Script`,icon:`chat`,iconColor:`var(--presence)`,context:`Mock job interview for a senior product manager role.`,lines:[{speaker:`Interviewer`,text:`Tell me about a product decision you made with incomplete data. How did you approach it?`},{speaker:`Candidate`,text:`At my last role we had to decide whether to rebuild our checkout flow before Black Friday…`,note:`Strong: shows structured thinking under pressure.`},{speaker:`Interviewer`,text:`What would you have done differently with more time?`},{speaker:`Candidate`,text:`I would have run the full cohort analysis we skipped. We got lucky, the fix held, but I'd…`}],footer:`Use this as a practice script, the interviewer lines are yours to adapt.`},variants:{title:`Tone Variants`,icon:`layers`,iconColor:`var(--insight)`,prompt:`Rewrite: "We need this fixed ASAP."`,variants:[{label:`Professional`,text:`This issue is blocking our release, prioritizing a fix by end of day would be greatly app…`},{label:`Direct`,text:`This is blocking us. Please fix it today.`},{label:`Collaborative`,text:`We're a bit stuck on this one, any chance we can tackle it together this afternoon?`,note:`Good for teammates you know well.`}],footer:`Pick the tone that fits the relationship.`},verse:{title:`Haiku`,icon:`spark`,iconColor:`var(--presence)`,form:`Haiku`,stanzas:[{lines:[{text:`Morning fog lifts slow,`},{text:`the harbor fills with birdsong, `},{text:`coffee, then the code.`}]}],footer:`5–7–5. A small thing.`},slidedeck:{title:`Presentation Outline`,icon:`layers`,iconColor:`var(--insight)`,deck:`Q3 Product Review`,slides:[{title:`Q3 in Three Numbers`,layout:`title`,bullets:[`42% DAU growth`,`$1.2M ARR milestone hit`,`NPS +18 points`],note:`Open strong, lead with the wins before the challenges.`},{title:`What Worked`,layout:`content`,bullets:[`Search redesign drove 3× session depth`,`Onboarding wizard cut time-to-value by 40%`,`Mobile app launch: 28K installs in 4 weeks`]},{title:`What We Learned`,layout:`content`,bullets:[`Notifications fatigue: unsubscribes spiked in week 3`,`Power users wanted API access, we shipped it too late`],note:`Be honest here, credibility moment.`},{title:`Q4 Bets`,layout:`content`,bullets:[`AI-assisted search (2 sprints)`,`Enterprise SSO (compliance gate)`,`Team collaboration features (waitlist: 1,800)`]},{title:`Ask`,layout:`title`,bullets:[`Approve $280K additional headcount (2 engineers)`,`Extend runway to Q2`],note:`Make the ask explicit and specific.`}],footer:`Add your own data before presenting.`},screenplay:{title:`Scene — The Last Train`,icon:`doc`,iconColor:`var(--presence)`,caption:`A short night-platform scene: two strangers, one departing train.`,elements:[{kind:`slug`,text:`INT. SUBWAY PLATFORM - NIGHT`},{kind:`action`,text:`Fluorescent light hums over an empty platform. MAYA (30s), coat buttoned to the chin, wat…`},{kind:`character`,text:`Elliot`},{kind:`parenthetical`,text:`Still catching his breath`},{kind:`dialogue`,text:`Did the 11:48 leave already?`}],footer:`Standard screenplay margins applied automatically — adjust the dialogue and let the forma…`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={socialpost:{title:`Post Preview`,icon:`globe`,iconColor:`var(--presence)`,platform:`x`,handle:`alexrivera`,displayName:`Alex Rivera`,timestamp:`2h`,body:`Shipped the new onboarding flow today, three months of user interviews boiled down to fou…`,media:[{alt:`Before/after screenshot of the onboarding flow`}],footer:`Trim a sentence if you want room for a reply-friendly line.`},storystructure:{title:`Draft: council approves bridge funding`,icon:`doc`,iconColor:`var(--presence)`,lede:`The City Council voted 5-2 Tuesday night to approve $12 million in emergency funding for …`,nutGraf:`The vote ends a contentious two-year debate that pitted residents demanding safer crossin…`,body:[`Council member Elena Vasquez, who sponsored the funding measure, said the vote “finally p…`,`The bridge will connect the Riverside neighborhood to the transit hub on the north side o…`,`Two council members who voted no, Raymond Chu and Priya Patel, said they support the brid…`,`Construction is slated to begin in April, with the city's public works department targeti…`],background:[`The push for a bridge gained urgency after a cyclist was struck and killed at the interse…`,`The city considered a traffic-light-only fix in 2023 but shelved it after a traffic study…`,`The $12 million project includes an $8 million state Safe Streets grant awarded last mont…`],wordCount:179,wordCountBudget:250,footer:`Inverted pyramid: the vote and its stakes lead, the who-said-what follows, history stays …`},ideaboard:{title:`Name Ideas`,icon:`sparkle`,iconColor:`var(--insight)`,ask:`Name the newsletter — a weekly note about running small internet projects.`,ideas:[{angle:`Plain and clear`,label:`The Weekly Build`,note:`Says exactly what it is; nobody has to guess.`},{angle:`Plain and clear`,label:`Small Projects`,note:`Boring on purpose, and it ages well.`},{angle:`Plain and clear`,label:`Ship Notes`,note:`Short enough to survive a screenshot.`},{angle:`With some edge`,label:`Nothing Scales`,note:`A wink at the advice everyone gives you.`},{angle:`With some edge`,label:`Unfinished`,note:`Honest about what a side project actually is.`}],footer:`Nothing here is ranked. Read across the angles first, then narrow.`},longread:{title:`Blog Post Draft`,icon:`edit`,iconColor:`var(--presence)`,standfirst:`A year ago I sent the first issue to fifty-three people, most of whom I had met in person…`,readingTime:2,copySections:!0,sections:[{heading:`The first fifty were friends`,paragraphs:[`For the first three months, nothing I did mattered much. I wrote on Sunday nights, publis…`,`What that stretch bought me was a voice. By issue twelve I had stopped writing like someo…`]},{heading:`What actually moved the needle`,paragraphs:[`Three things, in order of how uncomfortable they were: writing about one narrow subject i…`,`The forward request was worth more than everything else combined. It added about nine hun…`]},{heading:`What I'd do differently`,paragraphs:[`I would start the public archive on day one. For eight months the back issues lived only …`,`And I would have written less. The issues people quote back to me are the short ones — si…`]}],footer:`Copy one section or take the whole piece — no filename, no page numbers, just the writing.`},variantswitch:{title:`Same news, three temperatures`,icon:`sliders`,iconColor:`var(--insight)`,accent:`var(--insight)`,axis:`Tone`,subject:`Telling a client the launch slips two weeks.`,defaultVariant:1,variants:[{label:`Warm`,icon:`chat`,when:`A long relationship you would rather protect than win.`,paragraphs:[`I wanted to get ahead of this rather than let it surprise you: the launch is going to lan…`,`The short version is that the migration turned up far more legacy data than the audit fou…`,`I'll send the revised plan tomorrow morning, and I'm happy to walk you through it wheneve…`]},{label:`Neutral`,when:`The default — clear, unhedged, no temperature either way.`,paragraphs:[`The launch date moves from the 10th to the 24th.`,`The migration surfaced about 40% more legacy records than the audit projected, and valida…`,`A revised plan follows tomorrow. Nothing else in the scope changes.`]},{label:`Firm`,icon:`alert`,when:`The date has already slipped once and the reset has to stick.`,paragraphs:[`The launch moves to the 24th, and that date is now fixed.`,`The migration carries 40% more legacy records than the audit we were handed, and we will …`,`The revised plan lands tomorrow. If the 24th does not work, the conversation we need is a…`]}],footer:`Same facts in all three — only the temperature moves.`},forecast:{title:`5-Day Forecast`,icon:`sun`,iconColor:`var(--presence)`,location:`San Francisco, CA`,unit:`F`,asOf:`as of this morning`,days:[{label:`Mon`,condition:`Partly cloudy`,hi:`68°`,lo:`54°`,precipitation:`10%`},{label:`Tue`,condition:`Sunny`,hi:`72°`,lo:`56°`,precipitation:`0%`},{label:`Wed`,condition:`Sunny`,hi:`74°`,lo:`57°`,precipitation:`0%`},{label:`Thu`,condition:`Fog morning`,hi:`67°`,lo:`53°`,precipitation:`5%`},{label:`Fri`,condition:`Partly cloudy`,hi:`65°`,lo:`52°`,precipitation:`15%`}],summary:`A lovely stretch. Tuesday and Wednesday are your best days for outdoor plans.`,footer:`Data sourced from NWS, always verify before outdoor events.`},agenda:{title:`Tuesday's Schedule`,icon:`clock`,iconColor:`var(--insight)`,date:`Tuesday, June 10`,items:[{time:`9:00 AM`,duration:`30 min`,title:`Team standup`,location:`Zoom`},{time:`10:30 AM`,duration:`1h`,title:`Product review with Design`,location:`HQ, Conf Room B`,note:`Bring the updated mockups`},{time:`12:30 PM`,title:`Lunch break`,note:`Protected, no meetings`},{time:`2:00 PM`,duration:`1h 30 min`,title:`Outdoor strategy walk`,location:`Embarcadero waterfront`,note:`Best weather window of the week`},{time:`4:00 PM`,duration:`45 min`,title:`1:1 with Priya`,location:`Her office`}],footer:`Block your lunch, last week it vanished to a last-minute call.`},picks:{title:`Lunch Picks Near HQ`,icon:`spark`,iconColor:`var(--presence)`,category:`Restaurants · SoMa / Embarcadero`,items:[{name:`Tartine Manufactory`,tagline:`Legendary bakery with a full lunch menu`,why:`The tartine toast and grain bowls are exceptional. Worth the walk, it's 12 minutes on foo…`,price:`$$`,rating:`4.6★`,badge:`Best overall`},{name:`Trou Normand`,tagline:`Charcuterie-focused bistro with excellent cocktails`,why:`Great for a client lunch, quiet enough to talk, impressive without being stuffy.`,price:`$$$`,rating:`4.4★`},{name:`Souvla`,tagline:`Greek fast-casual with rotisserie meats`,why:`Fast, healthy, and filling. Best pick if you only have 45 minutes.`,price:`$`,rating:`4.5★`,badge:`Quick pick`}],footer:`Reservations recommended for Trou Normand on weekdays.`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={transitroute:{title:`Getting to the Embarcadero`,icon:`globe`,iconColor:`var(--insight)`,origin:`SoMa HQ (4th & Brannan)`,destination:`Embarcadero Waterfront`,totalTime:`18 min`,totalDistance:`1.4 mi`,steps:[{mode:`walk`,instruction:`Walk to 4th & King Caltrain station`,duration:`5 min`,distance:`0.3 mi`},{mode:`train`,instruction:`Take Caltrain northbound to Embarcadero`,duration:`8 min`,line:`Baby Bullet`},{mode:`walk`,instruction:`Walk to the Ferry Building waterfront`,duration:`5 min`,distance:`0.3 mi`}],footer:`Caltrain runs every 15 minutes during lunch, no need to time it exactly.`},timezones:{title:`World Clock`,icon:`globe`,iconColor:`var(--text-muted)`,baseTime:`2:00 PM San Francisco`,rows:[{city:`San Francisco`,timezone:`America/Los_Angeles`,offset:`UTC−7`,localTime:`2:00 PM`,isHome:!0},{city:`New York`,timezone:`America/New_York`,offset:`UTC−4`,localTime:`5:00 PM`},{city:`London`,timezone:`Europe/London`,offset:`UTC+1`,localTime:`10:00 PM`},{city:`Berlin`,timezone:`Europe/Berlin`,offset:`UTC+2`,localTime:`11:00 PM`},{city:`Singapore`,timezone:`Asia/Singapore`,offset:`UTC+8`,localTime:`5:00 AM+1`}],footer:`Your 2 PM window works for New York. London is end-of-day.`},lifewheel:{title:`Your wheel of life — a felt balance check`,icon:`sparkle`,iconColor:`var(--presence)`,domains:[{label:`Health`,score:6,note:`Sleep is back on track; movement still patchy.`},{label:`Career`,score:8,note:`Energised by the current project.`},{label:`Relationships`,score:7,note:`Close circle is strong.`},{label:`Finance`,score:5,note:`Stable, but no buffer yet.`},{label:`Growth`,score:8,note:`Learning something new every week.`}],caption:`A round wheel rolls smoothly — the dips are where to spend the next month.`},promptset:{title:`A gentle close to the day`,icon:`moon`,iconColor:`var(--presence)`,theme:`Evening reflection`,prompts:[{question:`What is one small thing that went better than you expected today?`,guidance:`It can be tiny — a good coffee, a reply you were dreading that landed fine.`},{question:`Who or what are you quietly grateful for right now?`,guidance:`No need to be profound; the ordinary ones count most.`},{question:`Where did you spend energy that you would rather keep for tomorrow?`,guidance:`Naming it is enough — you are not solving it tonight.`},{question:`What is one thing you want to carry gently into tomorrow?`,guidance:`A feeling, an intention, or simply a slower start.`}],caption:`There are no wrong answers here — write a line or just sit with one.`},prayertimes:{title:`Prayer times`,icon:`sun`,iconColor:`var(--warning)`,date:`Friday, June 20`,location:`Istanbul, Turkey`,next:`Asr`,sunArc:!0,slots:[{name:`Fajr`,time:`3:38 AM`},{name:`Dhuhr`,time:`1:13 PM`},{name:`Asr`,time:`5:13 PM`},{name:`Maghrib`,time:`8:47 PM`},{name:`Isha`,time:`10:36 PM`}],caption:`Five daily prayers — the next one is highlighted on the day arc.`},amortization:{title:`Mortgage Amortization`,icon:`layers`,iconColor:`var(--presence)`,principal:`$340,000`,rate:`6.75% APR`,term:`30 years`,monthlyPayment:`$2,205`,rows:[{period:`Year 1`,payment:`$26,460`,principal:`$4,212`,interest:`$22,248`,balance:`$335,788`},{period:`Year 2`,payment:`$26,460`,principal:`$4,498`,interest:`$21,962`,balance:`$331,290`},{period:`Year 3`,payment:`$26,460`,principal:`$4,801`,interest:`$21,659`,balance:`$326,489`},{period:`Year 5`,payment:`$26,460`,principal:`$5,473`,interest:`$20,987`,balance:`$315,481`},{period:`Year 10`,payment:`$26,460`,principal:`$7,630`,interest:`$18,830`,balance:`$283,640`}],footer:`Total interest paid over 30 years: ~$453,800. Refinancing at 5.5% would save ~$65K.`},receipt:{title:`Trip Receipt`,icon:`layers`,iconColor:`var(--insight)`,merchant:`Trattoria da Enzo, Rome`,date:`June 5, 2025`,lines:[{item:`Cacio e pepe`,qty:`2`,unit:`$18`,total:`$36`},{item:`Carbonara`,qty:`1`,unit:`$21`,total:`$21`},{item:`Antipasto misto`,qty:`1`,unit:`$14`,total:`$14`},{item:`House wine (500ml)`,qty:`2`,unit:`$12`,total:`$24`},{item:`Sparkling water`,qty:`3`,unit:`$4`,total:`$12`}],subtotal:`$125`,tax:`$11`,total:`$136`,footer:`Paid on Alex card, split below.`},settleup:{title:`Settle Up`,icon:`chat`,iconColor:`var(--presence)`,people:[`Alex`,`Jordan`,`Sam`,`Morgan`],expenses:[{description:`Trattoria dinner`,amount:`$136`,paidBy:`Alex`},{description:`Colosseum tickets`,amount:`$96`,paidBy:`Jordan`},{description:`Hotel (2 nights)`,amount:`$520`,paidBy:`Sam`},{description:`Airport taxi`,amount:`$48`,paidBy:`Morgan`}],settlements:[{from:`Alex`,to:`Sam`,amount:`$96`},{from:`Jordan`,to:`Sam`,amount:`$34`},{from:`Morgan`,to:`Sam`,amount:`$62`}],footer:`Three transfers settle everything. Sam overpaid the most.`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={bracketbar:{title:`Expense Breakdown`,icon:`layers`,iconColor:`var(--insight)`,metric:`Trip cost by category`,items:[{label:`Hotel`,value:520,bar:`$520`,badge:`#1`},{label:`Food & dining`,value:280,bar:`$280`,badge:`#2`},{label:`Activities`,value:96,bar:`$96`,badge:`#3`},{label:`Transport`,value:48,bar:`$48`,badge:`#4`},{label:`Shopping`,value:38,bar:`$38`,badge:`#5`}],footer:`Total trip: $982 for 4 people · $246 per person.`},stackedbars:{title:`Where the money actually goes`,icon:`chart`,iconColor:`var(--presence)`,unit:`$`,mode:`absolute`,yLabel:`Monthly spend`,groups:[`Jan`,`Feb`,`Mar`,`Apr`,`May`],series:[{name:`Housing`,color:`var(--presence)`,data:[2205,2205,2205,2205,2205]},{name:`Groceries`,color:`var(--insight)`,data:[620,585,710,640,595]},{name:`Transport`,color:`var(--warning)`,data:[240,265,210,305,288]},{name:`Travel`,color:`var(--presence-soft)`,data:[0,0,0,740,0]},{name:`Everything else`,color:`var(--text-muted)`,data:[415,462,388,505,441]}],footer:`The mortgage is <b>$2,205</b> of every month no matter what. The only two travel bars are…`},budgetallocator:{title:`Your monthly budget`,icon:`chart`,iconColor:`var(--presence)`,income:4200,unit:`$`,incomeLabel:`Take-home`,caption:`Assign every dollar a job; the remainder is still yours to place.`,envelopes:[{label:`Rent`,amount:1500,group:`fixed`},{label:`Groceries`,amount:500,group:`flexible`},{label:`Utilities`,amount:220,group:`fixed`,note:`power, water, internet`},{label:`Transport`,amount:180,group:`fixed`},{label:`Savings`,amount:600,group:`savings`,note:`auto-transfer on payday`}],footer:`$700 still unassigned — bump savings or start a travel envelope.`},paystub:{title:`Your latest paycheck`,icon:`doc`,iconColor:`var(--presence)`,employer:`Northwind Logistics`,payPeriod:`Jun 1 – Jun 15, 2026`,payDate:`Jun 20, 2026`,grossPay:`$2,884.62`,earnings:[{label:`Regular hours (80)`,amount:`$2,769.23`},{label:`Overtime (3)`,amount:`$115.39`}],deductions:[{label:`Federal tax`,amount:`$412.10`},{label:`State tax`,amount:`$98.44`},{label:`Social Security`,amount:`$178.85`},{label:`Medicare`,amount:`$41.83`},{label:`401(k) (6%)`,amount:`$173.08`}],netPay:`$1,883.82`,ytdNet:`$21,822.40`,footer:`Your 401(k) contribution went up to 6% this period — the employer match kicked in.`},taxbracket:{title:`Your 2026 federal tax bracket`,icon:`chart`,iconColor:`var(--presence)`,filingStatus:`Single`,income:78e3,bands:[{min:0,max:11600,rate:10},{min:11600,max:47150,rate:12},{min:47150,max:100525,rate:22},{min:100525,max:191950,rate:24},{min:191950,max:243725,rate:32}],footer:`You're taxed at 22% only on the slice above $47,150 — everything below that is taxed at i…`},taxreturnsummary:{title:`Your filed return, line by line`,icon:`doc`,iconColor:`var(--presence)`,filingStatus:`Single`,taxYear:2025,rows:[{label:`Wages (W-2 Box 1)`,amount:78e3},{label:`Interest & dividends`,amount:640},{label:`Total income`,amount:78640,kind:`subtotal`},{label:`Standard deduction`,amount:-14600,indent:1},{label:`Taxable income`,amount:64040,kind:`subtotal`}],refundOrOwed:{amount:1328,direction:`refund`},footer:`Withholding ran a little ahead of what you owed, mostly the child tax credit landing afte…`},siteplan:{title:`Backyard ADU — does it clear the setbacks?`,icon:`layers`,iconColor:`var(--presence)`,boundary:[[0,0],[60,0],[62,120],[0,118]],structureFootprint:[[10,10],[40,10],[40,50],[10,50]],setbackLines:[{offset:20,label:`Front yard · 20 ft`},{offset:5,label:`Side yard · 5 ft`},{offset:15,label:`Rear yard · 15 ft`}],easements:[{label:`Utility easement · rear 13 ft`,path:[[0,105],[60,105],[60,118],[0,118]]}],footer:`The ADU footprint clears the side and rear setbacks but overlaps the utility easement — s…`},zoningmap:{title:`Is the lot zoned for an ADU?`,icon:`globe`,iconColor:`var(--presence)`,markers:[{lat:30.2451,lng:-97.7511,name:`412 Sunset Ave`,detail:`Your lot`}],zones:[{category:`residential`,label:`SF-3 · single-family`,coords:[[30.2465,-97.7525],[30.2465,-97.7497],[30.2437,-97.7497],[30.2437,-97.7525]]},{category:`commercial`,label:`CS · commercial corridor`,coords:[[30.2465,-97.7497],[30.2465,-97.747],[30.2437,-97.747],[30.2437,-97.7497]]}],footer:`412 Sunset Ave sits in SF-3 residential — ADUs are allowed by-right up to 800 sq ft. The …`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={factsheet:{title:`Fact Sheet`,icon:`layers`,iconColor:`var(--presence)`,subject:`James Webb Space Telescope`,tagline:`The most powerful space telescope ever built, revealing the earliest galaxies.`,facts:[{label:`Launch date`,value:`December 25, 2021`,note:`Ariane 5 rocket from Kourou, French Guiana`},{label:`Location`,value:`L2 Lagrange point, 1.5M km from Earth`},{label:`Mirror size`,value:`6.5 meters (primary), 18 hexagonal segments`},{label:`Wavelength`,value:`Near to mid-infrared (0.6–28 μm)`},{label:`Cost`,value:`$10 billion USD (NASA/ESA/CSA)`}],body:`JWST peers through cosmic dust with infrared light, revealing star nurseries and distant …`,footer:`Source: NASA / ESA.`},newsdigest:{title:`Latest: Space Science`,icon:`globe`,iconColor:`var(--insight)`,topic:`James Webb Space Telescope`,asOf:`as of today`,items:[{headline:`Webb captures earliest galaxy merger ever recorded, 13.2 billion years ago`,source:`Nature Astronomy`,time:`2 days ago`,category:`Discovery`,summary:`Two proto-galaxies caught mid-collision just 600 million years after the Big Bang, challe…`},{headline:`JWST's infrared survey maps 100,000 new galaxies in 'deep field' mosaic`,source:`Space.com`,time:`1 week ago`,category:`Survey`,summary:`The COSMOS-Web survey released its largest image yet, a 0.6 sq-deg mosaic covering cosmic…`},{headline:`Exoplanet atmosphere detected with record precision using Webb spectroscopy`,source:`ESA`,time:`2 weeks ago`,category:`Exoplanets`}],footer:`Search-grounded results, click headlines for full articles.`},dictionary:{title:`Word of the Day`,icon:`layers`,iconColor:`var(--presence)`,word:`ephemeral`,phonetic:`/ɪˈfɛm.ər.əl/`,senses:[{pos:`adjective`,definition:`Lasting for a very short time; transitory.`,example:`The ephemeral beauty of cherry blossoms makes them all the more precious.`,synonyms:[`fleeting`,`transient`,`momentary`,`brief`,`short-lived`]},{pos:`noun (rare)`,definition:`Something with a very short lifespan, such as an insect that lives only one day.`}],etymology:`From Greek ephēmeros: epi- ("on") + hēmera ("day"). Originally referred to a fever lastin…`,footer:`From Greek: epi- (on) + hēmera (day), lasting just one day.`},translation:{title:`Translation`,icon:`globe`,iconColor:`var(--insight)`,fromLang:`English`,toLang:`Japanese`,text:`The stars are beautiful tonight.`,result:`今夜は星が綺麗ですね。`,pairs:[{original:`The stars`,translated:`星が (hoshi ga)`,note:`星 = star; が = subject marker`},{original:`are beautiful`,translated:`綺麗です (kirei desu)`,note:`きれい = beautiful; です = polite copula`},{original:`tonight`,translated:`今夜は (konya wa)`,note:`今夜 = tonight; は = topic marker`},{original:`(sentence-end)`,translated:`ね (ne)`,note:`Adds a gentle "isn't it?", inviting agreement`}],footer:`Romanization in parentheses to help with pronunciation.`},pronunciation:{title:`Pronunciation Guide`,icon:`layers`,iconColor:`var(--presence)`,word:`Worcestershire`,ipa:`/ˈwʊs.tər.ʃɪr/`,syllables:`Worces·ter·shire`,tips:[`Say 'WOOS-ter-sheer', drop the 'cester' and 'shire' is just 'sheer'.`,`The 'ester' in Worcester is silent, it's spelled one way, said another.`,`Common mistake: 'War-chest-er-shy-er', ignore the spelling entirely.`],footer:`One of English's most notorious spelling traps.`},gloss:{title:`Astronomy Glossary`,icon:`layers`,iconColor:`var(--insight)`,domain:`Astrophysics`,entries:[{term:`Redshift`,definition:`The increase in wavelength of electromagnetic radiation as a source moves away from the o…`},{term:`Lagrange point`,definition:`A position in space where a small object can orbit in a stable pattern relative to two la…`,see:`Halo orbit`},{term:`Infrared`,definition:`Light with wavelengths longer than visible light (700 nm–1 mm). JWST sees in near-to-mid …`,see:`Redshift`},{term:`Proto-galaxy`,definition:`An early, incompletely formed galaxy, a clump of gas and dark matter in the process of co…`},{term:`Spectroscopy`,definition:`Analysis of light broken into its component wavelengths to determine a star's or planet's…`}],footer:`Essential terms for reading Webb discovery papers.`},stacktrace:{title:`Error Explained`,icon:`alert`,iconColor:`var(--warning)`,errorType:`TypeError`,message:`Cannot read properties of undefined (reading 'map')`,frames:[{file:`src/components/StarList.tsx`,line:42,fn:`StarList`,context:`const items = data.results.map(r => r.name);`,isUser:!0},{file:`src/hooks/useStarData.ts`,line:18,fn:`useStarData`,context:`return { results: await fetch(...).then(r => r.json()) }`,isUser:!0},{file:`node_modules/react/cjs/react-dom.development.js`,line:4164,fn:`commitHookEffectListMount`}],cause:`The fetch resolved before the component re-rendered, and results was undefined on the fir…`,fix:"Add a loading guard: `if (!data?.results) return <Spinner />;` before the .map() call. Or…",footer:`Pattern: always guard array operations against undefined before mapping.`},syntaxbreakdown:{title:`Syntax Breakdown`,icon:`doc`,iconColor:`var(--insight)`,summary:`How TypeScript generic constraints work, one line at a time.`,lines:[{code:`function pick<T, K extends keyof T>(obj: T, keys: K[]): Pick<T, K> {`,explanation:`Generic function: T is any object type; K must be a key of T. Returns only the picked key…`,tokens:[{code:`function`,label:`keyword`,kind:`keyword`},{code:`<T, K extends keyof T>`,label:`generic constraints: K must be a key of T`,kind:`type`},{code:`Pick<T, K>`,label:`utility type: object with only the specified keys`,kind:`type`}]},{code:` return Object.fromEntries(keys.map(k => [k, obj[k]]));`,explanation:`Build a new object from just the requested keys using fromEntries + map.`,tokens:[{code:`Object.fromEntries`,label:`converts [key, value] pairs → object`,kind:`identifier`},{code:`keys.map(k => [k, obj[k]])`,label:`for each key, pair it with the value from obj`,kind:`value`}]},{code:`}`,explanation:`End of function.`}],footer:`The 'extends keyof T' constraint is what makes this type-safe, TypeScript rejects invalid…`}};export{e as E};
@@ -0,0 +1,4 @@
1
+ var e={codewalk:{title:`Algorithm Walkthrough`,icon:`doc`,iconColor:`var(--presence)`,algorithm:`Binary Search`,steps:[{step:1,title:`Set up the search window`,code:`let lo = 0, hi = arr.length - 1;`,lang:`typescript`,explanation:`Start with the full array, lo points to the first element, hi to the last.`},{step:2,title:`Pick the midpoint`,code:`const mid = lo + Math.floor((hi - lo) / 2);`,lang:`typescript`,explanation:"Calculate the middle index. The `lo + (hi - lo) / 2` form avoids integer overflow that `(…"},{step:3,title:`Compare and narrow`,code:`if (arr[mid] === target) return mid;
2
+ else if (arr[mid] < target) lo = mid + 1;
3
+ else hi = …`,lang:`typescript`,explanation:`If we found it, return. Otherwise, discard the half that cannot contain target. Each step…`},{step:4,title:`Repeat until found or empty`,code:`while (lo <= hi) { /* step 2 & 3 */ }
4
+ return -1; // not found`,lang:`typescript`,explanation:`Keep looping while the window has elements. If lo passes hi, the target is not in the arr…`}],footer:`Binary search: O(log n) time, O(1) space. Requires a sorted array.`},hearit:{title:`Hear It`,icon:`speaker`,iconColor:`var(--presence)`,items:[{label:`Worcestershire`,kind:`word`,value:`Worcestershire`,sub:`Say it: 'WOOS-ter-sheer'`},{label:`Concert A (A4)`,kind:`note`,value:`A4`,sub:`The 440 Hz tuning pitch`},{label:`Middle C (C4)`,kind:`note`,value:`C4`,sub:`A piano keyboard anchor`},{label:`A perfect fifth above`,kind:`note`,value:`E5`,sub:`The interval A4 to E5`},{label:`1 kHz reference tone`,kind:`tone`,value:1e3,sub:`A pure 1000 Hz sine`}],footer:`Tap a row to hear it. Words use your browser's voice; notes ring a soft tone.`},ipachart:{title:`English front vowels`,icon:`globe`,iconColor:`var(--presence)`,kind:`vowels`,highlight:[`i`,`ɪ`,`æ`],examples:[{symbol:`iː`,word:`beat`},{symbol:`ɪ`,word:`bit`},{symbol:`æ`,word:`bat`}],caption:`The vowel quadrilateral maps tongue position: front → back across the top, close → open d…`,footer:`Lengthening <b>ɪ</b> toward <b>iː</b> is the single biggest cue for “bit” → “beat”.`},scriptstroke:{title:`Writing 木 (tree)`,icon:`edit`,iconColor:`var(--presence)`,glyph:`木`,grid:`mi`,romanization:`mù`,meaning:`tree, wood`,strokes:[{order:1,path:`M18 38 H82`,hint:`Horizontal — left to right across the top.`},{order:2,path:`M50 20 V92`,hint:`Vertical — straight down through the centre.`},{order:3,path:`M50 56 L20 90`,hint:`Left-falling stroke — down and out to the lower left.`},{order:4,path:`M50 56 L82 90`,hint:`Right-falling stroke — down and out to the lower right.`}],caption:`Four strokes: the crossbar first, then the trunk, then the two roots splaying out — top-t…`,footer:`Master the four roots of 木 and the radicals 林 (woods) and 森 (forest) become repetition, n…`},paralleltext:{title:`One line, three hands`,icon:`layers`,iconColor:`var(--presence)`,caption:`Dante, Inferno I.1 — the opening tercet, original beside two canonical English renderings.`,columns:[{label:`Dante (1320)`,lang:`Italian`},{label:`Longfellow, 1867`,lang:`en`},{label:`Ciardi, 1954`,lang:`en`}],rows:[{cells:[`Nel mezzo del cammin di nostra vita`,`Midway upon the journey of our life`,`Midway in our life’s journey, I went astray`],note:`Ciardi pulls “I went astray” up from line 3 to keep the pentameter; Longfellow tracks the…`},{cells:[`mi ritrovai per una selva oscura,`,`I found myself within a forest dark,`,`from the straight road and woke to find myself`],note:`Both keep the dark wood, but Longfellow mirrors the line break while Ciardi enjambs acros…`,diverge:!0},{cells:[`ché la diritta via era smarrita.`,`For the straightforward pathway had been lost.`,`alone in a dark wood. How shall I say`],note:`“diritta via” — the straight way — is rendered literally by Longfellow; Ciardi defers it,…`,diverge:!0}],footer:`Read each row across: the same Italian line, weighed differently for <strong>meter</stron…`},comparematrix:{title:`Market vs mixed vs command economies`,icon:`table`,iconColor:`var(--presence)`,caption:`Three ways to organize an economy`,cols:[`Market`,`Mixed`,`Command`],rows:[{label:`Who owns production`,cells:[{value:`Private individuals`},{value:`Mostly private, some state`},{value:`The state`}]},{label:`Private property`,cells:[{kind:`yes`},{kind:`partial`},{kind:`no`}]},{label:`Prices set by`,cells:[{value:`Supply & demand`},{value:`Markets + regulation`},{value:`Central planners`}]},{label:`Degree of state control`,cells:[{kind:`rating`,value:1},{kind:`rating`,value:3},{kind:`rating`,value:5}]},{label:`A real example`,cells:[{value:`Hong Kong`,note:`historically`},{value:`Most countries today`},{value:`The Soviet economy`}]}],footer:`Real economies sit on a spectrum — the <strong>mixed</strong> column is where almost ever…`},toulmin:{title:`Toulmin Analysis`,icon:`proof`,iconColor:`var(--presence)`,claim:`Harry is a British citizen.`,grounds:`Harry was born in Bermuda.`,warrant:`A person born in Bermuda is generally a British citizen.`,backing:`On account of the British Nationality Acts and the statutes governing citizenship by birt…`,qualifier:`presumably`,rebuttal:`both his parents were foreign nationals, or he has since formally renounced his citizensh…`,footer:`The classic worked example from Toulmin’s <em>The Uses of Argument</em> (1958).`},etymtree:{word:`disaster`,roots:[{form:`*ster-`,lang:`Proto-Indo-European`,gloss:`star`},{form:`astrum`,lang:`Latin`,gloss:`star`},{form:`disastro`,lang:`Italian`,gloss:`ill-starred event`}],descendants:[{form:`disastrous`,lang:`English`,gloss:`causing disaster`},{form:`désastre`,lang:`French`,gloss:`catastrophe`}],note:`From the belief that calamities were caused by unfavourable star positions.`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={rollcall:{title:`Latest: how the vote went`,icon:`chart`,iconColor:`var(--presence)`,bill:`H.R. 4521, Infrastructure Modernization Act`,legislators:[{name:`A. Reyes`,party:`D`,vote:`yea`},{name:`B. Whitfield`,party:`R`,vote:`nay`},{name:`C. Okafor`,party:`D`,vote:`yea`},{name:`D. Larsen`,party:`R`,vote:`yea`},{name:`E. Marsh`,party:`D`,vote:`yea`}],footer:`Passed 5–3, with 1 present and 1 absent. Heads to the Senate next.`},termbase:{title:`UI String Consistency Check`,icon:`table`,iconColor:`var(--presence)`,terms:[{term:`Cancel`,translations:[{lang:`French`,text:`Annuler`,status:`preferred`},{lang:`German`,text:`Abbrechen`,status:`preferred`},{lang:`Spanish`,text:`Cancelar`,status:`preferred`},{lang:`Japanese`,text:`キャンセル`,status:`preferred`}]},{term:`Delete Account`,translations:[{lang:`French`,text:`Supprimer le compte`,status:`preferred`},{lang:`German`,text:`Konto löschen`,status:`preferred`},{lang:`Spanish`,text:`Eliminar cuenta`,status:`preferred`},{lang:`Japanese`,text:`アカウントを削除`,status:`preferred`}]},{term:`Save Changes`,translations:[{lang:`French`,text:`Enregistrer les modifications`,status:`preferred`},{lang:`German`,text:`Änderungen speichern`,status:`preferred`},{lang:`Spanish`,text:`Guardar cambios`,status:`preferred`},{lang:`Japanese`,text:`変更を保存`,status:`preferred`}]},{term:`Sign Out`,translations:[{lang:`French`,text:`Se déconnecter`,status:`preferred`},{lang:`French`,text:`Quitter la session`,status:`deprecated`},{lang:`German`,text:`Abmelden`,status:`preferred`},{lang:`Spanish`,text:`Cerrar sesión`,status:`preferred`},{lang:`Japanese`,text:`サインアウト`,status:`avoid`}]}],footer:`Rows flagged <b>avoid</b> or <b>deprecated</b> carry an older string still live in a few …`},historicalperson:{title:`Who Was`,icon:`doc`,iconColor:`var(--presence)`,name:`Ada Lovelace`,era:`Victorian era`,born:`December 10, 1815 — London, England`,died:`November 27, 1852 — Marylebone, London`,knownFor:`Writing the first algorithm intended for a machine to run`,facts:[{label:`Father`,value:`Lord Byron, the poet`},{label:`Collaborator`,value:`Charles Babbage`},{label:`Key work`,value:`"Notes on the Analytical Engine" (1843)`}],lifeEvents:[{year:`1815`,label:`Born to Lord Byron and Annabella Milbanke`},{year:`1833`,label:`Meets Charles Babbage at age 17`},{year:`1843`,label:`Publishes Note G, the Bernoulli-number algorithm`},{year:`1852`,label:`Dies at age 36`}],legacy:`Note G is widely regarded as the first algorithm written for a machine to execute, a cent…`,footer:`Sources: the Lovelace-Babbage correspondence, Somerville College archives.`},onthisday:{title:`On This Day`,icon:`clock`,iconColor:`var(--insight)`,date:`July 20`,events:[{year:1969,label:`Apollo 11's lunar module lands; Armstrong and Aldrin walk on the Moon.`,category:`Science`},{year:1976,label:`Viking 1 becomes the first spacecraft to land successfully on Mars.`,category:`Science`},{year:1944,label:`Claus von Stauffenberg's bomb fails to kill Hitler at the Wolf's Lair.`,category:`War`}],born:[{year:1919,name:`Edmund Hillary, first to summit Mount Everest`}],died:[{year:1937,name:`Guglielmo Marconi, inventor of radio`}],footer:`A date the space program keeps returning to, seven years apart.`},countrycard:{title:`Country Profile`,icon:`globe`,iconColor:`var(--presence)`,name:`Japan`,flag:`🇯🇵`,capital:`Tokyo`,population:`123.3 million`,area:`377,975 km²`,officialLanguages:[`Japanese`],currency:`Japanese yen (¥)`,facts:[{label:`Government`,value:`Unitary parliamentary constitutional monarchy`},{label:`Time zone`,value:`JST, UTC+9`}],footer:`Source: national statistics bureau, latest census estimate.`},worldgrid:{title:`Neighbors at a Glance`,icon:`globe`,iconColor:`var(--insight)`,countries:[{flag:`🇰🇷`,name:`South Korea`,capital:`Seoul`,currency:`Won`,language:`Korean`},{flag:`🇨🇳`,name:`China`,capital:`Beijing`,currency:`Renminbi`,language:`Mandarin`},{flag:`🇻🇳`,name:`Vietnam`,capital:`Hanoi`,currency:`Đồng`,language:`Vietnamese`},{flag:`🇹🇭`,name:`Thailand`,capital:`Bangkok`,currency:`Baht`,language:`Thai`},{flag:`🇵🇭`,name:`Philippines`,capital:`Manila`,currency:`Peso`,language:`Filipino`}],footer:`A compact spread — tap countrycard above for the full profile on any one.`},warconflict:{title:`Conflict Overview`,icon:`shield`,iconColor:`var(--danger)`,dates:`1861–1865`,sides:[{name:`Union`,leaders:[`Abraham Lincoln`,`Ulysses S. Grant`],color:`var(--presence)`},{name:`Confederacy`,leaders:[`Jefferson Davis`,`Robert E. Lee`],color:`var(--danger)`}],keyBattles:[{label:`Fort Sumter`,at:`April 1861, South Carolina`},{label:`Antietam`,at:`September 1862, Maryland`},{label:`Gettysburg`,at:`July 1863, Pennsylvania`},{label:`Appomattox Court House`,at:`April 1865, Virginia`}],casualties:`An estimated 620,000–750,000 dead, the deadliest war in U.S. history.`,outcome:`Union victory. The Confederacy was dissolved, slavery was abolished nationwide by the 13t…`,footer:`Source: National Park Service, American Battlefield Trust.`},distinctioncard:{title:`Affect vs. effect`,icon:`proof`,iconColor:`var(--presence)`,terms:[{term:`affect`,tag:`verb`,gist:`To influence or change something.`,example:`The drought affected the harvest.`,color:`var(--presence)`},{term:`effect`,tag:`noun`,gist:`The result that influence produces.`,example:`The drought had a lasting effect on the harvest.`,color:`var(--insight)`},{term:`impact`,tag:`verb or noun`,gist:`Grammatical as both, but it reads as jargon — reach for affect or effect first.`,example:`The drought impacted the harvest.`,color:`var(--warning)`}],discriminator:`Swap the word for "influence". If the sentence still reads, you want affect; if "result" …`,discriminatorLabel:`The swap test`,commonMistake:`Writing "the affects of the drought" — anything you can put "the" in front of is a noun, …`,footer:`Each word has a rarer second life: <b>affect</b> is a noun in psychology (observable emot…`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={chart:{title:`Spending vs. your typical month`,unit:`$`,labels:[`Dec`,`Jan`,`Feb`,`Mar`,`Apr`],series:[{name:`This period`,color:`var(--presence)`,data:[4200,4500,4300,4800,5200]},{name:`Your typical month`,color:`var(--text-muted)`,data:[4400,4350,4400,4500,4650],area:!1}],footer:`Up 18% over three months, May travel was the spike, not a new habit.`},stack:{title:`Where it went · May`,total:`$6,480`,segments:[{label:`Groceries`,value:1840,display:`$1,840`,color:`var(--presence)`},{label:`Travel`,value:1460,display:`$1,460`,color:`var(--warning)`},{label:`Dining`,value:1120,display:`$1,120`,color:`var(--presence-soft)`},{label:`Bills & utilities`,value:980,display:`$980`,color:`var(--text-muted)`},{label:`Other`,value:866,display:`$866`,color:`var(--presence-deep)`}],footer:`Travel was the one-off, strip it and you're flat month to month.`},messagescriptset:{title:`What to say to cancel the three you forgot`,intro:`Each one has its own quirks, so the wording differs. Copy the line, send it, and keep the…`,scripts:[{target:`Streaming bundle (auto-renews Jul 2)`,channel:`in-app`,message:`Please cancel my subscription effective at the end of the current billing period. I do no…`,rebuttal:`If they offer a discount to stay: "Thanks, but I’d still like to cancel today and reconsi…`},{target:`Gym membership`,channel:`email`,message:`I’d like to cancel my membership. Please tell me the exact notice period and the final ch…`,rebuttal:`If they cite a long notice window: "Please send me the clause that requires it, and start…`},{target:`Cloud storage (annual plan)`,channel:`phone`,message:`I’m calling to cancel my plan and turn off auto-renewal. Since I just renewed, am I withi…`,rebuttal:`If they say no refund: "Can you note my account that I asked to cancel today, in case the…`}],footer:`Cancelling all three frees up about <b>$41/month</b> toward your December goal.`},eligibilitycheck:{title:`Do you qualify for the first-time buyer down-payment grant`,icon:`proof`,overall:`depends`,requirements:[{rule:`First-time buyer (no owned home in the last 3 years)`,status:`pass`,detail:`You said you have rented for the past 6 years — clears the rule.`},{rule:`Household income under $96,000`,status:`pass`,detail:`You stated $78k combined, comfortably under the cap.`},{rule:`Complete an approved homebuyer education course`,status:`needs-info`,detail:`You have not mentioned a course, and it is required before closing.`,fix:`Finish a HUD-approved class (free, ~8 hours online) and keep the certificate.`},{rule:`Minimum credit score of 640`,status:`fail`,detail:`You mentioned a score around 615, below the 640 floor.`,fix:`Raise it ~25 points — clearing a balance or two often does it within a cycle.`}],caveat:`This weighs the published rules against what you told me — confirm the exact thresholds w…`},bridge:{title:`Why net pay changed this month`,icon:`chart`,iconColor:`var(--presence)`,prefix:`$`,start:4200,end:4615,steps:[{label:`Quarterly bonus`,delta:900},{label:`Overtime hours`,delta:180},{label:`Higher tax bracket`,delta:-410},{label:`New 401(k) bump`,delta:-255}],footer:`The bonus did the lifting; a stiffer tax bracket and a bigger retirement contribution gav…`},supplydemand:{title:`Coffee market equilibrium`,icon:`chart`,iconColor:`var(--presence)`,pricePrefix:`$`,priceLabel:`Price ($/lb)`,quantityLabel:`Quantity (k lbs)`,supply:{intercept:2,slope:.5},demand:{intercept:14,slope:-.7},region:`consumer`,footer:`Where the curves cross, the market clears: <b>P* = $7/lb</b> at <b>Q* = 10k lbs</b>. The …`},payoffdiagram:{title:`Bull call spread on the underlying`,icon:`chart`,iconColor:`var(--presence)`,pricePrefix:`$`,spot:101,legs:[{type:`call`,position:`long`,strike:100,premium:6},{type:`call`,position:`short`,strike:110,premium:2.5}],footer:`Buy the $100 call and sell the $110 call for a net debit of <b>$3.50</b>. That caps both …`},yieldcurve:{title:`Treasury yield curve`,icon:`chart`,iconColor:`var(--presence)`,curve:[{tenor:`1M`,rate:5.4},{tenor:`3M`,rate:5.3},{tenor:`6M`,rate:5.1},{tenor:`1Y`,rate:4.7},{tenor:`2Y`,rate:4.3}],compareCurve:[{tenor:`1M`,rate:3.2},{tenor:`3M`,rate:3.3},{tenor:`6M`,rate:3.5},{tenor:`1Y`,rate:3.7},{tenor:`2Y`,rate:3.8}],footer:`The short end pays more than the long end out to 5 years — the curve has been inverted si…`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={efficientfrontier:{title:`Your portfolio vs. the efficient frontier`,icon:`chart`,iconColor:`var(--presence)`,assets:[{label:`Cash`,risk:1,return:4},{label:`Bonds`,risk:6,return:5},{label:`Your portfolio`,risk:11,return:8.5,highlight:!0},{label:`US stocks`,risk:16,return:10},{label:`Intl stocks`,risk:19,return:9}],frontier:[{risk:1,return:4},{risk:4,return:5.2},{risk:8,return:7},{risk:13,return:9.2},{risk:19,return:10.8}],footer:`Your portfolio sits just below the frontier at its risk level — trimming a couple points …`},bondladder:{title:`CD ladder`,icon:`chart`,iconColor:`var(--presence)`,rungs:[{label:`1-year CD`,maturity:`2027-07-01`,yieldPct:4.4,faceValue:5e3},{label:`2-year CD`,maturity:`2028-07-01`,yieldPct:4.1,faceValue:5e3},{label:`3-year CD`,maturity:`2029-07-01`,yieldPct:4.6,faceValue:5e3},{label:`4-year CD`,maturity:`2030-07-01`,yieldPct:4.3,faceValue:5e3},{label:`5-year CD`,maturity:`2031-07-01`,yieldPct:4.5,faceValue:5e3}],footer:`One CD matures every year — the 3-year rung pays the most, but each one frees up $5,000 t…`},collectiontracker:{title:`Your vinyl collection, valued`,icon:`layers`,iconColor:`var(--presence)`,items:[{name:`Kind of Blue — Miles Davis, 1959 original`,acquiredDate:`Mar 2022`,value:340,condition:`good`,notes:`Light surface noise on side A, otherwise clean.`},{name:`Rumours — Fleetwood Mac`,acquiredDate:`Aug 2023`,value:45,condition:`mint`},{name:`The Dark Side of the Moon — first UK pressing`,acquiredDate:`Jan 2024`,value:220,condition:`mint`,notes:`Solid blue triangle label, no barcode.`},{name:`Blue Train — John Coltrane`,acquiredDate:`Nov 2021`,value:95,condition:`fair`,notes:`Warped edge, plays fine.`},{name:`Songs in the Key of Life — Stevie Wonder`,acquiredDate:`Jun 2024`,value:60,condition:`good`}],footer:`Up about $180 from last appraisal, mostly the Dark Side of the Moon pressing — that one a…`},cma:{title:`What your house would list for, today`,icon:`chart`,iconColor:`var(--presence)`,subject:{address:`412 Larkspur Ave`,beds:3,baths:2,sqft:1620,yearBuilt:1998},comps:[{address:`398 Larkspur Ave`,soldPrice:712e3,soldDate:`Apr 2026`,sqft:1580,distance:.1,adjustments:[{label:`40 sqft smaller`,amount:8e3},{label:`No garage`,amount:12e3}]},{address:`55 Fernwood Ct`,soldPrice:745e3,soldDate:`Mar 2026`,sqft:1690,distance:.4,adjustments:[{label:`70 sqft larger`,amount:-9e3},{label:`Updated kitchen`,amount:-15e3}]},{address:`210 Larkspur Ave`,soldPrice:698e3,soldDate:`Jan 2026`,sqft:1600,distance:.2,adjustments:[{label:`Original bathrooms`,amount:1e4}]}],suggestedListPrice:{low:715e3,high:735e3,point:725e3},footer:`All three comps are within 0.4 miles and sold in the last five months, a tight, reliable …`},claimagecompare:{title:`When to claim Social Security`,icon:`chart`,iconColor:`var(--presence)`,ages:[{age:62,monthlyBenefit:1540},{age:67,monthlyBenefit:2200},{age:70,monthlyBenefit:2728}],breakeven:{age:78,note:`waiting to 70 pays more in total once you live past this age`},footer:`Claiming at 62 gets money sooner but at a lower rate — the crossover only pays off past a…`},scatter:{title:`Late screens vs. when you fell asleep`,iconColor:`var(--warning)`,xLabel:`Phone off (pm)`,yLabel:`Asleep (pm)`,xDomain:[10,12.2],yDomain:[10.4,12.8],points:[{x:10.5,y:11},{x:10.4,y:10.9},{x:10.7,y:11.2},{x:11,y:11.6},{x:11.3,y:12.1,hot:!0}],trend:[[10.2,10.7],[12,12.6]],footer:`Each hour later on the phone tracks with ~40 more minutes to fall asleep.`},companionnote:{reflection:`Four weeks of short nights is a lot to carry — no wonder the days feel heavier.`,follow:`The numbers aren't a verdict on you; they're just showing what your body's been asking fo…`,chip:`one small change is enough`},breathpacer:{title:`A moment before bed`,pattern:`478`,note:`A slow 4-7-8 breath nudges your body toward rest — try a few rounds as the lights go down.`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={sleepcycle:{title:`A typical night · hypnogram`,iconColor:`var(--presence)`,bedtime:`11:00 PM`,wake:`7:00 AM`,cycles:5,stages:[{stage:`awake`,fromMin:0,toMin:8},{stage:`light`,fromMin:8,toMin:22},{stage:`deep`,fromMin:22,toMin:62},{stage:`light`,fromMin:62,toMin:80},{stage:`rem`,fromMin:80,toMin:90}],caption:`Deep sleep dominates the first two cycles; REM bouts lengthen toward morning — 10 min ear…`},heat:{title:`Training calendar · 6 weeks`,icon:`chart`,levelColor:`var(--presence)`,cols:[`Mon`,`Tue`,`Wed`,`Thu`,`Fri`],rows:[{label:`Wk 1`,cells:[1,0,2,0,1]},{label:`Wk 2`,cells:[1,0,2,0,1]},{label:`Wk 3`,cells:[1,0,3,0,1]},{label:`Wk 4`,cells:[2,0,3,0,1]},{label:`Wk 5`,cells:[2,0,3,0,2]}],legend:[`Rest`,`Hard`],footer:`Easy days, one hard session a week, long run on Sundays, the shape that sticks.`},bodymap:{title:`Primary muscles worked, marathon training`,icon:`sparkle`,iconColor:`var(--presence)`,regions:[{id:`leftLeg`,label:`Quads`,color:`var(--presence)`,note:`primary drive`},{id:`rightLeg`,label:`Quads`,color:`var(--presence)`,note:`primary drive`},{id:`leftFoot`,label:`Calf`,color:`var(--insight)`,note:`push-off`},{id:`rightFoot`,label:`Calf`,color:`var(--insight)`,note:`push-off`},{id:`chest`,label:`Core`,color:`var(--warning)`,note:`stabiliser`}],footer:`Quads do the heavy lifting; calves absorb impact on every stride.`},calheat:{title:`Active days · last 13 weeks`,icon:`clock`,iconColor:`var(--presence)`,color:`var(--insight)`,weekdays:[``,`Mon`,``,`Wed`,``],days:[{level:4},{level:0},{level:2},{level:1},{level:2}],legend:[`Rest`,`Hard`],footer:`Thirteen weeks at a glance, the streak holds, with a deliberate taper in weeks 7–8.`},workoutplan:{title:`Half-Marathon Build Plan`,goal:`Sub-2:00 half marathon`,weeks:8,sessions:[{day:`Tuesday`,focus:`Tempo Run`,exercises:[{name:`Warm-up jog`,sets:1,reps:`10 min easy`},{name:`Tempo pace`,sets:3,reps:`2 km`,rest:`90 sec`},{name:`Cool-down`,sets:1,reps:`5 min easy`}]},{day:`Saturday`,focus:`Long Run`,exercises:[{name:`Easy long run`,sets:1,reps:`14–18 km`,rest:`none`}]}]},macrobreakdown:{title:`Race-day fuel target`,calories:2800,protein:140,carbs:360,fat:70,fiber:30,items:[{label:`Morning oats + banana`,calories:520,protein:18,carbs:92,fat:8},{label:`Mid-run gels (×3)`,calories:300,protein:0,carbs:75,fat:0},{label:`Post-run chicken + rice`,calories:680,protein:58,carbs:70,fat:14}]},runninglog:{title:`Your last six runs`,icon:`chart`,unit:`mi`,entries:[{date:`May 27`,distance:3.1,pace:`9:30`,route:`Riverside loop`},{date:`May 29`,distance:4,pace:`9:22`,route:`Park hill repeats`,elevationGainM:62},{date:`Jun 1`,distance:5,pace:`9:08`,route:`Riverside loop`},{date:`Jun 4`,distance:4.5,pace:`9:01`,route:`Downtown out-and-back`},{date:`Jun 6`,distance:6.2,pace:`8:52`,route:`Ridge trail`,elevationGainM:118}],footer:`Distance climbed steadily while pace kept dropping — no single spike did this.`},zoneladder:{title:`Your five heart-rate zones`,icon:`spark`,iconColor:`var(--presence)`,metric:`HR`,current:1,zones:[{name:`Zone 1 · Recovery`,range:`98–117 bpm`,effort:`Very easy — you could chat all day`,purpose:`Warm-up, cool-down, and active recovery between hard days`},{name:`Zone 2 · Endurance`,range:`118–137 bpm`,effort:`Comfortable; full sentences with light breathing`,purpose:`Builds your aerobic base and fat metabolism — where most miles live`},{name:`Zone 3 · Tempo`,range:`138–156 bpm`,effort:`Moderately hard; short phrases only`,purpose:`Sustained-effort fitness and stamina for race pace`},{name:`Zone 4 · Threshold`,range:`157–175 bpm`,effort:`Hard; a word or two at a time`,purpose:`Raises the pace you can hold before lactate builds up`},{name:`Zone 5 · VO₂ max`,range:`176–195 bpm`,effort:`All-out; no talking, short intervals only`,purpose:`Peak aerobic power — kept to brief, repeated bursts`}],caption:`Zones are from an estimated max of ~195 bpm; a field or lab test gives truer numbers.`}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={streakgrid:{title:`Run streak`,icon:`spark`,iconColor:`var(--warning)`,habit:`Run`,current:12,best:21,days:[{date:`May 21`,done:!0},{date:`May 22`,done:!0},{date:`May 23`,done:!1},{date:`May 24`,done:!0},{date:`May 25`,done:!0}],caption:`Twelve days clean — don’t break the chain`,footer:`Twelve straight, nine shy of your all-time best of 21.`},copingmenu:{title:`When Wednesday feels like too much`,icon:`spark`,intro:`Pick whatever feels possible — you don’t have to do all of them.`,options:[{label:`Take three slow breaths before the next call`,detail:`Resets your shoulders so the back-to-back stretch starts a little calmer.`,effort:`low`,time:`1 min`,icon:`wind`},{label:`Decline or shorten the one meeting that could move`,detail:`Even reclaiming 20 minutes makes the crunch breathable.`,effort:`medium`,time:`5 min`,icon:`clock`},{label:`Step outside for a short walk at lunch`,detail:`A change of light and air between blocks, no agenda.`,effort:`medium`,time:`10 min`,icon:`walk`},{label:`Block the first hour tomorrow as protected focus`,detail:`Gives the rest of the week one place that stays yours.`,effort:`high`,time:`2 min`,icon:`shield`}],footer:`None of these have to be perfect — one is plenty for a heavy day.`},thoughtrecord:{title:`Working through Wednesday`,icon:`spark`,situation:`Looking at Wednesday’s back-to-back schedule Tuesday night.`,automaticThought:`If I drop one thing on Wednesday, everyone will see I can’t actually handle this job.`,emotion:`Anxious`,emotionIntensity:80,evidenceFor:[`A meeting conflict slipped through last month and I had to reschedule a client call.`,`The calendar really is packed, with no buffer between meetings.`],evidenceAgainst:[`I’ve gotten through weeks this dense before without dropping anything major.`,`My manager called out the prep work at last sprint’s review.`,`Back-to-back isn’t overlapping — nothing on Wednesday needs split-second multitasking.`],alternativeThought:`Wednesday is genuinely packed, but packed isn’t the same as unmanageable — a few minutes …`,outcomeEmotion:`Anxious`,outcomeIntensity:35,footer:`The intensity dropped once the evidence caught up with the fear — the schedule didn’t cha…`},habittracker:{title:`Your habits this week`,icon:`check`,iconColor:`var(--presence)`,days:[`Mon`,`Tue`,`Wed`,`Thu`,`Fri`],habits:[{name:`Morning walk`,done:[!0,!0,!0,!1,!0]},{name:`Read 20 min`,done:[!0,!0,!0,!0,!0]},{name:`No phone after 10`,done:[!1,!0,!1,!0,!1]},{name:`Drink 2L water`,done:[!0,!0,!0,!0,!0]}],caption:`Strong week — phone curfew is the one to nudge`,footer:`The water habit hit 7 of 7; the phone curfew at 3 of 7 is dragging the weekly average.`},readinglist:{title:`This week’s reading`,icon:`doc`,iconColor:`var(--presence)`,books:[{title:`Klara and the Sun`,author:`Kazuo Ishiguro`,status:`reading`,rating:4.5,discussionQuestions:[`Is Klara’s devotion to Josie a form of love, or something else entirely?`,`What does the book suggest about what makes a person irreplaceable?`]},{title:`The Overstory`,author:`Richard Powers`,status:`queued`},{title:`Educated`,author:`Tara Westover`,status:`done`,rating:5,discussionQuestions:[`How did you see the definition of "family" shift over the course of the memoir?`]}],footer:`Book club meets Thursday — bring a Klara question if you finish it in time.`},maproute:{title:`Old Town to the Castle — a walking morning`,icon:`walk`,iconColor:`var(--presence)`,waypoints:[{lat:50.0875,lng:14.4213,label:`Old Town Square`,leg:`Start · coffee under the Astronomical Clock`},{lat:50.0865,lng:14.4137,label:`Charles Bridge`,leg:`0.6 km · 9 min · cross before the crowds`},{lat:50.0903,lng:14.4006,label:`Prague Castle gate`,leg:`1.4 km · 24 min · the uphill stretch`},{lat:50.0909,lng:14.4009,label:`St. Vitus Cathedral`,leg:`0.2 km · 4 min · finish inside the courtyard`}],distanceKm:2.2,elevationGainM:96,caption:`A flat riverside start, then one steady climb to the castle district.`},packlist:{title:`Packing checklist`,icon:`check`,context:`3 days · mild, light rain`,groups:[{name:`Clothes`,items:[{label:`T-shirts`,count:3,packed:!0},{label:`Jeans`,count:1,packed:!0},{label:`Light rain jacket`,count:1,packed:!1},{label:`Socks`,count:4,packed:!0},{label:`Underwear`,count:4,packed:!1}]},{name:`Toiletries`,items:[{label:`Toothbrush`,count:1,packed:!0},{label:`Travel toothpaste`,count:1,packed:!1},{label:`Deodorant`,count:1,packed:!0}]},{name:`Tech`,items:[{label:`Phone charger`,count:1,packed:!0},{label:`Power bank`,count:1,packed:!1},{label:`EU travel adapter`,count:1,packed:!1}]}]},weathernow:{title:`Lisbon right now`,icon:`sun`,iconColor:`var(--warning)`,location:`Lisbon, Portugal`,tempF:70,feelsLikeF:69,condition:`Partly cloudy`,hi:74,lo:61,asOf:`2:14 PM local time`,hourly:[{time:`Now`,tempF:70,icon:`sun`,precipPct:0},{time:`3 PM`,tempF:71,icon:`sun`,precipPct:0},{time:`4 PM`,tempF:70,icon:`cloud`,precipPct:10},{time:`5 PM`,tempF:68,icon:`cloud`,precipPct:20},{time:`6 PM`,tempF:65,icon:`rain`,precipPct:40}],tiles:[{label:`UV Index`,value:`6 of 10`,icon:`sun`},{label:`Wind`,value:`9 mph W`,icon:`wind`},{label:`Humidity`,value:`58%`,icon:`cloud`}]}};export{e as E};
@@ -0,0 +1 @@
1
+ var e={pictogramchart:{title:`Lisbon in June, typical days`,icon:`sun`,iconColor:`var(--warning)`,unitValue:1,categories:[{label:`Sunny`,count:18,icon:`sun`,color:`var(--warning)`},{label:`Partly cloudy`,count:8,icon:`cloud`,color:`var(--presence-soft)`},{label:`Rainy`,count:4,icon:`rain`,color:`var(--presence)`}],footer:`Pack for sun with a light layer for the evenings, rain gear is a backup, not the plan.`},menucard:{title:`Dinner reservation, Saturday night`,icon:`sparkle`,iconColor:`var(--presence)`,venue:`Taberna Riverside`,subtitle:`Tasting menu · Baixa waterfront`,sections:[{name:`Starters`,items:[{name:`Bacalhau croquettes`,price:`€8`,desc:`Salt cod, potato, parsley aioli`},{name:`Grilled octopus`,price:`€14`,tags:[`gluten-free`]}]},{name:`Mains`,items:[{name:`Cataplana de marisco`,price:`€26`,desc:`Shellfish stew, tomato, coriander`},{name:`Wild mushroom risotto`,price:`€19`,tags:[`vegetarian`]}]},{name:`Dessert`,items:[{name:`Pastel de nata, two ways`,price:`€6`}]}],footer:`Reservation for two at 8:30 PM — mention the window table when you arrive.`},quadrant:{title:`Decision factors by impact vs. effort`,icon:`chart`,iconColor:`var(--presence)`,xLabel:`Effort →`,yLabel:`Impact →`,topRight:`High impact, high effort`,topLeft:`High impact, low effort`,bottomLeft:`Low impact, low effort`,bottomRight:`Low impact, high effort`,items:[{label:`Commute time`,quadrant:`topLeft`,note:`9 hrs/mo saved`},{label:`Morning light`,quadrant:`topLeft`,note:`south-facing`},{label:`Nightlife access`,quadrant:`topRight`,note:`Mission only`},{label:`Rent delta`,quadrant:`topRight`,note:`+$300/mo`},{label:`Street noise`,quadrant:`bottomLeft`,note:`minor factor`}],footer:`Commute and light are quick wins, low effort, high daily impact.`},venn:{title:`Unique perks vs. shared`,icon:`layers`,iconColor:`var(--presence)`,sets:[{label:`Mission`,value:8,color:`var(--warning)`},{label:`Noe Valley`,value:6,color:`var(--insight)`}],overlaps:[{sets:[0,1],value:5}],footer:`Both cover the essentials (the 5 in the middle); the real choice is nightlife-at-your-doo…`},recipecard:{title:`Creamy Garlic Pasta`,servings:`2`,prepTime:`5 min`,cookTime:`20 min`,difficulty:`easy`,ingredients:[{qty:`200g`,name:`spaghetti`},{qty:`4`,name:`garlic cloves, sliced`},{qty:`150ml`,name:`heavy cream`},{qty:`40g`,name:`parmesan, grated`},{qty:`handful`,name:`fresh parsley`}],steps:[`Cook spaghetti in salted water until al dente. Reserve 100ml pasta water.`,`Gently fry garlic in olive oil until golden, about 2 min. Lower heat.`,`Add cream and half the parmesan. Simmer 3 min until slightly thickened.`,`Toss pasta in the sauce with pasta water until glossy. Finish with parsley.`],tips:[`Off the heat for the final toss, keeps the sauce silky, not grainy.`]},cocktailcard:{title:`Pairs with: a French 75`,icon:`sparkle`,iconColor:`var(--warning)`,rating:4.5,pours:[{qty:`1 oz`,item:`Gin`},{qty:`0.5 oz`,item:`Fresh lemon juice`},{qty:`0.5 oz`,item:`Simple syrup`},{qty:`top with`,item:`Chilled champagne`}],notes:{aroma:`Bright citrus with a floral gin lift.`,taste:`Crisp and tart, the bubbles cut the cream sauce nicely.`,finish:`Clean and short, doesn’t fight the garlic.`}},ingredientmatrix:{title:`What else you can make`,recipes:[`Pasta`,`Omelette`,`Fried rice`],ingredients:[`Eggs`,`Garlic`,`Cream`,`Parsley`,`Rice`],matrix:[[!1,!0,!1],[!0,!1,!0],[!0,!1,!1],[!0,!1,!1],[!1,!1,!0]]},plangrid:{title:`If you want to plan the week ahead`,icon:`clock`,iconColor:`var(--insight)`,caption:`A loose dinner plan from what you tend to keep stocked — swap any night.`,columns:[`Mon`,`Tue`,`Wed`,`Thu`,`Fri`],rows:[{slot:`Dinner`,cells:[{col:`Mon`,label:`Garlic pasta`,sub:`20 min`,accent:`var(--presence)`},{col:`Tue`,label:`Veggie omelette`,sub:`12 min`},{col:`Wed`,label:`Fried rice`,sub:`18 min`},{col:`Thu`,label:`Sheet-pan chicken`,sub:`35 min`},{col:`Fri`,label:`Pizza night`,sub:`takeout`,accent:`var(--warning)`}]},{slot:`Prep`,cells:[{col:`Wed`,label:`Defrost chicken`,sub:`overnight`},{col:`Sun`,label:`Chop veg, cook rice`,sub:`for the week`}]}],summary:[`~650`,`~500`,`~620`,`~700`,`~800`],footer:`Mostly things you can make from staples; Friday and Sunday are the easy nights.`}};export{e as E};