@arbidocs/blocks 0.5.121 → 0.5.122

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 (185) hide show
  1. package/dist/{ClippingMediaViewer-B6WG7Q64.cjs → ClippingMediaViewer-IEIBT74X.cjs} +8 -8
  2. package/dist/{ClippingMediaViewer-B6WG7Q64.cjs.map → ClippingMediaViewer-IEIBT74X.cjs.map} +1 -1
  3. package/dist/{ClippingPdfViewer-6GCVTV3V.cjs → ClippingPdfViewer-OGYLMVCE.cjs} +5 -5
  4. package/dist/{ClippingPdfViewer-6GCVTV3V.cjs.map → ClippingPdfViewer-OGYLMVCE.cjs.map} +1 -1
  5. package/dist/{ConnectedCallDock-DC5V5OUJ.cjs → ConnectedCallDock-XJOYVVAH.cjs} +21 -21
  6. package/dist/{ConnectedCallDock-DC5V5OUJ.cjs.map → ConnectedCallDock-XJOYVVAH.cjs.map} +1 -1
  7. package/dist/{ConnectedCallRoom-FQLXWTFB.cjs → ConnectedCallRoom-CUDYAPQK.cjs} +14 -14
  8. package/dist/{ConnectedCallRoom-FQLXWTFB.cjs.map → ConnectedCallRoom-CUDYAPQK.cjs.map} +1 -1
  9. package/dist/{ConnectedNativeDocxComparison-4Q5S7VLD.cjs → ConnectedNativeDocxComparison-QKHCYD6W.cjs} +16 -16
  10. package/dist/{ConnectedNativeDocxComparison-4Q5S7VLD.cjs.map → ConnectedNativeDocxComparison-QKHCYD6W.cjs.map} +1 -1
  11. package/dist/ConnectedPresentation-AU25OW25.cjs +321 -0
  12. package/dist/ConnectedPresentation-AU25OW25.cjs.map +1 -0
  13. package/dist/{ConnectedProductionSetDialog-4EAY6KAZ.cjs → ConnectedProductionSetDialog-LHB4VQWC.cjs} +3 -3
  14. package/dist/{ConnectedProductionSetDialog-4EAY6KAZ.cjs.map → ConnectedProductionSetDialog-LHB4VQWC.cjs.map} +1 -1
  15. package/dist/{ConnectedSlidesTab-7QDE2CZD.cjs → ConnectedSlidesTab-I75LKKN7.cjs} +40 -38
  16. package/dist/ConnectedSlidesTab-I75LKKN7.cjs.map +1 -0
  17. package/dist/{ConnectedStreamedWordArtifact-FFOQJBOI.cjs → ConnectedStreamedWordArtifact-AG62232A.cjs} +16 -16
  18. package/dist/{ConnectedStreamedWordArtifact-FFOQJBOI.cjs.map → ConnectedStreamedWordArtifact-AG62232A.cjs.map} +1 -1
  19. package/dist/{DocumentReviewCard-SNWVEZ7S.cjs → DocumentReviewCard-M53XFLI2.cjs} +15 -15
  20. package/dist/{DocumentReviewCard-SNWVEZ7S.cjs.map → DocumentReviewCard-M53XFLI2.cjs.map} +1 -1
  21. package/dist/{FilesViewerDialog-IZI63FOV.cjs → FilesViewerDialog-4352KIOG.cjs} +50 -49
  22. package/dist/FilesViewerDialog-4352KIOG.cjs.map +1 -0
  23. package/dist/{WorkspaceTableView-TEIRB6VJ.cjs → WorkspaceTableView-3XYAV4BV.cjs} +8 -8
  24. package/dist/{WorkspaceTableView-TEIRB6VJ.cjs.map → WorkspaceTableView-3XYAV4BV.cjs.map} +1 -1
  25. package/dist/agents/index.cjs +297 -297
  26. package/dist/{ai-KBYNRNZ6.cjs → ai-IEIR7SC2.cjs} +25 -25
  27. package/dist/ai-IEIR7SC2.cjs.map +1 -0
  28. package/dist/calls/index.cjs +121 -121
  29. package/dist/chat/index.cjs +1 -1
  30. package/dist/{chunk-NLOETJCB.cjs → chunk-2F57IO7S.cjs} +12 -12
  31. package/dist/{chunk-NLOETJCB.cjs.map → chunk-2F57IO7S.cjs.map} +1 -1
  32. package/dist/chunk-2RLA6QO2.cjs +174 -0
  33. package/dist/chunk-2RLA6QO2.cjs.map +1 -0
  34. package/dist/{chunk-Q6DQGGP4.cjs → chunk-325GVZE6.cjs} +3 -3
  35. package/dist/{chunk-Q6DQGGP4.cjs.map → chunk-325GVZE6.cjs.map} +1 -1
  36. package/dist/{chunk-XTR26TNE.cjs → chunk-4TTX6ZNS.cjs} +20 -4
  37. package/dist/chunk-4TTX6ZNS.cjs.map +1 -0
  38. package/dist/{chunk-BVAT4EVC.cjs → chunk-5QERK4PK.cjs} +35 -35
  39. package/dist/{chunk-BVAT4EVC.cjs.map → chunk-5QERK4PK.cjs.map} +1 -1
  40. package/dist/{chunk-GX2EBMJW.cjs → chunk-6OK7ESTL.cjs} +7 -6
  41. package/dist/chunk-6OK7ESTL.cjs.map +1 -0
  42. package/dist/{chunk-C2OICDMI.cjs → chunk-7557LDAN.cjs} +10 -10
  43. package/dist/{chunk-C2OICDMI.cjs.map → chunk-7557LDAN.cjs.map} +1 -1
  44. package/dist/{chunk-474GPLCM.cjs → chunk-7L4X6QN2.cjs} +6 -6
  45. package/dist/{chunk-474GPLCM.cjs.map → chunk-7L4X6QN2.cjs.map} +1 -1
  46. package/dist/{chunk-52KGMAO5.cjs → chunk-7NLO7ASW.cjs} +15 -15
  47. package/dist/{chunk-52KGMAO5.cjs.map → chunk-7NLO7ASW.cjs.map} +1 -1
  48. package/dist/{chunk-H5OLHP2U.cjs → chunk-7OPOPYV6.cjs} +3 -3
  49. package/dist/{chunk-H5OLHP2U.cjs.map → chunk-7OPOPYV6.cjs.map} +1 -1
  50. package/dist/{chunk-W6B3RYTX.cjs → chunk-7PN3YENO.cjs} +4 -4
  51. package/dist/{chunk-W6B3RYTX.cjs.map → chunk-7PN3YENO.cjs.map} +1 -1
  52. package/dist/{chunk-734NPQNR.cjs → chunk-ADDQKZ5I.cjs} +4 -4
  53. package/dist/{chunk-734NPQNR.cjs.map → chunk-ADDQKZ5I.cjs.map} +1 -1
  54. package/dist/{chunk-JQLWKNJO.cjs → chunk-ALK3PUUB.cjs} +4 -4
  55. package/dist/{chunk-JQLWKNJO.cjs.map → chunk-ALK3PUUB.cjs.map} +1 -1
  56. package/dist/{chunk-4VZZWYEC.cjs → chunk-BQ5RIWWT.cjs} +3 -3
  57. package/dist/{chunk-4VZZWYEC.cjs.map → chunk-BQ5RIWWT.cjs.map} +1 -1
  58. package/dist/{chunk-ENGL7P3I.cjs → chunk-CQQQIZU4.cjs} +27 -27
  59. package/dist/{chunk-ENGL7P3I.cjs.map → chunk-CQQQIZU4.cjs.map} +1 -1
  60. package/dist/{chunk-3SCNXNHI.cjs → chunk-E3L5DB5F.cjs} +5 -5
  61. package/dist/{chunk-3SCNXNHI.cjs.map → chunk-E3L5DB5F.cjs.map} +1 -1
  62. package/dist/{chunk-VJ5ZLRBD.cjs → chunk-GFUOCGY6.cjs} +8 -3
  63. package/dist/chunk-GFUOCGY6.cjs.map +1 -0
  64. package/dist/{chunk-RYVZDFVO.cjs → chunk-JJZOL5MG.cjs} +3 -3
  65. package/dist/{chunk-RYVZDFVO.cjs.map → chunk-JJZOL5MG.cjs.map} +1 -1
  66. package/dist/{chunk-QFXILJMJ.cjs → chunk-K4763GD5.cjs} +17 -174
  67. package/dist/chunk-K4763GD5.cjs.map +1 -0
  68. package/dist/{chunk-EHP6OH5D.cjs → chunk-KA3F6TIH.cjs} +11 -11
  69. package/dist/{chunk-EHP6OH5D.cjs.map → chunk-KA3F6TIH.cjs.map} +1 -1
  70. package/dist/{chunk-UUENH4BJ.cjs → chunk-KXIRVKCJ.cjs} +3 -3
  71. package/dist/{chunk-UUENH4BJ.cjs.map → chunk-KXIRVKCJ.cjs.map} +1 -1
  72. package/dist/{chunk-4RBQ44RY.cjs → chunk-MLA2BJ2Y.cjs} +28 -28
  73. package/dist/{chunk-4RBQ44RY.cjs.map → chunk-MLA2BJ2Y.cjs.map} +1 -1
  74. package/dist/{chunk-DR2AH7JL.cjs → chunk-NG2EE7HR.cjs} +48 -48
  75. package/dist/{chunk-DR2AH7JL.cjs.map → chunk-NG2EE7HR.cjs.map} +1 -1
  76. package/dist/{chunk-4NPCDS2X.cjs → chunk-NY3YUCOW.cjs} +3 -3
  77. package/dist/{chunk-4NPCDS2X.cjs.map → chunk-NY3YUCOW.cjs.map} +1 -1
  78. package/dist/{chunk-JZEYHDWJ.cjs → chunk-OHHKBURG.cjs} +76 -76
  79. package/dist/chunk-OHHKBURG.cjs.map +1 -0
  80. package/dist/{chunk-AY6EZSZB.cjs → chunk-QG2U2JGX.cjs} +4 -4
  81. package/dist/{chunk-AY6EZSZB.cjs.map → chunk-QG2U2JGX.cjs.map} +1 -1
  82. package/dist/{chunk-5534FYXP.cjs → chunk-SDRYSLOX.cjs} +4 -4
  83. package/dist/{chunk-5534FYXP.cjs.map → chunk-SDRYSLOX.cjs.map} +1 -1
  84. package/dist/{chunk-2W5E62EY.cjs → chunk-SGYSDABK.cjs} +6 -6
  85. package/dist/{chunk-2W5E62EY.cjs.map → chunk-SGYSDABK.cjs.map} +1 -1
  86. package/dist/{chunk-EATIFPKP.cjs → chunk-T73BHNQX.cjs} +4 -4
  87. package/dist/{chunk-EATIFPKP.cjs.map → chunk-T73BHNQX.cjs.map} +1 -1
  88. package/dist/{chunk-4IOYQLKG.cjs → chunk-TP5PGWIO.cjs} +3 -3
  89. package/dist/{chunk-4IOYQLKG.cjs.map → chunk-TP5PGWIO.cjs.map} +1 -1
  90. package/dist/{chunk-GKVE5JGB.cjs → chunk-UFT22LAB.cjs} +3 -3
  91. package/dist/{chunk-GKVE5JGB.cjs.map → chunk-UFT22LAB.cjs.map} +1 -1
  92. package/dist/{chunk-Q3XJUXID.cjs → chunk-USNTRL22.cjs} +215 -199
  93. package/dist/chunk-USNTRL22.cjs.map +1 -0
  94. package/dist/{chunk-7VUJGHMY.cjs → chunk-UTJ223TI.cjs} +178 -82
  95. package/dist/chunk-UTJ223TI.cjs.map +1 -0
  96. package/dist/{chunk-FKFQCK3C.cjs → chunk-V6MW7B4B.cjs} +4 -4
  97. package/dist/{chunk-FKFQCK3C.cjs.map → chunk-V6MW7B4B.cjs.map} +1 -1
  98. package/dist/{chunk-2PZT3J34.cjs → chunk-VWBYE3XY.cjs} +6 -6
  99. package/dist/{chunk-2PZT3J34.cjs.map → chunk-VWBYE3XY.cjs.map} +1 -1
  100. package/dist/{chunk-GQXPNIRE.cjs → chunk-WAV762GP.cjs} +6 -6
  101. package/dist/{chunk-GQXPNIRE.cjs.map → chunk-WAV762GP.cjs.map} +1 -1
  102. package/dist/{chunk-5LTIZ44D.cjs → chunk-WFMWKPGY.cjs} +14 -7
  103. package/dist/chunk-WFMWKPGY.cjs.map +1 -0
  104. package/dist/{chunk-KP5AITQ4.cjs → chunk-WRLGLZIA.cjs} +7 -7
  105. package/dist/{chunk-KP5AITQ4.cjs.map → chunk-WRLGLZIA.cjs.map} +1 -1
  106. package/dist/{chunk-MZ2KZXNU.cjs → chunk-WXUU3COI.cjs} +3 -3
  107. package/dist/{chunk-MZ2KZXNU.cjs.map → chunk-WXUU3COI.cjs.map} +1 -1
  108. package/dist/{chunk-NAJN32MF.cjs → chunk-XF355M7O.cjs} +13 -13
  109. package/dist/{chunk-NAJN32MF.cjs.map → chunk-XF355M7O.cjs.map} +1 -1
  110. package/dist/{chunk-GPX5VC57.cjs → chunk-XGM4VVNV.cjs} +50 -50
  111. package/dist/{chunk-GPX5VC57.cjs.map → chunk-XGM4VVNV.cjs.map} +1 -1
  112. package/dist/connect/docx.cjs +19 -19
  113. package/dist/connect/index.cjs +996 -995
  114. package/dist/connect/index.cjs.map +1 -1
  115. package/dist/connect/viewer.cjs +38 -37
  116. package/dist/connection/conversation/ConnectedMessage.js +1 -1
  117. package/dist/connection/conversation/ConnectedMessage.js.map +2 -2
  118. package/dist/connection/presentation/ConnectedSlidesTab.js +5 -3
  119. package/dist/connection/presentation/ConnectedSlidesTab.js.map +2 -2
  120. package/dist/connection/presentation/PresentationPill.js +3 -8
  121. package/dist/connection/presentation/PresentationPill.js.map +2 -2
  122. package/dist/connection/presentation/requests.d.ts +5 -0
  123. package/dist/connection/presentation/requests.js +8 -1
  124. package/dist/connection/presentation/requests.js.map +2 -2
  125. package/dist/connection/viewer/ViewerPdfPane.js +4 -1
  126. package/dist/connection/viewer/ViewerPdfPane.js.map +2 -2
  127. package/dist/connection/viewer/documentPlace.d.ts +5 -4
  128. package/dist/connection/viewer/documentPlace.js +2 -2
  129. package/dist/connection/viewer/documentPlace.js.map +2 -2
  130. package/dist/connection/viewer/pdf/PdfClipOutlines.d.ts +11 -0
  131. package/dist/connection/viewer/pdf/PdfClipOutlines.js +42 -0
  132. package/dist/connection/viewer/pdf/PdfClipOutlines.js.map +7 -0
  133. package/dist/connection/viewer/pdf/clipOutlines.d.ts +17 -0
  134. package/dist/connection/viewer/pdf/clipOutlines.js +24 -0
  135. package/dist/connection/viewer/pdf/clipOutlines.js.map +7 -0
  136. package/dist/connection/viewer/pdf/passageHighlights.d.ts +2 -0
  137. package/dist/connection/viewer/pdf/passageHighlights.js +12 -1
  138. package/dist/connection/viewer/pdf/passageHighlights.js.map +2 -2
  139. package/dist/connection/viewer/pdf/usePdfClipOutlines.d.ts +7 -0
  140. package/dist/connection/viewer/pdf/usePdfClipOutlines.js +36 -0
  141. package/dist/connection/viewer/pdf/usePdfClipOutlines.js.map +7 -0
  142. package/dist/connection/viewer/pdf/usePdfPassageHighlights.js +11 -2
  143. package/dist/connection/viewer/pdf/usePdfPassageHighlights.js.map +2 -2
  144. package/dist/dashboards/index.cjs +1 -1
  145. package/dist/embed/index.cjs +39 -39
  146. package/dist/files/index.cjs +224 -224
  147. package/dist/index.cjs +1597 -1596
  148. package/dist/index.cjs.map +1 -1
  149. package/dist/presentation/PresentControls.d.ts +11 -0
  150. package/dist/presentation/PresentControls.js +117 -0
  151. package/dist/presentation/PresentControls.js.map +7 -0
  152. package/dist/presentation/PresenterView.js +36 -5
  153. package/dist/presentation/PresenterView.js.map +2 -2
  154. package/dist/presentation/SlidesEditor.js +17 -1
  155. package/dist/presentation/SlidesEditor.js.map +2 -2
  156. package/dist/presentation/panel-id.d.ts +12 -2
  157. package/dist/presentation/panel-id.js +6 -1
  158. package/dist/presentation/panel-id.js.map +2 -2
  159. package/dist/presentation/slide-layout.d.ts +5 -1
  160. package/dist/presentation/slide-layout.js +16 -0
  161. package/dist/presentation/slide-layout.js.map +2 -2
  162. package/dist/settings/index.cjs +146 -146
  163. package/dist/shell/PanelPortal.js +13 -4
  164. package/dist/shell/PanelPortal.js.map +2 -2
  165. package/dist/shell/index.cjs +92 -91
  166. package/dist/shell/panel-windows.js +1 -0
  167. package/dist/shell/panel-windows.js.map +2 -2
  168. package/dist/studio/index.cjs +28 -28
  169. package/dist/styles.css +1 -1
  170. package/dist/workflow-canvas/index.cjs +53 -53
  171. package/node_modules/@arbidocs/coedit/package.json +1 -1
  172. package/package.json +5 -5
  173. package/dist/ConnectedPresentation-4HLDZDWV.cjs +0 -183
  174. package/dist/ConnectedPresentation-4HLDZDWV.cjs.map +0 -1
  175. package/dist/ConnectedSlidesTab-7QDE2CZD.cjs.map +0 -1
  176. package/dist/FilesViewerDialog-IZI63FOV.cjs.map +0 -1
  177. package/dist/ai-KBYNRNZ6.cjs.map +0 -1
  178. package/dist/chunk-5LTIZ44D.cjs.map +0 -1
  179. package/dist/chunk-7VUJGHMY.cjs.map +0 -1
  180. package/dist/chunk-GX2EBMJW.cjs.map +0 -1
  181. package/dist/chunk-JZEYHDWJ.cjs.map +0 -1
  182. package/dist/chunk-Q3XJUXID.cjs.map +0 -1
  183. package/dist/chunk-QFXILJMJ.cjs.map +0 -1
  184. package/dist/chunk-VJ5ZLRBD.cjs.map +0 -1
  185. package/dist/chunk-XTR26TNE.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/theme/ThemePreview.tsx","../src/theme/editorModel.ts","../src/theme/ThemeControls.tsx","../src/theme/ThemeEditor.tsx"],"names":["DEFAULT_THEME_PREVIEW_LABELS","useMemo","themeCssVars","themeMetaVars","jsx","cn","jsxs","Button","Input","Card","CardHeader","CardTitle","CardContent","Tabs","Sidebar","Home","Inbox","FileText","ProgressChevronBar","ProgressChevron","Chart","Bell","ToneBadge","Callout","useId","toHex","useState","useEffect","parseColor","applyThemeVars","CONTRAST_PAIRS","contrastIssues","keysOfInput","Undo2","Redo2","RotateCcw","AlertTriangle","Wand2","toCssColor","matchFontPairing","Fragment","FONT_PAIRINGS","contrastRatio","Check","ChevronDown","Save"],"mappings":";;;;;;;;;;;;;;AA0CA,IAAM,OAAO,MAAM,MAAA;AAOnB,SAAS,aAAA,GAAyB;AAChC,EAAA,IAAI,OAAO,QAAA,KAAa,WAAA,IAAe,OAAO,gBAAA,KAAqB,YAAY,OAAO,KAAA;AACtF,EAAA,MAAM,IAAA,GAAO,gBAAA,CAAiB,QAAA,CAAS,eAAe,CAAA;AACtD,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,gBAAA,CAAiB,UAAU,EAAE,IAAA,EAAK;AACpD,EAAA,OAAO,SAAS,EAAA,IAAM,IAAA,CAAK,iBAAiB,aAAa,CAAA,CAAE,MAAK,KAAM,IAAA;AACxE;AAEO,SAAS,YAAA,CAAa;AAAA,EAC3B,MAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA,GAAY,IAAA;AAAA,EACZ,OAAA,GAAU,KAAA;AAAA,EACV,MAAA,EAAQ,cAAA;AAAA,EACR,KAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA,GAAS;AACX,CAAA,EAAsB;AACpB,EAAA,MAAM,MAAA,GAAS,EAAE,GAAGA,8CAAA,EAA8B,GAAG,cAAA,EAAe;AACpE,EAAA,MAAM,OAAA,GAAUC,aAAA,CAAQ,aAAA,EAAe,EAAE,CAAA;AACzC,EAAA,MAAM,KAAA,GAAQA,cAAQ,MAAM;AAC1B,IAAA,MAAM,IAAA,GAA+B;AAAA,MACnC,GAAGC,+BAAa,MAAM,CAAA;AAAA,MACtB,GAAGC,+BAAA,CAAc,EAAE,KAAA,EAAO,QAAQ;AAAA,KACpC;AACA,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,IAAA,CAAK,aAAa,CAAA,GAAI,CAAA,EAAG,MAAM,CAAA,GAAA,CAAA;AAC/B,MAAA,IAAA,CAAK,aAAa,CAAA,GAAI,CAAA,EAAG,MAAM,CAAA,GAAA,CAAA;AAAA,IACjC;AACA,IAAA,OAAO,IAAA;AAAA,EACT,GAAG,CAAC,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ,OAAO,CAAC,CAAA;AAEnC,EAAA,MAAM,IAAA,GAAO,CAAC,EAAA,EAAiB,QAAA,EAAqB,SAAA,qBAClDC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,mBAAA,EAAmB,EAAA;AAAA,MACnB,kBAAA,EAAkB,SAAA,EAAW,GAAA,CAAI,EAAE,CAAA,IAAK,MAAA;AAAA,MACxC,SAAA,EAAWC,KAAA;AAAA,QACT,yGAAA;AAAA,QACA,SAAA,IAAa,CAAC,SAAA,CAAU,GAAA,CAAI,EAAE,CAAA,IAAK,YAAA;AAAA,QACnC,SAAA,EAAW,GAAA,CAAI,EAAE,CAAA,IAAK,8DAAA;AAAA,QACtB;AAAA,OACF;AAAA,MAEC;AAAA;AAAA,GACH;AAGF,EAAA,uBACEC,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAK,IAAA;AAAA,MACL,aAAA,EAAa,MAAA;AAAA,MACb,aAAA,EAAa,MAAA;AAAA,MACb,KAAA;AAAA,MACA,SAAA,EAAWD,KAAA;AAAA,QACT,WAAW,MAAA,IAAU,MAAA;AAAA,QACrB,gGAAA;AAAA,QACA,SAAA,EAAW,GAAA,CAAI,MAAM,CAAA,IAAK;AAAA,OAC5B;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAC,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,MAAA,EACb,QAAA,EAAA;AAAA,0BAAAF,cAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,kDAAA,EAAoD,QAAA,EAAA,KAAA,IAAS,OAAO,KAAA,EAAM,CAAA;AAAA,yCACtF,GAAA,EAAA,EAAE,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA,QAAA,IAAY,OAAO,QAAA,EAAS;AAAA,SAAA,EAC5E,CAAA;AAAA,wBACAE,eAAA,CAAC,SAAI,SAAA,EAAWD,KAAA,CAAG,cAAc,CAAC,OAAA,IAAW,iBAAiB,CAAA,EAC5D,QAAA,EAAA;AAAA,0BAAAC,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,6BAAA,EACZ,QAAA,EAAA;AAAA,YAAA,IAAA;AAAA,cACC,SAAA;AAAA,8BACAA,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAA,EACb,QAAA,EAAA;AAAA,gCAAAF,cAAA,CAACG,SAAA,EAAA,EAAO,IAAA,EAAK,IAAA,EAAM,QAAA,EAAA,MAAA,CAAO,aAAA,EAAc,CAAA;AAAA,+CACvCA,SAAA,EAAA,EAAO,IAAA,EAAK,MAAK,OAAA,EAAQ,QAAA,EACvB,iBAAO,YAAA,EACV,CAAA;AAAA,+CACCA,SAAA,EAAA,EAAO,IAAA,EAAK,MAAK,OAAA,EAAQ,WAAA,EACvB,iBAAO,eAAA,EACV,CAAA;AAAA,+CACCA,SAAA,EAAA,EAAO,IAAA,EAAK,MAAK,OAAA,EAAQ,SAAA,EACvB,iBAAO,aAAA,EACV,CAAA;AAAA,+CACCA,SAAA,EAAA,EAAO,IAAA,EAAK,MAAK,OAAA,EAAQ,aAAA,EACvB,iBAAO,YAAA,EACV;AAAA,eAAA,EACF;AAAA,aACF;AAAA,YACC,IAAA;AAAA,cACC,OAAA;AAAA,8BACAD,eAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,2BAAA,EACd,QAAA,EAAA;AAAA,gBAAA,MAAA,CAAO,UAAA;AAAA,gCACRF,cAAA,CAACI,YAAM,SAAA,EAAU,MAAA,EAAO,aAAa,MAAA,CAAO,gBAAA,EAAkB,UAAQ,IAAA,EAAC;AAAA,eAAA,EACzE;AAAA,aACF;AAAA,YACC,IAAA;AAAA,cACC,MAAA;AAAA,8BACAF,eAAA,CAACG,OAAA,EAAA,EAAK,OAAA,EAAQ,SAAA,EAAU,WAAU,yBAAA,EAChC,QAAA,EAAA;AAAA,gCAAAL,cAAA,CAACM,aAAA,EAAA,EAAW,WAAU,MAAA,EACpB,QAAA,kBAAAN,cAAA,CAACO,gBAAU,SAAA,EAAU,wBAAA,EAA0B,QAAA,EAAA,MAAA,CAAO,KAAA,EAAM,CAAA,EAC9D,CAAA;AAAA,gCACAP,cAAA,CAACQ,cAAA,EAAA,EAAY,SAAA,EAAU,+BAAA,EAAiC,iBAAO,QAAA,EAAS;AAAA,eAAA,EAC1E;AAAA,aACF;AAAA,YACC,IAAA;AAAA,cACC,MAAA;AAAA,8BACAR,cAAA;AAAA,gBAACS,sBAAA;AAAA,gBAAA;AAAA,kBACC,OAAO,MAAA,CAAO,IAAA,CAAK,GAAA,CAAI,CAAC,OAAO,CAAA,MAAO;AAAA,oBACpC,KAAA;AAAA,oBACA,OAAA,EAAS,CAAA,KAAM,CAAA,GAAI,MAAA,CAAO,OAAA,GAAU;AAAA,mBACtC,CAAE;AAAA;AAAA;AACJ,aACF;AAAA,YACC,IAAA;AAAA,cACC,SAAA;AAAA,8BACAP,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gDAAA,EACb,QAAA,EAAA;AAAA,gCAAAF,cAAA;AAAA,kBAACU,yBAAA,CAAQ,OAAA;AAAA,kBAAR;AAAA,oBACC,KAAA,EAAO,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA;AAAA,oBACnB,IAAA,kBAAMV,cAAA,CAACW,gBAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,CAAA;AAAA,oBAC/B,QAAA,EAAU,IAAA;AAAA,oBACV,MAAA,EAAM;AAAA;AAAA,iBACR;AAAA,gCACAX,cAAA;AAAA,kBAACU,yBAAA,CAAQ,OAAA;AAAA,kBAAR;AAAA,oBACC,KAAA,EAAO,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA;AAAA,oBACnB,IAAA,kBAAMV,cAAA,CAACY,iBAAA,EAAA,EAAM,SAAA,EAAU,QAAA,EAAS,CAAA;AAAA,oBAChC,QAAA,EAAU,IAAA;AAAA,oBACV,KAAA,EAAO;AAAA;AAAA,iBACT;AAAA,gCACAZ,cAAA;AAAA,kBAACU,yBAAA,CAAQ,OAAA;AAAA,kBAAR;AAAA,oBACC,KAAA,EAAO,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA;AAAA,oBACnB,IAAA,kBAAMV,cAAA,CAACa,oBAAA,EAAA,EAAS,SAAA,EAAU,QAAA,EAAS,CAAA;AAAA,oBACnC,QAAA,EAAU;AAAA;AAAA;AACZ,eAAA,EACF;AAAA;AACF,WAAA,EACF,CAAA;AAAA,0BACAX,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6BAAA,EACZ,QAAA,EAAA;AAAA,YAAA,IAAA;AAAA,cACC,SAAA;AAAA,8CACCY,oCAAA,EAAA,EAAmB,YAAA,EAAY,OAAO,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA,EACpD,QAAA,EAAA;AAAA,gCAAAd,cAAA,CAACe,iCAAA,EAAA,EAAgB,IAAA,EAAK,OAAA,EAAQ,KAAA,EAAM,MAAA,EAClC,QAAA,kBAAAf,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,0BAAA,EAA4B,QAAA,EAAA,MAAA,CAAO,KAAA,CAAM,CAAC,GAAE,CAAA,EAC9D,CAAA;AAAA,+CACCe,iCAAA,EAAA,EAAgB,IAAA,EAAK,OAAA,EAAQ,KAAA,EAAM,WAAU,OAAA,EAAO,IAAA,EACnD,QAAA,kBAAAf,cAAA,CAAC,MAAA,EAAA,EAAK,WAAU,0BAAA,EAA4B,QAAA,EAAA,MAAA,CAAO,KAAA,CAAM,CAAC,GAAE,CAAA,EAC9D,CAAA;AAAA,gCACAA,cAAA,CAACe,iCAAA,EAAA,EAAgB,KAAA,EAAM,SAAA,EACrB,QAAA,kBAAAf,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,0BAAA,EAA4B,QAAA,EAAA,MAAA,CAAO,KAAA,CAAM,CAAC,CAAA,EAAE,CAAA,EAC9D;AAAA,eAAA,EACF;AAAA,aACF;AAAA,YACC,IAAA;AAAA,cACC,OAAA;AAAA,8BACAA,cAAA;AAAA,gBAACgB,uBAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,KAAA;AAAA,kBACL,WAAW,MAAA,CAAO,UAAA;AAAA,kBAClB,QAAQ,MAAA,CAAO,WAAA;AAAA,kBACf,MAAA,EAAQ;AAAA,oBACN,EAAE,GAAA,EAAK,GAAA,EAAK,KAAA,EAAO,OAAO,WAAA,CAAY,CAAC,CAAA,EAAG,MAAA,EAAQ,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAE,CAAA,EAAE;AAAA,oBACnE,EAAE,GAAA,EAAK,GAAA,EAAK,KAAA,EAAO,OAAO,WAAA,CAAY,CAAC,CAAA,EAAG,MAAA,EAAQ,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAE,CAAA;AAAE;AACpE;AAAA;AACF,aACF;AAAA,YACC,IAAA;AAAA,cACC,OAAA;AAAA,8BACAd,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8FAAA,EACb,QAAA,EAAA;AAAA,gCAAAF,cAAA,CAACiB,gBAAA,EAAA,EAAK,SAAA,EAAU,8CAAA,EAA+C,aAAA,EAAW,IAAA,EAAC,CAAA;AAAA,gCAC3Ef,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,EAAA;AAAA,kCAAAF,cAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,qBAAA,EAAuB,QAAA,EAAA,MAAA,CAAO,UAAA,EAAW,CAAA;AAAA,kCACtDA,cAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,+BAAA,EAAiC,iBAAO,SAAA,EAAU;AAAA,iBAAA,EACjE,CAAA;AAAA,gCACAA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,6EAAA,EACb,iBAAO,WAAA,EACV;AAAA,eAAA,EACF;AAAA,aACF;AAAA,YACC,IAAA;AAAA,cACC,QAAA;AAAA,8BACAE,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACb,QAAA,EAAA;AAAA,gCAAAF,cAAA,CAACkB,2BAAA,EAAA,EAAU,IAAA,EAAK,SAAA,EAAW,QAAA,EAAA,MAAA,CAAO,OAAO,OAAA,EAAQ,CAAA;AAAA,+CAChDA,2BAAA,EAAA,EAAU,IAAA,EAAK,SAAA,EAAW,QAAA,EAAA,MAAA,CAAO,OAAO,OAAA,EAAQ,CAAA;AAAA,+CAChDA,2BAAA,EAAA,EAAU,IAAA,EAAK,SAAA,EAAW,QAAA,EAAA,MAAA,CAAO,OAAO,OAAA,EAAQ,CAAA;AAAA,+CAChDA,2BAAA,EAAA,EAAU,IAAA,EAAK,QAAA,EAAU,QAAA,EAAA,MAAA,CAAO,OAAO,MAAA,EAAO,CAAA;AAAA,+CAC9CA,2BAAA,EAAA,EAAU,IAAA,EAAK,IAAA,EAAM,QAAA,EAAA,MAAA,CAAO,OAAO,EAAA,EAAG;AAAA,eAAA,EACzC;AAAA,aACF;AAAA,YACC,IAAA;AAAA,cACC,QAAA;AAAA,8BACAhB,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EACb,QAAA,EAAA;AAAA,gCAAAF,cAAA,CAACmB,6BAAQ,OAAA,EAAQ,MAAA,EAAO,IAAA,EAAM,MAAA,CAAO,OAAO,IAAA,EAAM,CAAA;AAAA,+CACjDA,yBAAA,EAAA,EAAQ,OAAA,EAAQ,UAAS,IAAA,EAAM,MAAA,CAAO,OAAO,MAAA,EAAQ;AAAA,eAAA,EACxD;AAAA;AACF,WAAA,EACF;AAAA,SAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ;;;ACzOO,IAAM,YAAA,GAAyE;AAAA,EACpF,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,OAAA;AAAA,IACP,OAAA,EACE;AAAA,GACJ;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAO,UAAA;AAAA,IACP,OAAA,EAAS;AAAA,GACX;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,KAAA,EAAO,sBAAA;AAAA,IACP,OAAA,EAAS;AAAA,GACX;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,QAAA;AAAA,IACP,OAAA,EAAS;AAAA,GACX;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,QAAA;AAAA,IACP,OAAA,EAAS;AAAA,GACX;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAO,UAAA;AAAA,IACP,OAAA,EACE;AAAA;AAEN,CAAA;AAiBO,IAAM,YAAA,GAAe,cAAA;AACrB,IAAM,SAAA,GAAY,WAAA;AAClB,IAAM,MAAA,GAAS,QAAA;AAEtB,IAAM,SAAS,CAAC,GAAA,KACd,CAAC,IAAA,EAAM,QAAQ,QAAA,EAAU,OAAA,EAAS,aAAa,CAAA,CAAE,IAAI,CAAC,CAAA,KAAM,GAAG,GAAG,CAAA,CAAA,EAAI,CAAC,CAAA,CAAE,CAAA;AAGpE,IAAM,WAAA,GAAsD;AAAA,EACjE,IAAA,EAAM,CAAC,YAAA,EAAc,YAAA,EAAc,SAAS,CAAA;AAAA,EAC5C,OAAA,EAAS;AAAA,IACP,SAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,sBAAA;AAAA,IACA,OAAA;AAAA,IACA,YAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAA;AAAA,IACA,aAAA;AAAA,IACA,wBAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,OAAO,CAAC,OAAA,EAAS,cAAc,YAAA,EAAc,kBAAA,EAAoB,QAAQ,MAAM,CAAA;AAAA,EAC/E,MAAM,CAAC,MAAA,EAAQ,mBAAmB,QAAA,EAAU,kBAAA,EAAoB,cAAc,MAAM,CAAA;AAAA,EACpF,MAAM,CAAC,SAAA,EAAW,YAAA,EAAc,kBAAA,EAAoB,UAAU,MAAM,CAAA;AAAA,EACpE,OAAA,EAAS;AAAA,IACP,SAAA;AAAA,IACA,oBAAA;AAAA,IACA,eAAA;AAAA,IACA,gBAAA;AAAA,IACA,2BAAA;AAAA,IACA,gBAAA;AAAA,IACA,iBAAA;AAAA,IACA,QAAA;AAAA,IACA,mBAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,OAAA,EAAS,CAAC,UAAA,EAAY,OAAA,EAAS,oBAAoB,MAAA,EAAQ,YAAA,EAAc,eAAe,MAAM,CAAA;AAAA,EAC9F,KAAA,EAAO,CAAC,SAAA,EAAW,SAAA,EAAW,WAAW,SAAA,EAAW,SAAA,EAAW,oBAAoB,QAAQ,CAAA;AAAA,EAC3F,KAAA,EAAO;AAAA,IACL,MAAA;AAAA,IACA,YAAA;AAAA,IACA,QAAA;AAAA,IACA,kBAAA;AAAA,IACA,SAAA;AAAA,IACA,oBAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,SAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,kBAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,GAAG,OAAO,KAAK,CAAA;AAAA,IACf,GAAG,OAAO,OAAO,CAAA;AAAA,IACjB,GAAG,OAAO,QAAQ;AAAA,GACpB;AAAA,EACA,QAAQ,CAAC,SAAA,EAAW,aAAA,EAAe,YAAA,EAAc,oBAAoB,MAAM;AAC7E,CAAA;AAGO,SAAS,QAAQ,IAAA,EAA2C;AACjE,EAAA,MAAM,MAAA,GAAS,IAAI,GAAA,CAAI,IAAI,CAAA;AAC3B,EAAA,MAAM,KAAA,uBAAY,GAAA,EAAiB;AACnC,EAAA,KAAA,MAAW,CAAC,IAAA,EAAM,MAAM,KAAK,MAAA,CAAO,OAAA,CAAQ,WAAW,CAAA,EAAyC;AAC9F,IAAA,IAAI,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,KAAM,MAAA,CAAO,GAAA,CAAI,CAAC,CAAC,CAAA,EAAG,KAAA,CAAM,GAAA,CAAI,IAAI,CAAA;AAAA,EACvD;AACA,EAAA,OAAO,KAAA;AACT;AAQO,SAAS,kBAAA,CACd,MACA,MAAA,EACwB;AACxB,EAAA,IAAI,OAAO,QAAA,KAAa,WAAA,IAAe,OAAO,gBAAA,KAAqB,UAAA,SAAmB,EAAC;AACvF,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,aAAA,CAAc,KAAK,CAAA;AAC1C,EAAA,KAAA,CAAM,YAAA,CAAa,eAAe,MAAM,CAAA;AACxC,EAAA,KAAA,CAAM,MAAM,OAAA,GAAU,MAAA;AACtB,EAAA,IAAI,MAAA,KAAW,MAAA,EAAQ,KAAA,CAAM,SAAA,GAAY,MAAA;AACzC,EAAA,QAAA,CAAS,IAAA,CAAK,YAAY,KAAK,CAAA;AAC/B,EAAA,IAAI;AACF,IAAA,MAAM,KAAA,GAAQ,iBAAiB,KAAK,CAAA;AACpC,IAAA,MAAM,MAA8B,EAAC;AACrC,IAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,MAAA,MAAM,MAAM,KAAA,CAAM,gBAAA,CAAiB,KAAK,GAAG,CAAA,CAAE,EAAE,IAAA,EAAK;AACpD,MAAA,IAAI,GAAA,EAAK,GAAA,CAAI,GAAG,CAAA,GAAI,GAAA;AAAA,IACtB;AACA,IAAA,OAAO,GAAA;AAAA,EACT,CAAA,SAAE;AACA,IAAA,KAAA,CAAM,MAAA,EAAO;AAAA,EACf;AACF;AAIO,SAAS,SAAA,CAAU,MAAyB,MAAA,EAAqB;AACtE,EAAA,OAAO;AAAA,IACL,cAAA,EAAgB,MAAM,MAAA,CAAO,IAAI,CAAA;AAAA,IACjC,cAAA,EAAgB,MAAM,MAAA,CAAO,IAAI,CAAA;AAAA,IACjC,OAAA,EAAS,MAAM,MAAA,CAAO,IAAI,CAAA;AAAA,IAC1B,MAAA,EAAQ,MAAM,MAAA,CAAO,IAAI;AAAA,GAC3B;AACF;AC9JA,IAAM,KAAA,GACJ,uJAAA;AAoBK,SAAS,UAAA,CAAW;AAAA,EACzB,KAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAAoB;AAClB,EAAA,MAAM,KAAKC,WAAA,EAAM;AACjB,EAAA,MAAM,GAAA,GAAMC,uBAAA,CAAM,KAAA,EAAO,SAAS,CAAA;AAClC,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIC,eAAS,GAAG,CAAA;AACtC,EAAAC,eAAA,CAAU,MAAM,QAAA,CAAS,GAAG,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AAEpC,EAAA,uBACErB,gBAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2BAA2B,GAAG,SAAA,CAAU,IAAA,EAAM,MAAM,CAAA,EACjE,QAAA,EAAA;AAAA,oBAAAF,cAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,GAAG,EAAE,CAAA,OAAA,CAAA;AAAA,QACT,IAAA,EAAK,OAAA;AAAA,QACL,KAAA,EAAO,GAAA;AAAA,QACP,UAAU,CAAC,CAAA,KAAM,QAAA,CAAS,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,QACxC,SAAA,EAAU,oFAAA;AAAA,QACV,YAAA,EAAY,KAAA;AAAA,QACZ,eAAa,OAAA,CAAQ;AAAA;AAAA,KACvB;AAAA,oBACAE,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,EAAA;AAAA,sBAAAF,cAAAA,CAAC,WAAM,OAAA,EAAS,CAAA,EAAG,EAAE,CAAA,IAAA,CAAA,EAAQ,SAAA,EAAU,6CACpC,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,MACC,wBAAQA,cAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,iCAAiC,QAAA,EAAA,IAAA,EAAK;AAAA,KAAA,EAC9D,CAAA;AAAA,oBACAA,cAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,GAAG,EAAE,CAAA,IAAA,CAAA;AAAA,QACT,KAAA,EAAO,KAAA;AAAA,QACP,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,UAAA,QAAA,CAAS,CAAA,CAAE,OAAO,KAAK,CAAA;AACvB,UAAA,IAAI,mBAAA,CAAoB,IAAA,CAAK,CAAA,CAAE,MAAA,CAAO,KAAK,KAAKwB,4BAAA,CAAW,CAAA,CAAE,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1E,YAAA,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAA,CAAM,WAAA,EAAa,CAAA;AAAA,UACvC;AAAA,QACF,CAAA;AAAA,QACA,MAAA,EAAQ,MAAM,QAAA,CAAS,GAAG,CAAA;AAAA,QAC1B,UAAA,EAAY,KAAA;AAAA,QACZ,YAAA,EAAY,GAAG,KAAK,CAAA,UAAA,CAAA;AAAA,QACpB,SAAA,EAAWvB,KAAAA,CAAG,KAAA,EAAO,+BAA+B,CAAA;AAAA,QACpD,eAAa,OAAA,CAAQ;AAAA;AAAA,KACvB;AAAA,IACC;AAAA,GAAA,EACH,CAAA;AAEJ;AAaO,SAAS,SAAA,CAA4B;AAAA,EAC1C,KAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,EAAsB;AACpB,EAAA,uBACED,cAAAA,CAAC,KAAA,EAAA,EAAI,IAAA,EAAK,cAAa,YAAA,EAAY,KAAA,EAAO,SAAA,EAAU,sBAAA,EAAuB,eAAa,MAAA,EACrF,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,2BACZA,cAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MAEC,IAAA,EAAK,QAAA;AAAA,MACL,IAAA,EAAK,OAAA;AAAA,MACL,cAAA,EAAc,UAAU,MAAA,CAAO,KAAA;AAAA,MAC/B,OAAA,EAAS,MAAM,QAAA,CAAS,MAAA,CAAO,KAAK,CAAA;AAAA,MACnC,GAAG,SAAA,CAAU,IAAA,EAAM,MAAM,CAAA;AAAA,MAC1B,SAAA,EAAWC,KAAAA;AAAA,QACT,mKAAA;AAAA,QACA,KAAA,KAAU,MAAA,CAAO,KAAA,GACb,mDAAA,GACA;AAAA,OACN;AAAA,MACA,aAAA,EAAa,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,OAAO,KAAK,CAAA,CAAA;AAAA,MAErC,QAAA,EAAA,MAAA,CAAO;AAAA,KAAA;AAAA,IAdH,MAAA,CAAO;AAAA,GAgBf,CAAA,EACH,CAAA;AAEJ;AAkBO,SAAS,WAAA,CAAY;AAAA,EAC1B,KAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,KAAKmB,WAAA,EAAM;AACjB,EAAA,uBACElB,eAAAA,CAAC,KAAA,EAAA,EAAK,GAAG,SAAA,CAAU,IAAA,EAAM,MAAM,CAAA,EAC7B,QAAA,EAAA;AAAA,oBAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2CAAA,EACb,QAAA,EAAA;AAAA,sBAAAF,eAAC,OAAA,EAAA,EAAM,OAAA,EAAS,EAAA,EAAI,SAAA,EAAU,uCAC3B,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,sBACAA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iCAAiC,QAAA,EAAA,SAAA,EAAU;AAAA,KAAA,EAC7D,CAAA;AAAA,oBACAA,cAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,EAAA;AAAA,QACA,IAAA,EAAK,OAAA;AAAA,QACL,GAAA;AAAA,QACA,GAAA;AAAA,QACA,IAAA;AAAA,QACA,KAAA;AAAA,QACA,gBAAA,EAAgB,SAAA;AAAA,QAChB,QAAA,EAAU,CAAC,CAAA,KAAM,QAAA,CAAS,OAAO,CAAA,CAAE,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,QAChD,SAAA,EAAU,iDAAA;AAAA,QACV,aAAA,EAAa;AAAA;AAAA,KACf;AAAA,IACC,wBACCE,eAAAA,CAAC,SAAI,SAAA,EAAU,oDAAA,EAAqD,eAAW,IAAA,EAC7E,QAAA,EAAA;AAAA,sBAAAF,cAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,IAAA,CAAK,CAAC,CAAA,EAAE,CAAA;AAAA,sBACfA,cAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,IAAA,CAAK,CAAC,CAAA,EAAE;AAAA,KAAA,EACjB;AAAA,GAAA,EAEJ,CAAA;AAEJ;AAaO,SAAS,WAAA,CAAY;AAAA,EAC1B,KAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,KAAKoB,WAAA,EAAM;AACjB,EAAA,uBACElB,eAAAA,CAAC,KAAA,EAAA,EAAK,GAAG,SAAA,CAAU,IAAA,EAAM,MAAM,CAAA,EAC7B,QAAA,EAAA;AAAA,oBAAAF,eAAC,OAAA,EAAA,EAAM,OAAA,EAAS,EAAA,EAAI,SAAA,EAAU,6CAC3B,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,oBACAA,cAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,EAAA;AAAA,QACA,KAAA;AAAA,QACA,UAAU,CAAC,CAAA,KAAM,QAAA,CAAS,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,QACxC,SAAA,EAAWC,KAAAA,CAAG,KAAA,EAAO,aAAa,CAAA;AAAA,QAClC,aAAA,EAAa,MAAA;AAAA,QAEZ,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,qBACZD,cAAAA,CAAC,QAAA,EAAA,EAA0B,KAAA,EAAO,MAAA,CAAO,KAAA,EACtC,QAAA,EAAA,MAAA,CAAO,KAAA,EAAA,EADG,MAAA,CAAO,KAEpB,CACD;AAAA;AAAA,KACH;AAAA,IACC,wBAAQA,cAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,sCAAsC,QAAA,EAAA,IAAA,EAAK;AAAA,GAAA,EACnE,CAAA;AAEJ;AChKA,IAAM,aAAa,CAAC,SAAA,EAAW,SAAA,EAAW,SAAA,EAAW,WAAW,SAAS,CAAA;AACzE,IAAM,gBAAA,GAAuC;AAAA,EAC3C,CAAC,cAAc,MAAM,CAAA;AAAA,EACrB,CAAC,QAAQ,OAAO,CAAA;AAAA,EAChB,CAAC,SAAS,OAAO,CAAA;AAAA,EACjB,CAAC,UAAU,OAAO,CAAA;AAAA,EAClB,CAAC,UAAU,SAAS,CAAA;AAAA,EACpB,CAAC,WAAW,SAAS;AACvB,CAAA;AAGA,IAAM,WAAW,CAAC,KAAA,KAAA,CACf,MAAM,KAAA,CAAM,GAAG,EAAE,CAAC,CAAA,IAAK,KAAA,EACrB,OAAA,CAAQ,SAAS,EAAE,CAAA,CACnB,QAAQ,YAAA,EAAc,EAAE,EACxB,IAAA,EAAK;AAEV,SAAS,WAAA,CAAY,SAAiB,MAAA,EAAkB;AACtD,EAAA,MAAM,SAAS,CAAC,GAAG,IAAI,GAAA,CAAI,MAAM,CAAC,CAAA;AAClC,EAAA,MAAM,OAAA,GAAU,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,MAAW;AAAA,IACrC,KAAA;AAAA,IACA,OAAO,KAAA,CAAM,UAAA,CAAW,KAAK,CAAA,GAAI,QAAA,GAAW,SAAS,KAAK;AAAA,GAC5D,CAAE,CAAA;AACF,EAAA,IAAI,CAAC,MAAA,CAAO,QAAA,CAAS,OAAO,CAAA;AAC1B,IAAA,OAAA,CAAQ,OAAA,CAAQ,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,WAAW,QAAA,CAAS,OAAO,CAAC,CAAA,CAAA,CAAA,EAAK,CAAA;AAC5E,EAAA,OAAO,OAAA;AACT;AAEA,IAAM,WAAA,GAAc,CAAC,EAAA,KACnB,EAAA,YAAc,gBACb,EAAA,CAAG,OAAA,KAAY,UAAA,IACd,EAAA,CAAG,OAAA,KAAY,QAAA,IACd,GAAG,OAAA,KAAY,OAAA,IACd,CAAC,CAAC,OAAA,EAAS,SAAS,QAAQ,CAAA,CAAE,QAAA,CAAU,EAAA,CAAwB,IAAI,CAAA,CAAA;AAEnE,SAAS,WAAA,CAAY;AAAA,EAC1B,MAAA;AAAA,EACA,OAAA,GAAU,OAAA;AAAA,EACV,OAAA;AAAA,EACA,aAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA,GAAe,OAAA;AAAA,EACf,WAAA,GAAc;AAChB,CAAA,EAAqB;AACnB,EAAA,MAAM,EAAE,QAAA,EAAU,MAAA,EAAQ,SAAS,WAAA,EAAa,IAAA,EAAM,YAAW,GAAI,MAAA;AACrE,EAAA,MAAM,UAAU,UAAA,KAAe,MAAA;AAC/B,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,CAAC,CAAA,KAAM,EAAE,MAAM,CAAA;AACvC,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,CAAC,CAAA,KAAM,EAAE,IAAI,CAAA;AACnC,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,CAAC,CAAA,KAAM,EAAE,KAAK,CAAA;AACrC,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,CAAC,CAAA,KAAM,EAAE,MAAM,CAAA;AACvC,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,CAAC,CAAA,KAAM,EAAE,MAAM,CAAA;AACvC,EAAA,MAAM,SAAA,GAAY,QAAA,CAAS,CAAC,CAAA,KAAM,EAAE,SAAS,CAAA;AAC7C,EAAA,MAAM,cAAA,GAAiB,QAAA,CAAS,CAAC,CAAA,KAAM,EAAE,cAAc,CAAA;AACvD,EAAA,MAAM,UAAU,QAAA,CAAS,CAAC,MAAM,CAAA,CAAE,IAAA,CAAK,SAAS,CAAC,CAAA;AACjD,EAAA,MAAM,UAAU,QAAA,CAAS,CAAC,MAAM,CAAA,CAAE,MAAA,CAAO,SAAS,CAAC,CAAA;AACnD,EAAA,MAAM,QAAQ,QAAA,CAAS,QAAA;AAEvB,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIsB,eAAS,WAAW,CAAA;AAC5C,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,eAAS,KAAK,CAAA;AACtD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,eAAsB,OAAO,CAAA;AACnE,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,eAAmC,IAAI,CAAA;AAC/D,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,eAAS,KAAK,CAAA;AAC1C,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,eAAwB,IAAI,CAAA;AAG5D,EAAAC,gBAAU,MAAM;AACd,IAAAE,gCAAA,CAAe,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAO,EAAG,EAAE,IAAA,EAAM,IAAA,EAAM,OAAA,GAAU,IAAA,GAAO,MAAA,EAAW,CAAA;AAAA,EACtF,CAAA,EAAG,CAAC,MAAA,EAAQ,IAAA,EAAM,OAAO,MAAA,EAAQ,IAAA,EAAM,OAAO,CAAC,CAAA;AAE/C,EAAA,MAAM,MAAM,CAAC,MAAA,KAAmB,CAAA,EAAG,YAAY,IAAI,MAAM,CAAA,CAAA;AACzD,EAAA,MAAM,SAAA,GAAY5B,aAAAA,CAAQ,MAAO,IAAA,GAAO,OAAA,CAAQ,IAAI,CAAA,GAAI,IAAA,EAAO,CAAC,IAAI,CAAC,CAAA;AACrE,EAAA,MAAM,UAAyB,OAAA,GAAU,CAAC,SAAS,MAAM,CAAA,GAAI,CAAC,OAAO,CAAA;AACrE,EAAA,MAAM,KAAA,GAAQ,CAAC,MAAA,KAAyB,MAAA,KAAW,SAAS,IAAA,GAAO,MAAA;AAInE,EAAA,MAAM,UAAA,GAAaA,aAAAA;AAAA,IACjB,MAAM;AAAA,MACJ,uBAAO,GAAA,CAAI;AAAA,QACT,GAAG6B,gCAAA,CAAe,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,EAAA,EAAI,CAAA,CAAE,EAAE,CAAC,CAAA;AAAA,QAC7C,GAAG,UAAA;AAAA,QACH,GAAG,gBAAA,CAAiB,GAAA,CAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AAAA,OACnC;AAAA,KACH;AAAA,IACA;AAAC,GACH;AACA,EAAA,MAAM,YAAA,GAAe,UAAA,CAAW,MAAA,CAAO,CAAC,CAAA,KAAM,MAAA,CAAO,CAAC,CAAA,KAAM,MAAS,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAC/E,EAAA,MAAM,WAAA,GAAc,UAAA,CAAW,MAAA,CAAO,CAAC,CAAA,KAAM,IAAA,CAAK,CAAC,CAAA,KAAM,MAAS,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAC5E,EAAA,MAAM,SAAA,GAAY7B,aAAAA;AAAA,IAChB,MAAM,mBAAmB,YAAA,GAAe,YAAA,CAAa,MAAM,GAAG,CAAA,GAAI,EAAC,EAAG,OAAO,CAAA;AAAA,IAC7E,CAAC,YAAY;AAAA,GACf;AACA,EAAA,MAAM,QAAA,GAAWA,aAAAA;AAAA,IACf,MAAO,OAAA,GAAU,kBAAA,CAAmB,WAAA,GAAc,WAAA,CAAY,KAAA,CAAM,GAAG,CAAA,GAAI,EAAC,EAAG,MAAM,CAAA,GAAI,EAAC;AAAA,IAC1F,CAAC,aAAa,OAAO;AAAA,GACvB;AACA,EAAA,MAAM,OAAA,GAAU,CAAC,MAAA,KAAwB,CAAC,QACxC,KAAA,CAAM,MAAM,CAAA,CAAE,GAAG,CAAA,IAAA,CAAM,MAAA,KAAW,MAAA,GAAS,QAAA,GAAW,WAAW,GAAG,CAAA;AAEtE,EAAA,MAAM,SAAS,OAAA,CAAQ,OAAA;AAAA,IAAQ,CAAC,MAAA,KAC9B8B,gCAAA,CAAe,OAAA,CAAQ,MAAM,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,KAAA,MAAW,EAAE,GAAG,KAAA,EAAO,QAAO,CAAE;AAAA,GACvE;AACA,EAAA,MAAM,GAAA,GAAM,CAAC,KAAA,KACX,KAAA,EAAM,CAAE,QAAA,CAAS,KAAA,CAAM,EAAA,EAAI,KAAA,CAAM,GAAA,EAAK,KAAA,CAAM,MAAM,CAAA;AACpD,EAAA,MAAM,SAAS,MAAM;AAEnB,IAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,MAAA,KAAA,MAAW,QAAQD,gCAAA,EAAgB;AACjC,QAAA,MAAM,CAAA,GAAI,SAAS,QAAA,EAAS;AAC5B,QAAA,MAAM,GAAA,GAAM,MAAA,KAAW,MAAA,GAAS,CAAA,CAAE,OAAO,CAAA,CAAE,MAAA;AAC3C,QAAA,MAAM,MAAA,GAAS,CAAC,CAAA,KAAc,GAAA,CAAI,CAAC,MAAM,MAAA,KAAW,MAAA,GAAS,QAAA,GAAW,SAAA,EAAW,CAAC,CAAA;AACpF,QAAA,MAAM,CAAC,KAAK,CAAA,GAAIC,iCAAe,MAAA,EAAQ,CAAC,IAAI,CAAC,CAAA;AAC7C,QAAA,IAAI,OAAO,CAAA,CAAE,QAAA,CAAS,MAAM,EAAA,EAAI,KAAA,CAAM,KAAK,MAAM,CAAA;AAAA,MACnD;AAAA,IACF;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,OAAO,YAAY;AACvB,IAAA,IAAI,CAAC,MAAA,EAAQ;AACb,IAAA,SAAA,CAAU,IAAI,CAAA;AACd,IAAA,IAAI;AACF,MAAA,MAAM,GAAA,GAAM,MAAM,MAAA,EAAO;AACzB,MAAA,WAAA,CAAY,OAAO,GAAA,KAAQ,QAAA,GAAW,GAAA,GAAM,OAAO,CAAA;AAAA,IACrD,CAAA,CAAA,MAAQ;AAEN,MAAA,WAAA,CAAY,IAAI,CAAA;AAAA,IAClB,CAAA,SAAE;AACA,MAAA,SAAA,CAAU,KAAK,CAAA;AAAA,IACjB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,SAAA,GAAY,CAAC,CAAA,KAAqC;AACtD,IAAA,IAAI,EAAE,EAAE,OAAA,IAAW,CAAA,CAAE,YAAY,WAAA,CAAY,CAAA,CAAE,MAAM,CAAA,EAAG;AACxD,IAAA,MAAM,GAAA,GAAM,CAAA,CAAE,GAAA,CAAI,WAAA,EAAY;AAC9B,IAAA,IAAI,GAAA,KAAQ,GAAA,IAAO,CAAC,CAAA,CAAE,QAAA,EAAU;AAC9B,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,KAAA,GAAQ,IAAA,EAAK;AAAA,IACf,WAAY,GAAA,KAAQ,GAAA,IAAO,CAAA,CAAE,QAAA,IAAa,QAAQ,GAAA,EAAK;AACrD,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,KAAA,GAAQ,IAAA,EAAK;AAAA,IACf;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,SAAA,GAAY,CAAC,KAAA,KAAyBC,6BAAA,CAAY,KAAK,CAAA;AAC7D,EAAA,MAAM,QAAA,GAAW,QAAA,CAAS,CAAC,CAAA,KAAM,EAAE,QAAQ,CAAA;AAG3C,EAAA,MAAM,aAAA,GACJ,uRAAA;AACF,EAAA,MAAM,OAAA,mBACJ1B,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,WAAA,EACZ,QAAA,EAAA;AAAA,IAAA,OAAA,CAAQ,MAAA,GAAS,CAAA,oBAChBA,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,mCAAA,EAAoC,IAAA,EAAK,OAAA,EAAQ,YAAA,EAAW,SAAA,EACzE,QAAA,EAAA;AAAA,sBAAAF,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2CAAA,EAA4C,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,MACrE,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,qBACZA,cAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAEC,IAAA,EAAK,QAAA;AAAA,UACL,SAAS,MAAM,KAAA,EAAM,CAAE,WAAA,CAAY,EAAE,EAAE,CAAA;AAAA,UACvC,cAAA,EAAc,mBAAmB,CAAA,CAAE,EAAA;AAAA,UACnC,SAAA,EAAWC,KAAAA;AAAA,YACT,qKAAA;AAAA,YACA,cAAA,KAAmB,CAAA,CAAE,EAAA,GACjB,mDAAA,GACA;AAAA,WACN;AAAA,UACA,aAAA,EAAa,GAAA,CAAI,CAAA,OAAA,EAAU,CAAA,CAAE,EAAE,CAAA,CAAE,CAAA;AAAA,UAEhC,QAAA,EAAA,CAAA,CAAE;AAAA,SAAA;AAAA,QAZE,CAAA,CAAE;AAAA,OAcV;AAAA,KAAA,EACH,CAAA;AAAA,oBAEFC,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mCAAA,EACb,QAAA,EAAA;AAAA,sBAAAA,eAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAS,MAAM,KAAA,EAAM,CAAE,IAAA,EAAK;AAAA,UAC5B,UAAU,CAAC,OAAA;AAAA,UACX,SAAA,EAAW,aAAA;AAAA,UACX,mBAAA,EAAkB,kBAAA;AAAA,UAClB,aAAA,EAAa,IAAI,MAAM,CAAA;AAAA,UAEvB,QAAA,EAAA;AAAA,4BAAAF,cAAAA,CAAC6B,iBAAA,EAAA,EAAM,SAAA,EAAU,UAAA,EAAW,eAAW,IAAA,EAAC,CAAA;AAAA,YAAE;AAAA;AAAA;AAAA,OAC5C;AAAA,sBACA3B,eAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAS,MAAM,KAAA,EAAM,CAAE,IAAA,EAAK;AAAA,UAC5B,UAAU,CAAC,OAAA;AAAA,UACX,SAAA,EAAW,aAAA;AAAA,UACX,mBAAA,EAAkB,8BAAA;AAAA,UAClB,aAAA,EAAa,IAAI,MAAM,CAAA;AAAA,UAEvB,QAAA,EAAA;AAAA,4BAAAF,cAAAA,CAAC8B,iBAAA,EAAA,EAAM,SAAA,EAAU,UAAA,EAAW,eAAW,IAAA,EAAC,CAAA;AAAA,YAAE;AAAA;AAAA;AAAA,OAC5C;AAAA,sBACA5B,eAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAS,MAAM,KAAA,EAAM,CAAE,KAAA,EAAM;AAAA,UAC7B,SAAA,EAAW,aAAA;AAAA,UACX,aAAA,EAAa,IAAI,OAAO,CAAA;AAAA,UAExB,QAAA,EAAA;AAAA,4BAAAF,cAAAA,CAAC+B,qBAAA,EAAA,EAAU,SAAA,EAAU,UAAA,EAAW,eAAW,IAAA,EAAC,CAAA;AAAA,YAAE;AAAA;AAAA;AAAA,OAChD;AAAA,MACC,2BACC/B,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WACb,QAAA,kBAAAA,cAAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,SAAA;AAAA,UACN,KAAA,EAAO,WAAA;AAAA,UACP,OAAA,EAAS;AAAA,YACP,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,OAAA,EAAQ;AAAA,YACjC,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAO;AAAA,YAC/B,GAAI,OAAA,KAAY,OAAA,GAAU,CAAC,EAAE,KAAA,EAAO,MAAA,EAAiB,KAAA,EAAO,MAAA,EAAQ,CAAA,GAAI;AAAC,WAC3E;AAAA,UACA,QAAA,EAAU,cAAA;AAAA,UACV,MAAM,EAAC;AAAA,UACP,QAAQ,MAAM,MAAA;AAAA,UACd,MAAA,EAAQ,IAAI,cAAc;AAAA;AAAA,OAC5B,EACF;AAAA,KAAA,EAEJ;AAAA,GAAA,EACF,CAAA;AAIF,EAAA,MAAM,OAAA,GAAU,MAAA,CAAO,MAAA,GAAS,CAAA,oBAC9BE,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,0HAAA;AAAA,MACV,aAAA,EAAa,IAAI,kBAAkB,CAAA;AAAA,MAEnC,QAAA,EAAA;AAAA,wBAAAF,cAAAA,CAACgC,yBAAA,EAAA,EAAc,SAAA,EAAU,iBAAA,EAAkB,eAAW,IAAA,EAAC,CAAA;AAAA,wBACvD9B,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gBAAA,EACb,QAAA,EAAA;AAAA,UAAA,MAAA,CAAO,MAAA,KAAW,CAAA,GACf,gCAAA,GACA,CAAA,EAAG,OAAO,MAAM,CAAA,+BAAA,CAAA;AAAA,UAAmC,GAAA;AAAA,UAAI;AAAA,SAAA,EAE7D,CAAA;AAAA,wBACAA,eAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAS,MAAA;AAAA,YACT,SAAA,EAAU,0NAAA;AAAA,YACV,aAAA,EAAa,IAAI,SAAS,CAAA;AAAA,YAE1B,QAAA,EAAA;AAAA,8BAAAF,cAAAA,CAACiC,iBAAA,EAAA,EAAM,SAAA,EAAU,UAAA,EAAW,eAAW,IAAA,EAAC,CAAA;AAAA,cAAE;AAAA;AAAA;AAAA;AAC5C;AAAA;AAAA,GACF;AAGF,EAAA,MAAM,OAAA,GAAU,CAAC,EAAA,EAAkB,IAAA,qBACjC/B,eAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,iBAAA,EAAiB,GAAA,CAAI,CAAA,QAAA,EAAW,EAAE,CAAA,MAAA,CAAQ,CAAA;AAAA,MAC1C,SAAA,EAAU,6CAAA;AAAA,MACV,aAAA,EAAa,GAAA,CAAI,CAAA,QAAA,EAAW,EAAE,CAAA,CAAE,CAAA;AAAA,MAEhC,QAAA,EAAA;AAAA,wBAAAF,cAAAA,CAAC,IAAA,EAAA,EAAG,EAAA,EAAI,GAAA,CAAI,CAAA,QAAA,EAAW,EAAE,CAAA,MAAA,CAAQ,CAAA,EAAG,SAAA,EAAU,uCAAA,EAC3C,QAAA,EAAA,YAAA,CAAa,EAAE,EAAE,KAAA,EACpB,CAAA;AAAA,wBACAA,eAAC,GAAA,EAAA,EAAE,SAAA,EAAU,6CAA6C,QAAA,EAAA,YAAA,CAAa,EAAE,EAAE,OAAA,EAAQ,CAAA;AAAA,wBACnFA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAa,QAAA,EAAA,IAAA,EAAK;AAAA;AAAA;AAAA,GACnC;AAGF,EAAA,MAAM,MAAA,GAAS,CAAC,GAAA,EAAa,KAAA,EAAe,SAAsB,OAAA,KAAY;AAC5E,IAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,MAAM,CAAA,CAAE,GAAG,CAAA;AACjC,IAAA,uBACEA,cAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QAEC,KAAA;AAAA,QACA,SAAA,EAAU,qDAAA;AAAA,QACV,OAAO,EAAE,UAAA,EAAY,QAAQkC,4BAAA,CAAW,KAAK,IAAI,aAAA;AAAc,OAAA;AAAA,MAH1D,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,GAAG,CAAA;AAAA,KAIvB;AAAA,EAEJ,CAAA;AAGA,EAAA,MAAM,aAAA,GAAgBC,mCAAiB,KAAK,CAAA;AAC5C,EAAA,MAAM,WAAA,GACJ,KAAK,GAAA,CAAI,MAAA,CAAO,MAAM,CAAA,GAAI,IAAA,GACtB,SAAA,GACA,CAAA,EAAG,MAAA,CAAO,MAAA,GAAS,IAAI,MAAA,GAAS,MAAM,CAAA,CAAA,EAAI,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,IAAI,MAAA,CAAO,MAAM,CAAA,GAAI,GAAG,CAAC,CAAA,CAAA,CAAA;AAEzF,EAAA,MAAM,KAAA,GAAQ,OAAA;AAAA,IACZ,OAAA;AAAA,oBACAjC,gBAAAkC,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAApC,cAAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,gBAAA;AAAA,UACN,IAAA,EAAK,qDAAA;AAAA,UACL,OAAO,MAAA,CAAO,OAAA;AAAA,UACd,QAAA,EAAU,CAAC,CAAA,KAAM,QAAA,CAAS,WAAW,CAAC,CAAA;AAAA,UACtC,IAAA,EAAM,UAAU,SAAS,CAAA;AAAA,UACzB,MAAA,EAAQ,OAAA;AAAA,UACR,OAAA,EAAS,EAAE,KAAA,EAAO,GAAA,CAAI,eAAe,CAAA,EAAG,GAAA,EAAK,GAAA,CAAI,aAAa,CAAA;AAAE;AAAA,OAClE;AAAA,sBACAA,cAAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,eAAA;AAAA,UACN,IAAA,EAAK,kDAAA;AAAA,UACL,OAAO,MAAA,CAAO,MAAA;AAAA,UACd,QAAA,EAAU,CAAC,CAAA,KAAM,QAAA,CAAS,UAAU,CAAC,CAAA;AAAA,UACrC,IAAA,EAAM,UAAU,QAAQ,CAAA;AAAA,UACxB,MAAA,EAAQ,OAAA;AAAA,UACR,OAAA,EAAS,EAAE,KAAA,EAAO,GAAA,CAAI,cAAc,CAAA,EAAG,GAAA,EAAK,GAAA,CAAI,YAAY,CAAA;AAAE;AAAA,OAChE;AAAA,sBACAA,cAAAA;AAAA,QAAC,WAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,eAAA;AAAA,UACN,SAAA,EAAW,MAAA,KAAW,CAAA,GAAI,QAAA,GAAW,GAAG,MAAM,CAAA,GAAA,CAAA;AAAA,UAC9C,KAAA,EAAO,MAAA;AAAA,UACP,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,GAAA;AAAA,UACL,IAAA,EAAM,KAAA;AAAA,UACN,UAAU,CAAC,CAAA,KAAM,KAAA,EAAM,CAAE,UAAU,CAAC,CAAA;AAAA,UACpC,IAAA,EAAM,CAAC,QAAA,EAAU,OAAO,CAAA;AAAA,UACxB,IAAA,EAAM,CAAC,MAAM,CAAA;AAAA,UACb,MAAA,EAAQ,OAAA;AAAA,UACR,MAAA,EAAQ,IAAI,QAAQ;AAAA;AAAA,OACtB;AAAA,sBACAA,cAAAA;AAAA,QAAC,WAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,kBAAA;AAAA,UACN,KAAA,EAAO,eAAe,EAAA,IAAM,EAAA;AAAA,UAC5B,OAAA,EAAS;AAAA,YACP,GAAI,aAAA,GAAgB,EAAC,GAAI,CAAC,EAAE,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,QAAA,EAAU,CAAA;AAAA,YACxD,GAAGqC,+BAAA,CAAc,GAAA,CAAI,CAAC,CAAA,MAAO,EAAE,KAAA,EAAO,CAAA,CAAE,EAAA,EAAI,KAAA,EAAO,CAAA,CAAE,KAAA,EAAM,CAAE;AAAA,WAC/D;AAAA,UACA,UAAU,CAAC,EAAA,KAAO,KAAA,EAAM,CAAE,eAAe,EAAE,CAAA;AAAA,UAC3C,IAAA,EAAM,CAAC,YAAA,EAAc,SAAS,CAAA;AAAA,UAC9B,MAAA,EAAQ,OAAA;AAAA,UACR,MAAA,EAAQ,IAAI,cAAc,CAAA;AAAA,UAC1B,IAAA,EAAM,eAAe,WAAA,IAAe;AAAA;AAAA,OACtC;AAAA,sBACAnC,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BAAA,EACb,QAAA,EAAA;AAAA,wBAAAF,cAAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,UAAA;AAAA,YACN,OAAO,KAAA,CAAM,OAAA;AAAA,YACb,OAAA,EAAS,WAAA;AAAA,cACP,KAAA,CAAM,OAAA;AAAA,cACNqC,+BAAA,CAAc,QAAQ,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,OAAA,EAAS,CAAA,CAAE,IAAI,CAAC;AAAA,aAClD;AAAA,YACA,UAAU,CAAC,CAAA,KAAM,OAAM,CAAE,OAAA,CAAQ,WAAW,CAAC,CAAA;AAAA,YAC7C,IAAA,EAAM,CAAC,YAAY,CAAA;AAAA,YACnB,MAAA,EAAQ,OAAA;AAAA,YACR,MAAA,EAAQ,IAAI,mBAAmB;AAAA;AAAA,SACjC;AAAA,wBACArC,cAAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,WAAA;AAAA,YACN,OAAO,KAAA,CAAM,IAAA;AAAA,YACb,OAAA,EAAS,WAAA;AAAA,cACP,KAAA,CAAM,IAAA;AAAA,cACNqC,+BAAA,CAAc,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,IAAI;AAAA,aACjC;AAAA,YACA,UAAU,CAAC,CAAA,KAAM,OAAM,CAAE,OAAA,CAAQ,QAAQ,CAAC,CAAA;AAAA,YAC1C,IAAA,EAAM,CAAC,SAAS,CAAA;AAAA,YAChB,MAAA,EAAQ,OAAA;AAAA,YACR,MAAA,EAAQ,IAAI,gBAAgB;AAAA;AAAA;AAC9B,OAAA,EACF;AAAA,KAAA,EACF;AAAA,GACF;AAEA,EAAA,MAAM,QAAA,GAAW,OAAA;AAAA,IACf,UAAA;AAAA,oBACAnC,gBAAAkC,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAApC,cAAAA;AAAA,QAAC,WAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,cAAA;AAAA,UACN,SAAA,EAAW,WAAA;AAAA,UACX,OAAO,MAAA,CAAO,MAAA;AAAA,UACd,GAAA,EAAK,EAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,IAAA,EAAM,IAAA;AAAA,UACN,QAAA,EAAU,CAAC,CAAA,KAAM,QAAA,CAAS,UAAU,CAAC,CAAA;AAAA,UACrC,IAAA,EAAM,CAAC,MAAA,EAAQ,MAAM,CAAA;AAAA,UACrB,IAAA,EAAM,UAAU,QAAQ,CAAA;AAAA,UACxB,MAAA,EAAQ,OAAA;AAAA,UACR,MAAA,EAAQ,IAAI,QAAQ;AAAA;AAAA,OACtB;AAAA,sBACAE,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAF,cAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,0CAAA,EAA2C,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,wBAC/DA,cAAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,SAAA;AAAA,YACN,OAAO,MAAA,CAAO,OAAA;AAAA,YACd,OAAA,EAAS;AAAA,cACP,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,OAAA,EAAQ;AAAA,cACjC,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,aAAA;AAAc,aACzC;AAAA,YACA,QAAA,EAAU,CAAC,CAAA,KAAM,QAAA,CAAS,WAAW,CAAC,CAAA;AAAA,YACtC,IAAA,EAAM,UAAU,SAAS,CAAA;AAAA,YACzB,MAAA,EAAQ,OAAA;AAAA,YACR,MAAA,EAAQ,IAAI,eAAe;AAAA;AAAA;AAC7B,OAAA,EACF,CAAA;AAAA,sBACAE,eAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACE,GAAG,SAAA;AAAA,YACF,iBAAiB,GAAA,CAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;AAAA,YAC/B;AAAA,WACF;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAAF,cAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,oCAAA,EAAqC,QAAA,EAAA,uBAAA,EAAqB,CAAA;AAAA,4BACvEA,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0BAAyB,aAAA,EAAa,GAAA,CAAI,kBAAkB,CAAA,EACxE,QAAA,EAAA,gBAAA,CAAiB,IAAI,CAAC,CAAC,KAAK,KAAK,CAAA,KAAM,OAAO,GAAA,EAAK,KAAK,CAAC,CAAA,EAC5D;AAAA;AAAA;AAAA;AACF,KAAA,EACF;AAAA,GACF;AAEA,EAAA,MAAM,IAAA,GAAO,OAAA;AAAA,IACX,MAAA;AAAA,oBACAA,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,gCAAA,EAAiC,aAAA,EAAa,GAAA,CAAI,eAAe,CAAA,EAC5E,QAAA,EAAA0B,gCAAA,CAAe,GAAA,CAAI,CAAC,yBACnBxB,eAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QAEC,SAAA,EAAU,wCAAA;AAAA,QACT,GAAG,UAAU,CAAC,IAAA,CAAK,IAAI,IAAA,CAAK,EAAE,GAAG,OAAO,CAAA;AAAA,QAEzC,QAAA,EAAA;AAAA,0BAAAF,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gCAAA,EAAkC,eAAK,KAAA,EAAM,CAAA;AAAA,UAC5D,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW;AACvB,YAAA,MAAM,MAAA,GAAS,QAAQ,MAAM,CAAA;AAC7B,YAAA,MAAM,EAAA,GAAK,MAAA,CAAO,IAAA,CAAK,EAAE,CAAA;AACzB,YAAA,MAAM,EAAA,GAAK,MAAA,CAAO,IAAA,CAAK,EAAE,CAAA;AACzB,YAAA,MAAM,QAAQ,EAAA,IAAM,EAAA,GAAKsC,+BAAA,CAAc,EAAA,EAAI,EAAE,CAAA,GAAI,IAAA;AACjD,YAAA,MAAM,QAAQ,MAAA,CAAO,IAAA;AAAA,cACnB,CAAC,CAAA,KAAM,CAAA,CAAE,MAAA,KAAW,MAAA,IAAU,CAAA,CAAE,EAAA,KAAO,IAAA,CAAK,EAAA,IAAM,CAAA,CAAE,EAAA,KAAO,IAAA,CAAK;AAAA,aAClE;AACA,YAAA,MAAM,IAAA,GAAO,OAAA,GAAW,MAAA,KAAW,MAAA,GAAS,UAAU,QAAA,GAAY,EAAA;AAClE,YAAA,IAAI,UAAU,IAAA,EAAM;AAClB,cAAA,uBACEpC,eAAAA,CAAC,MAAA,EAAA,EAAkB,SAAA,EAAU,+BAAA,EAC1B,QAAA,EAAA;AAAA,gBAAA,IAAA;AAAA,gBAAK;AAAA,eAAA,EAAA,EADG,MAEX,CAAA;AAAA,YAEJ;AACA,YAAA,OAAO,wBACLA,eAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBAEC,IAAA,EAAK,QAAA;AAAA,gBACL,OAAA,EAAS,MAAM,GAAA,CAAI,KAAK,CAAA;AAAA,gBACxB,SAAA,EAAU,uNAAA;AAAA,gBACV,YAAA,EAAY,GAAG,IAAA,CAAK,KAAK,GAAG,IAAA,GAAO,CAAA,EAAA,EAAK,KAAK,IAAA,EAAK,CAAE,aAAa,CAAA,CAAA,GAAK,EAAE,CAAA,EAAA,EAAK,KAAA,CAAM,QAAQ,CAAC,CAAC,CAAA,aAAA,EAAgB,IAAA,CAAK,GAAG,CAAA,KAAA,CAAA;AAAA,gBACrH,aAAA,EAAa,GAAA,CAAI,CAAA,IAAA,EAAO,IAAA,CAAK,EAAE,IAAI,IAAA,CAAK,EAAE,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE,CAAA;AAAA,gBAErD,QAAA,EAAA;AAAA,kBAAA,IAAA;AAAA,kBACA,KAAA,CAAM,QAAQ,CAAC,CAAA;AAAA,kBAAE;AAAA;AAAA,eAAA;AAAA,cARb;AAAA,gCAWPA,eAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBAEC,SAAA,EAAU,oIAAA;AAAA,gBAEV,QAAA,EAAA;AAAA,kCAAAF,cAAAA,CAACuC,iBAAA,EAAA,EAAM,SAAA,EAAU,QAAA,EAAS,eAAW,IAAA,EAAC,CAAA;AAAA,kBACrC,IAAA;AAAA,kBACA,KAAA,CAAM,QAAQ,CAAC,CAAA;AAAA,kBAAE;AAAA;AAAA,eAAA;AAAA,cALb;AAAA,aAMP;AAAA,UAEJ,CAAC;AAAA;AAAA,OAAA;AAAA,MA3CI,CAAA,EAAG,IAAA,CAAK,EAAE,CAAA,CAAA,EAAI,KAAK,EAAE,CAAA;AAAA,KA6C7B,CAAA,EACH;AAAA,GACF;AAEA,EAAA,MAAM,MAAA,GAAS,OAAA;AAAA,IACb,QAAA;AAAA,oBACArC,gBAAAkC,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAApC,cAAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,QAAA;AAAA,UACN,IAAA,EAAK,8BAAA;AAAA,UACL,OAAO,MAAA,CAAO,MAAA;AAAA,UACd,QAAA,EAAU,CAAC,CAAA,KAAM,QAAA,CAAS,UAAU,CAAC,CAAA;AAAA,UACrC,IAAA,EAAM,UAAU,QAAQ,CAAA;AAAA,UACxB,MAAA,EAAQ,OAAA;AAAA,UACR,OAAA,EAAS,EAAE,KAAA,EAAO,GAAA,CAAI,cAAc,CAAA,EAAG,GAAA,EAAK,GAAA,CAAI,YAAY,CAAA;AAAE;AAAA,OAChE;AAAA,sBACAA,cAAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,SAAA;AAAA,UACN,IAAA,EAAK,+BAAA;AAAA,UACL,OAAO,MAAA,CAAO,OAAA;AAAA,UACd,QAAA,EAAU,CAAC,CAAA,KAAM,QAAA,CAAS,WAAW,CAAC,CAAA;AAAA,UACtC,IAAA,EAAM,UAAU,SAAS,CAAA;AAAA,UACzB,MAAA,EAAQ,OAAA;AAAA,UACR,OAAA,EAAS,EAAE,KAAA,EAAO,GAAA,CAAI,eAAe,CAAA,EAAG,GAAA,EAAK,GAAA,CAAI,aAAa,CAAA;AAAE;AAAA,OAClE;AAAA,sBACAA,cAAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,SAAA;AAAA,UACN,IAAA,EAAK,uBAAA;AAAA,UACL,OAAO,MAAA,CAAO,OAAA;AAAA,UACd,QAAA,EAAU,CAAC,CAAA,KAAM,QAAA,CAAS,WAAW,CAAC,CAAA;AAAA,UACtC,IAAA,EAAM,UAAU,SAAS,CAAA;AAAA,UACzB,MAAA,EAAQ,OAAA;AAAA,UACR,OAAA,EAAS,EAAE,KAAA,EAAO,GAAA,CAAI,eAAe,CAAA,EAAG,GAAA,EAAK,GAAA,CAAI,aAAa,CAAA;AAAE;AAAA;AAClE,KAAA,EACF;AAAA,GACF;AAEA,EAAA,MAAM,MAAA,GAAS,OAAA;AAAA,IACb,QAAA;AAAA,oBACAE,gBAAAkC,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAApC,cAAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,eAAA;AAAA,UACN,OAAO,MAAA,CAAO,MAAA;AAAA,UACd,OAAA,EAAS;AAAA,YACP,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,2BAAA,EAA4B;AAAA,YAC1D,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,eAAA;AAAgB,WAC9C;AAAA,UACA,QAAA,EAAU,CAAC,CAAA,KAAM,QAAA,CAAS,UAAU,CAAC,CAAA;AAAA,UACrC,IAAA,EAAM,UAAU,QAAQ,CAAA;AAAA,UACxB,MAAA,EAAQ,OAAA;AAAA,UACR,MAAA,EAAQ,IAAI,aAAa;AAAA;AAAA,OAC3B;AAAA,sBACAA,cAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,cAAA;AAAA,UACV,aAAA,EAAa,IAAI,gBAAgB,CAAA;AAAA,UAChC,GAAG,SAAA,CAAU,UAAA,EAAY,OAAO,CAAA;AAAA,UAEhC,QAAA,EAAA,UAAA,CAAW,GAAA,CAAI,CAAC,GAAA,EAAK,CAAA,KAAM,MAAA,CAAO,GAAA,EAAK,CAAA,OAAA,EAAU,CAAA,GAAI,CAAC,CAAA,CAAE,CAAC;AAAA;AAAA;AAC5D,KAAA,EACF;AAAA,GACF;AAGA,EAAA,MAAM,UAAA,GAA0B,WAAA,KAAgB,MAAA,GAAS,MAAA,GAAS,OAAA;AAClE,EAAA,MAAM,MAAA,GAAS,CAAC,GAAG,IAAI,GAAA,CAAI,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,KAAK,CAAC,CAAC,CAAA;AACtD,EAAA,MAAM,2BACJE,eAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,iBAAA,EAAiB,IAAI,wBAAwB,CAAA;AAAA,MAC7C,SAAA,EAAU,6CAAA;AAAA,MACV,aAAA,EAAa,IAAI,kBAAkB,CAAA;AAAA,MAEnC,QAAA,EAAA;AAAA,wBAAAA,eAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,SAAS,MAAM,eAAA,CAAgB,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA;AAAA,YACxC,eAAA,EAAe,YAAA;AAAA,YACf,eAAA,EAAe,IAAI,UAAU,CAAA;AAAA,YAC7B,SAAA,EAAU,kIAAA;AAAA,YACV,aAAA,EAAa,IAAI,iBAAiB,CAAA;AAAA,YAElC,QAAA,EAAA;AAAA,8BAAAA,gBAAC,MAAA,EAAA,EACC,QAAA,EAAA;AAAA,gCAAAF,cAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,EAAA,EAAI,IAAI,wBAAwB,CAAA;AAAA,oBAChC,SAAA,EAAU,6CAAA;AAAA,oBAET,uBAAa,QAAA,CAAS;AAAA;AAAA,iBACzB;AAAA,gCACAA,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,4CAAA,EACb,QAAA,EAAA,YAAA,CAAa,SAAS,OAAA,EACzB;AAAA,eAAA,EACF,CAAA;AAAA,8BACAA,cAAAA;AAAA,gBAACwC,uBAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAWvC,KAAAA,CAAG,sCAAA,EAAwC,YAAA,IAAgB,YAAY,CAAA;AAAA,kBAClF,aAAA,EAAW;AAAA;AAAA;AACb;AAAA;AAAA,SACF;AAAA,QACC,YAAA,oBACCC,eAAAA,CAAC,KAAA,EAAA,EAAI,EAAA,EAAI,GAAA,CAAI,UAAU,CAAA,EAAG,SAAA,EAAU,gBAAA,EAAiB,aAAA,EAAa,GAAA,CAAI,UAAU,CAAA,EAC7E,QAAA,EAAA;AAAA,UAAA,OAAA,oBACCA,eAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,+BAAA,EAAgC,QAAA,EAAA;AAAA,YAAA,cAAA;AAAA,YAC9B,UAAA;AAAA,YAAW;AAAA,WAAA,EAC1B,CAAA;AAAA,UAED,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,qBACXA,eAAAA,CAAC,KAAA,EAAA,EAAgB,SAAA,EAAU,WAAA,EAAY,aAAA,EAAa,GAAA,CAAI,CAAA,MAAA,EAAS,KAAK,EAAE,CAAA,EACtE,QAAA,EAAA;AAAA,4BAAAF,eAAC,GAAA,EAAA,EAAE,SAAA,EAAU,2EACV,QAAA,EAAA,WAAA,CAAY,KAAK,KAAK,KAAA,EACzB,CAAA;AAAA,YACC,MAAA,CACE,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,KAAU,KAAK,CAAA,CAC/B,GAAA,CAAI,CAAC,CAAA,qBACJA,cAAAA;AAAA,cAAC,UAAA;AAAA,cAAA;AAAA,gBAEC,OAAO,CAAA,CAAE,KAAA;AAAA,gBACT,KAAA,EAAO,KAAA,CAAM,UAAU,CAAA,CAAE,CAAA,CAAE,GAAG,CAAA,IAAK,OAAA,CAAQ,UAAU,CAAA,CAAE,CAAA,CAAE,GAAG,CAAA,IAAK,SAAA;AAAA,gBACjE,QAAA,EAAU,CAAC,CAAA,KAAM,KAAA,GAAQ,QAAA,CAAS,CAAA,CAAE,GAAA,EAAK,CAAA,EAAG,UAAU,CAAA;AAAA,gBACtD,IAAA,EAAM,CAAC,CAAA,CAAE,GAAG,CAAA;AAAA,gBACZ,MAAA,EAAQ,OAAA;AAAA,gBACR,OAAA,EAAS,EAAE,KAAA,EAAO,GAAA,CAAI,SAAS,CAAA,CAAE,GAAG,CAAA,CAAE,CAAA,EAAG,KAAK,GAAA,CAAI,CAAA,UAAA,EAAa,CAAA,CAAE,GAAG,EAAE,CAAA,EAAE;AAAA,gBACxE,UACE,SAAA,CAAU,QAAA,CAAS,CAAA,CAAE,GAAG,qBACtBA,cAAAA;AAAA,kBAAC,QAAA;AAAA,kBAAA;AAAA,oBACC,IAAA,EAAK,QAAA;AAAA,oBACL,SAAS,MAAM,KAAA,EAAM,CAAE,aAAA,CAAc,EAAE,GAAG,CAAA;AAAA,oBAC1C,SAAA,EAAU,wLAAA;AAAA,oBACV,YAAA,EAAY,CAAA,MAAA,EAAS,CAAA,CAAE,KAAK,CAAA,2BAAA,CAAA;AAAA,oBAC5B,aAAA,EAAa,GAAA,CAAI,CAAA,YAAA,EAAe,CAAA,CAAE,GAAG,CAAA,CAAE,CAAA;AAAA,oBACxC,QAAA,EAAA;AAAA;AAAA;AAED,eAAA;AAAA,cAjBC,CAAA,CAAE;AAAA,aAqBV;AAAA,WAAA,EAAA,EA7BK,KA8BV,CACD,CAAA;AAAA,0BACDE,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,4BAAAF,cAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,yEAAA,EAA0E,QAAA,EAAA,aAAA,EAEvF,CAAA;AAAA,YACE,CAAC,SAAA,EAAW,MAAM,CAAA,CAAY,GAAA,CAAI,CAAC,KAAA,qBACnCE,eAAAA,CAAC,OAAA,EAAA,EAAkB,SAAA,EAAU,2CAAA,EAC1B,QAAA,EAAA;AAAA,cAAA,KAAA,KAAU,YAAY,gBAAA,GAAmB,YAAA;AAAA,8BAC1CF,cAAAA;AAAA,gBAAC,OAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO,MAAM,KAAK,CAAA;AAAA,kBAClB,QAAA,EAAU,CAAC,CAAA,KAAM,KAAA,GAAQ,OAAA,CAAQ,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,KAAK,CAAA;AAAA,kBACtD,UAAA,EAAY,KAAA;AAAA,kBACZ,SAAA,EAAU,6KAAA;AAAA,kBACV,aAAA,EAAa,GAAA,CAAI,KAAA,KAAU,SAAA,GAAY,iBAAiB,WAAW;AAAA;AAAA;AACrE,aAAA,EAAA,EARU,KASZ,CACD;AAAA,WAAA,EACH;AAAA,SAAA,EACF;AAAA;AAAA;AAAA,GAEJ;AAGF,EAAA,MAAM,QAAA,mBACJE,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,WAAA,EACZ,QAAA,EAAA;AAAA,IAAA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GAAA,EACH,CAAA;AAGF,EAAA,MAAM,UAAA,GAAa,CAAC,MAAA,EAAqB,MAAA,EAAgB,4BACvDF,cAAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MAEC,MAAA,EAAQ,MAAM,MAAM,CAAA;AAAA,MACpB,KAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA;AAAA,MACA,MAAA,EAAQ,aAAA;AAAA,MACR,OAAO,OAAA,EAAS,KAAA;AAAA,MAChB,UAAU,OAAA,EAAS,QAAA;AAAA,MACnB;AAAA,KAAA;AAAA,IAVK;AAAA,GAWP;AAEF,EAAA,MAAM,QAAA,GAAW,CAAC,OAAA,KAAqB;AACrC,IAAA,MAAM,KAAA,GACJ,WAAA,KAAgB,MAAA,IAAU,OAAA,GACtB,CAAC,OAAA,EAAS,MAAM,CAAA,GAChB,CAAC,OAAA,GAAW,WAAA,GAA8B,OAAO,CAAA;AACvD,IAAA,uBACEE,gBAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAY,YAAA,EAAW,cAAA,EAAe,MAAK,OAAA,EACxD,QAAA,EAAA;AAAA,sBAAAA,eAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,+BAAA,EAAgC,aAAU,QAAA,EAAS,QAAA,EAAA;AAAA,QAAA,cAAA;AAAA,QACjD,KAAA,CAAM,SAAS,CAAA,GAAI,kBAAA,GAAqB,UAAU,CAAA,EAAA,EAAK,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA,GAAK,EAAA;AAAA,QAAG;AAAA,OAAA,EAEtF,CAAA;AAAA,MACC,KAAA,CAAM,GAAA;AAAA,QAAI,CAAC,MAAA,EAAQ,CAAA,KAClB,UAAA,CAAW,QAAQ,CAAA,KAAM,CAAA,GAAI,GAAA,CAAI,SAAS,IAAI,GAAA,CAAI,CAAA,QAAA,EAAW,MAAM,CAAA,CAAE,GAAG,OAAO;AAAA;AACjF,KAAA,EACF,CAAA;AAAA,EAEJ,CAAA;AAEA,EAAA,MAAM,UAAU,MAAA,oBACdA,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,eAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,OAAA,EAAS,MAAM,KAAK,IAAA,EAAK;AAAA,QACzB,QAAA,EAAU,MAAA;AAAA,QACV,SAAA,EAAU,2NAAA;AAAA,QACV,aAAA,EAAa,IAAI,MAAM,CAAA;AAAA,QAEtB,QAAA,EAAA;AAAA,UAAA,QAAA,mBAAWF,cAAAA,CAACuC,iBAAA,EAAA,EAAM,SAAA,EAAU,QAAA,EAAS,oBAAKvC,cAAAA,CAACyC,gBAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,CAAA;AAAA,UACnE,MAAA,GAAS,cAAA,GAAY,QAAA,GAAW,OAAA,GAAU;AAAA;AAAA;AAAA,KAC7C;AAAA,IACC,QAAA,oBACCvC,eAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,+BAAA,EAAgC,aAAA,EAAa,GAAA,CAAI,KAAK,CAAA,EAAG,QAAA,EAAA;AAAA,MAAA,aAAA;AAAA,MAC3D;AAAA,KAAA,EACd;AAAA,GAAA,EAEJ,CAAA;AAIF,EAAA,IAAI,YAAY,WAAA,EAAa;AAC3B,IAAA,MAAM,UAAA,GAAa,IAAI,UAAU,CAAA;AACjC,IAAA,uBACEA,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,sBAAA,EAAuB,aAAA,EAAa,cAAc,SAAA,EAC9D,QAAA,EAAA;AAAA,MAAA,OAAA;AAAA,MACA,OAAA;AAAA,sBACDA,eAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,SAAS,MAAM,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA;AAAA,UAChC,eAAA,EAAe,IAAA;AAAA,UACf,eAAA,EAAe,UAAA;AAAA,UACf,SAAA,EAAU,iKAAA;AAAA,UACV,aAAA,EAAa,IAAI,WAAW,CAAA;AAAA,UAE5B,QAAA,EAAA;AAAA,4BAAAF,cAAAA;AAAA,cAACwC,uBAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAWvC,KAAAA,CAAG,6BAAA,EAA+B,IAAA,IAAQ,YAAY,CAAA;AAAA,gBACjE,aAAA,EAAW;AAAA;AAAA,aACb;AAAA,YAAE;AAAA;AAAA;AAAA,OAEJ;AAAA,MACC,wBACCC,eAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,UAAA;AAAA,UACJ,SAAA,EAAU,6HAAA;AAAA,UACV,aAAA,EAAa,IAAI,UAAU,CAAA;AAAA,UAE1B,QAAA,EAAA;AAAA,YAAA,QAAA;AAAA,4BACDF,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,wCAAA,EAA0C,QAAA,EAAA,QAAA,CAAS,IAAI,CAAA,EAAE;AAAA;AAAA;AAAA,OAC1E;AAAA,MAED;AAAA,KAAA,EACH,CAAA;AAAA,EAEJ;AAGA,EAAA,IAAI,YAAY,QAAA,EAAU;AACxB,IAAA,uBACEE,eAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,yEAAA;AAAA,QACV,aAAA,EAAa,YAAA;AAAA,QACb,SAAA;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAF,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,oDAAA,EAAqD,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,UACvE,OAAA;AAAA,UACA,OAAA;AAAA,UACA,SAAS,IAAI,CAAA;AAAA,UACb,QAAA;AAAA,UACA;AAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AAGA,EAAA,uBACEE,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,sBAAA,EAAuB,aAAA,EAAa,cAAc,SAAA,EAC9D,QAAA,EAAA;AAAA,IAAA,OAAA;AAAA,IACA,OAAA;AAAA,oBACDA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yDAAA,EACb,QAAA,EAAA;AAAA,sBAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EACZ,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QACA;AAAA,OAAA,EACH,CAAA;AAAA,sBAEAF,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,oEAAA,EACZ,QAAA,EAAA,QAAA,CAAS,KAAK,CAAA,EACjB;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ","file":"chunk-2W5E62EY.cjs","sourcesContent":["/**\n * The theme editor's live preview: real blocks and `@arbidocs/react` parts (buttons, a field, a\n * card, tabs, a sidebar row, the step bar, a dashboards chart, a toast, badges and alerts), not\n * swatches, painted with the theme being edited.\n *\n * The preview is scoped: its root carries the theme's variables inline (both halves of every\n * token, `themeCssVars`, plus fonts and radius), so it can show the light and the dark set side by\n * side whatever the page itself is in. A dark root also carries the `dark` class so `dark:`\n * variants apply. `highlight` outlines the parts a hovered or focused control changes and dims the\n * rest. The preview is `inert`: it is a picture of the parts, not a second set of controls.\n */\nimport { useMemo, type CSSProperties, type ReactNode } from 'react'\nimport { Bell, FileText, Home, Inbox } from 'lucide-react'\nimport { Button, Card, CardContent, CardHeader, CardTitle, Input, cn } from '@arbidocs/react/ui'\nimport { Tabs } from '../components/Tabs'\nimport { Chart } from '../components/Chart'\nimport { ToneBadge } from '../components/ToneBadge'\nimport { Callout } from '../components/Callout'\nimport { Sidebar } from '../shell/Sidebar'\nimport { ProgressChevron, ProgressChevronBar } from '../agents/workflows/ProgressChevron'\nimport { themeCssVars, themeMetaVars, type ThemeFonts } from './tokens'\nimport type { ColorScheme } from './derive'\nimport type { PreviewPart } from './editorModel'\nimport { DEFAULT_THEME_PREVIEW_LABELS, type ThemePreviewLabels } from './previewLabels'\n\nexport interface ThemePreviewProps {\n colors: Record<string, string>\n fonts: ThemeFonts\n radius: number\n scheme: ColorScheme\n /** The parts to outline; `null` when no control is hovered or focused. */\n highlight?: ReadonlySet<PreviewPart> | null\n /** One column of parts (a narrow drawer) instead of a two-column grid. */\n compact?: boolean\n labels?: Partial<ThemePreviewLabels>\n /** A heading over the parts, e.g. the host's name. */\n title?: string\n subtitle?: string\n testId?: string\n}\n\n/** The preview is inert; its rows need a handler only to satisfy the part's contract. */\nconst noop = () => undefined\n\n/**\n * Whether the page aliases Tailwind's `--radius-sm/md` to `--radius` (the ARBI app does); then the\n * scoped preview re-declares them, since an alias declared on `:root` does not follow a `--radius`\n * set lower down.\n */\nfunction radiusAliased(): boolean {\n if (typeof document === 'undefined' || typeof getComputedStyle !== 'function') return false\n const root = getComputedStyle(document.documentElement)\n const base = root.getPropertyValue('--radius').trim()\n return base !== '' && root.getPropertyValue('--radius-md').trim() === base\n}\n\nexport function ThemePreview({\n colors,\n fonts,\n radius,\n scheme,\n highlight = null,\n compact = false,\n labels: labelOverrides,\n title,\n subtitle,\n testId = 'theme-preview',\n}: ThemePreviewProps) {\n const labels = { ...DEFAULT_THEME_PREVIEW_LABELS, ...labelOverrides }\n const aliased = useMemo(radiusAliased, [])\n const style = useMemo(() => {\n const vars: Record<string, string> = {\n ...themeCssVars(colors),\n ...themeMetaVars({ fonts, radius }),\n }\n if (aliased) {\n vars['--radius-sm'] = `${radius}rem`\n vars['--radius-md'] = `${radius}rem`\n }\n return vars as CSSProperties\n }, [colors, fonts, radius, aliased])\n\n const part = (id: PreviewPart, children: ReactNode, className?: string) => (\n <div\n data-preview-part={id}\n data-highlighted={highlight?.has(id) || undefined}\n className={cn(\n 'min-w-0 rounded-[calc(var(--radius)+4px)] transition-opacity duration-150 motion-reduce:transition-none',\n highlight && !highlight.has(id) && 'opacity-30',\n highlight?.has(id) && 'outline-2 outline-offset-4 outline-dashed outline-foreground',\n className\n )}\n >\n {children}\n </div>\n )\n\n return (\n <div\n inert\n data-testid={testId}\n data-scheme={scheme}\n style={style}\n className={cn(\n scheme === 'dark' && 'dark',\n '@container min-w-0 rounded-lg border border-border bg-background p-4 font-sans text-foreground',\n highlight?.has('page') && 'outline-2 outline-offset-2 outline-dashed outline-foreground'\n )}\n >\n <div className=\"mb-4\">\n <p className=\"font-display text-lg font-semibold leading-tight\">{title ?? labels.title}</p>\n <p className=\"text-xs text-muted-foreground\">{subtitle ?? labels.subtitle}</p>\n </div>\n <div className={cn('grid gap-4', !compact && '@lg:grid-cols-2')}>\n <div className=\"flex min-w-0 flex-col gap-4\">\n {part(\n 'buttons',\n <div className=\"flex flex-wrap gap-2\">\n <Button size=\"sm\">{labels.primaryAction}</Button>\n <Button size=\"sm\" variant=\"accent\">\n {labels.accentAction}\n </Button>\n <Button size=\"sm\" variant=\"secondary\">\n {labels.secondaryAction}\n </Button>\n <Button size=\"sm\" variant=\"outline\">\n {labels.outlineAction}\n </Button>\n <Button size=\"sm\" variant=\"destructive\">\n {labels.dangerAction}\n </Button>\n </div>\n )}\n {part(\n 'input',\n <label className=\"block text-xs font-medium\">\n {labels.fieldLabel}\n <Input className=\"mt-1\" placeholder={labels.fieldPlaceholder} readOnly />\n </label>\n )}\n {part(\n 'card',\n <Card variant=\"outline\" className=\"border-border shadow-sm\">\n <CardHeader className=\"pb-2\">\n <CardTitle className=\"font-display text-base\">{labels.title}</CardTitle>\n </CardHeader>\n <CardContent className=\"text-sm text-muted-foreground\">{labels.cardBody}</CardContent>\n </Card>\n )}\n {part(\n 'tabs',\n <Tabs\n items={labels.tabs.map((label, i) => ({\n label,\n content: i === 0 ? labels.tabBody : '',\n }))}\n />\n )}\n {part(\n 'sidebar',\n <div className=\"rounded-md border border-border bg-sidebar p-2\">\n <Sidebar.NavItem\n label={labels.nav[0]}\n icon={<Home className=\"size-4\" />}\n onSelect={noop}\n active\n />\n <Sidebar.NavItem\n label={labels.nav[1]}\n icon={<Inbox className=\"size-4\" />}\n onSelect={noop}\n count={3}\n />\n <Sidebar.NavItem\n label={labels.nav[2]}\n icon={<FileText className=\"size-4\" />}\n onSelect={noop}\n />\n </div>\n )}\n </div>\n <div className=\"flex min-w-0 flex-col gap-4\">\n {part(\n 'stepbar',\n <ProgressChevronBar aria-label={labels.steps.join(', ')}>\n <ProgressChevron kind=\"start\" phase=\"done\">\n <span className=\"px-1 text-xs font-medium\">{labels.steps[0]}</span>\n </ProgressChevron>\n <ProgressChevron kind=\"start\" phase=\"running\" current>\n <span className=\"px-1 text-xs font-medium\">{labels.steps[1]}</span>\n </ProgressChevron>\n <ProgressChevron phase=\"blocked\">\n <span className=\"px-1 text-xs font-medium\">{labels.steps[2]}</span>\n </ProgressChevron>\n </ProgressChevronBar>\n )}\n {part(\n 'chart',\n <Chart\n type=\"bar\"\n ariaLabel={labels.chartLabel}\n labels={labels.chartMonths}\n series={[\n { key: 'a', label: labels.chartSeries[0], values: [12, 18, 15, 22] },\n { key: 'b', label: labels.chartSeries[1], values: [9, 14, 13, 19] },\n ]}\n />\n )}\n {part(\n 'toast',\n <div className=\"flex items-start gap-3 rounded-lg border border-border bg-card p-3 text-foreground shadow-lg\">\n <Bell className=\"mt-0.5 size-4 shrink-0 text-muted-foreground\" aria-hidden />\n <div className=\"min-w-0 flex-1\">\n <p className=\"text-sm font-medium\">{labels.toastTitle}</p>\n <p className=\"text-xs text-muted-foreground\">{labels.toastBody}</p>\n </div>\n <span className=\"rounded-md bg-primary px-2 py-1 text-xs font-medium text-primary-foreground\">\n {labels.toastAction}\n </span>\n </div>\n )}\n {part(\n 'badges',\n <div className=\"flex flex-wrap gap-1.5\">\n <ToneBadge tone=\"neutral\">{labels.badges.neutral}</ToneBadge>\n <ToneBadge tone=\"success\">{labels.badges.success}</ToneBadge>\n <ToneBadge tone=\"warning\">{labels.badges.warning}</ToneBadge>\n <ToneBadge tone=\"danger\">{labels.badges.danger}</ToneBadge>\n <ToneBadge tone=\"ai\">{labels.badges.ai}</ToneBadge>\n </div>\n )}\n {part(\n 'alerts',\n <div className=\"grid gap-2\">\n <Callout variant=\"info\" body={labels.alerts.info} />\n <Callout variant=\"danger\" body={labels.alerts.danger} />\n </div>\n )}\n </div>\n </div>\n </div>\n )\n}\n","/**\n * What the theme editor knows about its own layout: the purpose sections and their plain-language\n * \"affects…\" lines, which preview part reads which token (so hovering a control can outline\n * exactly the parts it changes), and how to read a token the store does not hold from the page.\n */\nimport type { ColorScheme } from './derive'\n\nexport type ThemeSection = 'brand' | 'surfaces' | 'text' | 'status' | 'charts' | 'advanced'\n\nexport const SECTION_COPY: Record<ThemeSection, { title: string; affects: string }> = {\n brand: {\n title: 'Brand',\n affects:\n 'Affects buttons, links, active tabs, focus rings, the step bar, the first chart series and the type.',\n },\n surfaces: {\n title: 'Surfaces',\n affects: 'Affects the page, cards, menus, borders, fields, the sidebar and hover highlights.',\n },\n text: {\n title: 'Text and readability',\n affects: 'Affects every text colour. Pairs below the WCAG AA contrast level are flagged here.',\n },\n status: {\n title: 'Status',\n affects: 'Affects error, warning and success messages, badges and alerts.',\n },\n charts: {\n title: 'Charts',\n affects: 'Affects the series colours of charts and dashboards.',\n },\n advanced: {\n title: 'Advanced',\n affects:\n 'Set any single colour by hand. A colour you set stops following the brand inputs until you reset it.',\n },\n}\n\n/** The parts the live preview shows. */\nexport type PreviewPart =\n | 'page'\n | 'buttons'\n | 'input'\n | 'card'\n | 'tabs'\n | 'sidebar'\n | 'stepbar'\n | 'chart'\n | 'toast'\n | 'badges'\n | 'alerts'\n\n/** Pseudo keys for the non-colour controls. */\nexport const FONT_DISPLAY = 'font-display'\nexport const FONT_SANS = 'font-sans'\nexport const RADIUS = 'radius'\n\nconst STATUS = (hue: string) =>\n ['bg', 'text', 'border', 'solid', 'text-strong'].map((p) => `${hue}-${p}`)\n\n/** The tokens each preview part paints with. */\nexport const PART_TOKENS: Record<PreviewPart, readonly string[]> = {\n page: ['background', 'foreground', FONT_SANS],\n buttons: [\n 'primary',\n 'primary-foreground',\n 'ai-accent',\n 'ai-accent-foreground',\n 'muted',\n 'foreground',\n 'border',\n 'background',\n 'destructive',\n 'destructive-foreground',\n 'ring',\n RADIUS,\n FONT_SANS,\n ],\n input: ['input', 'background', 'foreground', 'muted-foreground', 'ring', RADIUS],\n card: ['card', 'card-foreground', 'border', 'muted-foreground', FONT_DISPLAY, RADIUS],\n tabs: ['primary', 'foreground', 'muted-foreground', 'border', 'ring'],\n sidebar: [\n 'sidebar',\n 'sidebar-foreground',\n 'sidebar-muted',\n 'sidebar-accent',\n 'sidebar-accent-foreground',\n 'sidebar-border',\n 'sidebar-primary',\n 'accent',\n 'accent-foreground',\n 'muted',\n 'muted-foreground',\n ],\n stepbar: ['wf-start', 'muted', 'muted-foreground', 'card', 'foreground', 'destructive', 'ring'],\n chart: ['chart-1', 'chart-2', 'chart-3', 'chart-4', 'chart-5', 'muted-foreground', 'border'],\n toast: [\n 'card',\n 'foreground',\n 'border',\n 'muted-foreground',\n 'primary',\n 'primary-foreground',\n RADIUS,\n ],\n badges: [\n 'ai-soft',\n 'ai-ink',\n 'muted',\n 'muted-foreground',\n 'accent',\n 'primary',\n ...STATUS('red'),\n ...STATUS('green'),\n ...STATUS('yellow'),\n ],\n alerts: ['primary', 'destructive', 'foreground', 'muted-foreground', RADIUS],\n}\n\n/** The preview parts that read any of `keys` (what a control with those keys changes). */\nexport function partsOf(keys: readonly string[]): Set<PreviewPart> {\n const wanted = new Set(keys)\n const parts = new Set<PreviewPart>()\n for (const [part, tokens] of Object.entries(PART_TOKENS) as [PreviewPart, readonly string[]][]) {\n if (tokens.some((t) => wanted.has(t))) parts.add(part)\n }\n return parts\n}\n\n/**\n * Read token values from the page for keys the store does not hold (a host's catalog edits only\n * some of the contract; the rest come from its stylesheet). Values are the raw custom properties,\n * read on a probe element; the dark set through a `.dark` probe, which works with the contract's\n * `.dark` selector. Returns only keys that resolve to a value. Empty without a DOM.\n */\nexport function readDocumentTokens(\n keys: readonly string[],\n scheme: ColorScheme\n): Record<string, string> {\n if (typeof document === 'undefined' || typeof getComputedStyle !== 'function') return {}\n const probe = document.createElement('div')\n probe.setAttribute('aria-hidden', 'true')\n probe.style.display = 'none'\n if (scheme === 'dark') probe.className = 'dark'\n document.body.appendChild(probe)\n try {\n const style = getComputedStyle(probe)\n const out: Record<string, string> = {}\n for (const key of keys) {\n const raw = style.getPropertyValue(`--${key}`).trim()\n if (raw) out[key] = raw\n }\n return out\n } finally {\n probe.remove()\n }\n}\nexport type HintHandler = (keys: readonly string[] | null) => void\n\n/** Hover and focus handlers that report `keys` while the pointer or focus is inside. */\nexport function hintProps(keys: readonly string[], onHint: HintHandler) {\n return {\n onPointerEnter: () => onHint(keys),\n onPointerLeave: () => onHint(null),\n onFocus: () => onHint(keys),\n onBlur: () => onHint(null),\n }\n}\n","/**\n * The theme editor's small controls. Each reports the token keys it changes through `onHint`\n * (on hover and focus; `null` on leave and blur), which the editor turns into preview highlights.\n */\nimport { useEffect, useId, useState, type ReactNode } from 'react'\nimport { cn } from '@arbidocs/react/ui'\nimport { parseColor, toHex } from './color'\nimport { hintProps, type HintHandler } from './editorModel'\n\nconst FIELD =\n 'h-8 rounded-md border border-input bg-background px-2 text-xs text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring'\n\nexport interface ColorFieldProps {\n label: string\n /** One line under the label: what it is for. */\n hint?: string\n value: string\n onChange: (hex: string) => void\n keys: readonly string[]\n onHint: HintHandler\n /** `data-testid`s of the swatch and the hex field. */\n testIds: { color: string; hex: string }\n /** Trailing content, e.g. an \"edited\" badge with a reset. */\n trailing?: ReactNode\n}\n\n/**\n * A colour: a swatch (the native picker) and its hex. The hex field keeps what is typed and only\n * commits a complete colour, so a half-typed value never repaints the app.\n */\nexport function ColorField({\n label,\n hint,\n value,\n onChange,\n keys,\n onHint,\n testIds,\n trailing,\n}: ColorFieldProps) {\n const id = useId()\n const hex = toHex(value, '#000000')\n const [draft, setDraft] = useState(hex)\n useEffect(() => setDraft(hex), [hex])\n\n return (\n <div className=\"flex items-center gap-3\" {...hintProps(keys, onHint)}>\n <input\n id={`${id}-swatch`}\n type=\"color\"\n value={hex}\n onChange={(e) => onChange(e.target.value)}\n className=\"size-9 shrink-0 cursor-pointer rounded-md border border-input bg-transparent p-0.5\"\n aria-label={label}\n data-testid={testIds.color}\n />\n <div className=\"min-w-0 flex-1\">\n <label htmlFor={`${id}-hex`} className=\"block text-sm font-medium text-foreground\">\n {label}\n </label>\n {hint && <p className=\"text-xs text-muted-foreground\">{hint}</p>}\n </div>\n <input\n id={`${id}-hex`}\n value={draft}\n onChange={(e) => {\n setDraft(e.target.value)\n if (/^#[0-9a-fA-F]{6}$/.test(e.target.value) && parseColor(e.target.value)) {\n onChange(e.target.value.toLowerCase())\n }\n }}\n onBlur={() => setDraft(hex)}\n spellCheck={false}\n aria-label={`${label} hex value`}\n className={cn(FIELD, 'w-[5.5rem] shrink-0 font-mono')}\n data-testid={testIds.hex}\n />\n {trailing}\n </div>\n )\n}\n\nexport interface SegmentedProps<T extends string> {\n label: string\n value: T\n options: readonly { value: T; label: string }[]\n onChange: (value: T) => void\n keys: readonly string[]\n onHint: HintHandler\n testId: string\n}\n\n/** A small single-choice group (radio semantics). */\nexport function Segmented<T extends string>({\n label,\n value,\n options,\n onChange,\n keys,\n onHint,\n testId,\n}: SegmentedProps<T>) {\n return (\n <div role=\"radiogroup\" aria-label={label} className=\"flex flex-wrap gap-1\" data-testid={testId}>\n {options.map((option) => (\n <button\n key={option.value}\n type=\"button\"\n role=\"radio\"\n aria-checked={value === option.value}\n onClick={() => onChange(option.value)}\n {...hintProps(keys, onHint)}\n className={cn(\n 'rounded-md border px-3 py-1 text-xs font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:min-h-11',\n value === option.value\n ? 'border-primary bg-primary text-primary-foreground'\n : 'border-input bg-background text-foreground hover:bg-muted'\n )}\n data-testid={`${testId}-${option.value}`}\n >\n {option.label}\n </button>\n ))}\n </div>\n )\n}\n\nexport interface SliderFieldProps {\n label: string\n /** Shown beside the label (the current value in words). */\n valueText: string\n value: number\n min: number\n max: number\n step: number\n onChange: (value: number) => void\n /** Words under the two ends of the track. */\n ends?: [string, string]\n keys: readonly string[]\n onHint: HintHandler\n testId: string\n}\n\nexport function SliderField({\n label,\n valueText,\n value,\n min,\n max,\n step,\n onChange,\n ends,\n keys,\n onHint,\n testId,\n}: SliderFieldProps) {\n const id = useId()\n return (\n <div {...hintProps(keys, onHint)}>\n <div className=\"flex items-baseline justify-between gap-2\">\n <label htmlFor={id} className=\"text-sm font-medium text-foreground\">\n {label}\n </label>\n <span className=\"text-xs text-muted-foreground\">{valueText}</span>\n </div>\n <input\n id={id}\n type=\"range\"\n min={min}\n max={max}\n step={step}\n value={value}\n aria-valuetext={valueText}\n onChange={(e) => onChange(Number(e.target.value))}\n className=\"mt-2 w-full accent-[color:var(--color-primary)]\"\n data-testid={testId}\n />\n {ends && (\n <div className=\"flex justify-between text-xs text-muted-foreground\" aria-hidden>\n <span>{ends[0]}</span>\n <span>{ends[1]}</span>\n </div>\n )}\n </div>\n )\n}\n\nexport interface SelectFieldProps {\n label: string\n value: string\n options: readonly { value: string; label: string }[]\n onChange: (value: string) => void\n keys: readonly string[]\n onHint: HintHandler\n testId: string\n hint?: string\n}\n\nexport function SelectField({\n label,\n value,\n options,\n onChange,\n keys,\n onHint,\n testId,\n hint,\n}: SelectFieldProps) {\n const id = useId()\n return (\n <div {...hintProps(keys, onHint)}>\n <label htmlFor={id} className=\"block text-sm font-medium text-foreground\">\n {label}\n </label>\n <select\n id={id}\n value={value}\n onChange={(e) => onChange(e.target.value)}\n className={cn(FIELD, 'mt-1 w-full')}\n data-testid={testId}\n >\n {options.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n {hint && <p className=\"mt-1 text-xs text-muted-foreground\">{hint}</p>}\n </div>\n )\n}\n","/**\n * The one theme editor, shared by every surface: the back-office builder (`variant=\"panel\"`), the\n * studio's slide-over (`variant=\"drawer\"`) and the settings page (`variant=\"collapsed\"`). All drive\n * the same {@link ThemeBundle} store, so there is one token model, preset list and apply path.\n *\n * It is organised around intent rather than tokens. A few brand inputs (primary, accent, surface\n * tone, sidebar style, corner radius, typefaces) derive every dependent colour (see `derive.ts`);\n * the controls sit in purpose groups, each saying in one line what it affects; a live preview of\n * real components shows the result, light and dark; hovering or focusing a control outlines the\n * preview parts it changes; text pairs below WCAG AA are flagged with a one-click fix; Advanced\n * (closed by default) edits any single token of the host's catalog. Presets, reset and undo/redo\n * sit in the toolbar. Firm-agnostic: the catalog, group labels and presets come from the host's\n * bundle; the chrome uses only the token contract.\n */\nimport { useEffect, useMemo, useState, type KeyboardEvent, type ReactNode } from 'react'\nimport {\n AlertTriangle,\n Check,\n ChevronDown,\n Redo2,\n RotateCcw,\n Save,\n Undo2,\n Wand2,\n} from 'lucide-react'\nimport { cn } from '@arbidocs/react/ui'\nimport { applyThemeVars } from './tokens'\nimport { FONT_PAIRINGS, matchFontPairing } from './fontPairings'\nimport type { ThemeBundle } from './store'\nimport {\n CONTRAST_PAIRS,\n contrastIssues,\n keysOfInput,\n type ColorScheme,\n type ContrastIssue,\n type ThemeInputKey,\n} from './derive'\nimport { contrastRatio, toCssColor } from './color'\nimport {\n FONT_DISPLAY,\n FONT_SANS,\n RADIUS,\n SECTION_COPY,\n hintProps,\n partsOf,\n readDocumentTokens,\n type ThemeSection,\n} from './editorModel'\nimport { ColorField, Segmented, SelectField, SliderField } from './ThemeControls'\nimport { ThemePreview } from './ThemePreview'\nimport type { ThemePreviewLabels } from './previewLabels'\n\nexport interface ThemeEditorProps {\n /** The host's theme store bundle (from createThemeStore). */\n bundle: ThemeBundle\n variant?: 'panel' | 'drawer' | 'collapsed'\n /** Identity shown in the live preview's header. */\n preview?: { title: string; subtitle?: string }\n /** The preview's sample words, for a host that wants its own. */\n previewLabels?: Partial<ThemePreviewLabels>\n /** Optional persistence side-channel (e.g. save theme to ARBI); returns a \"via\" label. */\n onSave?: () => Promise<string | void>\n /** Stable testid namespace, e.g. \"builder-theme\" | \"studio-theme\". */\n testIdPrefix?: string\n /** `collapsed` only: start with the controls open. */\n defaultOpen?: boolean\n}\n\ntype PreviewMode = ColorScheme | 'both'\n\nconst CHART_KEYS = ['chart-1', 'chart-2', 'chart-3', 'chart-4', 'chart-5']\nconst SURFACE_SWATCHES: [string, string][] = [\n ['background', 'Page'],\n ['card', 'Cards'],\n ['muted', 'Muted'],\n ['accent', 'Hover'],\n ['border', 'Borders'],\n ['sidebar', 'Sidebar'],\n]\n\n/** \"Inter Variable\", ui-sans-serif → Inter */\nconst faceName = (stack: string) =>\n (stack.split(',')[0] ?? stack)\n .replace(/[\"']/g, '')\n .replace(/ Variable$/, '')\n .trim()\n\nfunction faceOptions(current: string, stacks: string[]) {\n const unique = [...new Set(stacks)]\n const options = unique.map((value) => ({\n value,\n label: value.startsWith('ui-') ? 'System' : faceName(value),\n }))\n if (!unique.includes(current))\n options.unshift({ value: current, label: `Custom (${faceName(current)})` })\n return options\n}\n\nconst isTextEntry = (el: EventTarget | null) =>\n el instanceof HTMLElement &&\n (el.tagName === 'TEXTAREA' ||\n el.tagName === 'SELECT' ||\n (el.tagName === 'INPUT' &&\n !['range', 'color', 'button'].includes((el as HTMLInputElement).type)))\n\nexport function ThemeEditor({\n bundle,\n variant = 'panel',\n preview,\n previewLabels,\n onSave,\n testIdPrefix = 'theme',\n defaultOpen = false,\n}: ThemeEditorProps) {\n const { useStore, tokens, presets, groupLabels, mode, darkColors } = bundle\n const hasDark = darkColors !== undefined\n const colors = useStore((s) => s.colors)\n const dark = useStore((s) => s.dark)\n const fonts = useStore((s) => s.fonts)\n const radius = useStore((s) => s.radius)\n const inputs = useStore((s) => s.inputs)\n const overrides = useStore((s) => s.overrides)\n const activePresetId = useStore((s) => s.activePresetId)\n const canUndo = useStore((s) => s.past.length > 0)\n const canRedo = useStore((s) => s.future.length > 0)\n const store = useStore.getState\n\n const [open, setOpen] = useState(defaultOpen)\n const [advancedOpen, setAdvancedOpen] = useState(false)\n const [previewMode, setPreviewMode] = useState<PreviewMode>('light')\n const [hint, setHint] = useState<readonly string[] | null>(null)\n const [saving, setSaving] = useState(false)\n const [savedVia, setSavedVia] = useState<string | null>(null)\n\n // Live: every edit repaints the running app, light and (for a host with a dark mode) dark.\n useEffect(() => {\n applyThemeVars({ colors, fonts, radius }, { mode, dark: hasDark ? dark : undefined })\n }, [colors, dark, fonts, radius, mode, hasDark])\n\n const tid = (suffix: string) => `${testIdPrefix}-${suffix}`\n const highlight = useMemo(() => (hint ? partsOf(hint) : null), [hint])\n const schemes: ColorScheme[] = hasDark ? ['light', 'dark'] : ['light']\n const setOf = (scheme: ColorScheme) => (scheme === 'dark' ? dark : colors)\n\n // Keys the contrast checks and swatches need that the store does not hold come from the page's\n // stylesheet (the host's catalog edits only part of the contract).\n const neededKeys = useMemo(\n () => [\n ...new Set([\n ...CONTRAST_PAIRS.flatMap((p) => [p.fg, p.bg]),\n ...CHART_KEYS,\n ...SURFACE_SWATCHES.map(([k]) => k),\n ]),\n ],\n []\n )\n const lightMissing = neededKeys.filter((k) => colors[k] === undefined).join(',')\n const darkMissing = neededKeys.filter((k) => dark[k] === undefined).join(',')\n const pageLight = useMemo(\n () => readDocumentTokens(lightMissing ? lightMissing.split(',') : [], 'light'),\n [lightMissing]\n )\n const pageDark = useMemo(\n () => (hasDark ? readDocumentTokens(darkMissing ? darkMissing.split(',') : [], 'dark') : {}),\n [darkMissing, hasDark]\n )\n const resolve = (scheme: ColorScheme) => (key: string) =>\n setOf(scheme)[key] ?? (scheme === 'dark' ? pageDark : pageLight)[key]\n\n const issues = schemes.flatMap((scheme) =>\n contrastIssues(resolve(scheme)).map((issue) => ({ ...issue, scheme }))\n )\n const fix = (issue: ContrastIssue & { scheme: ColorScheme }) =>\n store().setColor(issue.fg, issue.fix, issue.scheme)\n const fixAll = () => {\n // Re-check after each fix: two pairs can share a foreground.\n for (const scheme of schemes) {\n for (const pair of CONTRAST_PAIRS) {\n const s = useStore.getState()\n const set = scheme === 'dark' ? s.dark : s.colors\n const lookup = (k: string) => set[k] ?? (scheme === 'dark' ? pageDark : pageLight)[k]\n const [issue] = contrastIssues(lookup, [pair])\n if (issue) s.setColor(issue.fg, issue.fix, scheme)\n }\n }\n }\n\n const save = async () => {\n if (!onSave) return\n setSaving(true)\n try {\n const via = await onSave()\n setSavedVia(typeof via === 'string' ? via : 'saved')\n } catch {\n // The host's onSave reports the failure (notify); never show a false \"saved\".\n setSavedVia(null)\n } finally {\n setSaving(false)\n }\n }\n\n const onKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n if (!(e.metaKey || e.ctrlKey) || isTextEntry(e.target)) return\n const key = e.key.toLowerCase()\n if (key === 'z' && !e.shiftKey) {\n e.preventDefault()\n store().undo()\n } else if ((key === 'z' && e.shiftKey) || key === 'y') {\n e.preventDefault()\n store().redo()\n }\n }\n\n const inputKeys = (input: ThemeInputKey) => keysOfInput(input)\n const setInput = useStore((s) => s.setInput)\n\n // ── Toolbar: presets, undo/redo, reset, preview scheme ──────────────────────\n const toolbarButton =\n 'inline-flex items-center gap-1.5 rounded-md px-2 py-1 text-xs font-medium text-muted-foreground hover:bg-muted hover:text-foreground disabled:pointer-events-none disabled:opacity-40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:min-h-11'\n const Toolbar = (\n <div className=\"space-y-3\">\n {presets.length > 0 && (\n <div className=\"flex flex-wrap items-center gap-2\" role=\"group\" aria-label=\"Presets\">\n <span className=\"text-xs font-medium text-muted-foreground\">Start from</span>\n {presets.map((p) => (\n <button\n key={p.id}\n type=\"button\"\n onClick={() => store().applyPreset(p.id)}\n aria-pressed={activePresetId === p.id}\n className={cn(\n 'rounded-full border px-3 py-1 text-xs font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:min-h-11',\n activePresetId === p.id\n ? 'border-primary bg-primary text-primary-foreground'\n : 'border-input text-foreground hover:border-primary'\n )}\n data-testid={tid(`preset-${p.id}`)}\n >\n {p.label}\n </button>\n ))}\n </div>\n )}\n <div className=\"flex flex-wrap items-center gap-1\">\n <button\n type=\"button\"\n onClick={() => store().undo()}\n disabled={!canUndo}\n className={toolbarButton}\n aria-keyshortcuts=\"Control+Z Meta+Z\"\n data-testid={tid('undo')}\n >\n <Undo2 className=\"size-3.5\" aria-hidden /> Undo\n </button>\n <button\n type=\"button\"\n onClick={() => store().redo()}\n disabled={!canRedo}\n className={toolbarButton}\n aria-keyshortcuts=\"Control+Shift+Z Meta+Shift+Z\"\n data-testid={tid('redo')}\n >\n <Redo2 className=\"size-3.5\" aria-hidden /> Redo\n </button>\n <button\n type=\"button\"\n onClick={() => store().reset()}\n className={toolbarButton}\n data-testid={tid('reset')}\n >\n <RotateCcw className=\"size-3.5\" aria-hidden /> Reset\n </button>\n {hasDark && (\n <div className=\"ml-auto\">\n <Segmented<PreviewMode>\n label=\"Preview\"\n value={previewMode}\n options={[\n { value: 'light', label: 'Light' },\n { value: 'dark', label: 'Dark' },\n ...(variant === 'panel' ? [{ value: 'both' as const, label: 'Both' }] : []),\n ]}\n onChange={setPreviewMode}\n keys={[]}\n onHint={() => undefined}\n testId={tid('preview-mode')}\n />\n </div>\n )}\n </div>\n </div>\n )\n\n // ── Contrast warning with one-click fix ─────────────────────────────────────\n const Warning = issues.length > 0 && (\n <div\n className=\"flex flex-wrap items-center gap-2 rounded-md border border-yellow-border bg-yellow-bg px-3 py-2 text-sm text-yellow-text\"\n data-testid={tid('contrast-warning')}\n >\n <AlertTriangle className=\"size-4 shrink-0\" aria-hidden />\n <span className=\"min-w-0 flex-1\">\n {issues.length === 1\n ? '1 colour pair is hard to read.'\n : `${issues.length} colour pairs are hard to read.`}{' '}\n See Text and readability.\n </span>\n <button\n type=\"button\"\n onClick={fixAll}\n className=\"inline-flex items-center gap-1 rounded-md border border-yellow-border bg-background px-2 py-1 text-xs font-medium text-foreground hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n data-testid={tid('fix-all')}\n >\n <Wand2 className=\"size-3.5\" aria-hidden /> Fix all\n </button>\n </div>\n )\n\n const section = (id: ThemeSection, body: ReactNode) => (\n <section\n aria-labelledby={tid(`section-${id}-title`)}\n className=\"rounded-lg border border-border bg-card p-4\"\n data-testid={tid(`section-${id}`)}\n >\n <h3 id={tid(`section-${id}-title`)} className=\"text-sm font-semibold text-foreground\">\n {SECTION_COPY[id].title}\n </h3>\n <p className=\"mb-4 mt-0.5 text-xs text-muted-foreground\">{SECTION_COPY[id].affects}</p>\n <div className=\"space-y-4\">{body}</div>\n </section>\n )\n\n const swatch = (key: string, title: string, scheme: ColorScheme = 'light') => {\n const value = resolve(scheme)(key)\n return (\n <span\n key={`${scheme}-${key}`}\n title={title}\n className=\"inline-block size-6 rounded-md border border-border\"\n style={{ background: value ? toCssColor(value) : 'transparent' }}\n />\n )\n }\n\n // ── The purpose sections ────────────────────────────────────────────────────\n const activePairing = matchFontPairing(fonts)\n const warmthWords =\n Math.abs(inputs.warmth) < 0.05\n ? 'Neutral'\n : `${inputs.warmth > 0 ? 'Warm' : 'Cool'} ${Math.round(Math.abs(inputs.warmth) * 100)}%`\n\n const Brand = section(\n 'brand',\n <>\n <ColorField\n label=\"Primary colour\"\n hint=\"Filled buttons, links, the active tab, focus rings.\"\n value={inputs.primary}\n onChange={(v) => setInput('primary', v)}\n keys={inputKeys('primary')}\n onHint={setHint}\n testIds={{ color: tid('color-primary'), hex: tid('hex-primary') }}\n />\n <ColorField\n label=\"Accent colour\"\n hint=\"Highlights, AI actions, the second chart series.\"\n value={inputs.accent}\n onChange={(v) => setInput('accent', v)}\n keys={inputKeys('accent')}\n onHint={setHint}\n testIds={{ color: tid('color-accent'), hex: tid('hex-accent') }}\n />\n <SliderField\n label=\"Corner radius\"\n valueText={radius === 0 ? 'Square' : `${radius}rem`}\n value={radius}\n min={0}\n max={1.5}\n step={0.125}\n onChange={(v) => store().setRadius(v)}\n ends={['Square', 'Round']}\n keys={[RADIUS]}\n onHint={setHint}\n testId={tid('radius')}\n />\n <SelectField\n label=\"Typeface pairing\"\n value={activePairing?.id ?? ''}\n options={[\n ...(activePairing ? [] : [{ value: '', label: 'Custom' }]),\n ...FONT_PAIRINGS.map((p) => ({ value: p.id, label: p.label })),\n ]}\n onChange={(id) => store().setFontPairing(id)}\n keys={[FONT_DISPLAY, FONT_SANS]}\n onHint={setHint}\n testId={tid('font-pairing')}\n hint={activePairing?.description ?? 'Faces chosen one by one.'}\n />\n <div className=\"grid gap-4 @md:grid-cols-2\">\n <SelectField\n label=\"Headings\"\n value={fonts.display}\n options={faceOptions(\n fonts.display,\n FONT_PAIRINGS.flatMap((p) => [p.display, p.sans])\n )}\n onChange={(v) => store().setFont('display', v)}\n keys={[FONT_DISPLAY]}\n onHint={setHint}\n testId={tid('font-display-face')}\n />\n <SelectField\n label=\"Body text\"\n value={fonts.sans}\n options={faceOptions(\n fonts.sans,\n FONT_PAIRINGS.map((p) => p.sans)\n )}\n onChange={(v) => store().setFont('sans', v)}\n keys={[FONT_SANS]}\n onHint={setHint}\n testId={tid('font-sans-face')}\n />\n </div>\n </>\n )\n\n const Surfaces = section(\n 'surfaces',\n <>\n <SliderField\n label=\"Surface tone\"\n valueText={warmthWords}\n value={inputs.warmth}\n min={-1}\n max={1}\n step={0.05}\n onChange={(v) => setInput('warmth', v)}\n ends={['Cool', 'Warm']}\n keys={inputKeys('warmth')}\n onHint={setHint}\n testId={tid('warmth')}\n />\n <div>\n <p className=\"mb-1 text-sm font-medium text-foreground\">Sidebar</p>\n <Segmented\n label=\"Sidebar\"\n value={inputs.sidebar}\n options={[\n { value: 'light', label: 'Light' },\n { value: 'brand', label: 'Brand panel' },\n ]}\n onChange={(v) => setInput('sidebar', v)}\n keys={inputKeys('sidebar')}\n onHint={setHint}\n testId={tid('sidebar-style')}\n />\n </div>\n <div\n {...hintProps(\n SURFACE_SWATCHES.map(([k]) => k),\n setHint\n )}\n >\n <p className=\"mb-1 text-xs text-muted-foreground\">Derived from the tone</p>\n <div className=\"flex flex-wrap gap-1.5\" data-testid={tid('surface-swatches')}>\n {SURFACE_SWATCHES.map(([key, title]) => swatch(key, title))}\n </div>\n </div>\n </>\n )\n\n const Text = section(\n 'text',\n <ul className=\"divide-y divide-border text-sm\" data-testid={tid('contrast-list')}>\n {CONTRAST_PAIRS.map((pair) => (\n <li\n key={`${pair.fg}/${pair.bg}`}\n className=\"flex flex-wrap items-center gap-2 py-2\"\n {...hintProps([pair.fg, pair.bg], setHint)}\n >\n <span className=\"min-w-0 flex-1 text-foreground\">{pair.label}</span>\n {schemes.map((scheme) => {\n const lookup = resolve(scheme)\n const fg = lookup(pair.fg)\n const bg = lookup(pair.bg)\n const ratio = fg && bg ? contrastRatio(fg, bg) : null\n const issue = issues.find(\n (i) => i.scheme === scheme && i.fg === pair.fg && i.bg === pair.bg\n )\n const word = hasDark ? (scheme === 'dark' ? 'Dark ' : 'Light ') : ''\n if (ratio === null) {\n return (\n <span key={scheme} className=\"text-xs text-muted-foreground\">\n {word}n/a\n </span>\n )\n }\n return issue ? (\n <button\n key={scheme}\n type=\"button\"\n onClick={() => fix(issue)}\n className=\"inline-flex items-center gap-1 rounded-full border border-red-border bg-red-bg px-2 py-0.5 text-xs font-medium text-red-text hover:opacity-90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n aria-label={`${pair.label}${word ? `, ${word.trim().toLowerCase()}` : ''}: ${ratio.toFixed(1)} to 1, below ${pair.min}. Fix`}\n data-testid={tid(`fix-${pair.fg}-${pair.bg}-${scheme}`)}\n >\n {word}\n {ratio.toFixed(1)}:1 · Fix\n </button>\n ) : (\n <span\n key={scheme}\n className=\"inline-flex items-center gap-1 rounded-full border border-green-border bg-green-bg px-2 py-0.5 text-xs font-medium text-green-text\"\n >\n <Check className=\"size-3\" aria-hidden />\n {word}\n {ratio.toFixed(1)}:1\n </span>\n )\n })}\n </li>\n ))}\n </ul>\n )\n\n const Status = section(\n 'status',\n <>\n <ColorField\n label=\"Danger\"\n hint=\"Errors, destructive actions.\"\n value={inputs.danger}\n onChange={(v) => setInput('danger', v)}\n keys={inputKeys('danger')}\n onHint={setHint}\n testIds={{ color: tid('color-danger'), hex: tid('hex-danger') }}\n />\n <ColorField\n label=\"Success\"\n hint=\"Completed, approved, healthy.\"\n value={inputs.success}\n onChange={(v) => setInput('success', v)}\n keys={inputKeys('success')}\n onHint={setHint}\n testIds={{ color: tid('color-success'), hex: tid('hex-success') }}\n />\n <ColorField\n label=\"Warning\"\n hint=\"Needs attention soon.\"\n value={inputs.warning}\n onChange={(v) => setInput('warning', v)}\n keys={inputKeys('warning')}\n onHint={setHint}\n testIds={{ color: tid('color-warning'), hex: tid('hex-warning') }}\n />\n </>\n )\n\n const Charts = section(\n 'charts',\n <>\n <Segmented\n label=\"Chart colours\"\n value={inputs.charts}\n options={[\n { value: 'harmonious', label: 'In harmony with the brand' },\n { value: 'distinct', label: 'Distinct hues' },\n ]}\n onChange={(v) => setInput('charts', v)}\n keys={inputKeys('charts')}\n onHint={setHint}\n testId={tid('chart-style')}\n />\n <div\n className=\"flex gap-1.5\"\n data-testid={tid('chart-swatches')}\n {...hintProps(CHART_KEYS, setHint)}\n >\n {CHART_KEYS.map((key, i) => swatch(key, `Series ${i + 1}`))}\n </div>\n </>\n )\n\n // Advanced edits the set on show: dark when only the dark preview is on, else light.\n const editScheme: ColorScheme = previewMode === 'dark' ? 'dark' : 'light'\n const groups = [...new Set(tokens.map((t) => t.group))]\n const Advanced = (\n <section\n aria-labelledby={tid('section-advanced-title')}\n className=\"rounded-lg border border-border bg-card p-4\"\n data-testid={tid('section-advanced')}\n >\n <button\n type=\"button\"\n onClick={() => setAdvancedOpen((o) => !o)}\n aria-expanded={advancedOpen}\n aria-controls={tid('advanced')}\n className=\"flex w-full items-center justify-between gap-2 text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n data-testid={tid('advanced-toggle')}\n >\n <span>\n <span\n id={tid('section-advanced-title')}\n className=\"block text-sm font-semibold text-foreground\"\n >\n {SECTION_COPY.advanced.title}\n </span>\n <span className=\"mt-0.5 block text-xs text-muted-foreground\">\n {SECTION_COPY.advanced.affects}\n </span>\n </span>\n <ChevronDown\n className={cn('size-4 shrink-0 transition-transform', advancedOpen && 'rotate-180')}\n aria-hidden\n />\n </button>\n {advancedOpen && (\n <div id={tid('advanced')} className=\"mt-4 space-y-5\" data-testid={tid('advanced')}>\n {hasDark && (\n <p className=\"text-xs text-muted-foreground\">\n Editing the {editScheme} colours. Switch the preview to edit the other set.\n </p>\n )}\n {groups.map((group) => (\n <div key={group} className=\"space-y-3\" data-testid={tid(`group-${group}`)}>\n <p className=\"text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground\">\n {groupLabels[group] ?? group}\n </p>\n {tokens\n .filter((t) => t.group === group)\n .map((t) => (\n <ColorField\n key={t.key}\n label={t.label}\n value={setOf(editScheme)[t.key] ?? resolve(editScheme)(t.key) ?? '#000000'}\n onChange={(v) => store().setColor(t.key, v, editScheme)}\n keys={[t.key]}\n onHint={setHint}\n testIds={{ color: tid(`token-${t.key}`), hex: tid(`token-hex-${t.key}`) }}\n trailing={\n overrides.includes(t.key) && (\n <button\n type=\"button\"\n onClick={() => store().clearOverride(t.key)}\n className=\"shrink-0 rounded-md px-1.5 py-1 text-xs font-medium text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n aria-label={`Reset ${t.label} to follow the brand inputs`}\n data-testid={tid(`token-reset-${t.key}`)}\n >\n Reset\n </button>\n )\n }\n />\n ))}\n </div>\n ))}\n <div className=\"space-y-3\">\n <p className=\"text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground\">\n Font stacks\n </p>\n {(['display', 'sans'] as const).map((which) => (\n <label key={which} className=\"block text-sm font-medium text-foreground\">\n {which === 'display' ? 'Headings stack' : 'Body stack'}\n <input\n value={fonts[which]}\n onChange={(e) => store().setFont(which, e.target.value)}\n spellCheck={false}\n className=\"mt-1 h-8 w-full rounded-md border border-input bg-background px-2 font-mono text-xs text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n data-testid={tid(which === 'display' ? 'font-display' : 'font-sans')}\n />\n </label>\n ))}\n </div>\n </div>\n )}\n </section>\n )\n\n const Sections = (\n <div className=\"space-y-4\">\n {Brand}\n {Surfaces}\n {Text}\n {Status}\n {Charts}\n {Advanced}\n </div>\n )\n\n const previewFor = (scheme: ColorScheme, testId: string, compact: boolean) => (\n <ThemePreview\n key={scheme}\n colors={setOf(scheme)}\n fonts={fonts}\n radius={radius}\n scheme={scheme}\n highlight={highlight}\n compact={compact}\n labels={previewLabels}\n title={preview?.title}\n subtitle={preview?.subtitle}\n testId={testId}\n />\n )\n const Previews = (compact: boolean) => {\n const shown: ColorScheme[] =\n previewMode === 'both' && hasDark\n ? ['light', 'dark']\n : [hasDark ? (previewMode as ColorScheme) : 'light']\n return (\n <div className=\"space-y-3\" aria-label=\"Live preview\" role=\"group\">\n <p className=\"text-xs text-muted-foreground\" aria-live=\"polite\">\n Live preview{shown.length > 1 ? ', light and dark' : hasDark ? `, ${shown[0]}` : ''}.\n Point at a control to see what it changes.\n </p>\n {shown.map((scheme, i) =>\n previewFor(scheme, i === 0 ? tid('preview') : tid(`preview-${scheme}`), compact)\n )}\n </div>\n )\n }\n\n const SaveBar = onSave && (\n <div className=\"flex items-center gap-3\">\n <button\n type=\"button\"\n onClick={() => void save()}\n disabled={saving}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-primary px-3 py-2 text-sm font-medium text-primary-foreground hover:opacity-90 disabled:opacity-60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n data-testid={tid('save')}\n >\n {savedVia ? <Check className=\"size-4\" /> : <Save className=\"size-4\" />}\n {saving ? 'Saving…' : savedVia ? 'Saved' : 'Save theme'}\n </button>\n {savedVia && (\n <span className=\"text-xs text-muted-foreground\" data-testid={tid('via')}>\n stored via {savedVia}\n </span>\n )}\n </div>\n )\n\n // ── Collapsed layout — settings pages ───────────────────────────────────────\n if (variant === 'collapsed') {\n const controlsId = tid('controls')\n return (\n <div className=\"@container space-y-3\" data-testid={testIdPrefix} onKeyDown={onKeyDown}>\n {Toolbar}\n {Warning}\n <button\n type=\"button\"\n onClick={() => setOpen((o) => !o)}\n aria-expanded={open}\n aria-controls={controlsId}\n className=\"inline-flex items-center gap-1.5 text-sm font-medium text-foreground hover:text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n data-testid={tid('customize')}\n >\n <ChevronDown\n className={cn('size-4 transition-transform', open && 'rotate-180')}\n aria-hidden\n />\n Customize colours and type\n </button>\n {open && (\n <div\n id={controlsId}\n className=\"grid max-h-[36rem] gap-4 overflow-y-auto rounded-md border border-border p-3 @3xl:grid-cols-[minmax(0,1fr)_minmax(0,22rem)]\"\n data-testid={tid('controls')}\n >\n {Sections}\n <div className=\"@3xl:sticky @3xl:top-0 @3xl:self-start\">{Previews(true)}</div>\n </div>\n )}\n {SaveBar}\n </div>\n )\n }\n\n // ── Drawer layout — compact, single column beside the studio canvas ─────────\n if (variant === 'drawer') {\n return (\n <div\n className=\"@container flex h-full flex-col gap-4 overflow-y-auto bg-background p-4\"\n data-testid={testIdPrefix}\n onKeyDown={onKeyDown}\n >\n <h2 className=\"font-display text-lg font-semibold text-foreground\">Theme</h2>\n {Toolbar}\n {Warning}\n {Previews(true)}\n {Sections}\n {SaveBar}\n </div>\n )\n }\n\n // ── Panel layout — controls beside a sticky live preview ────────────────────\n return (\n <div className=\"@container space-y-4\" data-testid={testIdPrefix} onKeyDown={onKeyDown}>\n {Toolbar}\n {Warning}\n <div className=\"grid gap-6 lg:grid-cols-[minmax(0,1fr)_minmax(0,30rem)]\">\n <div className=\"min-w-0 space-y-4\">\n {Sections}\n {SaveBar}\n </div>\n {/* Below lg the preview leads (what you get), then the controls. */}\n <div className=\"order-first min-w-0 lg:order-none lg:sticky lg:top-4 lg:self-start\">\n {Previews(false)}\n </div>\n </div>\n </div>\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/theme/ThemePreview.tsx","../src/theme/editorModel.ts","../src/theme/ThemeControls.tsx","../src/theme/ThemeEditor.tsx"],"names":["DEFAULT_THEME_PREVIEW_LABELS","useMemo","themeCssVars","themeMetaVars","jsx","cn","jsxs","Button","Input","Card","CardHeader","CardTitle","CardContent","Tabs","Sidebar","Home","Inbox","FileText","ProgressChevronBar","ProgressChevron","Chart","Bell","ToneBadge","Callout","useId","toHex","useState","useEffect","parseColor","applyThemeVars","CONTRAST_PAIRS","contrastIssues","keysOfInput","Undo2","Redo2","RotateCcw","AlertTriangle","Wand2","toCssColor","matchFontPairing","Fragment","FONT_PAIRINGS","contrastRatio","Check","ChevronDown","Save"],"mappings":"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","file":"chunk-SGYSDABK.cjs","sourcesContent":["/**\n * The theme editor's live preview: real blocks and `@arbidocs/react` parts (buttons, a field, a\n * card, tabs, a sidebar row, the step bar, a dashboards chart, a toast, badges and alerts), not\n * swatches, painted with the theme being edited.\n *\n * The preview is scoped: its root carries the theme's variables inline (both halves of every\n * token, `themeCssVars`, plus fonts and radius), so it can show the light and the dark set side by\n * side whatever the page itself is in. A dark root also carries the `dark` class so `dark:`\n * variants apply. `highlight` outlines the parts a hovered or focused control changes and dims the\n * rest. The preview is `inert`: it is a picture of the parts, not a second set of controls.\n */\nimport { useMemo, type CSSProperties, type ReactNode } from 'react'\nimport { Bell, FileText, Home, Inbox } from 'lucide-react'\nimport { Button, Card, CardContent, CardHeader, CardTitle, Input, cn } from '@arbidocs/react/ui'\nimport { Tabs } from '../components/Tabs'\nimport { Chart } from '../components/Chart'\nimport { ToneBadge } from '../components/ToneBadge'\nimport { Callout } from '../components/Callout'\nimport { Sidebar } from '../shell/Sidebar'\nimport { ProgressChevron, ProgressChevronBar } from '../agents/workflows/ProgressChevron'\nimport { themeCssVars, themeMetaVars, type ThemeFonts } from './tokens'\nimport type { ColorScheme } from './derive'\nimport type { PreviewPart } from './editorModel'\nimport { DEFAULT_THEME_PREVIEW_LABELS, type ThemePreviewLabels } from './previewLabels'\n\nexport interface ThemePreviewProps {\n colors: Record<string, string>\n fonts: ThemeFonts\n radius: number\n scheme: ColorScheme\n /** The parts to outline; `null` when no control is hovered or focused. */\n highlight?: ReadonlySet<PreviewPart> | null\n /** One column of parts (a narrow drawer) instead of a two-column grid. */\n compact?: boolean\n labels?: Partial<ThemePreviewLabels>\n /** A heading over the parts, e.g. the host's name. */\n title?: string\n subtitle?: string\n testId?: string\n}\n\n/** The preview is inert; its rows need a handler only to satisfy the part's contract. */\nconst noop = () => undefined\n\n/**\n * Whether the page aliases Tailwind's `--radius-sm/md` to `--radius` (the ARBI app does); then the\n * scoped preview re-declares them, since an alias declared on `:root` does not follow a `--radius`\n * set lower down.\n */\nfunction radiusAliased(): boolean {\n if (typeof document === 'undefined' || typeof getComputedStyle !== 'function') return false\n const root = getComputedStyle(document.documentElement)\n const base = root.getPropertyValue('--radius').trim()\n return base !== '' && root.getPropertyValue('--radius-md').trim() === base\n}\n\nexport function ThemePreview({\n colors,\n fonts,\n radius,\n scheme,\n highlight = null,\n compact = false,\n labels: labelOverrides,\n title,\n subtitle,\n testId = 'theme-preview',\n}: ThemePreviewProps) {\n const labels = { ...DEFAULT_THEME_PREVIEW_LABELS, ...labelOverrides }\n const aliased = useMemo(radiusAliased, [])\n const style = useMemo(() => {\n const vars: Record<string, string> = {\n ...themeCssVars(colors),\n ...themeMetaVars({ fonts, radius }),\n }\n if (aliased) {\n vars['--radius-sm'] = `${radius}rem`\n vars['--radius-md'] = `${radius}rem`\n }\n return vars as CSSProperties\n }, [colors, fonts, radius, aliased])\n\n const part = (id: PreviewPart, children: ReactNode, className?: string) => (\n <div\n data-preview-part={id}\n data-highlighted={highlight?.has(id) || undefined}\n className={cn(\n 'min-w-0 rounded-[calc(var(--radius)+4px)] transition-opacity duration-150 motion-reduce:transition-none',\n highlight && !highlight.has(id) && 'opacity-30',\n highlight?.has(id) && 'outline-2 outline-offset-4 outline-dashed outline-foreground',\n className\n )}\n >\n {children}\n </div>\n )\n\n return (\n <div\n inert\n data-testid={testId}\n data-scheme={scheme}\n style={style}\n className={cn(\n scheme === 'dark' && 'dark',\n '@container min-w-0 rounded-lg border border-border bg-background p-4 font-sans text-foreground',\n highlight?.has('page') && 'outline-2 outline-offset-2 outline-dashed outline-foreground'\n )}\n >\n <div className=\"mb-4\">\n <p className=\"font-display text-lg font-semibold leading-tight\">{title ?? labels.title}</p>\n <p className=\"text-xs text-muted-foreground\">{subtitle ?? labels.subtitle}</p>\n </div>\n <div className={cn('grid gap-4', !compact && '@lg:grid-cols-2')}>\n <div className=\"flex min-w-0 flex-col gap-4\">\n {part(\n 'buttons',\n <div className=\"flex flex-wrap gap-2\">\n <Button size=\"sm\">{labels.primaryAction}</Button>\n <Button size=\"sm\" variant=\"accent\">\n {labels.accentAction}\n </Button>\n <Button size=\"sm\" variant=\"secondary\">\n {labels.secondaryAction}\n </Button>\n <Button size=\"sm\" variant=\"outline\">\n {labels.outlineAction}\n </Button>\n <Button size=\"sm\" variant=\"destructive\">\n {labels.dangerAction}\n </Button>\n </div>\n )}\n {part(\n 'input',\n <label className=\"block text-xs font-medium\">\n {labels.fieldLabel}\n <Input className=\"mt-1\" placeholder={labels.fieldPlaceholder} readOnly />\n </label>\n )}\n {part(\n 'card',\n <Card variant=\"outline\" className=\"border-border shadow-sm\">\n <CardHeader className=\"pb-2\">\n <CardTitle className=\"font-display text-base\">{labels.title}</CardTitle>\n </CardHeader>\n <CardContent className=\"text-sm text-muted-foreground\">{labels.cardBody}</CardContent>\n </Card>\n )}\n {part(\n 'tabs',\n <Tabs\n items={labels.tabs.map((label, i) => ({\n label,\n content: i === 0 ? labels.tabBody : '',\n }))}\n />\n )}\n {part(\n 'sidebar',\n <div className=\"rounded-md border border-border bg-sidebar p-2\">\n <Sidebar.NavItem\n label={labels.nav[0]}\n icon={<Home className=\"size-4\" />}\n onSelect={noop}\n active\n />\n <Sidebar.NavItem\n label={labels.nav[1]}\n icon={<Inbox className=\"size-4\" />}\n onSelect={noop}\n count={3}\n />\n <Sidebar.NavItem\n label={labels.nav[2]}\n icon={<FileText className=\"size-4\" />}\n onSelect={noop}\n />\n </div>\n )}\n </div>\n <div className=\"flex min-w-0 flex-col gap-4\">\n {part(\n 'stepbar',\n <ProgressChevronBar aria-label={labels.steps.join(', ')}>\n <ProgressChevron kind=\"start\" phase=\"done\">\n <span className=\"px-1 text-xs font-medium\">{labels.steps[0]}</span>\n </ProgressChevron>\n <ProgressChevron kind=\"start\" phase=\"running\" current>\n <span className=\"px-1 text-xs font-medium\">{labels.steps[1]}</span>\n </ProgressChevron>\n <ProgressChevron phase=\"blocked\">\n <span className=\"px-1 text-xs font-medium\">{labels.steps[2]}</span>\n </ProgressChevron>\n </ProgressChevronBar>\n )}\n {part(\n 'chart',\n <Chart\n type=\"bar\"\n ariaLabel={labels.chartLabel}\n labels={labels.chartMonths}\n series={[\n { key: 'a', label: labels.chartSeries[0], values: [12, 18, 15, 22] },\n { key: 'b', label: labels.chartSeries[1], values: [9, 14, 13, 19] },\n ]}\n />\n )}\n {part(\n 'toast',\n <div className=\"flex items-start gap-3 rounded-lg border border-border bg-card p-3 text-foreground shadow-lg\">\n <Bell className=\"mt-0.5 size-4 shrink-0 text-muted-foreground\" aria-hidden />\n <div className=\"min-w-0 flex-1\">\n <p className=\"text-sm font-medium\">{labels.toastTitle}</p>\n <p className=\"text-xs text-muted-foreground\">{labels.toastBody}</p>\n </div>\n <span className=\"rounded-md bg-primary px-2 py-1 text-xs font-medium text-primary-foreground\">\n {labels.toastAction}\n </span>\n </div>\n )}\n {part(\n 'badges',\n <div className=\"flex flex-wrap gap-1.5\">\n <ToneBadge tone=\"neutral\">{labels.badges.neutral}</ToneBadge>\n <ToneBadge tone=\"success\">{labels.badges.success}</ToneBadge>\n <ToneBadge tone=\"warning\">{labels.badges.warning}</ToneBadge>\n <ToneBadge tone=\"danger\">{labels.badges.danger}</ToneBadge>\n <ToneBadge tone=\"ai\">{labels.badges.ai}</ToneBadge>\n </div>\n )}\n {part(\n 'alerts',\n <div className=\"grid gap-2\">\n <Callout variant=\"info\" body={labels.alerts.info} />\n <Callout variant=\"danger\" body={labels.alerts.danger} />\n </div>\n )}\n </div>\n </div>\n </div>\n )\n}\n","/**\n * What the theme editor knows about its own layout: the purpose sections and their plain-language\n * \"affects…\" lines, which preview part reads which token (so hovering a control can outline\n * exactly the parts it changes), and how to read a token the store does not hold from the page.\n */\nimport type { ColorScheme } from './derive'\n\nexport type ThemeSection = 'brand' | 'surfaces' | 'text' | 'status' | 'charts' | 'advanced'\n\nexport const SECTION_COPY: Record<ThemeSection, { title: string; affects: string }> = {\n brand: {\n title: 'Brand',\n affects:\n 'Affects buttons, links, active tabs, focus rings, the step bar, the first chart series and the type.',\n },\n surfaces: {\n title: 'Surfaces',\n affects: 'Affects the page, cards, menus, borders, fields, the sidebar and hover highlights.',\n },\n text: {\n title: 'Text and readability',\n affects: 'Affects every text colour. Pairs below the WCAG AA contrast level are flagged here.',\n },\n status: {\n title: 'Status',\n affects: 'Affects error, warning and success messages, badges and alerts.',\n },\n charts: {\n title: 'Charts',\n affects: 'Affects the series colours of charts and dashboards.',\n },\n advanced: {\n title: 'Advanced',\n affects:\n 'Set any single colour by hand. A colour you set stops following the brand inputs until you reset it.',\n },\n}\n\n/** The parts the live preview shows. */\nexport type PreviewPart =\n | 'page'\n | 'buttons'\n | 'input'\n | 'card'\n | 'tabs'\n | 'sidebar'\n | 'stepbar'\n | 'chart'\n | 'toast'\n | 'badges'\n | 'alerts'\n\n/** Pseudo keys for the non-colour controls. */\nexport const FONT_DISPLAY = 'font-display'\nexport const FONT_SANS = 'font-sans'\nexport const RADIUS = 'radius'\n\nconst STATUS = (hue: string) =>\n ['bg', 'text', 'border', 'solid', 'text-strong'].map((p) => `${hue}-${p}`)\n\n/** The tokens each preview part paints with. */\nexport const PART_TOKENS: Record<PreviewPart, readonly string[]> = {\n page: ['background', 'foreground', FONT_SANS],\n buttons: [\n 'primary',\n 'primary-foreground',\n 'ai-accent',\n 'ai-accent-foreground',\n 'muted',\n 'foreground',\n 'border',\n 'background',\n 'destructive',\n 'destructive-foreground',\n 'ring',\n RADIUS,\n FONT_SANS,\n ],\n input: ['input', 'background', 'foreground', 'muted-foreground', 'ring', RADIUS],\n card: ['card', 'card-foreground', 'border', 'muted-foreground', FONT_DISPLAY, RADIUS],\n tabs: ['primary', 'foreground', 'muted-foreground', 'border', 'ring'],\n sidebar: [\n 'sidebar',\n 'sidebar-foreground',\n 'sidebar-muted',\n 'sidebar-accent',\n 'sidebar-accent-foreground',\n 'sidebar-border',\n 'sidebar-primary',\n 'accent',\n 'accent-foreground',\n 'muted',\n 'muted-foreground',\n ],\n stepbar: ['wf-start', 'muted', 'muted-foreground', 'card', 'foreground', 'destructive', 'ring'],\n chart: ['chart-1', 'chart-2', 'chart-3', 'chart-4', 'chart-5', 'muted-foreground', 'border'],\n toast: [\n 'card',\n 'foreground',\n 'border',\n 'muted-foreground',\n 'primary',\n 'primary-foreground',\n RADIUS,\n ],\n badges: [\n 'ai-soft',\n 'ai-ink',\n 'muted',\n 'muted-foreground',\n 'accent',\n 'primary',\n ...STATUS('red'),\n ...STATUS('green'),\n ...STATUS('yellow'),\n ],\n alerts: ['primary', 'destructive', 'foreground', 'muted-foreground', RADIUS],\n}\n\n/** The preview parts that read any of `keys` (what a control with those keys changes). */\nexport function partsOf(keys: readonly string[]): Set<PreviewPart> {\n const wanted = new Set(keys)\n const parts = new Set<PreviewPart>()\n for (const [part, tokens] of Object.entries(PART_TOKENS) as [PreviewPart, readonly string[]][]) {\n if (tokens.some((t) => wanted.has(t))) parts.add(part)\n }\n return parts\n}\n\n/**\n * Read token values from the page for keys the store does not hold (a host's catalog edits only\n * some of the contract; the rest come from its stylesheet). Values are the raw custom properties,\n * read on a probe element; the dark set through a `.dark` probe, which works with the contract's\n * `.dark` selector. Returns only keys that resolve to a value. Empty without a DOM.\n */\nexport function readDocumentTokens(\n keys: readonly string[],\n scheme: ColorScheme\n): Record<string, string> {\n if (typeof document === 'undefined' || typeof getComputedStyle !== 'function') return {}\n const probe = document.createElement('div')\n probe.setAttribute('aria-hidden', 'true')\n probe.style.display = 'none'\n if (scheme === 'dark') probe.className = 'dark'\n document.body.appendChild(probe)\n try {\n const style = getComputedStyle(probe)\n const out: Record<string, string> = {}\n for (const key of keys) {\n const raw = style.getPropertyValue(`--${key}`).trim()\n if (raw) out[key] = raw\n }\n return out\n } finally {\n probe.remove()\n }\n}\nexport type HintHandler = (keys: readonly string[] | null) => void\n\n/** Hover and focus handlers that report `keys` while the pointer or focus is inside. */\nexport function hintProps(keys: readonly string[], onHint: HintHandler) {\n return {\n onPointerEnter: () => onHint(keys),\n onPointerLeave: () => onHint(null),\n onFocus: () => onHint(keys),\n onBlur: () => onHint(null),\n }\n}\n","/**\n * The theme editor's small controls. Each reports the token keys it changes through `onHint`\n * (on hover and focus; `null` on leave and blur), which the editor turns into preview highlights.\n */\nimport { useEffect, useId, useState, type ReactNode } from 'react'\nimport { cn } from '@arbidocs/react/ui'\nimport { parseColor, toHex } from './color'\nimport { hintProps, type HintHandler } from './editorModel'\n\nconst FIELD =\n 'h-8 rounded-md border border-input bg-background px-2 text-xs text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring'\n\nexport interface ColorFieldProps {\n label: string\n /** One line under the label: what it is for. */\n hint?: string\n value: string\n onChange: (hex: string) => void\n keys: readonly string[]\n onHint: HintHandler\n /** `data-testid`s of the swatch and the hex field. */\n testIds: { color: string; hex: string }\n /** Trailing content, e.g. an \"edited\" badge with a reset. */\n trailing?: ReactNode\n}\n\n/**\n * A colour: a swatch (the native picker) and its hex. The hex field keeps what is typed and only\n * commits a complete colour, so a half-typed value never repaints the app.\n */\nexport function ColorField({\n label,\n hint,\n value,\n onChange,\n keys,\n onHint,\n testIds,\n trailing,\n}: ColorFieldProps) {\n const id = useId()\n const hex = toHex(value, '#000000')\n const [draft, setDraft] = useState(hex)\n useEffect(() => setDraft(hex), [hex])\n\n return (\n <div className=\"flex items-center gap-3\" {...hintProps(keys, onHint)}>\n <input\n id={`${id}-swatch`}\n type=\"color\"\n value={hex}\n onChange={(e) => onChange(e.target.value)}\n className=\"size-9 shrink-0 cursor-pointer rounded-md border border-input bg-transparent p-0.5\"\n aria-label={label}\n data-testid={testIds.color}\n />\n <div className=\"min-w-0 flex-1\">\n <label htmlFor={`${id}-hex`} className=\"block text-sm font-medium text-foreground\">\n {label}\n </label>\n {hint && <p className=\"text-xs text-muted-foreground\">{hint}</p>}\n </div>\n <input\n id={`${id}-hex`}\n value={draft}\n onChange={(e) => {\n setDraft(e.target.value)\n if (/^#[0-9a-fA-F]{6}$/.test(e.target.value) && parseColor(e.target.value)) {\n onChange(e.target.value.toLowerCase())\n }\n }}\n onBlur={() => setDraft(hex)}\n spellCheck={false}\n aria-label={`${label} hex value`}\n className={cn(FIELD, 'w-[5.5rem] shrink-0 font-mono')}\n data-testid={testIds.hex}\n />\n {trailing}\n </div>\n )\n}\n\nexport interface SegmentedProps<T extends string> {\n label: string\n value: T\n options: readonly { value: T; label: string }[]\n onChange: (value: T) => void\n keys: readonly string[]\n onHint: HintHandler\n testId: string\n}\n\n/** A small single-choice group (radio semantics). */\nexport function Segmented<T extends string>({\n label,\n value,\n options,\n onChange,\n keys,\n onHint,\n testId,\n}: SegmentedProps<T>) {\n return (\n <div role=\"radiogroup\" aria-label={label} className=\"flex flex-wrap gap-1\" data-testid={testId}>\n {options.map((option) => (\n <button\n key={option.value}\n type=\"button\"\n role=\"radio\"\n aria-checked={value === option.value}\n onClick={() => onChange(option.value)}\n {...hintProps(keys, onHint)}\n className={cn(\n 'rounded-md border px-3 py-1 text-xs font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:min-h-11',\n value === option.value\n ? 'border-primary bg-primary text-primary-foreground'\n : 'border-input bg-background text-foreground hover:bg-muted'\n )}\n data-testid={`${testId}-${option.value}`}\n >\n {option.label}\n </button>\n ))}\n </div>\n )\n}\n\nexport interface SliderFieldProps {\n label: string\n /** Shown beside the label (the current value in words). */\n valueText: string\n value: number\n min: number\n max: number\n step: number\n onChange: (value: number) => void\n /** Words under the two ends of the track. */\n ends?: [string, string]\n keys: readonly string[]\n onHint: HintHandler\n testId: string\n}\n\nexport function SliderField({\n label,\n valueText,\n value,\n min,\n max,\n step,\n onChange,\n ends,\n keys,\n onHint,\n testId,\n}: SliderFieldProps) {\n const id = useId()\n return (\n <div {...hintProps(keys, onHint)}>\n <div className=\"flex items-baseline justify-between gap-2\">\n <label htmlFor={id} className=\"text-sm font-medium text-foreground\">\n {label}\n </label>\n <span className=\"text-xs text-muted-foreground\">{valueText}</span>\n </div>\n <input\n id={id}\n type=\"range\"\n min={min}\n max={max}\n step={step}\n value={value}\n aria-valuetext={valueText}\n onChange={(e) => onChange(Number(e.target.value))}\n className=\"mt-2 w-full accent-[color:var(--color-primary)]\"\n data-testid={testId}\n />\n {ends && (\n <div className=\"flex justify-between text-xs text-muted-foreground\" aria-hidden>\n <span>{ends[0]}</span>\n <span>{ends[1]}</span>\n </div>\n )}\n </div>\n )\n}\n\nexport interface SelectFieldProps {\n label: string\n value: string\n options: readonly { value: string; label: string }[]\n onChange: (value: string) => void\n keys: readonly string[]\n onHint: HintHandler\n testId: string\n hint?: string\n}\n\nexport function SelectField({\n label,\n value,\n options,\n onChange,\n keys,\n onHint,\n testId,\n hint,\n}: SelectFieldProps) {\n const id = useId()\n return (\n <div {...hintProps(keys, onHint)}>\n <label htmlFor={id} className=\"block text-sm font-medium text-foreground\">\n {label}\n </label>\n <select\n id={id}\n value={value}\n onChange={(e) => onChange(e.target.value)}\n className={cn(FIELD, 'mt-1 w-full')}\n data-testid={testId}\n >\n {options.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n {hint && <p className=\"mt-1 text-xs text-muted-foreground\">{hint}</p>}\n </div>\n )\n}\n","/**\n * The one theme editor, shared by every surface: the back-office builder (`variant=\"panel\"`), the\n * studio's slide-over (`variant=\"drawer\"`) and the settings page (`variant=\"collapsed\"`). All drive\n * the same {@link ThemeBundle} store, so there is one token model, preset list and apply path.\n *\n * It is organised around intent rather than tokens. A few brand inputs (primary, accent, surface\n * tone, sidebar style, corner radius, typefaces) derive every dependent colour (see `derive.ts`);\n * the controls sit in purpose groups, each saying in one line what it affects; a live preview of\n * real components shows the result, light and dark; hovering or focusing a control outlines the\n * preview parts it changes; text pairs below WCAG AA are flagged with a one-click fix; Advanced\n * (closed by default) edits any single token of the host's catalog. Presets, reset and undo/redo\n * sit in the toolbar. Firm-agnostic: the catalog, group labels and presets come from the host's\n * bundle; the chrome uses only the token contract.\n */\nimport { useEffect, useMemo, useState, type KeyboardEvent, type ReactNode } from 'react'\nimport {\n AlertTriangle,\n Check,\n ChevronDown,\n Redo2,\n RotateCcw,\n Save,\n Undo2,\n Wand2,\n} from 'lucide-react'\nimport { cn } from '@arbidocs/react/ui'\nimport { applyThemeVars } from './tokens'\nimport { FONT_PAIRINGS, matchFontPairing } from './fontPairings'\nimport type { ThemeBundle } from './store'\nimport {\n CONTRAST_PAIRS,\n contrastIssues,\n keysOfInput,\n type ColorScheme,\n type ContrastIssue,\n type ThemeInputKey,\n} from './derive'\nimport { contrastRatio, toCssColor } from './color'\nimport {\n FONT_DISPLAY,\n FONT_SANS,\n RADIUS,\n SECTION_COPY,\n hintProps,\n partsOf,\n readDocumentTokens,\n type ThemeSection,\n} from './editorModel'\nimport { ColorField, Segmented, SelectField, SliderField } from './ThemeControls'\nimport { ThemePreview } from './ThemePreview'\nimport type { ThemePreviewLabels } from './previewLabels'\n\nexport interface ThemeEditorProps {\n /** The host's theme store bundle (from createThemeStore). */\n bundle: ThemeBundle\n variant?: 'panel' | 'drawer' | 'collapsed'\n /** Identity shown in the live preview's header. */\n preview?: { title: string; subtitle?: string }\n /** The preview's sample words, for a host that wants its own. */\n previewLabels?: Partial<ThemePreviewLabels>\n /** Optional persistence side-channel (e.g. save theme to ARBI); returns a \"via\" label. */\n onSave?: () => Promise<string | void>\n /** Stable testid namespace, e.g. \"builder-theme\" | \"studio-theme\". */\n testIdPrefix?: string\n /** `collapsed` only: start with the controls open. */\n defaultOpen?: boolean\n}\n\ntype PreviewMode = ColorScheme | 'both'\n\nconst CHART_KEYS = ['chart-1', 'chart-2', 'chart-3', 'chart-4', 'chart-5']\nconst SURFACE_SWATCHES: [string, string][] = [\n ['background', 'Page'],\n ['card', 'Cards'],\n ['muted', 'Muted'],\n ['accent', 'Hover'],\n ['border', 'Borders'],\n ['sidebar', 'Sidebar'],\n]\n\n/** \"Inter Variable\", ui-sans-serif → Inter */\nconst faceName = (stack: string) =>\n (stack.split(',')[0] ?? stack)\n .replace(/[\"']/g, '')\n .replace(/ Variable$/, '')\n .trim()\n\nfunction faceOptions(current: string, stacks: string[]) {\n const unique = [...new Set(stacks)]\n const options = unique.map((value) => ({\n value,\n label: value.startsWith('ui-') ? 'System' : faceName(value),\n }))\n if (!unique.includes(current))\n options.unshift({ value: current, label: `Custom (${faceName(current)})` })\n return options\n}\n\nconst isTextEntry = (el: EventTarget | null) =>\n el instanceof HTMLElement &&\n (el.tagName === 'TEXTAREA' ||\n el.tagName === 'SELECT' ||\n (el.tagName === 'INPUT' &&\n !['range', 'color', 'button'].includes((el as HTMLInputElement).type)))\n\nexport function ThemeEditor({\n bundle,\n variant = 'panel',\n preview,\n previewLabels,\n onSave,\n testIdPrefix = 'theme',\n defaultOpen = false,\n}: ThemeEditorProps) {\n const { useStore, tokens, presets, groupLabels, mode, darkColors } = bundle\n const hasDark = darkColors !== undefined\n const colors = useStore((s) => s.colors)\n const dark = useStore((s) => s.dark)\n const fonts = useStore((s) => s.fonts)\n const radius = useStore((s) => s.radius)\n const inputs = useStore((s) => s.inputs)\n const overrides = useStore((s) => s.overrides)\n const activePresetId = useStore((s) => s.activePresetId)\n const canUndo = useStore((s) => s.past.length > 0)\n const canRedo = useStore((s) => s.future.length > 0)\n const store = useStore.getState\n\n const [open, setOpen] = useState(defaultOpen)\n const [advancedOpen, setAdvancedOpen] = useState(false)\n const [previewMode, setPreviewMode] = useState<PreviewMode>('light')\n const [hint, setHint] = useState<readonly string[] | null>(null)\n const [saving, setSaving] = useState(false)\n const [savedVia, setSavedVia] = useState<string | null>(null)\n\n // Live: every edit repaints the running app, light and (for a host with a dark mode) dark.\n useEffect(() => {\n applyThemeVars({ colors, fonts, radius }, { mode, dark: hasDark ? dark : undefined })\n }, [colors, dark, fonts, radius, mode, hasDark])\n\n const tid = (suffix: string) => `${testIdPrefix}-${suffix}`\n const highlight = useMemo(() => (hint ? partsOf(hint) : null), [hint])\n const schemes: ColorScheme[] = hasDark ? ['light', 'dark'] : ['light']\n const setOf = (scheme: ColorScheme) => (scheme === 'dark' ? dark : colors)\n\n // Keys the contrast checks and swatches need that the store does not hold come from the page's\n // stylesheet (the host's catalog edits only part of the contract).\n const neededKeys = useMemo(\n () => [\n ...new Set([\n ...CONTRAST_PAIRS.flatMap((p) => [p.fg, p.bg]),\n ...CHART_KEYS,\n ...SURFACE_SWATCHES.map(([k]) => k),\n ]),\n ],\n []\n )\n const lightMissing = neededKeys.filter((k) => colors[k] === undefined).join(',')\n const darkMissing = neededKeys.filter((k) => dark[k] === undefined).join(',')\n const pageLight = useMemo(\n () => readDocumentTokens(lightMissing ? lightMissing.split(',') : [], 'light'),\n [lightMissing]\n )\n const pageDark = useMemo(\n () => (hasDark ? readDocumentTokens(darkMissing ? darkMissing.split(',') : [], 'dark') : {}),\n [darkMissing, hasDark]\n )\n const resolve = (scheme: ColorScheme) => (key: string) =>\n setOf(scheme)[key] ?? (scheme === 'dark' ? pageDark : pageLight)[key]\n\n const issues = schemes.flatMap((scheme) =>\n contrastIssues(resolve(scheme)).map((issue) => ({ ...issue, scheme }))\n )\n const fix = (issue: ContrastIssue & { scheme: ColorScheme }) =>\n store().setColor(issue.fg, issue.fix, issue.scheme)\n const fixAll = () => {\n // Re-check after each fix: two pairs can share a foreground.\n for (const scheme of schemes) {\n for (const pair of CONTRAST_PAIRS) {\n const s = useStore.getState()\n const set = scheme === 'dark' ? s.dark : s.colors\n const lookup = (k: string) => set[k] ?? (scheme === 'dark' ? pageDark : pageLight)[k]\n const [issue] = contrastIssues(lookup, [pair])\n if (issue) s.setColor(issue.fg, issue.fix, scheme)\n }\n }\n }\n\n const save = async () => {\n if (!onSave) return\n setSaving(true)\n try {\n const via = await onSave()\n setSavedVia(typeof via === 'string' ? via : 'saved')\n } catch {\n // The host's onSave reports the failure (notify); never show a false \"saved\".\n setSavedVia(null)\n } finally {\n setSaving(false)\n }\n }\n\n const onKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n if (!(e.metaKey || e.ctrlKey) || isTextEntry(e.target)) return\n const key = e.key.toLowerCase()\n if (key === 'z' && !e.shiftKey) {\n e.preventDefault()\n store().undo()\n } else if ((key === 'z' && e.shiftKey) || key === 'y') {\n e.preventDefault()\n store().redo()\n }\n }\n\n const inputKeys = (input: ThemeInputKey) => keysOfInput(input)\n const setInput = useStore((s) => s.setInput)\n\n // ── Toolbar: presets, undo/redo, reset, preview scheme ──────────────────────\n const toolbarButton =\n 'inline-flex items-center gap-1.5 rounded-md px-2 py-1 text-xs font-medium text-muted-foreground hover:bg-muted hover:text-foreground disabled:pointer-events-none disabled:opacity-40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:min-h-11'\n const Toolbar = (\n <div className=\"space-y-3\">\n {presets.length > 0 && (\n <div className=\"flex flex-wrap items-center gap-2\" role=\"group\" aria-label=\"Presets\">\n <span className=\"text-xs font-medium text-muted-foreground\">Start from</span>\n {presets.map((p) => (\n <button\n key={p.id}\n type=\"button\"\n onClick={() => store().applyPreset(p.id)}\n aria-pressed={activePresetId === p.id}\n className={cn(\n 'rounded-full border px-3 py-1 text-xs font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:min-h-11',\n activePresetId === p.id\n ? 'border-primary bg-primary text-primary-foreground'\n : 'border-input text-foreground hover:border-primary'\n )}\n data-testid={tid(`preset-${p.id}`)}\n >\n {p.label}\n </button>\n ))}\n </div>\n )}\n <div className=\"flex flex-wrap items-center gap-1\">\n <button\n type=\"button\"\n onClick={() => store().undo()}\n disabled={!canUndo}\n className={toolbarButton}\n aria-keyshortcuts=\"Control+Z Meta+Z\"\n data-testid={tid('undo')}\n >\n <Undo2 className=\"size-3.5\" aria-hidden /> Undo\n </button>\n <button\n type=\"button\"\n onClick={() => store().redo()}\n disabled={!canRedo}\n className={toolbarButton}\n aria-keyshortcuts=\"Control+Shift+Z Meta+Shift+Z\"\n data-testid={tid('redo')}\n >\n <Redo2 className=\"size-3.5\" aria-hidden /> Redo\n </button>\n <button\n type=\"button\"\n onClick={() => store().reset()}\n className={toolbarButton}\n data-testid={tid('reset')}\n >\n <RotateCcw className=\"size-3.5\" aria-hidden /> Reset\n </button>\n {hasDark && (\n <div className=\"ml-auto\">\n <Segmented<PreviewMode>\n label=\"Preview\"\n value={previewMode}\n options={[\n { value: 'light', label: 'Light' },\n { value: 'dark', label: 'Dark' },\n ...(variant === 'panel' ? [{ value: 'both' as const, label: 'Both' }] : []),\n ]}\n onChange={setPreviewMode}\n keys={[]}\n onHint={() => undefined}\n testId={tid('preview-mode')}\n />\n </div>\n )}\n </div>\n </div>\n )\n\n // ── Contrast warning with one-click fix ─────────────────────────────────────\n const Warning = issues.length > 0 && (\n <div\n className=\"flex flex-wrap items-center gap-2 rounded-md border border-yellow-border bg-yellow-bg px-3 py-2 text-sm text-yellow-text\"\n data-testid={tid('contrast-warning')}\n >\n <AlertTriangle className=\"size-4 shrink-0\" aria-hidden />\n <span className=\"min-w-0 flex-1\">\n {issues.length === 1\n ? '1 colour pair is hard to read.'\n : `${issues.length} colour pairs are hard to read.`}{' '}\n See Text and readability.\n </span>\n <button\n type=\"button\"\n onClick={fixAll}\n className=\"inline-flex items-center gap-1 rounded-md border border-yellow-border bg-background px-2 py-1 text-xs font-medium text-foreground hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n data-testid={tid('fix-all')}\n >\n <Wand2 className=\"size-3.5\" aria-hidden /> Fix all\n </button>\n </div>\n )\n\n const section = (id: ThemeSection, body: ReactNode) => (\n <section\n aria-labelledby={tid(`section-${id}-title`)}\n className=\"rounded-lg border border-border bg-card p-4\"\n data-testid={tid(`section-${id}`)}\n >\n <h3 id={tid(`section-${id}-title`)} className=\"text-sm font-semibold text-foreground\">\n {SECTION_COPY[id].title}\n </h3>\n <p className=\"mb-4 mt-0.5 text-xs text-muted-foreground\">{SECTION_COPY[id].affects}</p>\n <div className=\"space-y-4\">{body}</div>\n </section>\n )\n\n const swatch = (key: string, title: string, scheme: ColorScheme = 'light') => {\n const value = resolve(scheme)(key)\n return (\n <span\n key={`${scheme}-${key}`}\n title={title}\n className=\"inline-block size-6 rounded-md border border-border\"\n style={{ background: value ? toCssColor(value) : 'transparent' }}\n />\n )\n }\n\n // ── The purpose sections ────────────────────────────────────────────────────\n const activePairing = matchFontPairing(fonts)\n const warmthWords =\n Math.abs(inputs.warmth) < 0.05\n ? 'Neutral'\n : `${inputs.warmth > 0 ? 'Warm' : 'Cool'} ${Math.round(Math.abs(inputs.warmth) * 100)}%`\n\n const Brand = section(\n 'brand',\n <>\n <ColorField\n label=\"Primary colour\"\n hint=\"Filled buttons, links, the active tab, focus rings.\"\n value={inputs.primary}\n onChange={(v) => setInput('primary', v)}\n keys={inputKeys('primary')}\n onHint={setHint}\n testIds={{ color: tid('color-primary'), hex: tid('hex-primary') }}\n />\n <ColorField\n label=\"Accent colour\"\n hint=\"Highlights, AI actions, the second chart series.\"\n value={inputs.accent}\n onChange={(v) => setInput('accent', v)}\n keys={inputKeys('accent')}\n onHint={setHint}\n testIds={{ color: tid('color-accent'), hex: tid('hex-accent') }}\n />\n <SliderField\n label=\"Corner radius\"\n valueText={radius === 0 ? 'Square' : `${radius}rem`}\n value={radius}\n min={0}\n max={1.5}\n step={0.125}\n onChange={(v) => store().setRadius(v)}\n ends={['Square', 'Round']}\n keys={[RADIUS]}\n onHint={setHint}\n testId={tid('radius')}\n />\n <SelectField\n label=\"Typeface pairing\"\n value={activePairing?.id ?? ''}\n options={[\n ...(activePairing ? [] : [{ value: '', label: 'Custom' }]),\n ...FONT_PAIRINGS.map((p) => ({ value: p.id, label: p.label })),\n ]}\n onChange={(id) => store().setFontPairing(id)}\n keys={[FONT_DISPLAY, FONT_SANS]}\n onHint={setHint}\n testId={tid('font-pairing')}\n hint={activePairing?.description ?? 'Faces chosen one by one.'}\n />\n <div className=\"grid gap-4 @md:grid-cols-2\">\n <SelectField\n label=\"Headings\"\n value={fonts.display}\n options={faceOptions(\n fonts.display,\n FONT_PAIRINGS.flatMap((p) => [p.display, p.sans])\n )}\n onChange={(v) => store().setFont('display', v)}\n keys={[FONT_DISPLAY]}\n onHint={setHint}\n testId={tid('font-display-face')}\n />\n <SelectField\n label=\"Body text\"\n value={fonts.sans}\n options={faceOptions(\n fonts.sans,\n FONT_PAIRINGS.map((p) => p.sans)\n )}\n onChange={(v) => store().setFont('sans', v)}\n keys={[FONT_SANS]}\n onHint={setHint}\n testId={tid('font-sans-face')}\n />\n </div>\n </>\n )\n\n const Surfaces = section(\n 'surfaces',\n <>\n <SliderField\n label=\"Surface tone\"\n valueText={warmthWords}\n value={inputs.warmth}\n min={-1}\n max={1}\n step={0.05}\n onChange={(v) => setInput('warmth', v)}\n ends={['Cool', 'Warm']}\n keys={inputKeys('warmth')}\n onHint={setHint}\n testId={tid('warmth')}\n />\n <div>\n <p className=\"mb-1 text-sm font-medium text-foreground\">Sidebar</p>\n <Segmented\n label=\"Sidebar\"\n value={inputs.sidebar}\n options={[\n { value: 'light', label: 'Light' },\n { value: 'brand', label: 'Brand panel' },\n ]}\n onChange={(v) => setInput('sidebar', v)}\n keys={inputKeys('sidebar')}\n onHint={setHint}\n testId={tid('sidebar-style')}\n />\n </div>\n <div\n {...hintProps(\n SURFACE_SWATCHES.map(([k]) => k),\n setHint\n )}\n >\n <p className=\"mb-1 text-xs text-muted-foreground\">Derived from the tone</p>\n <div className=\"flex flex-wrap gap-1.5\" data-testid={tid('surface-swatches')}>\n {SURFACE_SWATCHES.map(([key, title]) => swatch(key, title))}\n </div>\n </div>\n </>\n )\n\n const Text = section(\n 'text',\n <ul className=\"divide-y divide-border text-sm\" data-testid={tid('contrast-list')}>\n {CONTRAST_PAIRS.map((pair) => (\n <li\n key={`${pair.fg}/${pair.bg}`}\n className=\"flex flex-wrap items-center gap-2 py-2\"\n {...hintProps([pair.fg, pair.bg], setHint)}\n >\n <span className=\"min-w-0 flex-1 text-foreground\">{pair.label}</span>\n {schemes.map((scheme) => {\n const lookup = resolve(scheme)\n const fg = lookup(pair.fg)\n const bg = lookup(pair.bg)\n const ratio = fg && bg ? contrastRatio(fg, bg) : null\n const issue = issues.find(\n (i) => i.scheme === scheme && i.fg === pair.fg && i.bg === pair.bg\n )\n const word = hasDark ? (scheme === 'dark' ? 'Dark ' : 'Light ') : ''\n if (ratio === null) {\n return (\n <span key={scheme} className=\"text-xs text-muted-foreground\">\n {word}n/a\n </span>\n )\n }\n return issue ? (\n <button\n key={scheme}\n type=\"button\"\n onClick={() => fix(issue)}\n className=\"inline-flex items-center gap-1 rounded-full border border-red-border bg-red-bg px-2 py-0.5 text-xs font-medium text-red-text hover:opacity-90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n aria-label={`${pair.label}${word ? `, ${word.trim().toLowerCase()}` : ''}: ${ratio.toFixed(1)} to 1, below ${pair.min}. Fix`}\n data-testid={tid(`fix-${pair.fg}-${pair.bg}-${scheme}`)}\n >\n {word}\n {ratio.toFixed(1)}:1 · Fix\n </button>\n ) : (\n <span\n key={scheme}\n className=\"inline-flex items-center gap-1 rounded-full border border-green-border bg-green-bg px-2 py-0.5 text-xs font-medium text-green-text\"\n >\n <Check className=\"size-3\" aria-hidden />\n {word}\n {ratio.toFixed(1)}:1\n </span>\n )\n })}\n </li>\n ))}\n </ul>\n )\n\n const Status = section(\n 'status',\n <>\n <ColorField\n label=\"Danger\"\n hint=\"Errors, destructive actions.\"\n value={inputs.danger}\n onChange={(v) => setInput('danger', v)}\n keys={inputKeys('danger')}\n onHint={setHint}\n testIds={{ color: tid('color-danger'), hex: tid('hex-danger') }}\n />\n <ColorField\n label=\"Success\"\n hint=\"Completed, approved, healthy.\"\n value={inputs.success}\n onChange={(v) => setInput('success', v)}\n keys={inputKeys('success')}\n onHint={setHint}\n testIds={{ color: tid('color-success'), hex: tid('hex-success') }}\n />\n <ColorField\n label=\"Warning\"\n hint=\"Needs attention soon.\"\n value={inputs.warning}\n onChange={(v) => setInput('warning', v)}\n keys={inputKeys('warning')}\n onHint={setHint}\n testIds={{ color: tid('color-warning'), hex: tid('hex-warning') }}\n />\n </>\n )\n\n const Charts = section(\n 'charts',\n <>\n <Segmented\n label=\"Chart colours\"\n value={inputs.charts}\n options={[\n { value: 'harmonious', label: 'In harmony with the brand' },\n { value: 'distinct', label: 'Distinct hues' },\n ]}\n onChange={(v) => setInput('charts', v)}\n keys={inputKeys('charts')}\n onHint={setHint}\n testId={tid('chart-style')}\n />\n <div\n className=\"flex gap-1.5\"\n data-testid={tid('chart-swatches')}\n {...hintProps(CHART_KEYS, setHint)}\n >\n {CHART_KEYS.map((key, i) => swatch(key, `Series ${i + 1}`))}\n </div>\n </>\n )\n\n // Advanced edits the set on show: dark when only the dark preview is on, else light.\n const editScheme: ColorScheme = previewMode === 'dark' ? 'dark' : 'light'\n const groups = [...new Set(tokens.map((t) => t.group))]\n const Advanced = (\n <section\n aria-labelledby={tid('section-advanced-title')}\n className=\"rounded-lg border border-border bg-card p-4\"\n data-testid={tid('section-advanced')}\n >\n <button\n type=\"button\"\n onClick={() => setAdvancedOpen((o) => !o)}\n aria-expanded={advancedOpen}\n aria-controls={tid('advanced')}\n className=\"flex w-full items-center justify-between gap-2 text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n data-testid={tid('advanced-toggle')}\n >\n <span>\n <span\n id={tid('section-advanced-title')}\n className=\"block text-sm font-semibold text-foreground\"\n >\n {SECTION_COPY.advanced.title}\n </span>\n <span className=\"mt-0.5 block text-xs text-muted-foreground\">\n {SECTION_COPY.advanced.affects}\n </span>\n </span>\n <ChevronDown\n className={cn('size-4 shrink-0 transition-transform', advancedOpen && 'rotate-180')}\n aria-hidden\n />\n </button>\n {advancedOpen && (\n <div id={tid('advanced')} className=\"mt-4 space-y-5\" data-testid={tid('advanced')}>\n {hasDark && (\n <p className=\"text-xs text-muted-foreground\">\n Editing the {editScheme} colours. Switch the preview to edit the other set.\n </p>\n )}\n {groups.map((group) => (\n <div key={group} className=\"space-y-3\" data-testid={tid(`group-${group}`)}>\n <p className=\"text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground\">\n {groupLabels[group] ?? group}\n </p>\n {tokens\n .filter((t) => t.group === group)\n .map((t) => (\n <ColorField\n key={t.key}\n label={t.label}\n value={setOf(editScheme)[t.key] ?? resolve(editScheme)(t.key) ?? '#000000'}\n onChange={(v) => store().setColor(t.key, v, editScheme)}\n keys={[t.key]}\n onHint={setHint}\n testIds={{ color: tid(`token-${t.key}`), hex: tid(`token-hex-${t.key}`) }}\n trailing={\n overrides.includes(t.key) && (\n <button\n type=\"button\"\n onClick={() => store().clearOverride(t.key)}\n className=\"shrink-0 rounded-md px-1.5 py-1 text-xs font-medium text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n aria-label={`Reset ${t.label} to follow the brand inputs`}\n data-testid={tid(`token-reset-${t.key}`)}\n >\n Reset\n </button>\n )\n }\n />\n ))}\n </div>\n ))}\n <div className=\"space-y-3\">\n <p className=\"text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground\">\n Font stacks\n </p>\n {(['display', 'sans'] as const).map((which) => (\n <label key={which} className=\"block text-sm font-medium text-foreground\">\n {which === 'display' ? 'Headings stack' : 'Body stack'}\n <input\n value={fonts[which]}\n onChange={(e) => store().setFont(which, e.target.value)}\n spellCheck={false}\n className=\"mt-1 h-8 w-full rounded-md border border-input bg-background px-2 font-mono text-xs text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n data-testid={tid(which === 'display' ? 'font-display' : 'font-sans')}\n />\n </label>\n ))}\n </div>\n </div>\n )}\n </section>\n )\n\n const Sections = (\n <div className=\"space-y-4\">\n {Brand}\n {Surfaces}\n {Text}\n {Status}\n {Charts}\n {Advanced}\n </div>\n )\n\n const previewFor = (scheme: ColorScheme, testId: string, compact: boolean) => (\n <ThemePreview\n key={scheme}\n colors={setOf(scheme)}\n fonts={fonts}\n radius={radius}\n scheme={scheme}\n highlight={highlight}\n compact={compact}\n labels={previewLabels}\n title={preview?.title}\n subtitle={preview?.subtitle}\n testId={testId}\n />\n )\n const Previews = (compact: boolean) => {\n const shown: ColorScheme[] =\n previewMode === 'both' && hasDark\n ? ['light', 'dark']\n : [hasDark ? (previewMode as ColorScheme) : 'light']\n return (\n <div className=\"space-y-3\" aria-label=\"Live preview\" role=\"group\">\n <p className=\"text-xs text-muted-foreground\" aria-live=\"polite\">\n Live preview{shown.length > 1 ? ', light and dark' : hasDark ? `, ${shown[0]}` : ''}.\n Point at a control to see what it changes.\n </p>\n {shown.map((scheme, i) =>\n previewFor(scheme, i === 0 ? tid('preview') : tid(`preview-${scheme}`), compact)\n )}\n </div>\n )\n }\n\n const SaveBar = onSave && (\n <div className=\"flex items-center gap-3\">\n <button\n type=\"button\"\n onClick={() => void save()}\n disabled={saving}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-primary px-3 py-2 text-sm font-medium text-primary-foreground hover:opacity-90 disabled:opacity-60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n data-testid={tid('save')}\n >\n {savedVia ? <Check className=\"size-4\" /> : <Save className=\"size-4\" />}\n {saving ? 'Saving…' : savedVia ? 'Saved' : 'Save theme'}\n </button>\n {savedVia && (\n <span className=\"text-xs text-muted-foreground\" data-testid={tid('via')}>\n stored via {savedVia}\n </span>\n )}\n </div>\n )\n\n // ── Collapsed layout — settings pages ───────────────────────────────────────\n if (variant === 'collapsed') {\n const controlsId = tid('controls')\n return (\n <div className=\"@container space-y-3\" data-testid={testIdPrefix} onKeyDown={onKeyDown}>\n {Toolbar}\n {Warning}\n <button\n type=\"button\"\n onClick={() => setOpen((o) => !o)}\n aria-expanded={open}\n aria-controls={controlsId}\n className=\"inline-flex items-center gap-1.5 text-sm font-medium text-foreground hover:text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n data-testid={tid('customize')}\n >\n <ChevronDown\n className={cn('size-4 transition-transform', open && 'rotate-180')}\n aria-hidden\n />\n Customize colours and type\n </button>\n {open && (\n <div\n id={controlsId}\n className=\"grid max-h-[36rem] gap-4 overflow-y-auto rounded-md border border-border p-3 @3xl:grid-cols-[minmax(0,1fr)_minmax(0,22rem)]\"\n data-testid={tid('controls')}\n >\n {Sections}\n <div className=\"@3xl:sticky @3xl:top-0 @3xl:self-start\">{Previews(true)}</div>\n </div>\n )}\n {SaveBar}\n </div>\n )\n }\n\n // ── Drawer layout — compact, single column beside the studio canvas ─────────\n if (variant === 'drawer') {\n return (\n <div\n className=\"@container flex h-full flex-col gap-4 overflow-y-auto bg-background p-4\"\n data-testid={testIdPrefix}\n onKeyDown={onKeyDown}\n >\n <h2 className=\"font-display text-lg font-semibold text-foreground\">Theme</h2>\n {Toolbar}\n {Warning}\n {Previews(true)}\n {Sections}\n {SaveBar}\n </div>\n )\n }\n\n // ── Panel layout — controls beside a sticky live preview ────────────────────\n return (\n <div className=\"@container space-y-4\" data-testid={testIdPrefix} onKeyDown={onKeyDown}>\n {Toolbar}\n {Warning}\n <div className=\"grid gap-6 lg:grid-cols-[minmax(0,1fr)_minmax(0,30rem)]\">\n <div className=\"min-w-0 space-y-4\">\n {Sections}\n {SaveBar}\n </div>\n {/* Below lg the preview leads (what you get), then the controls. */}\n <div className=\"order-first min-w-0 lg:order-none lg:sticky lg:top-4 lg:self-start\">\n {Previews(false)}\n </div>\n </div>\n </div>\n )\n}\n"]}
@@ -6,10 +6,10 @@ var chunkORELHENJ_cjs = require('./chunk-ORELHENJ.cjs');
6
6
  var chunkNWNVWO6L_cjs = require('./chunk-NWNVWO6L.cjs');
7
7
  var chunkOEJQFPWO_cjs = require('./chunk-OEJQFPWO.cjs');
8
8
  var chunkII2OEXHW_cjs = require('./chunk-II2OEXHW.cjs');
9
- var chunkUDSHVNU3_cjs = require('./chunk-UDSHVNU3.cjs');
10
- var chunkIPSHAMO2_cjs = require('./chunk-IPSHAMO2.cjs');
11
9
  var chunkM74FWYNL_cjs = require('./chunk-M74FWYNL.cjs');
12
10
  var chunkSJSGSHIT_cjs = require('./chunk-SJSGSHIT.cjs');
11
+ var chunkUDSHVNU3_cjs = require('./chunk-UDSHVNU3.cjs');
12
+ var chunkIPSHAMO2_cjs = require('./chunk-IPSHAMO2.cjs');
13
13
  var chunkULWRNGGE_cjs = require('./chunk-ULWRNGGE.cjs');
14
14
  var chunkPLIF5CUV_cjs = require('./chunk-PLIF5CUV.cjs');
15
15
  var react = require('react');
@@ -4960,5 +4960,5 @@ exports.toActiveSessionViews = toActiveSessionViews;
4960
4960
  exports.toDeleteBlockerViews = toDeleteBlockerViews;
4961
4961
  exports.toLogoutSessionViews = toLogoutSessionViews;
4962
4962
  exports.toNotificationCategories = toNotificationCategories;
4963
- //# sourceMappingURL=chunk-EATIFPKP.cjs.map
4964
- //# sourceMappingURL=chunk-EATIFPKP.cjs.map
4963
+ //# sourceMappingURL=chunk-T73BHNQX.cjs.map
4964
+ //# sourceMappingURL=chunk-T73BHNQX.cjs.map