@terra-symposium/docs 0.1.17 → 0.1.72

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 (565) hide show
  1. package/README.md +26 -7
  2. package/bin/terra-docs.mjs +187 -0
  3. package/lib-dist/assets/fonts/AUTHENTICSans-130.woff +0 -0
  4. package/lib-dist/assets/fonts/AUTHENTICSans-130.woff2 +0 -0
  5. package/lib-dist/assets/fonts/AUTHENTICSans-150.woff +0 -0
  6. package/lib-dist/assets/fonts/AUTHENTICSans-150.woff2 +0 -0
  7. package/lib-dist/assets/fonts/AUTHENTICSans-90.woff +0 -0
  8. package/lib-dist/assets/fonts/AUTHENTICSans-90.woff2 +0 -0
  9. package/lib-dist/assets/fonts/Avara-Bold.woff +0 -0
  10. package/lib-dist/assets/fonts/Avara-BoldItalic.woff +0 -0
  11. package/lib-dist/assets/fonts/InterVariable-Italic-latin-20260728.woff2 +0 -0
  12. package/lib-dist/assets/fonts/InterVariable-latin-20260728.woff2 +0 -0
  13. package/lib-dist/assets/fonts/README.md +7 -0
  14. package/lib-dist/assets/fonts/licenses/Inter-OFL-1.1.txt +92 -0
  15. package/lib-dist/assets/fonts/licenses/OFL-1.1.txt +93 -0
  16. package/lib-dist/{Docs.d.ts → components/Docs.d.ts} +1 -1
  17. package/lib-dist/components/Docs.d.ts.map +1 -0
  18. package/lib-dist/components/Docs.js +9 -0
  19. package/lib-dist/components/Docs.js.map +1 -0
  20. package/lib-dist/{LocalDocsWorkspace.d.ts → components/LocalDocsWorkspace.d.ts} +9 -2
  21. package/lib-dist/components/LocalDocsWorkspace.d.ts.map +1 -0
  22. package/lib-dist/{LocalDocsWorkspace.js → components/LocalDocsWorkspace.js} +83 -24
  23. package/lib-dist/components/LocalDocsWorkspace.js.map +1 -0
  24. package/lib-dist/components/NotFound.d.ts +8 -0
  25. package/lib-dist/components/NotFound.d.ts.map +1 -0
  26. package/lib-dist/components/NotFound.js +6 -0
  27. package/lib-dist/components/NotFound.js.map +1 -0
  28. package/lib-dist/components/SiteLayout.d.ts +25 -0
  29. package/lib-dist/components/SiteLayout.d.ts.map +1 -0
  30. package/lib-dist/components/SiteLayout.js +12 -0
  31. package/lib-dist/components/SiteLayout.js.map +1 -0
  32. package/lib-dist/{StaticWorkspace.d.ts → components/StaticWorkspace.d.ts} +7 -3
  33. package/lib-dist/components/StaticWorkspace.d.ts.map +1 -0
  34. package/lib-dist/{StaticWorkspace.js → components/StaticWorkspace.js} +106 -34
  35. package/lib-dist/components/StaticWorkspace.js.map +1 -0
  36. package/lib-dist/components/StrictLocalWorkspaceHarness.d.ts +10 -0
  37. package/lib-dist/components/StrictLocalWorkspaceHarness.d.ts.map +1 -0
  38. package/lib-dist/components/StrictLocalWorkspaceHarness.js +12 -0
  39. package/lib-dist/components/StrictLocalWorkspaceHarness.js.map +1 -0
  40. package/lib-dist/components/blocks.d.ts.map +1 -0
  41. package/lib-dist/{blocks.js → components/blocks.js} +88 -13
  42. package/lib-dist/components/blocks.js.map +1 -0
  43. package/lib-dist/{navigation.d.ts → components/navigation.d.ts} +3 -1
  44. package/lib-dist/components/navigation.d.ts.map +1 -0
  45. package/lib-dist/components/navigation.js.map +1 -0
  46. package/lib-dist/{terra → components/terra}/Workspace.d.ts +1 -1
  47. package/lib-dist/components/terra/Workspace.d.ts.map +1 -0
  48. package/lib-dist/components/terra/Workspace.js +190 -0
  49. package/lib-dist/components/terra/Workspace.js.map +1 -0
  50. package/lib-dist/components/terra/editor/TerraContentEditor.d.ts +16 -0
  51. package/lib-dist/components/terra/editor/TerraContentEditor.d.ts.map +1 -0
  52. package/lib-dist/components/terra/editor/TerraContentEditor.js +358 -0
  53. package/lib-dist/components/terra/editor/TerraContentEditor.js.map +1 -0
  54. package/lib-dist/{terra → components/terra}/editor/_blocks.d.ts +3 -4
  55. package/lib-dist/components/terra/editor/_blocks.d.ts.map +1 -0
  56. package/lib-dist/components/terra/editor/_blocks.js +120 -0
  57. package/lib-dist/components/terra/editor/_blocks.js.map +1 -0
  58. package/lib-dist/components/terra/editor/docs/BlockContext.d.ts +7 -0
  59. package/lib-dist/components/terra/editor/docs/BlockContext.d.ts.map +1 -0
  60. package/lib-dist/components/terra/editor/docs/BlockContext.js +60 -0
  61. package/lib-dist/components/terra/editor/docs/BlockContext.js.map +1 -0
  62. package/lib-dist/components/terra/editor/docs/DocsAttachmentPicker.d.ts +12 -0
  63. package/lib-dist/components/terra/editor/docs/DocsAttachmentPicker.d.ts.map +1 -0
  64. package/lib-dist/components/terra/editor/docs/DocsAttachmentPicker.js +66 -0
  65. package/lib-dist/components/terra/editor/docs/DocsAttachmentPicker.js.map +1 -0
  66. package/lib-dist/components/terra/editor/docs/TerraToolbar.d.ts +12 -0
  67. package/lib-dist/components/terra/editor/docs/TerraToolbar.d.ts.map +1 -0
  68. package/lib-dist/components/terra/editor/docs/TerraToolbar.js +169 -0
  69. package/lib-dist/components/terra/editor/docs/TerraToolbar.js.map +1 -0
  70. package/lib-dist/{terra → components/terra}/editor/docs/_Callout.d.ts +1 -1
  71. package/lib-dist/components/terra/editor/docs/_Callout.d.ts.map +1 -0
  72. package/lib-dist/{terra → components/terra}/editor/docs/_Callout.js +11 -7
  73. package/lib-dist/components/terra/editor/docs/_Callout.js.map +1 -0
  74. package/lib-dist/components/terra/editor/docs/_CodeBlock.d.ts.map +1 -0
  75. package/lib-dist/{terra → components/terra}/editor/docs/_CodeBlock.js +111 -46
  76. package/lib-dist/components/terra/editor/docs/_CodeBlock.js.map +1 -0
  77. package/lib-dist/{terra → components/terra}/editor/docs/_DocsCode.d.ts +1 -1
  78. package/lib-dist/components/terra/editor/docs/_DocsCode.d.ts.map +1 -0
  79. package/lib-dist/{terra → components/terra}/editor/docs/_DocsCode.js +47 -14
  80. package/lib-dist/components/terra/editor/docs/_DocsCode.js.map +1 -0
  81. package/lib-dist/{terra → components/terra}/editor/docs/_DocsImage.d.ts +1 -1
  82. package/lib-dist/components/terra/editor/docs/_DocsImage.d.ts.map +1 -0
  83. package/lib-dist/components/terra/editor/docs/_DocsImage.js +62 -0
  84. package/lib-dist/components/terra/editor/docs/_DocsImage.js.map +1 -0
  85. package/lib-dist/{terra → components/terra}/editor/docs/_Embed.d.ts +3 -1
  86. package/lib-dist/components/terra/editor/docs/_Embed.d.ts.map +1 -0
  87. package/lib-dist/components/terra/editor/docs/_Embed.js +73 -0
  88. package/lib-dist/components/terra/editor/docs/_Embed.js.map +1 -0
  89. package/lib-dist/{terra → components/terra}/editor/docs/_Math.d.ts +2 -2
  90. package/lib-dist/components/terra/editor/docs/_Math.d.ts.map +1 -0
  91. package/lib-dist/{terra → components/terra}/editor/docs/_Math.js +29 -17
  92. package/lib-dist/components/terra/editor/docs/_Math.js.map +1 -0
  93. package/lib-dist/{terra → components/terra}/editor/docs/_Nodes.d.ts +1 -1
  94. package/lib-dist/components/terra/editor/docs/_Nodes.d.ts.map +1 -0
  95. package/lib-dist/components/terra/editor/docs/_Nodes.js +62 -0
  96. package/lib-dist/components/terra/editor/docs/_Nodes.js.map +1 -0
  97. package/lib-dist/{terra → components/terra}/editor/docs/_Raw.d.ts +1 -1
  98. package/lib-dist/components/terra/editor/docs/_Raw.d.ts.map +1 -0
  99. package/lib-dist/{terra → components/terra}/editor/docs/_Raw.js +8 -3
  100. package/lib-dist/components/terra/editor/docs/_Raw.js.map +1 -0
  101. package/lib-dist/{terra → components/terra}/editor/docs/_Table.d.ts +1 -1
  102. package/lib-dist/components/terra/editor/docs/_Table.d.ts.map +1 -0
  103. package/lib-dist/components/terra/editor/docs/_Table.js +99 -0
  104. package/lib-dist/components/terra/editor/docs/_Table.js.map +1 -0
  105. package/lib-dist/{terra → components/terra}/editor/docs/_Tabs.d.ts +1 -1
  106. package/lib-dist/components/terra/editor/docs/_Tabs.d.ts.map +1 -0
  107. package/lib-dist/{terra → components/terra}/editor/docs/_Tabs.js +36 -15
  108. package/lib-dist/components/terra/editor/docs/_Tabs.js.map +1 -0
  109. package/lib-dist/{terra → components/terra}/editor/docs/_TsDocs.d.ts +1 -1
  110. package/lib-dist/components/terra/editor/docs/_TsDocs.d.ts.map +1 -0
  111. package/lib-dist/{terra → components/terra}/editor/docs/_TsDocs.js +16 -14
  112. package/lib-dist/components/terra/editor/docs/_TsDocs.js.map +1 -0
  113. package/lib-dist/{terra → components/terra}/editor/docs/_math_inline.d.ts +1 -1
  114. package/lib-dist/components/terra/editor/docs/_math_inline.d.ts.map +1 -0
  115. package/lib-dist/{terra → components/terra}/editor/docs/_math_inline.js +2 -2
  116. package/lib-dist/components/terra/editor/docs/_math_inline.js.map +1 -0
  117. package/lib-dist/{terra → components/terra}/editor/docs/heading.d.ts +1 -1
  118. package/lib-dist/components/terra/editor/docs/heading.d.ts.map +1 -0
  119. package/lib-dist/{terra → components/terra}/editor/docs/heading.js +8 -5
  120. package/lib-dist/components/terra/editor/docs/heading.js.map +1 -0
  121. package/lib-dist/components/terra/editor/docs/index.d.ts.map +1 -0
  122. package/lib-dist/components/terra/editor/docs/index.js.map +1 -0
  123. package/lib-dist/components/terra/editor/terra-content.styles.d.ts +3 -0
  124. package/lib-dist/components/terra/editor/terra-content.styles.d.ts.map +1 -0
  125. package/lib-dist/components/terra/editor/terra-content.styles.js +3 -0
  126. package/lib-dist/components/terra/editor/terra-content.styles.js.map +1 -0
  127. package/lib-dist/{terra → components/terra}/editor/types.d.ts +2 -2
  128. package/lib-dist/components/terra/editor/types.d.ts.map +1 -0
  129. package/lib-dist/{terra → components/terra}/editor/types.js +1 -1
  130. package/lib-dist/components/terra/editor/types.js.map +1 -0
  131. package/lib-dist/{terra → components/terra}/flow/Nodes.d.ts +2 -3
  132. package/lib-dist/components/terra/flow/Nodes.d.ts.map +1 -0
  133. package/lib-dist/{terra → components/terra}/flow/Nodes.js +213 -106
  134. package/lib-dist/components/terra/flow/Nodes.js.map +1 -0
  135. package/lib-dist/{terra → components/terra}/flow/_chrome.d.ts +7 -9
  136. package/lib-dist/components/terra/flow/_chrome.d.ts.map +1 -0
  137. package/lib-dist/{terra → components/terra}/flow/_chrome.js +329 -118
  138. package/lib-dist/components/terra/flow/_chrome.js.map +1 -0
  139. package/lib-dist/components/terra/flow/menuContext.d.ts.map +1 -0
  140. package/lib-dist/components/terra/flow/menuContext.js.map +1 -0
  141. package/lib-dist/{terra → components/terra}/pages/docs/_attachments.d.ts +1 -1
  142. package/lib-dist/components/terra/pages/docs/_attachments.d.ts.map +1 -0
  143. package/lib-dist/{terra → components/terra}/pages/docs/_attachments.js +375 -131
  144. package/lib-dist/components/terra/pages/docs/_attachments.js.map +1 -0
  145. package/lib-dist/components/terra/pages/docs/_blocks.d.ts.map +1 -0
  146. package/lib-dist/{terra → components/terra}/pages/docs/_blocks.js +42 -31
  147. package/lib-dist/components/terra/pages/docs/_blocks.js.map +1 -0
  148. package/lib-dist/{terra → components/terra}/pages/docs/_editable.d.ts +2 -3
  149. package/lib-dist/components/terra/pages/docs/_editable.d.ts.map +1 -0
  150. package/lib-dist/{terra → components/terra}/pages/docs/_editable.js +82 -44
  151. package/lib-dist/components/terra/pages/docs/_editable.js.map +1 -0
  152. package/lib-dist/{terra → components/terra}/pages/docs/_export-dialog.d.ts +1 -1
  153. package/lib-dist/components/terra/pages/docs/_export-dialog.d.ts.map +1 -0
  154. package/lib-dist/{terra → components/terra}/pages/docs/_export-dialog.js +17 -17
  155. package/lib-dist/components/terra/pages/docs/_export-dialog.js.map +1 -0
  156. package/lib-dist/components/terra/pages/docs/_icons.d.ts.map +1 -0
  157. package/lib-dist/components/terra/pages/docs/_icons.js.map +1 -0
  158. package/lib-dist/{terra → components/terra}/pages/docs/_main.d.ts +10 -7
  159. package/lib-dist/components/terra/pages/docs/_main.d.ts.map +1 -0
  160. package/lib-dist/components/terra/pages/docs/_main.js +710 -0
  161. package/lib-dist/components/terra/pages/docs/_main.js.map +1 -0
  162. package/lib-dist/components/terra/pages/docs/_manage-attachments-dialog.d.ts +10 -0
  163. package/lib-dist/components/terra/pages/docs/_manage-attachments-dialog.d.ts.map +1 -0
  164. package/lib-dist/components/terra/pages/docs/_manage-attachments-dialog.js +597 -0
  165. package/lib-dist/components/terra/pages/docs/_manage-attachments-dialog.js.map +1 -0
  166. package/lib-dist/{terra → components/terra}/pages/docs/_sidebar.d.ts +3 -12
  167. package/lib-dist/components/terra/pages/docs/_sidebar.d.ts.map +1 -0
  168. package/lib-dist/components/terra/pages/docs/_sidebar.js +1437 -0
  169. package/lib-dist/components/terra/pages/docs/_sidebar.js.map +1 -0
  170. package/lib-dist/components/terra/pages/docs/_toc.d.ts +4 -0
  171. package/lib-dist/components/terra/pages/docs/_toc.d.ts.map +1 -0
  172. package/lib-dist/components/terra/pages/docs/_toc.js +212 -0
  173. package/lib-dist/components/terra/pages/docs/_toc.js.map +1 -0
  174. package/lib-dist/components/terra/pages/docs/_toolbar-find-replace.d.ts +15 -0
  175. package/lib-dist/components/terra/pages/docs/_toolbar-find-replace.d.ts.map +1 -0
  176. package/lib-dist/components/terra/pages/docs/_toolbar-find-replace.js +207 -0
  177. package/lib-dist/components/terra/pages/docs/_toolbar-find-replace.js.map +1 -0
  178. package/lib-dist/{terra → components/terra}/pages/docs/_toolbar.d.ts +3 -5
  179. package/lib-dist/components/terra/pages/docs/_toolbar.d.ts.map +1 -0
  180. package/lib-dist/{terra → components/terra}/pages/docs/_toolbar.js +318 -350
  181. package/lib-dist/components/terra/pages/docs/_toolbar.js.map +1 -0
  182. package/lib-dist/{terra → components/terra}/pages/docs/_tree.d.ts +1 -4
  183. package/lib-dist/components/terra/pages/docs/_tree.d.ts.map +1 -0
  184. package/lib-dist/{terra → components/terra}/pages/docs/_tree.js +219 -264
  185. package/lib-dist/components/terra/pages/docs/_tree.js.map +1 -0
  186. package/lib-dist/components/terra/pages/docs/use-block-nav.d.ts +5 -0
  187. package/lib-dist/components/terra/pages/docs/use-block-nav.d.ts.map +1 -0
  188. package/lib-dist/components/terra/pages/docs/use-block-nav.js +1306 -0
  189. package/lib-dist/components/terra/pages/docs/use-block-nav.js.map +1 -0
  190. package/lib-dist/components/terra/pages/docs/use-media-paste.d.ts +5 -0
  191. package/lib-dist/components/terra/pages/docs/use-media-paste.d.ts.map +1 -0
  192. package/lib-dist/components/terra/pages/docs/use-media-paste.js +391 -0
  193. package/lib-dist/components/terra/pages/docs/use-media-paste.js.map +1 -0
  194. package/lib-dist/components/terra/pages/docs/use-render-tripwire.d.ts +2 -0
  195. package/lib-dist/components/terra/pages/docs/use-render-tripwire.d.ts.map +1 -0
  196. package/lib-dist/components/terra/pages/docs/use-render-tripwire.js +25 -0
  197. package/lib-dist/components/terra/pages/docs/use-render-tripwire.js.map +1 -0
  198. package/lib-dist/{terra/runtime → components/terra}/ui.d.ts +2 -5
  199. package/lib-dist/components/terra/ui.d.ts.map +1 -0
  200. package/lib-dist/components/terra/ui.js +20 -0
  201. package/lib-dist/components/terra/ui.js.map +1 -0
  202. package/lib-dist/components/workspace-demo-fixture.d.ts +35 -0
  203. package/lib-dist/components/workspace-demo-fixture.d.ts.map +1 -0
  204. package/lib-dist/components/workspace-demo-fixture.js +820 -0
  205. package/lib-dist/components/workspace-demo-fixture.js.map +1 -0
  206. package/lib-dist/fonts/KaTeX_AMS-Regular.ttf +0 -0
  207. package/lib-dist/fonts/KaTeX_AMS-Regular.woff +0 -0
  208. package/lib-dist/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  209. package/lib-dist/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  210. package/lib-dist/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  211. package/lib-dist/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  212. package/lib-dist/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  213. package/lib-dist/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  214. package/lib-dist/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  215. package/lib-dist/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  216. package/lib-dist/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  217. package/lib-dist/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  218. package/lib-dist/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  219. package/lib-dist/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  220. package/lib-dist/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  221. package/lib-dist/fonts/KaTeX_Main-Bold.ttf +0 -0
  222. package/lib-dist/fonts/KaTeX_Main-Bold.woff +0 -0
  223. package/lib-dist/fonts/KaTeX_Main-Bold.woff2 +0 -0
  224. package/lib-dist/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  225. package/lib-dist/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  226. package/lib-dist/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  227. package/lib-dist/fonts/KaTeX_Main-Italic.ttf +0 -0
  228. package/lib-dist/fonts/KaTeX_Main-Italic.woff +0 -0
  229. package/lib-dist/fonts/KaTeX_Main-Italic.woff2 +0 -0
  230. package/lib-dist/fonts/KaTeX_Main-Regular.ttf +0 -0
  231. package/lib-dist/fonts/KaTeX_Main-Regular.woff +0 -0
  232. package/lib-dist/fonts/KaTeX_Main-Regular.woff2 +0 -0
  233. package/lib-dist/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  234. package/lib-dist/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  235. package/lib-dist/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  236. package/lib-dist/fonts/KaTeX_Math-Italic.ttf +0 -0
  237. package/lib-dist/fonts/KaTeX_Math-Italic.woff +0 -0
  238. package/lib-dist/fonts/KaTeX_Math-Italic.woff2 +0 -0
  239. package/lib-dist/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  240. package/lib-dist/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  241. package/lib-dist/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  242. package/lib-dist/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  243. package/lib-dist/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  244. package/lib-dist/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  245. package/lib-dist/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  246. package/lib-dist/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  247. package/lib-dist/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  248. package/lib-dist/fonts/KaTeX_Script-Regular.ttf +0 -0
  249. package/lib-dist/fonts/KaTeX_Script-Regular.woff +0 -0
  250. package/lib-dist/fonts/KaTeX_Script-Regular.woff2 +0 -0
  251. package/lib-dist/fonts/KaTeX_Size1-Regular.ttf +0 -0
  252. package/lib-dist/fonts/KaTeX_Size1-Regular.woff +0 -0
  253. package/lib-dist/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  254. package/lib-dist/fonts/KaTeX_Size2-Regular.ttf +0 -0
  255. package/lib-dist/fonts/KaTeX_Size2-Regular.woff +0 -0
  256. package/lib-dist/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  257. package/lib-dist/fonts/KaTeX_Size3-Regular.ttf +0 -0
  258. package/lib-dist/fonts/KaTeX_Size3-Regular.woff +0 -0
  259. package/lib-dist/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  260. package/lib-dist/fonts/KaTeX_Size4-Regular.ttf +0 -0
  261. package/lib-dist/fonts/KaTeX_Size4-Regular.woff +0 -0
  262. package/lib-dist/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  263. package/lib-dist/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  264. package/lib-dist/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  265. package/lib-dist/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  266. package/lib-dist/lib/astro.d.ts +8 -0
  267. package/lib-dist/lib/astro.d.ts.map +1 -0
  268. package/lib-dist/lib/astro.js +27 -0
  269. package/lib-dist/lib/astro.js.map +1 -0
  270. package/lib-dist/lib/docs-theme.d.ts +7 -0
  271. package/lib-dist/lib/docs-theme.d.ts.map +1 -0
  272. package/lib-dist/lib/docs-theme.js +51 -0
  273. package/lib-dist/lib/docs-theme.js.map +1 -0
  274. package/lib-dist/lib/host-runtime.d.ts.map +1 -0
  275. package/lib-dist/{host-runtime.js → lib/host-runtime.js} +4 -2
  276. package/lib-dist/lib/host-runtime.js.map +1 -0
  277. package/lib-dist/{host.d.ts → lib/host.d.ts} +20 -0
  278. package/lib-dist/lib/host.d.ts.map +1 -0
  279. package/lib-dist/lib/host.js.map +1 -0
  280. package/lib-dist/lib/index.d.ts +34 -0
  281. package/lib-dist/lib/index.d.ts.map +1 -0
  282. package/lib-dist/lib/index.js +27 -0
  283. package/lib-dist/lib/index.js.map +1 -0
  284. package/lib-dist/{markdown-model.d.ts → lib/markdown-model.d.ts} +3 -3
  285. package/lib-dist/lib/markdown-model.d.ts.map +1 -0
  286. package/lib-dist/lib/markdown-model.js +2030 -0
  287. package/lib-dist/lib/markdown-model.js.map +1 -0
  288. package/lib-dist/lib/markdown.d.ts +3 -0
  289. package/lib-dist/lib/markdown.d.ts.map +1 -0
  290. package/lib-dist/lib/markdown.js +222 -0
  291. package/lib-dist/lib/markdown.js.map +1 -0
  292. package/lib-dist/{schema.d.ts → lib/schema.d.ts} +55 -23
  293. package/lib-dist/lib/schema.d.ts.map +1 -0
  294. package/lib-dist/{schema.js → lib/schema.js} +26 -18
  295. package/lib-dist/lib/schema.js.map +1 -0
  296. package/lib-dist/{terra/pages/docs/_custom.d.ts → lib/terra/custom-components.d.ts} +2 -2
  297. package/lib-dist/lib/terra/custom-components.d.ts.map +1 -0
  298. package/lib-dist/{terra/pages/docs/_custom.js → lib/terra/custom-components.js} +1 -1
  299. package/lib-dist/lib/terra/custom-components.js.map +1 -0
  300. package/lib-dist/lib/terra/docs/archive.d.ts +3 -0
  301. package/lib-dist/lib/terra/docs/archive.d.ts.map +1 -0
  302. package/lib-dist/lib/terra/docs/archive.js +654 -0
  303. package/lib-dist/lib/terra/docs/archive.js.map +1 -0
  304. package/lib-dist/lib/terra/docs/assets.d.ts +26 -0
  305. package/lib-dist/lib/terra/docs/assets.d.ts.map +1 -0
  306. package/lib-dist/lib/terra/docs/assets.js +74 -0
  307. package/lib-dist/lib/terra/docs/assets.js.map +1 -0
  308. package/lib-dist/lib/terra/docs/attachments.d.ts +4 -0
  309. package/lib-dist/lib/terra/docs/attachments.d.ts.map +1 -0
  310. package/lib-dist/lib/terra/docs/attachments.js +5 -0
  311. package/lib-dist/lib/terra/docs/attachments.js.map +1 -0
  312. package/lib-dist/lib/terra/docs/editor-dom.d.ts +50 -0
  313. package/lib-dist/lib/terra/docs/editor-dom.d.ts.map +1 -0
  314. package/lib-dist/lib/terra/docs/editor-dom.js +236 -0
  315. package/lib-dist/lib/terra/docs/editor-dom.js.map +1 -0
  316. package/lib-dist/lib/terra/docs/mutations.d.ts +10 -0
  317. package/lib-dist/lib/terra/docs/mutations.d.ts.map +1 -0
  318. package/lib-dist/lib/terra/docs/mutations.js +105 -0
  319. package/lib-dist/lib/terra/docs/mutations.js.map +1 -0
  320. package/lib-dist/lib/terra/docs/navigation.d.ts +6 -0
  321. package/lib-dist/lib/terra/docs/navigation.d.ts.map +1 -0
  322. package/lib-dist/lib/terra/docs/navigation.js +21 -0
  323. package/lib-dist/lib/terra/docs/navigation.js.map +1 -0
  324. package/lib-dist/lib/terra/docs/state.d.ts +185 -0
  325. package/lib-dist/lib/terra/docs/state.d.ts.map +1 -0
  326. package/lib-dist/lib/terra/docs/state.js +254 -0
  327. package/lib-dist/lib/terra/docs/state.js.map +1 -0
  328. package/lib-dist/lib/terra/docs/toolbar.d.ts +11 -0
  329. package/lib-dist/lib/terra/docs/toolbar.d.ts.map +1 -0
  330. package/lib-dist/lib/terra/docs/toolbar.js +41 -0
  331. package/lib-dist/lib/terra/docs/toolbar.js.map +1 -0
  332. package/lib-dist/lib/terra/docs/tree.d.ts +15 -0
  333. package/lib-dist/lib/terra/docs/tree.d.ts.map +1 -0
  334. package/lib-dist/lib/terra/docs/tree.js +61 -0
  335. package/lib-dist/lib/terra/docs/tree.js.map +1 -0
  336. package/lib-dist/{terra/pages/docs/_helpers.d.ts → lib/terra/docs/workspace.d.ts} +6 -8
  337. package/lib-dist/lib/terra/docs/workspace.d.ts.map +1 -0
  338. package/lib-dist/{terra/pages/docs/_helpers.js → lib/terra/docs/workspace.js} +39 -28
  339. package/lib-dist/lib/terra/docs/workspace.js.map +1 -0
  340. package/lib-dist/lib/terra/flow/_layout.d.ts.map +1 -0
  341. package/lib-dist/{terra → lib/terra}/flow/_layout.js +16 -6
  342. package/lib-dist/lib/terra/flow/_layout.js.map +1 -0
  343. package/lib-dist/{terra → lib/terra}/flow/powerSource.d.ts +1 -2
  344. package/lib-dist/lib/terra/flow/powerSource.d.ts.map +1 -0
  345. package/lib-dist/{terra → lib/terra}/flow/powerSource.js +10 -4
  346. package/lib-dist/lib/terra/flow/powerSource.js.map +1 -0
  347. package/lib-dist/{terra → lib/terra}/regex.mjs +11 -6
  348. package/lib-dist/lib/terra/runtime/action-proxy.d.ts +45 -0
  349. package/lib-dist/lib/terra/runtime/action-proxy.d.ts.map +1 -0
  350. package/lib-dist/{terra → lib/terra}/runtime/action-proxy.js +1 -1
  351. package/lib-dist/lib/terra/runtime/action-proxy.js.map +1 -0
  352. package/lib-dist/lib/terra/runtime/content/block-jsx.d.ts +23 -0
  353. package/lib-dist/lib/terra/runtime/content/block-jsx.d.ts.map +1 -0
  354. package/lib-dist/lib/terra/runtime/content/block-jsx.js +225 -0
  355. package/lib-dist/lib/terra/runtime/content/block-jsx.js.map +1 -0
  356. package/lib-dist/lib/terra/runtime/content/document-markdown.d.ts +41 -0
  357. package/lib-dist/lib/terra/runtime/content/document-markdown.d.ts.map +1 -0
  358. package/lib-dist/lib/terra/runtime/content/document-markdown.js +536 -0
  359. package/lib-dist/lib/terra/runtime/content/document-markdown.js.map +1 -0
  360. package/lib-dist/lib/terra/runtime/content/markdown.d.ts +109 -0
  361. package/lib-dist/lib/terra/runtime/content/markdown.d.ts.map +1 -0
  362. package/lib-dist/lib/terra/runtime/content/markdown.js +428 -0
  363. package/lib-dist/lib/terra/runtime/content/markdown.js.map +1 -0
  364. package/lib-dist/lib/terra/runtime/content.d.ts.map +1 -0
  365. package/lib-dist/{terra → lib/terra}/runtime/content.js +147 -62
  366. package/lib-dist/lib/terra/runtime/content.js.map +1 -0
  367. package/lib-dist/lib/terra/runtime/leaf.d.ts.map +1 -0
  368. package/lib-dist/{terra → lib/terra}/runtime/leaf.js +1 -1
  369. package/lib-dist/lib/terra/runtime/leaf.js.map +1 -0
  370. package/lib-dist/lib/terra/runtime/nodes.d.ts.map +1 -0
  371. package/lib-dist/{terra → lib/terra}/runtime/nodes.js +103 -31
  372. package/lib-dist/lib/terra/runtime/nodes.js.map +1 -0
  373. package/lib-dist/{terra → lib/terra}/runtime/runtime.d.ts +8 -2
  374. package/lib-dist/lib/terra/runtime/runtime.d.ts.map +1 -0
  375. package/lib-dist/lib/terra/runtime/runtime.js +86 -0
  376. package/lib-dist/lib/terra/runtime/runtime.js.map +1 -0
  377. package/lib-dist/lib/terra/runtime/shared.d.ts.map +1 -0
  378. package/lib-dist/{terra → lib/terra}/runtime/shared.js +56 -11
  379. package/lib-dist/lib/terra/runtime/shared.js.map +1 -0
  380. package/lib-dist/lib/terra/runtime/types.d.ts +529 -0
  381. package/lib-dist/lib/terra/runtime/types.d.ts.map +1 -0
  382. package/lib-dist/{terra → lib/terra}/runtime/types.js +28 -2
  383. package/lib-dist/lib/terra/runtime/types.js.map +1 -0
  384. package/lib-dist/lib/workspace-types.d.ts +32 -0
  385. package/lib-dist/lib/workspace-types.d.ts.map +1 -0
  386. package/lib-dist/lib/workspace-types.js +2 -0
  387. package/lib-dist/lib/workspace-types.js.map +1 -0
  388. package/lib-dist/style.css +237 -1
  389. package/package.json +63 -38
  390. package/site/astro.config.mjs +67 -0
  391. package/site/docs-content-plugin.mjs +62 -0
  392. package/site/src/components/DocsSiteSearch.tsx +108 -0
  393. package/site/src/lib/catalog.ts +151 -0
  394. package/site/src/pages/404.astro +38 -0
  395. package/site/src/pages/[...slug].astro +49 -0
  396. package/site/src/styles/search.css +56 -0
  397. package/src/components/NotFound.astro +6 -0
  398. package/src/components/NotFound.tsx +48 -0
  399. package/src/{SiteLayout.astro → components/SiteLayout.astro} +17 -5
  400. package/src/{navigation.tsx → components/navigation.tsx} +3 -1
  401. package/lib-dist/Docs.d.ts.map +0 -1
  402. package/lib-dist/Docs.js +0 -60
  403. package/lib-dist/Docs.js.map +0 -1
  404. package/lib-dist/LocalDocsWorkspace.d.ts.map +0 -1
  405. package/lib-dist/LocalDocsWorkspace.js.map +0 -1
  406. package/lib-dist/SiteLayout.d.ts +0 -30
  407. package/lib-dist/SiteLayout.d.ts.map +0 -1
  408. package/lib-dist/SiteLayout.js +0 -34
  409. package/lib-dist/SiteLayout.js.map +0 -1
  410. package/lib-dist/StaticWorkspace.d.ts.map +0 -1
  411. package/lib-dist/StaticWorkspace.js.map +0 -1
  412. package/lib-dist/_Toolbar.d.ts +0 -7
  413. package/lib-dist/_Toolbar.d.ts.map +0 -1
  414. package/lib-dist/_Toolbar.js +0 -85
  415. package/lib-dist/_Toolbar.js.map +0 -1
  416. package/lib-dist/blocks.d.ts.map +0 -1
  417. package/lib-dist/blocks.js.map +0 -1
  418. package/lib-dist/docs-catalog.d.ts +0 -5
  419. package/lib-dist/docs-catalog.d.ts.map +0 -1
  420. package/lib-dist/docs-catalog.js +0 -38
  421. package/lib-dist/docs-catalog.js.map +0 -1
  422. package/lib-dist/docs-style.css +0 -31
  423. package/lib-dist/fonts/README.md +0 -5
  424. package/lib-dist/host-runtime.d.ts.map +0 -1
  425. package/lib-dist/host-runtime.js.map +0 -1
  426. package/lib-dist/host.d.ts.map +0 -1
  427. package/lib-dist/host.js.map +0 -1
  428. package/lib-dist/index.d.ts +0 -35
  429. package/lib-dist/index.d.ts.map +0 -1
  430. package/lib-dist/index.js +0 -28
  431. package/lib-dist/index.js.map +0 -1
  432. package/lib-dist/markdown-model.d.ts.map +0 -1
  433. package/lib-dist/markdown-model.js +0 -181
  434. package/lib-dist/markdown-model.js.map +0 -1
  435. package/lib-dist/markdown.d.ts +0 -3
  436. package/lib-dist/markdown.d.ts.map +0 -1
  437. package/lib-dist/markdown.js +0 -83
  438. package/lib-dist/markdown.js.map +0 -1
  439. package/lib-dist/navigation.d.ts.map +0 -1
  440. package/lib-dist/navigation.js.map +0 -1
  441. package/lib-dist/schema.d.ts.map +0 -1
  442. package/lib-dist/schema.js.map +0 -1
  443. package/lib-dist/terra/Workspace.d.ts.map +0 -1
  444. package/lib-dist/terra/Workspace.js +0 -9
  445. package/lib-dist/terra/Workspace.js.map +0 -1
  446. package/lib-dist/terra/editor/TerraContentEditor.d.ts +0 -10
  447. package/lib-dist/terra/editor/TerraContentEditor.d.ts.map +0 -1
  448. package/lib-dist/terra/editor/TerraContentEditor.js +0 -47
  449. package/lib-dist/terra/editor/TerraContentEditor.js.map +0 -1
  450. package/lib-dist/terra/editor/_blocks.d.ts.map +0 -1
  451. package/lib-dist/terra/editor/_blocks.js +0 -110
  452. package/lib-dist/terra/editor/_blocks.js.map +0 -1
  453. package/lib-dist/terra/editor/docs/_Callout.d.ts.map +0 -1
  454. package/lib-dist/terra/editor/docs/_Callout.js.map +0 -1
  455. package/lib-dist/terra/editor/docs/_CodeBlock.d.ts.map +0 -1
  456. package/lib-dist/terra/editor/docs/_CodeBlock.js.map +0 -1
  457. package/lib-dist/terra/editor/docs/_DocsCode.d.ts.map +0 -1
  458. package/lib-dist/terra/editor/docs/_DocsCode.js.map +0 -1
  459. package/lib-dist/terra/editor/docs/_DocsImage.d.ts.map +0 -1
  460. package/lib-dist/terra/editor/docs/_DocsImage.js +0 -62
  461. package/lib-dist/terra/editor/docs/_DocsImage.js.map +0 -1
  462. package/lib-dist/terra/editor/docs/_Embed.d.ts.map +0 -1
  463. package/lib-dist/terra/editor/docs/_Embed.js +0 -27
  464. package/lib-dist/terra/editor/docs/_Embed.js.map +0 -1
  465. package/lib-dist/terra/editor/docs/_Math.d.ts.map +0 -1
  466. package/lib-dist/terra/editor/docs/_Math.js.map +0 -1
  467. package/lib-dist/terra/editor/docs/_Nodes.d.ts.map +0 -1
  468. package/lib-dist/terra/editor/docs/_Nodes.js +0 -52
  469. package/lib-dist/terra/editor/docs/_Nodes.js.map +0 -1
  470. package/lib-dist/terra/editor/docs/_Raw.d.ts.map +0 -1
  471. package/lib-dist/terra/editor/docs/_Raw.js.map +0 -1
  472. package/lib-dist/terra/editor/docs/_Table.d.ts.map +0 -1
  473. package/lib-dist/terra/editor/docs/_Table.js +0 -71
  474. package/lib-dist/terra/editor/docs/_Table.js.map +0 -1
  475. package/lib-dist/terra/editor/docs/_Tabs.d.ts.map +0 -1
  476. package/lib-dist/terra/editor/docs/_Tabs.js.map +0 -1
  477. package/lib-dist/terra/editor/docs/_TsDocs.d.ts.map +0 -1
  478. package/lib-dist/terra/editor/docs/_TsDocs.js.map +0 -1
  479. package/lib-dist/terra/editor/docs/_math_inline.d.ts.map +0 -1
  480. package/lib-dist/terra/editor/docs/_math_inline.js.map +0 -1
  481. package/lib-dist/terra/editor/docs/heading.d.ts.map +0 -1
  482. package/lib-dist/terra/editor/docs/heading.js.map +0 -1
  483. package/lib-dist/terra/editor/docs/index.d.ts.map +0 -1
  484. package/lib-dist/terra/editor/docs/index.js.map +0 -1
  485. package/lib-dist/terra/editor/types.d.ts.map +0 -1
  486. package/lib-dist/terra/editor/types.js.map +0 -1
  487. package/lib-dist/terra/flow/Nodes.d.ts.map +0 -1
  488. package/lib-dist/terra/flow/Nodes.js.map +0 -1
  489. package/lib-dist/terra/flow/_chrome.d.ts.map +0 -1
  490. package/lib-dist/terra/flow/_chrome.js.map +0 -1
  491. package/lib-dist/terra/flow/_layout.d.ts.map +0 -1
  492. package/lib-dist/terra/flow/_layout.js.map +0 -1
  493. package/lib-dist/terra/flow/menuContext.d.ts.map +0 -1
  494. package/lib-dist/terra/flow/menuContext.js.map +0 -1
  495. package/lib-dist/terra/flow/powerSource.d.ts.map +0 -1
  496. package/lib-dist/terra/flow/powerSource.js.map +0 -1
  497. package/lib-dist/terra/pages/docs/_attachments.d.ts.map +0 -1
  498. package/lib-dist/terra/pages/docs/_attachments.js.map +0 -1
  499. package/lib-dist/terra/pages/docs/_blocks.d.ts.map +0 -1
  500. package/lib-dist/terra/pages/docs/_blocks.js.map +0 -1
  501. package/lib-dist/terra/pages/docs/_custom.d.ts.map +0 -1
  502. package/lib-dist/terra/pages/docs/_custom.js.map +0 -1
  503. package/lib-dist/terra/pages/docs/_editable.d.ts.map +0 -1
  504. package/lib-dist/terra/pages/docs/_editable.js.map +0 -1
  505. package/lib-dist/terra/pages/docs/_export-dialog.d.ts.map +0 -1
  506. package/lib-dist/terra/pages/docs/_export-dialog.js.map +0 -1
  507. package/lib-dist/terra/pages/docs/_helpers.d.ts.map +0 -1
  508. package/lib-dist/terra/pages/docs/_helpers.js.map +0 -1
  509. package/lib-dist/terra/pages/docs/_icons.d.ts.map +0 -1
  510. package/lib-dist/terra/pages/docs/_icons.js.map +0 -1
  511. package/lib-dist/terra/pages/docs/_main.d.ts.map +0 -1
  512. package/lib-dist/terra/pages/docs/_main.js +0 -1959
  513. package/lib-dist/terra/pages/docs/_main.js.map +0 -1
  514. package/lib-dist/terra/pages/docs/_sidebar.d.ts.map +0 -1
  515. package/lib-dist/terra/pages/docs/_sidebar.js +0 -2450
  516. package/lib-dist/terra/pages/docs/_sidebar.js.map +0 -1
  517. package/lib-dist/terra/pages/docs/_toolbar.d.ts.map +0 -1
  518. package/lib-dist/terra/pages/docs/_toolbar.js.map +0 -1
  519. package/lib-dist/terra/pages/docs/_tree.d.ts.map +0 -1
  520. package/lib-dist/terra/pages/docs/_tree.js.map +0 -1
  521. package/lib-dist/terra/runtime/action-proxy.d.ts +0 -5
  522. package/lib-dist/terra/runtime/action-proxy.d.ts.map +0 -1
  523. package/lib-dist/terra/runtime/action-proxy.js.map +0 -1
  524. package/lib-dist/terra/runtime/content.d.ts.map +0 -1
  525. package/lib-dist/terra/runtime/content.js.map +0 -1
  526. package/lib-dist/terra/runtime/leaf.d.ts.map +0 -1
  527. package/lib-dist/terra/runtime/leaf.js.map +0 -1
  528. package/lib-dist/terra/runtime/nodes.d.ts.map +0 -1
  529. package/lib-dist/terra/runtime/nodes.js.map +0 -1
  530. package/lib-dist/terra/runtime/runtime.d.ts.map +0 -1
  531. package/lib-dist/terra/runtime/runtime.js +0 -50
  532. package/lib-dist/terra/runtime/runtime.js.map +0 -1
  533. package/lib-dist/terra/runtime/shared.d.ts.map +0 -1
  534. package/lib-dist/terra/runtime/shared.js.map +0 -1
  535. package/lib-dist/terra/runtime/types.d.ts +0 -266
  536. package/lib-dist/terra/runtime/types.d.ts.map +0 -1
  537. package/lib-dist/terra/runtime/types.js.map +0 -1
  538. package/lib-dist/terra/runtime/ui.d.ts.map +0 -1
  539. package/lib-dist/terra/runtime/ui.js +0 -16
  540. package/lib-dist/terra/runtime/ui.js.map +0 -1
  541. package/lib-dist/workspace.d.ts +0 -78
  542. package/lib-dist/workspace.d.ts.map +0 -1
  543. package/lib-dist/workspace.js +0 -151
  544. package/lib-dist/workspace.js.map +0 -1
  545. package/src/style.css +0 -733
  546. /package/lib-dist/{fonts → assets/fonts}/Avara-Bold.woff2 +0 -0
  547. /package/lib-dist/{fonts → assets/fonts}/Avara-BoldItalic.woff2 +0 -0
  548. /package/lib-dist/{fonts → assets/fonts}/OFL-1.1.txt +0 -0
  549. /package/lib-dist/{blocks.d.ts → components/blocks.d.ts} +0 -0
  550. /package/lib-dist/{navigation.js → components/navigation.js} +0 -0
  551. /package/lib-dist/{terra → components/terra}/editor/docs/_CodeBlock.d.ts +0 -0
  552. /package/lib-dist/{terra → components/terra}/editor/docs/index.d.ts +0 -0
  553. /package/lib-dist/{terra → components/terra}/editor/docs/index.js +0 -0
  554. /package/lib-dist/{terra → components/terra}/flow/menuContext.d.ts +0 -0
  555. /package/lib-dist/{terra → components/terra}/flow/menuContext.js +0 -0
  556. /package/lib-dist/{terra → components/terra}/pages/docs/_blocks.d.ts +0 -0
  557. /package/lib-dist/{terra → components/terra}/pages/docs/_icons.d.ts +0 -0
  558. /package/lib-dist/{terra → components/terra}/pages/docs/_icons.js +0 -0
  559. /package/lib-dist/{host-runtime.d.ts → lib/host-runtime.d.ts} +0 -0
  560. /package/lib-dist/{host.js → lib/host.js} +0 -0
  561. /package/lib-dist/{terra → lib/terra}/flow/_layout.d.ts +0 -0
  562. /package/lib-dist/{terra → lib/terra}/runtime/content.d.ts +0 -0
  563. /package/lib-dist/{terra → lib/terra}/runtime/leaf.d.ts +0 -0
  564. /package/lib-dist/{terra → lib/terra}/runtime/nodes.d.ts +0 -0
  565. /package/lib-dist/{terra → lib/terra}/runtime/shared.d.ts +0 -0
@@ -0,0 +1,597 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ // @ts-nocheck -- attachment editing is a host-backed Docs dialog.
3
+ /** Manages attachments for a Docs page, group, or section. */
4
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
5
+ import * as TerraQualityRegex from '../../../../lib/terra/regex.mjs';
6
+ import { actions } from '../../../../lib/terra/runtime/action-proxy.js';
7
+ import { cn, notify } from '../../../../lib/terra/runtime/runtime.js';
8
+ import { cTitle, dirname, docsPath, isDocsPath, toNodeLabel, } from '../../../../lib/terra/runtime/shared.js';
9
+ import { runMutation } from '../../../../lib/terra/docs/mutations.js';
10
+ import { uploadAssetChunked } from '../../../../lib/terra/docs/assets.js';
11
+ import { sanitizeName, parseDocsRoute as route } from '../../../../lib/terra/docs/tree.js';
12
+ import { useRenderTripwire } from './use-render-tripwire.js';
13
+ import { toast } from 'sonner';
14
+ import { Add as AddIcon, ArrowLeft as LeftArrowIcon, Box as BoxIcon, Catalog as CatalogIcon, Doc as DocumentIcon, Image as ImageIcon, Link as LinkIcon, LogoYoutube as YouTubeIcon, MagicWand as MagicIcon, Upload as UploadIcon, } from '@carbon/icons-react';
15
+ import { Empty } from '../../ui.js';
16
+ import { TsDocsSelect } from './_blocks.js';
17
+ import { Button, Card, ContextMenu, ContextMenuContent, ContextMenuTrigger, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, Input, Label, Spinner, Textarea, } from '@terra-symposium/styling/ui';
18
+ export function ManageAttachmentsDialog({ tgt, setTgt, disabled, tree, }) {
19
+ const [atts, setAtts] = useState({});
20
+ const [loading, setLoading] = useState(false);
21
+ const [a, setActive] = useState(null);
22
+ const [addMode, setAddMode] = useState(null);
23
+ const [url, setUrl] = useState('');
24
+ const [query, setQuery] = useState('');
25
+ const [isCreating, setIsCreating] = useState(false);
26
+ const [selAtts, setSelAtts] = useState([]);
27
+ const fileRef = useRef(null);
28
+ useRenderTripwire('ManageAttachmentsDialog', {
29
+ tgt,
30
+ disabled,
31
+ tree,
32
+ atts,
33
+ loading,
34
+ active: a,
35
+ addMode,
36
+ url,
37
+ query,
38
+ isCreating,
39
+ selectedAtts: selAtts,
40
+ });
41
+ const nodeGroups = useMemo(() => {
42
+ if (!tgt)
43
+ return [];
44
+ const n = tgt.node;
45
+ if (tgt.scope === 'leaf') {
46
+ const lTitle = cTitle(toNodeLabel(tgt.title)) || tgt.title;
47
+ return [
48
+ {
49
+ groupTitle: 'Page',
50
+ nodes: [
51
+ {
52
+ title: lTitle,
53
+ fullTitle: lTitle,
54
+ id: n.origName,
55
+ path: n.path || '',
56
+ type: 'Page',
57
+ node: n,
58
+ },
59
+ ],
60
+ },
61
+ ];
62
+ }
63
+ if (tgt.scope === 'group') {
64
+ const gNodes = [];
65
+ const gTitle = cTitle(toNodeLabel(tgt.title));
66
+ gNodes.push({
67
+ title: `${gTitle} (Index)`,
68
+ fullTitle: gTitle,
69
+ id: n.origName,
70
+ path: 'url' in n && n.url ? n.url.replace(TerraQualityRegex.REGEX_DOCS_REGEX(), '') : '',
71
+ type: 'Index',
72
+ node: n,
73
+ });
74
+ n.children?.forEach((c) => {
75
+ if (c.type === 'leaf') {
76
+ const lTitle = cTitle(toNodeLabel(c.title || c.origName));
77
+ gNodes.push({
78
+ title: lTitle,
79
+ fullTitle: `${gTitle} / ${lTitle}`,
80
+ id: c.origName,
81
+ path: c.path || '',
82
+ type: 'Page',
83
+ node: c,
84
+ });
85
+ }
86
+ });
87
+ return [{ groupTitle: gTitle, nodes: gNodes }];
88
+ }
89
+ if (tgt.scope === 'section') {
90
+ const groups = [];
91
+ const sectTitle = cTitle(toNodeLabel(tgt.title));
92
+ // prettier-ignore
93
+ groups.push({ groupTitle: 'Section Root', nodes: [{ title: `${sectTitle} (Index)`, fullTitle: sectTitle, id: n.origName, path: 'url' in n && n.url ? n.url.replace(TerraQualityRegex.REGEX_DOCS_REGEX(), '') : '', type: 'Index', node: n },] });
94
+ n.children?.forEach((c) => {
95
+ if (c.type === 'branch') {
96
+ const gTitle = cTitle(toNodeLabel(c.title || c.origName));
97
+ const gNodes = [];
98
+ // prettier-ignore
99
+ gNodes.push({ title: `${gTitle} (Index)`, fullTitle: `${sectTitle} / ${gTitle}`, id: c.origName, path: 'url' in c && c.url ? c.url.replace(TerraQualityRegex.REGEX_DOCS_REGEX(), '') : '', type: 'Index', node: c });
100
+ c.children?.forEach((l) => {
101
+ if (l.type === 'leaf') {
102
+ const lTitle = cTitle(toNodeLabel(l.title || l.origName));
103
+ gNodes.push({
104
+ title: lTitle,
105
+ fullTitle: `${sectTitle} / ${gTitle} / ${lTitle}`,
106
+ id: l.origName,
107
+ path: l.path || '',
108
+ type: 'Page',
109
+ node: l,
110
+ });
111
+ }
112
+ });
113
+ groups.push({ groupTitle: gTitle, nodes: gNodes });
114
+ }
115
+ else if (c.type === 'leaf') {
116
+ const lTitle = cTitle(toNodeLabel(c.title || c.origName));
117
+ groups[0].nodes.push({
118
+ title: lTitle,
119
+ fullTitle: `${sectTitle} / ${lTitle}`,
120
+ id: c.origName,
121
+ path: c.path || '',
122
+ type: 'Page',
123
+ node: c,
124
+ });
125
+ }
126
+ });
127
+ return groups;
128
+ }
129
+ return [];
130
+ }, [tgt]);
131
+ const filteredLeaves = useMemo(() => {
132
+ const trimmedQuery = query.trim();
133
+ if (!trimmedQuery)
134
+ return [];
135
+ const lowerQuery = trimmedQuery.toLowerCase();
136
+ const leaves = [];
137
+ /*
138
+ * Handles walk.
139
+ *
140
+ * @param nodes - Sidebar nodes being rendered or filtered.
141
+ * @param pathStr - Path prefix used to resolve each node's route.
142
+ */
143
+ (function walk(nodes, pathStr) {
144
+ nodes.forEach((n) => {
145
+ const currTitle = n.title || n.origName;
146
+ if (n.type === 'leaf') {
147
+ if (currTitle.toLowerCase().includes(lowerQuery) ||
148
+ (n.path ? n.path.toLowerCase() : '').includes(lowerQuery)) {
149
+ leaves.push({ path: n.path, title: currTitle, breadcrumb: pathStr });
150
+ }
151
+ }
152
+ else if (n.type === 'branch' && n.children)
153
+ walk(n.children, pathStr ? `${pathStr} / ${currTitle}` : currTitle);
154
+ });
155
+ })(tree, '');
156
+ return leaves;
157
+ }, [query, tree]);
158
+ useEffect(() => {
159
+ if (tgt?.scope === 'leaf') {
160
+ const lTitle = cTitle(toNodeLabel(tgt.title)) || tgt.title;
161
+ setActive({
162
+ title: lTitle,
163
+ fullTitle: lTitle,
164
+ id: tgt.node.origName,
165
+ path: tgt.node.path || '',
166
+ type: 'Page',
167
+ });
168
+ }
169
+ else
170
+ setActive(null);
171
+ setAddMode(null);
172
+ setUrl('');
173
+ setQuery('');
174
+ setSelAtts([]);
175
+ }, [tgt]);
176
+ const fetchAtts = useCallback(async () => {
177
+ if (!tgt)
178
+ return;
179
+ setLoading(true);
180
+ const ids = [
181
+ ...new Set((a ? [a.id] : nodeGroups.flatMap((g) => g.nodes.map((n) => n.id))).filter(Boolean)),
182
+ ];
183
+ const { data, error: err } = await actions.read.doc.attachments({ paths: ids });
184
+ if (!err && data)
185
+ setAtts(data);
186
+ else
187
+ setAtts({});
188
+ setLoading(false);
189
+ }, [tgt, a, nodeGroups]);
190
+ useEffect(() => {
191
+ void fetchAtts();
192
+ }, [fetchAtts]);
193
+ // DRAG AND DROP
194
+ /**
195
+ * Handles on drop.
196
+ *
197
+ * @param e - Pointer event received from the sidebar item.
198
+ * @param tgtPath - Destination path associated with the selected item.
199
+ */
200
+ // SELECTION
201
+ /**
202
+ * Handles toggle sel.
203
+ *
204
+ * @param e - Pointer event received from the document action.
205
+ * @param docPath - Document path targeted by the action.
206
+ * @param a - Action metadata used to perform the document operation.
207
+ */
208
+ const toggleSel = (e, docPath, a) => {
209
+ e.stopPropagation();
210
+ if (e.metaKey || e.ctrlKey) {
211
+ setSelAtts((v) => {
212
+ if (v.find((p) => (p.a.id || p.a.path) === (a.id || a.path)))
213
+ return v.filter((p) => (p.a.id || p.a.path) !== (a.id || a.path));
214
+ return [...v, { docPath, a }];
215
+ });
216
+ }
217
+ else {
218
+ setSelAtts([{ docPath, a }]);
219
+ }
220
+ };
221
+ // ACTIONS
222
+ const handleKeyboardDelete = useCallback(async () => {
223
+ if (!selAtts.length)
224
+ return;
225
+ // 1. Snapshot for rollback
226
+ const originalSel = [...selAtts];
227
+ // 2. Optimistic UI updates
228
+ setAtts((v) => {
229
+ const n = { ...v };
230
+ for (const { docPath, a } of originalSel) {
231
+ n[docPath] = (n[docPath] || []).filter(((key) => (p) => (p.id || p.path) !== key)(a.id || a.path));
232
+ }
233
+ return n;
234
+ });
235
+ setSelAtts([]);
236
+ // 3. Background network operation
237
+ try {
238
+ for (const { docPath, a } of originalSel) {
239
+ if (a.isMd)
240
+ await actions.write.doc.rm({ path: a.path, type: 'doc', assets: false });
241
+ else if (a.id) {
242
+ await actions.write.attachment.rm({ docPath, attachmentKey: a.id });
243
+ if (a.path.startsWith('http'))
244
+ await actions.write.asset.delete({ url: a.path });
245
+ }
246
+ }
247
+ // Background sync just to ensure external alignment
248
+ void fetchAtts();
249
+ }
250
+ catch (_err) {
251
+ // 4. Failure rollback
252
+ setAtts({ ...atts });
253
+ setSelAtts(originalSel);
254
+ toast.error(`Failed to delete ${originalSel.length === 1 ? 'attachment' : 'attachments'}`);
255
+ }
256
+ }, [atts, selAtts, fetchAtts]);
257
+ // GLOBAL KEYBOARD SHORTCUTS
258
+ useEffect(() => {
259
+ if (!tgt)
260
+ return;
261
+ /**
262
+ * Handles handle key down.
263
+ *
264
+ * @param e - Pointer event received from the sidebar control.
265
+ */
266
+ const handleKeyDown = (e) => {
267
+ if (loading || disabled || selAtts.length === 0)
268
+ return;
269
+ const tgt = e.target;
270
+ if (tgt.tagName === 'INPUT' || tgt.tagName === 'TEXTAREA' || tgt.isContentEditable)
271
+ return;
272
+ if (e.key === 'Backspace' || e.key === 'Delete') {
273
+ e.preventDefault();
274
+ void handleKeyboardDelete();
275
+ }
276
+ };
277
+ document.addEventListener('keydown', handleKeyDown);
278
+ return () => {
279
+ document.removeEventListener('keydown', handleKeyDown);
280
+ };
281
+ }, [tgt, loading, disabled, selAtts, handleKeyboardDelete]);
282
+ /**
283
+ * Handles upload.
284
+ *
285
+ * @param files - Files available to the sidebar resolver.
286
+ * @param tgtPath - Target path used to select the matching file.
287
+ */
288
+ /**
289
+ * Handles add remote.
290
+ *
291
+ * @param v - Sidebar value being normalized.
292
+ * @param type - Sidebar node type used to select the renderer.
293
+ * @param tgtPath - Target path associated with the node.
294
+ * @param titleOverride - Optional title replacing the node's default title.
295
+ */
296
+ const addRemote = async (v, type, tgtPath, titleOverride) => {
297
+ if (!tgtPath || !v.trim())
298
+ return;
299
+ const urls = v
300
+ .split(TerraQualityRegex.REGEX_N_S_REGEX())
301
+ .filter((u) => type === 'tsdocs'
302
+ ? u.trim().length > 0
303
+ : u.startsWith('http') || isDocsPath(u) || u.startsWith('/tsdocs') || type === 'page');
304
+ if (!urls.length)
305
+ return;
306
+ void runMutation(async () => {
307
+ await Promise.allSettled(urls.map(async (u) => {
308
+ let t = type;
309
+ if (t === 'other')
310
+ t = u.toLowerCase().split('?')[0].endsWith('.pdf')
311
+ ? 'document'
312
+ : TerraQualityRegex.REGEX_PNG_JPE_G_GIF_WEBP_SVG_AVIF_I_REGEX_2().test(u.toLowerCase().split('?')[0] ?? '')
313
+ ? 'image'
314
+ : t;
315
+ if (t === 'page') {
316
+ // directly inject a strict Sanity reference to the existing document
317
+ // prettier-ignore
318
+ await actions.write.attachment.docRef({
319
+ path: tgtPath,
320
+ refId: u, // u is the pure Sanity path/id
321
+ title: titleOverride || u.split('/').filter(Boolean).pop()?.replace(TerraQualityRegex.REGEX_G_REGEX_7(), ' ').replace(TerraQualityRegex.REGEX_B_W_G_REGEX(), c => c.toUpperCase()) || 'Page',
322
+ });
323
+ }
324
+ else if (t === 'youtube') {
325
+ await actions.write.attachment.youtube({ path: tgtPath, url: u });
326
+ }
327
+ else if (t === 'website') {
328
+ const { data: w } = await actions.read.external.website({ url: u });
329
+ if (!w)
330
+ throw new Error('Website import returned no content.');
331
+ const dir = dirname(tgtPath);
332
+ await actions.write.doc.editor({
333
+ path: `${dir === '.' ? '' : `${dir}/`}${sanitizeName(w.title || 'website')}.mdx`,
334
+ source: w.text,
335
+ title: w.title,
336
+ type: 'website',
337
+ sourceUrl: u,
338
+ });
339
+ }
340
+ else if (t === 'tsdocs') {
341
+ // prettier-ignore
342
+ await actions.write.attachment.link({ path: tgtPath, url: u.startsWith('http') ? u : u.startsWith('/') ? `${window.location.origin}${u}` : `${window.location.origin}${docsPath(`tsdocs/${u}`)}`, type: 'tsdocs', title: u.split('/').filter(Boolean).pop()?.replace(TerraQualityRegex.REGEX_G_REGEX_7(), ' ').replace(TerraQualityRegex.REGEX_B_W_G_REGEX(), c => c.toUpperCase()) || 'Reference' });
343
+ }
344
+ else
345
+ await actions.write.attachment.remoteFile({
346
+ path: tgtPath,
347
+ url: u,
348
+ type: t,
349
+ });
350
+ }));
351
+ await fetchAtts();
352
+ setAddMode(null);
353
+ setUrl('');
354
+ }, 'Failed to attach', () => {
355
+ setLoading(true);
356
+ }, () => {
357
+ setLoading(false);
358
+ });
359
+ };
360
+ /**
361
+ * Handles attach page.
362
+ *
363
+ * @param path - Document path being created or edited.
364
+ * @param isNew - Whether the path represents a new document.
365
+ * @param customTitle - Optional title supplied by the editor.
366
+ */
367
+ const attachPage = async (path, isNew = false, customTitle) => {
368
+ if (!a)
369
+ return;
370
+ let finalPath = path;
371
+ let finalTitle = customTitle || path;
372
+ if (isNew) {
373
+ setIsCreating(true);
374
+ try {
375
+ const newId = `temp_l_${Date.now()}`;
376
+ finalPath = newId;
377
+ // Anchor document structurally inside the group to bypass verifyWrite 404
378
+ let parentId = a.id;
379
+ if (a.type === 'Page') {
380
+ let groupId;
381
+ // 1. Primary Fallback: Extract from the current docs route
382
+ if (typeof window !== 'undefined') {
383
+ try {
384
+ const curr = route(window.location.pathname + window.location.search);
385
+ groupId = curr.groupId || curr.sectionId || undefined;
386
+ }
387
+ catch {
388
+ // Tree lookup below provides the fallback group.
389
+ }
390
+ }
391
+ // 2. Secondary Fallback: Tree Search (for established documents)
392
+ if (!groupId) {
393
+ /*
394
+ * Handles find group.
395
+ *
396
+ * @param nodes - Sidebar nodes containing the target leaf.
397
+ * @param tgtLeafId - Leaf identifier being selected.
398
+ * @param currGroupId - Current group identifier used for route context.
399
+ */
400
+ (function findGroup(nodes, tgtLeafId, currGroupId) {
401
+ for (const n of nodes) {
402
+ if (n.type === 'leaf' && (n.origName === tgtLeafId || n.path === tgtLeafId)) {
403
+ groupId = currGroupId;
404
+ return true;
405
+ }
406
+ if (n.type === 'branch' && n.children)
407
+ if (findGroup(n.children, tgtLeafId, n.origName))
408
+ return true;
409
+ }
410
+ return false;
411
+ })(tree, a.id);
412
+ }
413
+ if (groupId)
414
+ parentId = groupId;
415
+ }
416
+ const writeRes = await actions.write.doc
417
+ .editor({ path: newId, title: query, source: 'This page is empty.', parentId })
418
+ .catch((e) => ({ data: null, error: e }));
419
+ if (writeRes.error)
420
+ throw writeRes.error;
421
+ if (writeRes.data &&
422
+ typeof writeRes.data === 'object' &&
423
+ 'path' in writeRes.data &&
424
+ typeof writeRes.data.path === 'string')
425
+ finalPath = writeRes.data.path;
426
+ finalTitle = query;
427
+ await new Promise((r) => setTimeout(r, 1500));
428
+ }
429
+ catch (err) {
430
+ notify({
431
+ error: err instanceof Error ? err : new Error('Creation failed'),
432
+ fallback: 'Failed to create leaf.',
433
+ });
434
+ setIsCreating(false);
435
+ return;
436
+ }
437
+ setIsCreating(false);
438
+ }
439
+ // Pass the exact path without forcing it into a fake `/docs/` URL structure
440
+ await addRemote(finalPath, 'page', a.id, finalTitle);
441
+ setAddMode(null);
442
+ setQuery('');
443
+ };
444
+ const aPathTitle = useMemo(() => {
445
+ if (!a)
446
+ return '';
447
+ return a.fullTitle || a.title;
448
+ }, [a]);
449
+ if (!tgt)
450
+ return null;
451
+ return (_jsx(Dialog, { open: !!tgt, onOpenChange: (o) => {
452
+ if (!o) {
453
+ setTgt(null);
454
+ setActive(null);
455
+ setAddMode(null);
456
+ setSelAtts([]);
457
+ }
458
+ }, children: _jsxs(DialogContent, { size: "xl", children: [_jsx(DialogHeader, { children: a ? (_jsxs(_Fragment, { children: [_jsxs(DialogTitle, { children: [tgt.scope !== 'leaf' && (_jsx(Button, { variant: "ghost", size: "icon", "aria-label": "Back to target list", onClick: () => {
459
+ setActive(null);
460
+ setAddMode(null);
461
+ setSelAtts([]);
462
+ }, children: _jsx(LeftArrowIcon, { className: "size-5 text-primary-11", "aria-hidden": "true" }) })), _jsx("span", { className: "truncate", children: aPathTitle }), addMode && (_jsxs("span", { className: "shrink-0 font-normal text-primary-11", children: ["/ ", addMode === 'select' ? 'Add Attachment' : `Add ${addMode}`] }))] }), _jsxs(DialogDescription, { className: "sr-only", children: ["Manage attachments for ", aPathTitle] })] })) : (_jsxs(_Fragment, { children: [_jsxs(DialogTitle, { children: ["Manage Attachments \u2014 ", cTitle(toNodeLabel(tgt.title))] }), _jsx(DialogDescription, { children: "Select a target layer or drag and drop attachments to move them between nodes." })] })) }), _jsx("div", { className: "min-h-96 flex-1 overflow-y-auto py-4 outline-none", tabIndex: -1, onClick: () => {
463
+ setSelAtts([]);
464
+ }, children: loading || disabled ? (_jsx("div", { className: "flex h-64 items-center justify-center", children: _jsx(Spinner, { className: "size-8 text-primary-10" }) })) : !a ? (_jsx("div", { className: "flex flex-col gap-6", children: nodeGroups.map((g, i) => (_jsxs("div", { className: "space-y-3", children: [nodeGroups.length > 1 && (_jsx("h4", { className: "text-sm font-semibold uppercase tracking-wider text-primary-11", children: g.groupTitle })), _jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: g.nodes.map((n) => (_jsxs(Card, { className: "flex h-full flex-col transition-colors hover:border-primary-8 hover:bg-primary-3/30", onDragOver: (e) => {
465
+ e.preventDefault();
466
+ }, onDrop: (e) => {
467
+ e.preventDefault();
468
+ const sPath = e.dataTransfer.getData('application/source-path');
469
+ const id = e.dataTransfer.getData('application/attachment-id');
470
+ if (!sPath || !id || sPath === n.id)
471
+ return;
472
+ const srcList = atts[sPath] || [];
473
+ const match = srcList.find((a) => a.id === id);
474
+ if (!match)
475
+ return;
476
+ setAtts((p) => ({
477
+ ...p,
478
+ [sPath]: srcList.filter((a) => a.id !== id),
479
+ [n.id]: [...(p[n.id] || []), match],
480
+ }));
481
+ void actions.write.attachment
482
+ .move({ sourceDocPath: sPath, targetDocPath: n.id, attachmentKey: id })
483
+ .then(({ error: err }) => {
484
+ if (err) {
485
+ setAtts({ ...atts });
486
+ toast.error('Move failed');
487
+ notify({
488
+ error: new Error(err.message || 'Move failed'),
489
+ fallback: 'Failed to relocate attachment relational schema node.',
490
+ });
491
+ }
492
+ });
493
+ }, children: [_jsx("button", { type: "button", "aria-label": `Open ${n.title}`, onClick: (e) => {
494
+ e.stopPropagation();
495
+ setActive(n);
496
+ }, className: "flex w-full items-center justify-between border-b border-primary-6 bg-primary-3/30 p-3 text-left transition-colors hover:bg-primary-4/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-8", children: _jsxs("p", { className: "flex items-center text-sm font-medium", children: [n.type === 'Page' ? (_jsx(DocumentIcon, { className: "mr-2 size-4 text-primary-10", "aria-hidden": "true" })) : (_jsx(CatalogIcon, { className: "mr-2 size-4 text-primary-10", "aria-hidden": "true" })), n.title] }) }), _jsx("div", { className: "flex flex-1 flex-wrap content-start gap-2 p-4", children: (atts[n.id] || []).length === 0 ? (_jsx("div", { className: "flex h-12 w-full items-center justify-center opacity-50", children: _jsx(UploadIcon, { className: "size-6 text-primary-8", "aria-hidden": "true" }) })) : ((atts[n.id] || []).map((a) => {
497
+ const isSelected = selAtts.some((s) => (s.a.id || s.a.path) === (a.id || a.path));
498
+ return (_jsxs("button", { type: "button", "aria-pressed": isSelected, "aria-label": `Select attachment ${a.name}`, draggable: true, onDragStart: (e) => {
499
+ e.dataTransfer.setData('application/source-path', n.id);
500
+ e.dataTransfer.setData('application/attachment-id', a.id || '');
501
+ e.dataTransfer.effectAllowed = 'move';
502
+ }, onKeyDown: (e) => {
503
+ if (e.key === 'Enter' || e.key === ' ') {
504
+ e.preventDefault();
505
+ toggleSel(e, n.id, a);
506
+ }
507
+ }, onClick: (e) => {
508
+ toggleSel(e, n.id, a);
509
+ }, className: cn('flex cursor-grab items-center gap-2 rounded-md border px-2 py-1 text-xs shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-8', isSelected
510
+ ? 'border-primary-9 bg-primary-5 ring-1 ring-primary-8'
511
+ : 'border-primary-6 bg-primary-3'), children: [_jsx(DocumentIcon, { className: "size-3 shrink-0 text-primary-10", "aria-hidden": "true" }), _jsx("span", { className: "max-w-[100px] truncate", children: a.name })] }, a.id || a.path));
512
+ })) })] }, n.id))) })] }, g.groupTitle + i))) })) : (_jsxs("div", { className: "space-y-6", children: [addMode ? (_jsx("div", { className: "flex flex-col gap-6", children: addMode === 'select' ? (_jsx(_Fragment, { children: _jsx("div", { className: "grid grid-cols-2 gap-4 sm:grid-cols-3", children: [
513
+ { Icon: DocumentIcon, text: 'Page', type: 'page' },
514
+ { Icon: DocumentIcon, text: 'Document', type: 'document' },
515
+ { Icon: ImageIcon, text: 'Image', type: 'image' },
516
+ { Icon: YouTubeIcon, text: 'YouTube', type: 'youtube' },
517
+ { Icon: LinkIcon, text: 'Website', type: 'website' },
518
+ { Icon: CatalogIcon, text: 'TsDocs', type: 'tsdocs' },
519
+ { Icon: BoxIcon, text: 'Other', type: 'other' },
520
+ ].map(({ Icon: i, text: t, type: v }) => (_jsxs("button", { type: "button", "aria-label": `Add ${t}`, className: "flex cursor-pointer flex-col items-center justify-center rounded-xl border border-primary-6 bg-transparent p-4 transition-colors hover:border-primary-8 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-8", onClick: (e) => {
521
+ e.stopPropagation();
522
+ setAddMode(v);
523
+ setUrl('');
524
+ setQuery('');
525
+ }, children: [_jsx(React.Fragment, { children: React.createElement(i, {
526
+ className: 'size-5 text-primary-11',
527
+ 'aria-hidden': 'true',
528
+ }) }), _jsx("span", { className: "mt-2 text-sm font-medium text-primary-11", children: t })] }, t))) }) })) : addMode === 'page' ? (_jsxs("div", { className: "flex flex-col gap-4", onClick: (e) => {
529
+ e.stopPropagation();
530
+ }, children: [_jsx(Input, { autoFocus: true, placeholder: "Search or type to create...", value: query, onChange: (e) => {
531
+ setQuery(e.target.value);
532
+ } }), _jsxs("div", { className: "flex max-h-64 min-h-24 flex-col overflow-y-auto pr-2", children: [!query.trim() &&
533
+ tree.map((n) => (_jsx(Button, { variant: "ghost", size: "sm", className: "mt-0.5 h-auto w-full justify-start py-1.5 pl-6 text-left font-normal text-primary-11 hover:text-primary-12", onClick: () => void attachPage(n.type === 'leaf' ? n.path || '' : '', false, n.title || n.origName), children: _jsx("span", { className: "truncate", children: n.title || n.origName }) }, n.origName))), query.trim() && (_jsxs("div", { className: "flex flex-col gap-1", children: [_jsx(Button, { variant: "ghost", className: "mb-2 h-auto w-full justify-start border border-dashed border-primary-6 py-2 text-left text-primary-10 hover:border-primary-8 hover:text-primary-12", onClick: () => void attachPage('', true), disabled: isCreating, children: _jsxs("div", { className: "flex flex-col", children: [_jsx("span", { className: "text-sm font-medium", children: isCreating ? 'Creating...' : `Create "${query}"` }), _jsx("span", { className: "text-xs opacity-70", children: "Create page and attach" })] }) }), filteredLeaves.length > 0 &&
534
+ filteredLeaves.map((r) => (_jsx(Button, { variant: "ghost", className: "h-auto w-full justify-start py-2 text-left", onClick: () => void attachPage(r.path, false, r.title), children: _jsxs("div", { className: "flex flex-col", children: [_jsx("span", { className: "text-sm font-medium", children: r.title }), _jsx("span", { className: "text-xs text-primary-11 opacity-70", children: r.breadcrumb ? `${r.breadcrumb} / ${r.path}` : r.path })] }) }, r.path)))] }))] })] })) : (_jsxs("div", { className: "flex flex-col gap-4", onClick: (e) => {
535
+ e.stopPropagation();
536
+ }, children: [!['youtube', 'website', 'tsdocs'].includes(addMode) && (_jsxs(Button, { variant: "outline", className: "w-full border-dashed py-8", onClick: () => fileRef.current?.click(), children: [_jsx(UploadIcon, { className: "mr-2 size-5", "aria-hidden": "true" }), " Select Files"] })), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { className: "text-xs font-semibold uppercase text-primary-11", children: "Import via URL" }), addMode === 'tsdocs' ? (_jsx(TsDocsSelect, { variant: "inline", multiple: true, value: url ? url.split('\n').filter(Boolean) : [], onChange: (v) => {
537
+ setUrl(Array.isArray(v) ? v.join('\n') : v);
538
+ } })) : (_jsx(Textarea, { autoFocus: true, placeholder: "https://...", value: url, onChange: (e) => {
539
+ setUrl(e.target.value);
540
+ }, rows: 3, onKeyDown: (e) => {
541
+ if (e.key === 'Enter' && !e.shiftKey) {
542
+ e.preventDefault();
543
+ void addRemote(url, addMode, a.id);
544
+ }
545
+ } }))] })] })) })) : (_jsx(_Fragment, { children: _jsx("div", { className: "flex min-h-24 flex-wrap content-start gap-3 rounded-md border border-primary-6 bg-primary-2 p-4", children: (atts[a.id] || []).length === 0 ? (_jsx(Empty, { variant: "compact", children: "No attachments yet." })) : ((atts[a.id] || []).map((v) => (_jsxs(ContextMenu, { children: [_jsxs(ContextMenuTrigger, { className: cn('flex cursor-pointer items-center gap-2 rounded-md border px-3 py-1.5 text-xs shadow-sm outline-none transition-colors', selAtts.some((s) => (s.a.id || s.a.path) === (v.id || v.path))
546
+ ? 'border-primary-9 bg-primary-5 ring-1 ring-primary-8'
547
+ : 'border-primary-6 bg-primary-3'), onClick: (e) => {
548
+ toggleSel(e, a.id, v);
549
+ }, children: [_jsx(DocumentIcon, { className: "size-3 shrink-0 text-primary-10" }), _jsx("span", { className: "max-w-[200px] truncate font-medium", children: v.name })] }), _jsx(ContextMenuContent, { children: _jsx(Menu, { actions: [
550
+ {
551
+ label: 'Copy URL',
552
+ icon: _jsx(LinkIcon, {}),
553
+ onSelect: () => {
554
+ void navigator.clipboard.writeText(`${window.location.origin}${docsPath(v.path)}`);
555
+ toast.success('URL copied');
556
+ },
557
+ },
558
+ ...(v.isMd
559
+ ? [
560
+ {
561
+ icon: _jsx(MagicIcon, {}),
562
+ label: 'Synthesize Content',
563
+ onSelect: () => {
564
+ document.dispatchEvent(new CustomEvent('docs:synthesize', {
565
+ detail: { path: v.path, name: v.name },
566
+ }));
567
+ },
568
+ },
569
+ ]
570
+ : []),
571
+ ] }) })] }, v.id || v.path)))) }) })), _jsx("input", { ref: fileRef, type: "file", className: "hidden", multiple: true, onChange: (e) => {
572
+ const files = e.currentTarget.files;
573
+ const tgtPath = a.id;
574
+ void (async () => {
575
+ if (!files || files.length === 0 || !tgtPath)
576
+ return;
577
+ void runMutation(async () => {
578
+ const arr = Array.from(files);
579
+ for (let i = 0; i < arr.length; i++) {
580
+ const f = arr[i];
581
+ if (!f)
582
+ continue;
583
+ await uploadAssetChunked(f, tgtPath);
584
+ }
585
+ await fetchAtts();
586
+ setAddMode(null);
587
+ if (fileRef.current)
588
+ fileRef.current.value = '';
589
+ }, 'Upload failed', () => {
590
+ setLoading(true);
591
+ }, () => {
592
+ setLoading(false);
593
+ });
594
+ })();
595
+ } })] })) }), _jsxs(DialogFooter, { className: 'flex shrink-0 items-center justify-end gap-2 pt-4', children: [a && !addMode && _jsxs(Button, { onClick: () => { setAddMode('select'); }, children: [_jsx(AddIcon, { className: 'mr-2 size-4', "aria-hidden": 'true' }), " Add Attachment"] }), a && addMode === 'select' && _jsx(Button, { variant: 'ghost', onClick: () => { setAddMode(null); }, children: "Cancel" }), a && addMode === 'page' && _jsx(Button, { variant: 'ghost', onClick: () => { setAddMode('select'); setQuery(''); }, children: "Back" }), a && addMode && addMode !== 'select' && addMode !== 'page' && (_jsxs(_Fragment, { children: [_jsx(Button, { variant: 'ghost', onClick: () => { setAddMode('select'); }, children: "Back" }), _jsx(Button, { disabled: !url.trim(), onClick: () => void addRemote(url, addMode, a.id), children: "Attach" })] }))] })] }) }));
596
+ }
597
+ //# sourceMappingURL=_manage-attachments-dialog.js.map