@solidxai/core-ui 0.1.19 → 0.1.20-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/dist/components/common/Link.d.ts.map +1 -1
  2. package/dist/components/common/Link.js +2 -1
  3. package/dist/components/common/Link.js.map +1 -1
  4. package/dist/components/common/Link.tsx +2 -1
  5. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.d.ts +1 -0
  6. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.d.ts.map +1 -1
  7. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js +109 -23
  8. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js.map +1 -1
  9. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.tsx +155 -34
  10. package/dist/components/core/chatter/SolidChatter.js +2 -2
  11. package/dist/components/core/chatter/SolidChatter.js.map +1 -1
  12. package/dist/components/core/chatter/SolidChatter.tsx +2 -2
  13. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.js +20 -19
  14. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.js.map +1 -1
  15. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.tsx +16 -16
  16. package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.d.ts.map +1 -1
  17. package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.js +3 -10
  18. package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.js.map +1 -1
  19. package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.tsx +3 -8
  20. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.d.ts.map +1 -1
  21. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.js +36 -9
  22. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.js.map +1 -1
  23. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.tsx +78 -7
  24. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.d.ts +1 -0
  25. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.d.ts.map +1 -1
  26. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.js +1 -1
  27. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.js.map +1 -1
  28. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.tsx +1 -1
  29. package/dist/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.d.ts +4 -0
  30. package/dist/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.d.ts.map +1 -0
  31. package/dist/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.js +131 -0
  32. package/dist/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.js.map +1 -0
  33. package/dist/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.tsx +151 -0
  34. package/dist/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.d.ts +4 -0
  35. package/dist/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.d.ts.map +1 -0
  36. package/dist/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.js +13 -0
  37. package/dist/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.js.map +1 -0
  38. package/dist/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.tsx +20 -0
  39. package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
  40. package/dist/components/core/form/SolidFormView.js +4 -0
  41. package/dist/components/core/form/SolidFormView.js.map +1 -1
  42. package/dist/components/core/form/SolidFormView.tsx +4 -0
  43. package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
  44. package/dist/components/core/kanban/SolidKanbanView.js +50 -15
  45. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  46. package/dist/components/core/kanban/SolidKanbanView.tsx +22 -3
  47. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  48. package/dist/components/core/list/SolidListView.js +16 -3
  49. package/dist/components/core/list/SolidListView.js.map +1 -1
  50. package/dist/components/core/list/SolidListView.tsx +16 -2
  51. package/dist/components/core/list/columns/SolidMediaMultipleColumn.d.ts.map +1 -1
  52. package/dist/components/core/list/columns/SolidMediaMultipleColumn.js +4 -1
  53. package/dist/components/core/list/columns/SolidMediaMultipleColumn.js.map +1 -1
  54. package/dist/components/core/list/columns/SolidMediaMultipleColumn.tsx +4 -1
  55. package/dist/components/core/module/ModulePackageDialog.css +102 -0
  56. package/dist/components/core/module/ModulePackageDialog.d.ts +2 -1
  57. package/dist/components/core/module/ModulePackageDialog.d.ts.map +1 -1
  58. package/dist/components/core/module/ModulePackageDialog.js +216 -68
  59. package/dist/components/core/module/ModulePackageDialog.js.map +1 -1
  60. package/dist/components/core/module/ModulePackageDialog.tsx +356 -76
  61. package/dist/components/core/solid-agent/SolidAgentChat.d.ts.map +1 -1
  62. package/dist/components/core/solid-agent/SolidAgentChat.js +9 -3
  63. package/dist/components/core/solid-agent/SolidAgentChat.js.map +1 -1
  64. package/dist/components/core/solid-agent/SolidAgentChat.tsx +9 -4
  65. package/dist/components/core/solid-agent/SolidAgentMarkdown.d.ts.map +1 -1
  66. package/dist/components/core/solid-agent/SolidAgentMarkdown.js +25 -6
  67. package/dist/components/core/solid-agent/SolidAgentMarkdown.js.map +1 -1
  68. package/dist/components/core/solid-agent/SolidAgentMarkdown.tsx +15 -1
  69. package/dist/components/core/solid-agent/client/agentRuntime.d.ts +5 -0
  70. package/dist/components/core/solid-agent/client/agentRuntime.d.ts.map +1 -1
  71. package/dist/components/core/solid-agent/client/agentRuntime.js +77 -20
  72. package/dist/components/core/solid-agent/client/agentRuntime.js.map +1 -1
  73. package/dist/components/core/solid-agent/client/agentRuntime.ts +29 -1
  74. package/dist/components/core/solid-agent/client/agentSocket.d.ts +5 -1
  75. package/dist/components/core/solid-agent/client/agentSocket.d.ts.map +1 -1
  76. package/dist/components/core/solid-agent/client/agentSocket.js +27 -4
  77. package/dist/components/core/solid-agent/client/agentSocket.js.map +1 -1
  78. package/dist/components/core/solid-agent/client/agentSocket.ts +14 -3
  79. package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.js +2 -2
  80. package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.js.map +1 -1
  81. package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.tsx +5 -5
  82. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.d.ts +2 -0
  83. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.d.ts.map +1 -1
  84. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.js +2 -2
  85. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.js.map +1 -1
  86. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.ts +4 -4
  87. package/dist/components/core/solid-agent/thread/AgentThread.d.ts.map +1 -1
  88. package/dist/components/core/solid-agent/thread/AgentThread.js +61 -26
  89. package/dist/components/core/solid-agent/thread/AgentThread.js.map +1 -1
  90. package/dist/components/core/solid-agent/thread/AgentThread.tsx +74 -40
  91. package/dist/components/core/solid-agent/thread/SolidAgentChatItem.d.ts +2 -1
  92. package/dist/components/core/solid-agent/thread/SolidAgentChatItem.d.ts.map +1 -1
  93. package/dist/components/core/solid-agent/thread/SolidAgentChatItem.js +2 -1
  94. package/dist/components/core/solid-agent/thread/SolidAgentChatItem.js.map +1 -1
  95. package/dist/components/core/solid-agent/thread/SolidAgentChatItem.tsx +3 -1
  96. package/dist/components/core/solid-agent/types.d.ts +3 -0
  97. package/dist/components/core/solid-agent/types.d.ts.map +1 -1
  98. package/dist/components/core/solid-agent/types.js +0 -9
  99. package/dist/components/core/solid-agent/types.js.map +1 -1
  100. package/dist/components/core/solid-agent/types.ts +4 -2
  101. package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.d.ts +1 -1
  102. package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.d.ts.map +1 -1
  103. package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.js +5 -2
  104. package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.js.map +1 -1
  105. package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.tsx +11 -5
  106. package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.js +3 -0
  107. package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.js.map +1 -1
  108. package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.tsx +4 -0
  109. package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.js +3 -0
  110. package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.js.map +1 -1
  111. package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.tsx +4 -0
  112. package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.js +3 -0
  113. package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.js.map +1 -1
  114. package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.tsx +4 -0
  115. package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.js +3 -0
  116. package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.js.map +1 -1
  117. package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.tsx +4 -0
  118. package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.js +3 -0
  119. package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.js.map +1 -1
  120. package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.tsx +4 -0
  121. package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.js +3 -0
  122. package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.js.map +1 -1
  123. package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.tsx +4 -0
  124. package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.js +3 -0
  125. package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.js.map +1 -1
  126. package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.tsx +4 -0
  127. package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.js +3 -0
  128. package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.js.map +1 -1
  129. package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.tsx +4 -0
  130. package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.js +3 -0
  131. package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.js.map +1 -1
  132. package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.tsx +4 -0
  133. package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.js +19 -0
  134. package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.js.map +1 -1
  135. package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.tsx +20 -0
  136. package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.js +3 -0
  137. package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.js.map +1 -1
  138. package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.tsx +4 -0
  139. package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.js +3 -0
  140. package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.js.map +1 -1
  141. package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.tsx +4 -0
  142. package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.js +3 -0
  143. package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.js.map +1 -1
  144. package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.tsx +4 -0
  145. package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.js +3 -0
  146. package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.js.map +1 -1
  147. package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.tsx +4 -0
  148. package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.js +3 -0
  149. package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.js.map +1 -1
  150. package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.tsx +4 -0
  151. package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.js +3 -0
  152. package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.js.map +1 -1
  153. package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.tsx +4 -0
  154. package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.js +3 -0
  155. package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.js.map +1 -1
  156. package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.tsx +4 -0
  157. package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.js +3 -0
  158. package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.js.map +1 -1
  159. package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.tsx +4 -0
  160. package/dist/components/core/solid-agent/widgets/solidChatWidgets.module.css +9 -1
  161. package/dist/components/core/users/CreateUser.d.ts.map +1 -1
  162. package/dist/components/core/users/CreateUser.js +23 -8
  163. package/dist/components/core/users/CreateUser.js.map +1 -1
  164. package/dist/components/core/users/CreateUser.tsx +10 -6
  165. package/dist/components/layout/AdminHeaderActions.d.ts.map +1 -1
  166. package/dist/components/layout/AdminHeaderActions.js +1 -29
  167. package/dist/components/layout/AdminHeaderActions.js.map +1 -1
  168. package/dist/components/layout/AdminHeaderActions.tsx +0 -42
  169. package/dist/components/layout/AdminTopHeader.js +2 -2
  170. package/dist/components/layout/AdminTopHeader.js.map +1 -1
  171. package/dist/components/layout/AdminTopHeader.tsx +2 -2
  172. package/dist/components/layout/AppSidebar.d.ts.map +1 -1
  173. package/dist/components/layout/AppSidebar.js +21 -5
  174. package/dist/components/layout/AppSidebar.js.map +1 -1
  175. package/dist/components/layout/AppSidebar.tsx +24 -6
  176. package/dist/components/layout/SolidAiStudioLayout.d.ts +0 -1
  177. package/dist/components/layout/SolidAiStudioLayout.d.ts.map +1 -1
  178. package/dist/components/layout/SolidAiStudioLayout.js +8 -161
  179. package/dist/components/layout/SolidAiStudioLayout.js.map +1 -1
  180. package/dist/components/layout/SolidAiStudioLayout.tsx +6 -136
  181. package/dist/components/layout/user-profile-menu.js +10 -10
  182. package/dist/components/layout/user-profile-menu.js.map +1 -1
  183. package/dist/components/layout/user-profile-menu.tsx +3 -3
  184. package/dist/components/shad-cn-ui/SolidLightbox.d.ts +2 -1
  185. package/dist/components/shad-cn-ui/SolidLightbox.d.ts.map +1 -1
  186. package/dist/components/shad-cn-ui/SolidLightbox.js +11 -4
  187. package/dist/components/shad-cn-ui/SolidLightbox.js.map +1 -1
  188. package/dist/components/shad-cn-ui/SolidLightbox.tsx +14 -1
  189. package/dist/helpers/modelViewPersistence.d.ts +2 -0
  190. package/dist/helpers/modelViewPersistence.d.ts.map +1 -1
  191. package/dist/helpers/modelViewPersistence.js +72 -0
  192. package/dist/helpers/modelViewPersistence.js.map +1 -1
  193. package/dist/helpers/modelViewPersistence.ts +79 -0
  194. package/dist/helpers/registry.d.ts +6 -2
  195. package/dist/helpers/registry.d.ts.map +1 -1
  196. package/dist/helpers/registry.js +68 -3
  197. package/dist/helpers/registry.js.map +1 -1
  198. package/dist/helpers/registry.ts +62 -4
  199. package/dist/hooks/useModelsDevModels.d.ts +43 -0
  200. package/dist/hooks/useModelsDevModels.d.ts.map +1 -0
  201. package/dist/hooks/useModelsDevModels.js +81 -0
  202. package/dist/hooks/useModelsDevModels.js.map +1 -0
  203. package/dist/hooks/useModelsDevModels.ts +106 -0
  204. package/dist/hooks/useRouter.d.ts.map +1 -1
  205. package/dist/hooks/useRouter.js +3 -2
  206. package/dist/hooks/useRouter.js.map +1 -1
  207. package/dist/hooks/useRouter.ts +3 -2
  208. package/dist/index.d.ts +2 -2
  209. package/dist/index.d.ts.map +1 -1
  210. package/dist/index.js +1 -1
  211. package/dist/index.js.map +1 -1
  212. package/dist/index.ts +4 -1
  213. package/dist/modules/solidUiModule.d.ts +3 -2
  214. package/dist/modules/solidUiModule.d.ts.map +1 -1
  215. package/dist/modules/solidUiModule.js +1 -1
  216. package/dist/modules/solidUiModule.js.map +1 -1
  217. package/dist/modules/solidUiModule.ts +5 -1
  218. package/dist/redux/api/moduleApi.d.ts +12 -2
  219. package/dist/redux/api/moduleApi.d.ts.map +1 -1
  220. package/dist/redux/api/moduleApi.js +33 -3
  221. package/dist/redux/api/moduleApi.js.map +1 -1
  222. package/dist/redux/api/moduleApi.ts +17 -2
  223. package/dist/redux/api/solidChatterMessageApi.d.ts +3 -1
  224. package/dist/redux/api/solidChatterMessageApi.d.ts.map +1 -1
  225. package/dist/redux/api/solidChatterMessageApi.js +9 -1
  226. package/dist/redux/api/solidChatterMessageApi.js.map +1 -1
  227. package/dist/redux/api/solidChatterMessageApi.ts +9 -1
  228. package/dist/redux/store/defaultStoreConfig.d.ts +9 -1
  229. package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
  230. package/dist/resources/globals.css +30 -0
  231. package/dist/resources/solid-custom.css +10 -6
  232. package/dist/resources/solid-tailwind-generated.css +1 -1
  233. package/dist/routes/AppEventListener.d.ts.map +1 -1
  234. package/dist/routes/AppEventListener.js +3 -3
  235. package/dist/routes/AppEventListener.js.map +1 -1
  236. package/dist/routes/AppEventListener.tsx +2 -3
  237. package/dist/routes/pages/admin/core/AgentHubTagsField.css +21 -0
  238. package/dist/routes/pages/admin/core/AgentHubTagsField.d.ts +17 -0
  239. package/dist/routes/pages/admin/core/AgentHubTagsField.d.ts.map +1 -0
  240. package/dist/routes/pages/admin/core/AgentHubTagsField.js +171 -0
  241. package/dist/routes/pages/admin/core/AgentHubTagsField.js.map +1 -0
  242. package/dist/routes/pages/admin/core/AgentHubTagsField.tsx +125 -0
  243. package/dist/routes/pages/admin/core/AgentPersonaHistory.css +130 -0
  244. package/dist/routes/pages/admin/core/AgentPersonaHistory.d.ts +7 -0
  245. package/dist/routes/pages/admin/core/AgentPersonaHistory.d.ts.map +1 -0
  246. package/dist/routes/pages/admin/core/AgentPersonaHistory.js +228 -0
  247. package/dist/routes/pages/admin/core/AgentPersonaHistory.js.map +1 -0
  248. package/dist/routes/pages/admin/core/AgentPersonaHistory.tsx +234 -0
  249. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.css +13 -14
  250. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.d.ts.map +1 -1
  251. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.js +218 -165
  252. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.js.map +1 -1
  253. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.tsx +221 -127
  254. package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.d.ts.map +1 -1
  255. package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.js +14 -69
  256. package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.js.map +1 -1
  257. package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.tsx +15 -83
  258. package/dist/routes/pages/admin/core/AgentToolActivationDialog.d.ts +11 -0
  259. package/dist/routes/pages/admin/core/AgentToolActivationDialog.d.ts.map +1 -0
  260. package/dist/routes/pages/admin/core/AgentToolActivationDialog.js +166 -0
  261. package/dist/routes/pages/admin/core/AgentToolActivationDialog.js.map +1 -0
  262. package/dist/routes/pages/admin/core/AgentToolActivationDialog.tsx +140 -0
  263. package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.css +26 -0
  264. package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.d.ts.map +1 -1
  265. package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.js +94 -71
  266. package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.js.map +1 -1
  267. package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.tsx +60 -52
  268. package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.d.ts +2 -0
  269. package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.d.ts.map +1 -0
  270. package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.js +108 -0
  271. package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.js.map +1 -0
  272. package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.tsx +96 -0
  273. package/dist/routes/solidRoutes.d.ts.map +1 -1
  274. package/dist/routes/solidRoutes.js +2 -0
  275. package/dist/routes/solidRoutes.js.map +1 -1
  276. package/dist/routes/solidRoutes.tsx +2 -0
  277. package/dist/types/extension-registry.d.ts +12 -0
  278. package/dist/types/extension-registry.d.ts.map +1 -1
  279. package/dist/types/extension-registry.js.map +1 -1
  280. package/dist/types/extension-registry.ts +15 -0
  281. package/dist/types/solid-core.d.ts +2 -0
  282. package/package.json +2 -1
@@ -1,13 +1,11 @@
1
1
  import React, { useEffect, useRef, useState } from "react";
2
2
  import { useDispatch, useSelector } from "react-redux";
3
- import { useNavigate, useLocation } from "react-router-dom";
3
+ import { useNavigate } from "react-router-dom";
4
4
  import { exitStudioMode, setStudioView, type StudioView } from "../../redux/features/solidStudioSlice";
5
- import { showToast } from "../../redux/features/toastSlice";
6
5
  import { useSession } from "../../hooks/useSession";
7
- import { getSession, signOut } from "../../adapters/auth/index";
6
+ import { signOut } from "../../adapters/auth/index";
8
7
  import { createPortal } from "react-dom";
9
8
  import { env } from "../../adapters/env";
10
- import { ERROR_MESSAGES } from "../../constants/error-messages";
11
9
 
12
10
  // ── Icons ──────────────────────────────────────────────────────────────────────
13
11
 
@@ -19,13 +17,6 @@ const DotsIcon = () => (
19
17
  </svg>
20
18
  );
21
19
 
22
- const PreviewIcon = () => (
23
- <svg width="13" height="13" viewBox="0 0 14 14" fill="none" aria-hidden="true">
24
- <path d="M1 7s2.5-5 6-5 6 5 6 5-2.5 5-6 5-6-5-6-5Z" stroke="currentColor" strokeWidth="1.3" strokeLinejoin="round" />
25
- <circle cx="7" cy="7" r="1.8" stroke="currentColor" strokeWidth="1.3" />
26
- </svg>
27
- );
28
-
29
20
  const LogoutIcon = () => (
30
21
  <svg width="13" height="13" viewBox="0 0 14 14" fill="none" aria-hidden="true">
31
22
  <path d="M5 2H2.5A1.5 1.5 0 0 0 1 3.5v7A1.5 1.5 0 0 0 2.5 12H5" stroke="currentColor" strokeWidth="1.3" strokeLinecap="round" />
@@ -60,20 +51,17 @@ const FrontendIcon = () => (
60
51
  // ── SolidStudio ────────────────────────────────────────────────────────────────
61
52
  // Single component that renders both the Studio header and the AI panel.
62
53
  // Mount this ONCE at the app root via AppEventListener.
63
- // When studio mode is off it renders nothing.
54
+ // Visible only to the "sa" user in dev environments.
64
55
 
65
56
  export function SolidStudio() {
66
57
  const isStudioMode = useSelector((state: any) => state.solidStudio?.isStudioMode ?? false);
67
58
  const studioView = useSelector((state: any) => state.solidStudio?.studioView ?? null) as StudioView;
68
59
  const dispatch = useDispatch();
69
60
  const navigate = useNavigate();
70
- const { pathname, search } = useLocation();
71
- const isPreviewMode = new URLSearchParams(search).get("preview") === "true" || (typeof sessionStorage !== "undefined" && sessionStorage.getItem("solid-preview") === "true");
72
- const isPreviewable = pathname !== "/studio" && pathname !== "/landing";
73
61
  const { data, status } = useSession();
74
- const isAuthenticated = status === "authenticated";
62
+ const isStudioUser = data?.user?.username === "sa";
63
+ const isDev = env("VITE_SOLIDX_ENV") === "dev";
75
64
  const [isMenuOpen, setIsMenuOpen] = useState(false);
76
- const [isChatRedirecting, setIsChatRedirecting] = useState(false);
77
65
  const menuRef = useRef<HTMLDivElement>(null);
78
66
 
79
67
  // Close the 3-dot menu when clicking outside
@@ -95,7 +83,7 @@ export function SolidStudio() {
95
83
  }
96
84
  }, [status, isStudioMode, dispatch]);
97
85
 
98
- if (!isStudioMode || !isAuthenticated || isPreviewMode) return null;
86
+ if (!isStudioUser || !isDev) return null;
99
87
 
100
88
  const handleLogout = () => {
101
89
  setIsMenuOpen(false);
@@ -108,68 +96,6 @@ export function SolidStudio() {
108
96
  navigate(view === "backend" ? "/admin" : "/landing");
109
97
  };
110
98
 
111
- const handleAiChatClick = async () => {
112
- if (isChatRedirecting) return;
113
-
114
- const aiUrl = env("VITE_SOLIDX_AI_URL");
115
- if (!aiUrl) return;
116
-
117
- setIsChatRedirecting(true);
118
- try {
119
- const session = await getSession();
120
- const accessToken = session?.user?.accessToken || data?.user?.accessToken;
121
- if (!accessToken) return;
122
-
123
- const apiBaseUrl = env("API_URL", "http://localhost:8080").replace(/\/+$/, "");
124
- const response = await fetch(`${apiBaseUrl}/api/iam/sso/code`, {
125
- method: "POST",
126
- headers: {
127
- accept: "*/*",
128
- Authorization: `Bearer ${accessToken}`,
129
- },
130
- body: "",
131
- });
132
-
133
- if (!response.ok) {
134
- let detail = `Failed to fetch ssoCode (${response.status})`;
135
- try {
136
- const errorPayload = await response.json();
137
- detail =
138
- errorPayload?.message ||
139
- errorPayload?.error?.message ||
140
- errorPayload?.data?.message ||
141
- detail;
142
- } catch {
143
- // no-op: keep default message
144
- }
145
- throw new Error(detail);
146
- }
147
-
148
- const payload = await response.json();
149
- const ssoCode = payload?.ssoCode ?? payload?.data?.ssoCode;
150
- if (!ssoCode) {
151
- throw new Error("ssoCode missing in response");
152
- }
153
-
154
- const redirectUrl = new URL(aiUrl, window.location.origin);
155
- redirectUrl.searchParams.set("ssoCode", String(ssoCode));
156
- window.open(redirectUrl.toString(), "_blank");
157
- } catch (error) {
158
- const detail = error instanceof Error ? error.message : ERROR_MESSAGES.SOMETHING_WRONG;
159
- dispatch(
160
- showToast({
161
- severity: "error",
162
- summary: ERROR_MESSAGES.ERROR,
163
- detail,
164
- life: 4000,
165
- })
166
- );
167
- console.error("Failed to open AI chat with ssoCode:", error);
168
- } finally {
169
- setIsChatRedirecting(false);
170
- }
171
- };
172
-
173
99
  const studioUI = (
174
100
  <div className="solid-studio-island" style={{ zIndex: "var(--z-studio)" }}>
175
101
  <div className="solid-studio-island-inner">
@@ -189,16 +115,6 @@ export function SolidStudio() {
189
115
  >
190
116
  <FrontendIcon />
191
117
  </button>
192
- <button
193
- type="button"
194
- className="solid-studio-island-btn"
195
- onClick={handleAiChatClick}
196
- disabled={isChatRedirecting}
197
- aria-busy={isChatRedirecting}
198
- aria-label="AI chat"
199
- >
200
- <ChatIcon />
201
- </button>
202
118
  <div className="solid-studio-island-menu" ref={menuRef}>
203
119
  <button
204
120
  type="button"
@@ -210,21 +126,6 @@ export function SolidStudio() {
210
126
  </button>
211
127
  {isMenuOpen && (
212
128
  <div className="solid-studio-island-dropdown">
213
- {isPreviewable && (
214
- <button
215
- type="button"
216
- className="solid-studio-island-dropdown-item"
217
- onClick={() => {
218
- setIsMenuOpen(false);
219
- const params = new URLSearchParams(search);
220
- params.set("preview", "true");
221
- window.open(`${pathname}?${params.toString()}`, "_blank");
222
- }}
223
- >
224
- <PreviewIcon />
225
- Preview page
226
- </button>
227
- )}
228
129
  <button
229
130
  type="button"
230
131
  className="solid-studio-island-dropdown-item danger"
@@ -243,37 +144,6 @@ export function SolidStudio() {
243
144
  return typeof document !== "undefined" ? createPortal(studioUI, document.body) : null;
244
145
  }
245
146
 
246
- // ── PreviewModePersist ─────────────────────────────────────────────────────────
247
- // Mount once at the app root alongside SolidStudio.
248
- // sessionStorage is tab-scoped, so preview opened in a new tab stays isolated.
249
- // Closing the tab is the natural way to exit preview mode.
250
-
251
- const PREVIEW_KEY = "solid-preview";
252
-
253
- export function PreviewModePersist() {
254
- const { pathname, search } = useLocation();
255
- const navigate = useNavigate();
256
-
257
- // Activate: when URL has ?preview=true, store it in sessionStorage for this tab
258
- useEffect(() => {
259
- const params = new URLSearchParams(search);
260
- if (params.get("preview") === "true") {
261
- sessionStorage.setItem(PREVIEW_KEY, "true");
262
- }
263
- }, [search]);
264
-
265
- // Persist: re-inject ?preview=true on every navigation if it was set
266
- useEffect(() => {
267
- if (sessionStorage.getItem(PREVIEW_KEY) !== "true") return;
268
- const params = new URLSearchParams(search);
269
- if (params.get("preview") === "true") return;
270
- params.set("preview", "true");
271
- navigate({ pathname, search: `?${params.toString()}` }, { replace: true });
272
- }, [pathname, search, navigate]);
273
-
274
- return null;
275
- }
276
-
277
147
  // ── SolidStudioWrapper ─────────────────────────────────────────────────────────
278
148
  // Kept for backwards compatibility. Now a pure pass-through.
279
149
  export function SolidStudioWrapper({ children }: { children: React.ReactNode }) {
@@ -49,12 +49,12 @@ import { SolidDialog } from "../shad-cn-ui/SolidDialog";
49
49
  import { SolidIcon, parseSolidIconMeta } from "../shad-cn-ui/SolidIcon";
50
50
  import { getSettingsMap } from "../../helpers/settingsPayload";
51
51
  var UserProfileMenu = function () {
52
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
52
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
53
53
  var dispatch = useDispatch();
54
54
  var menuRef = useRef(null);
55
- var _k = useState(false), showProfileSettingsDialog = _k[0], setShowProfileSettingsDialog = _k[1];
56
- var _l = useState(false), menuOpen = _l[0], setMenuOpen = _l[1];
57
- var _m = useLazyGetSolidSettingsQuery(), trigger = _m[0], solidSettingsData = _m[1].data;
55
+ var _l = useState(false), showProfileSettingsDialog = _l[0], setShowProfileSettingsDialog = _l[1];
56
+ var _m = useState(false), menuOpen = _m[0], setMenuOpen = _m[1];
57
+ var _o = useLazyGetSolidSettingsQuery(), trigger = _o[0], solidSettingsData = _o[1].data;
58
58
  useEffect(function () {
59
59
  trigger(""); // Fetch settings on mount
60
60
  }, [trigger]);
@@ -64,7 +64,7 @@ var UserProfileMenu = function () {
64
64
  var userData = useGetUserQuery(userId, {
65
65
  skip: !userId,
66
66
  }).data;
67
- var _o = useState(false), confirmLogout = _o[0], setConfirmLogout = _o[1];
67
+ var _p = useState(false), confirmLogout = _p[0], setConfirmLogout = _p[1];
68
68
  useEffect(function () {
69
69
  if (!menuOpen)
70
70
  return;
@@ -111,10 +111,10 @@ var UserProfileMenu = function () {
111
111
  var initials = getInitials(value);
112
112
  var bgColor = getColorFromInitials(initials);
113
113
  var roleLabel = (_e = (_d = userData === null || userData === void 0 ? void 0 : userData.data) === null || _d === void 0 ? void 0 : _d.roles) === null || _e === void 0 ? void 0 : _e.filter(function (role) { return role.name !== "Internal User"; }).map(function (role) { return role.name; }).join(" | ");
114
- var displayName = (settingsMap === null || settingsMap === void 0 ? void 0 : settingsMap.enableUsername)
115
- ? (_f = userData === null || userData === void 0 ? void 0 : userData.data) === null || _f === void 0 ? void 0 : _f.username
116
- : (_g = userData === null || userData === void 0 ? void 0 : userData.data) === null || _g === void 0 ? void 0 : _g.email;
117
- var primaryRole = ((_j = (_h = roleLabel === null || roleLabel === void 0 ? void 0 : roleLabel.split("|")) === null || _h === void 0 ? void 0 : _h[0]) === null || _j === void 0 ? void 0 : _j.trim()) || "User";
114
+ var displayName = ((_f = userData === null || userData === void 0 ? void 0 : userData.data) === null || _f === void 0 ? void 0 : _f.fullName) || ((settingsMap === null || settingsMap === void 0 ? void 0 : settingsMap.enableUsername)
115
+ ? (_g = userData === null || userData === void 0 ? void 0 : userData.data) === null || _g === void 0 ? void 0 : _g.username
116
+ : (_h = userData === null || userData === void 0 ? void 0 : userData.data) === null || _h === void 0 ? void 0 : _h.email);
117
+ var primaryRole = ((_k = (_j = roleLabel === null || roleLabel === void 0 ? void 0 : roleLabel.split("|")) === null || _j === void 0 ? void 0 : _j[0]) === null || _k === void 0 ? void 0 : _k.trim()) || "User";
118
118
  var UserProfileAvatar = function (_a) {
119
119
  var _b, _c, _d, _e;
120
120
  var _f = _a.compact, compact = _f === void 0 ? false : _f;
@@ -122,7 +122,7 @@ var UserProfileMenu = function () {
122
122
  var sizeClass = compact ? "is-compact" : "";
123
123
  return (_jsx("span", { className: "solid-user-avatar ".concat(sizeClass), style: imageUrl ? undefined : { backgroundColor: bgColor }, "aria-hidden": "true", children: imageUrl ? (_jsx("img", { src: imageUrl, alt: "Profile", className: "solid-user-avatar-image" })) : (_jsx("span", { className: "solid-user-avatar-text", children: initials || "U" })) }));
124
124
  };
125
- return (_jsxs("div", { className: "userProfile", children: [_jsxs("div", { className: "solid-user-menu", ref: menuRef, children: [_jsxs("button", { type: "button", className: "solid-user-menu-trigger", onClick: function () { return setMenuOpen(function (prev) { return !prev; }); }, "aria-haspopup": "menu", "aria-expanded": menuOpen, "aria-label": "Open user menu", children: [_jsxs("span", { className: "solid-user-menu-trigger-left", children: [_jsx(UserProfileAvatar, { compact: true }), _jsxs("span", { className: "solid-user-menu-trigger-meta", children: [_jsx("span", { className: "solid-user-menu-trigger-name", children: displayName || "User" }), _jsx("span", { className: "solid-user-menu-trigger-role", children: primaryRole })] })] }), _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", "aria-hidden": "true", children: _jsx("path", { d: "M7 5.83301L3.5 9.33301H10.5L7 5.83301Z", fill: "currentColor" }) })] }), menuOpen && (_jsxs("div", { className: "solid-user-menu-content", role: "menu", children: [_jsxs("div", { className: "solid-user-menu-header", children: [_jsx(UserProfileAvatar, {}), _jsxs("div", { className: "solid-user-menu-meta", children: [_jsx("span", { className: "solid-user-menu-title", children: displayName || "User" }), _jsx("span", { className: "solid-user-menu-subtitle", children: roleLabel || "User" })] })] }), _jsx("div", { className: "solid-user-menu-sep" }), _jsxs("button", { type: "button", className: "solid-user-menu-item", onClick: function () {
125
+ return (_jsxs("div", { className: "userProfile", children: [_jsxs("div", { className: "solid-user-menu", ref: menuRef, children: [_jsxs("button", { type: "button", className: "solid-user-menu-trigger", onClick: function () { return setMenuOpen(function (prev) { return !prev; }); }, "aria-haspopup": "menu", "aria-expanded": menuOpen, "aria-label": "Open user menu", children: [_jsxs("span", { className: "solid-user-menu-trigger-left", children: [_jsx(UserProfileAvatar, { compact: true }), _jsxs("span", { className: "solid-user-menu-trigger-meta", children: [_jsx("span", { className: "solid-user-menu-trigger-name", children: displayName || "User" }), _jsx("span", { className: "solid-user-menu-trigger-role", children: roleLabel })] })] }), _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", "aria-hidden": "true", children: _jsx("path", { d: "M7 5.83301L3.5 9.33301H10.5L7 5.83301Z", fill: "currentColor" }) })] }), menuOpen && (_jsxs("div", { className: "solid-user-menu-content", role: "menu", children: [_jsxs("div", { className: "solid-user-menu-header", children: [_jsx(UserProfileAvatar, {}), _jsxs("div", { className: "solid-user-menu-meta", children: [_jsx("span", { className: "solid-user-menu-title", children: displayName || "User" }), _jsx("span", { className: "solid-user-menu-subtitle", children: roleLabel || "User" })] })] }), _jsx("div", { className: "solid-user-menu-sep" }), _jsxs("button", { type: "button", className: "solid-user-menu-item", onClick: function () {
126
126
  setMenuOpen(false);
127
127
  setShowProfileSettingsDialog(true);
128
128
  }, children: [_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 18 18", fill: "none", "aria-hidden": "true", children: _jsx("path", { d: "M8.1191 16.5C7.7816 16.5 7.49098 16.3875 7.24723 16.1625C7.00348 15.9375 6.8566 15.6625 6.8066 15.3375L6.63785 14.1C6.47535 14.0375 6.32223 13.9625 6.17848 13.875C6.03473 13.7875 5.8941 13.6938 5.7566 13.5938L4.5941 14.0813C4.2816 14.2188 3.9691 14.2313 3.6566 14.1188C3.3441 14.0063 3.10035 13.8063 2.92535 13.5188L2.0441 11.9813C1.8691 11.6938 1.8191 11.3875 1.8941 11.0625C1.9691 10.7375 2.13785 10.4688 2.40035 10.2563L3.3941 9.50625C3.3816 9.41875 3.37535 9.33438 3.37535 9.25313V8.74688C3.37535 8.66563 3.3816 8.58125 3.3941 8.49375L2.40035 7.74375C2.13785 7.53125 1.9691 7.2625 1.8941 6.9375C1.8191 6.6125 1.8691 6.30625 2.0441 6.01875L2.92535 4.48125C3.10035 4.19375 3.3441 3.99375 3.6566 3.88125C3.9691 3.76875 4.2816 3.78125 4.5941 3.91875L5.7566 4.40625C5.8941 4.30625 6.03785 4.2125 6.18785 4.125C6.33785 4.0375 6.48785 3.9625 6.63785 3.9L6.8066 2.6625C6.8566 2.3375 7.00348 2.0625 7.24723 1.8375C7.49098 1.6125 7.7816 1.5 8.1191 1.5H9.8816C10.2191 1.5 10.5097 1.6125 10.7535 1.8375C10.9972 2.0625 11.1441 2.3375 11.1941 2.6625L11.3629 3.9C11.5254 3.9625 11.6785 4.0375 11.8222 4.125C11.966 4.2125 12.1066 4.30625 12.2441 4.40625L13.4066 3.91875C13.7191 3.78125 14.0316 3.76875 14.3441 3.88125C14.6566 3.99375 14.9004 4.19375 15.0754 4.48125L15.9566 6.01875C16.1316 6.30625 16.1816 6.6125 16.1066 6.9375C16.0316 7.2625 15.8629 7.53125 15.6004 7.74375L14.6066 8.49375C14.6191 8.58125 14.6254 8.66563 14.6254 8.74688V9.25313C14.6254 9.33438 14.6129 9.41875 14.5879 9.50625L15.5816 10.2563C15.8441 10.4688 16.0129 10.7375 16.0879 11.0625C16.1629 11.3875 16.1129 11.6938 15.9379 11.9813L15.0379 13.5188C14.8629 13.8063 14.6191 14.0063 14.3066 14.1188C13.9941 14.2313 13.6816 14.2188 13.3691 14.0813L12.2441 13.5938C12.1066 13.6938 11.9629 13.7875 11.8129 13.875C11.6629 13.9625 11.5129 14.0375 11.3629 14.1L11.1941 15.3375C11.1441 15.6625 10.9972 15.9375 10.7535 16.1625C10.5097 16.3875 10.2191 16.5 9.8816 16.5H8.1191ZM8.25035 15H9.7316L9.9941 13.0125C10.3816 12.9125 10.741 12.7656 11.0722 12.5719C11.4035 12.3781 11.7066 12.1438 11.9816 11.8688L13.8379 12.6375L14.5691 11.3625L12.9566 10.1438C13.0191 9.96875 13.0629 9.78438 13.0879 9.59063C13.1129 9.39688 13.1254 9.2 13.1254 9C13.1254 8.8 13.1129 8.60313 13.0879 8.40938C13.0629 8.21563 13.0191 8.03125 12.9566 7.85625L14.5691 6.6375L13.8379 5.3625L11.9816 6.15C11.7066 5.8625 11.4035 5.62188 11.0722 5.42813C10.741 5.23438 10.3816 5.0875 9.9941 4.9875L9.75035 3H8.2691L8.0066 4.9875C7.6191 5.0875 7.25973 5.23438 6.92848 5.42813C6.59723 5.62188 6.2941 5.85625 6.0191 6.13125L4.16285 5.3625L3.4316 6.6375L5.0441 7.8375C4.9816 8.025 4.93785 8.2125 4.91285 8.4C4.88785 8.5875 4.87535 8.7875 4.87535 9C4.87535 9.2 4.88785 9.39375 4.91285 9.58125C4.93785 9.76875 4.9816 9.95625 5.0441 10.1438L3.4316 11.3625L4.16285 12.6375L6.0191 11.85C6.2941 12.1375 6.59723 12.3781 6.92848 12.5719C7.25973 12.7656 7.6191 12.9125 8.0066 13.0125L8.25035 15ZM9.03785 11.625C9.76285 11.625 10.3816 11.3688 10.8941 10.8563C11.4066 10.3438 11.6629 9.725 11.6629 9C11.6629 8.275 11.4066 7.65625 10.8941 7.14375C10.3816 6.63125 9.76285 6.375 9.03785 6.375C8.30035 6.375 7.67848 6.63125 7.17223 7.14375C6.66598 7.65625 6.41285 8.275 6.41285 9C6.41285 9.725 6.66598 10.3438 7.17223 10.8563C7.67848 11.3688 8.30035 11.625 9.03785 11.625Z", fill: "currentColor" }) }), _jsx("span", { children: "Account Settings" })] }), (settingsMap === null || settingsMap === void 0 ? void 0 : settingsMap.contactSupportEmail) && (_jsxs("button", { type: "button", className: "solid-user-menu-item", onClick: function () {
@@ -1 +1 @@
1
- {"version":3,"file":"user-profile-menu.js","sourceRoot":"","sources":["../../../src/components/layout/user-profile-menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { SolidAccountSettings } from \"../core/common/SolidAccountSettings/SolidAccountSettings\";\nimport { useGetUserQuery } from \"../../redux/api/userApi\";\nimport { handleLogout } from \"../../adapters/auth/handleLogout\";\nimport { useLazyGetSolidSettingsQuery } from \"../../redux/api/solidSettingsApi\";\nimport { useSession } from \"../../hooks/useSession\";\nimport { showToast } from \"../../redux/features/toastSlice\";\nimport { ERROR_MESSAGES } from \"../../constants/error-messages\";\nimport { SolidButton } from \"../shad-cn-ui/SolidButton\";\nimport { SolidDialog } from \"../shad-cn-ui/SolidDialog\";\nimport { SolidIcon, parseSolidIconMeta } from \"../shad-cn-ui/SolidIcon\";\nimport { getSettingsMap } from \"../../helpers/settingsPayload\";\n\nconst UserProfileMenu = () => {\n const dispatch = useDispatch();\n const menuRef = useRef<HTMLDivElement>(null);\n const [showProfileSettingsDialog, setShowProfileSettingsDialog] = useState(false);\n const [menuOpen, setMenuOpen] = useState(false);\n const [trigger, { data: solidSettingsData }] = useLazyGetSolidSettingsQuery();\n\n useEffect(() => {\n trigger(\"\") // Fetch settings on mount\n }, [trigger])\n const settingsMap = useMemo(() => getSettingsMap(solidSettingsData), [solidSettingsData]);\n\n const session = useSession();\n const userId = session?.data?.user?.id;\n\n const { data: userData } = useGetUserQuery(userId, {\n skip: !userId,\n });\n const [confirmLogout, setConfirmLogout] = useState(false);\n\n useEffect(() => {\n if (!menuOpen) return;\n const onPointerDown = (event: MouseEvent) => {\n if (!menuRef.current) return;\n if (!menuRef.current.contains(event.target as Node)) {\n setMenuOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", onPointerDown);\n return () => document.removeEventListener(\"mousedown\", onPointerDown);\n }, [menuOpen]);\n\n const onLogout = async () => {\n const success = await handleLogout();\n if (!success) {\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.LOGOUT_FAILED }));\n }\n };\n\n const getInitials = (value: string) => {\n if (!value) return \"\";\n\n const email = value.includes('@') ? value.split('@')[0] : value;\n return email[0]?.toUpperCase() || \"\";\n };\n\n const getColorFromInitials = (initials: string) => {\n let hash = 0;\n for (let i = 0; i < initials.length; i++) {\n hash = initials.charCodeAt(i) + ((hash << 5) - hash);\n }\n const hue = Math.abs(hash) % 360;\n return `hsl(${hue}, 60%, 60%)`;\n };\n\n\n const value = userData?.data?.email;\n const initials = getInitials(value);\n const bgColor = getColorFromInitials(initials);\n const roleLabel = userData?.data?.roles\n ?.filter((role: any) => role.name !== \"Internal User\")\n .map((role: any) => role.name)\n .join(\" | \");\n const displayName = settingsMap?.enableUsername\n ? userData?.data?.username\n : userData?.data?.email;\n const primaryRole = roleLabel?.split(\"|\")?.[0]?.trim() || \"User\";\n\n const UserProfileAvatar = ({ compact = false }: { compact?: boolean }) => {\n const imageUrl = userData?.data?._media?.profilePicture?.[0]?._full_url;\n const sizeClass = compact ? \"is-compact\" : \"\";\n return (\n <span\n className={`solid-user-avatar ${sizeClass}`}\n style={imageUrl ? undefined : { backgroundColor: bgColor }}\n aria-hidden=\"true\"\n >\n {imageUrl ? (\n <img src={imageUrl} alt=\"Profile\" className=\"solid-user-avatar-image\" />\n ) : (\n <span className=\"solid-user-avatar-text\">{initials || \"U\"}</span>\n )}\n </span>\n );\n };\n\n return (\n <div className=\"userProfile\">\n <div className=\"solid-user-menu\" ref={menuRef}>\n <button\n type=\"button\"\n className=\"solid-user-menu-trigger\"\n onClick={() => setMenuOpen((prev) => !prev)}\n aria-haspopup=\"menu\"\n aria-expanded={menuOpen}\n aria-label=\"Open user menu\"\n >\n <span className=\"solid-user-menu-trigger-left\">\n <UserProfileAvatar compact />\n <span className=\"solid-user-menu-trigger-meta\">\n <span className=\"solid-user-menu-trigger-name\">{displayName || \"User\"}</span>\n <span className=\"solid-user-menu-trigger-role\">{primaryRole}</span>\n </span>\n </span>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M7 5.83301L3.5 9.33301H10.5L7 5.83301Z\" fill=\"currentColor\" />\n </svg>\n </button>\n\n {menuOpen && (\n <div className=\"solid-user-menu-content\" role=\"menu\">\n <div className=\"solid-user-menu-header\">\n <UserProfileAvatar />\n <div className=\"solid-user-menu-meta\">\n <span className=\"solid-user-menu-title\">{displayName || \"User\"}</span>\n <span className=\"solid-user-menu-subtitle\">{roleLabel || \"User\"}</span>\n </div>\n </div>\n\n <div className=\"solid-user-menu-sep\" />\n\n <button\n type=\"button\"\n className=\"solid-user-menu-item\"\n onClick={() => {\n setMenuOpen(false);\n setShowProfileSettingsDialog(true);\n }}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 18 18\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M8.1191 16.5C7.7816 16.5 7.49098 16.3875 7.24723 16.1625C7.00348 15.9375 6.8566 15.6625 6.8066 15.3375L6.63785 14.1C6.47535 14.0375 6.32223 13.9625 6.17848 13.875C6.03473 13.7875 5.8941 13.6938 5.7566 13.5938L4.5941 14.0813C4.2816 14.2188 3.9691 14.2313 3.6566 14.1188C3.3441 14.0063 3.10035 13.8063 2.92535 13.5188L2.0441 11.9813C1.8691 11.6938 1.8191 11.3875 1.8941 11.0625C1.9691 10.7375 2.13785 10.4688 2.40035 10.2563L3.3941 9.50625C3.3816 9.41875 3.37535 9.33438 3.37535 9.25313V8.74688C3.37535 8.66563 3.3816 8.58125 3.3941 8.49375L2.40035 7.74375C2.13785 7.53125 1.9691 7.2625 1.8941 6.9375C1.8191 6.6125 1.8691 6.30625 2.0441 6.01875L2.92535 4.48125C3.10035 4.19375 3.3441 3.99375 3.6566 3.88125C3.9691 3.76875 4.2816 3.78125 4.5941 3.91875L5.7566 4.40625C5.8941 4.30625 6.03785 4.2125 6.18785 4.125C6.33785 4.0375 6.48785 3.9625 6.63785 3.9L6.8066 2.6625C6.8566 2.3375 7.00348 2.0625 7.24723 1.8375C7.49098 1.6125 7.7816 1.5 8.1191 1.5H9.8816C10.2191 1.5 10.5097 1.6125 10.7535 1.8375C10.9972 2.0625 11.1441 2.3375 11.1941 2.6625L11.3629 3.9C11.5254 3.9625 11.6785 4.0375 11.8222 4.125C11.966 4.2125 12.1066 4.30625 12.2441 4.40625L13.4066 3.91875C13.7191 3.78125 14.0316 3.76875 14.3441 3.88125C14.6566 3.99375 14.9004 4.19375 15.0754 4.48125L15.9566 6.01875C16.1316 6.30625 16.1816 6.6125 16.1066 6.9375C16.0316 7.2625 15.8629 7.53125 15.6004 7.74375L14.6066 8.49375C14.6191 8.58125 14.6254 8.66563 14.6254 8.74688V9.25313C14.6254 9.33438 14.6129 9.41875 14.5879 9.50625L15.5816 10.2563C15.8441 10.4688 16.0129 10.7375 16.0879 11.0625C16.1629 11.3875 16.1129 11.6938 15.9379 11.9813L15.0379 13.5188C14.8629 13.8063 14.6191 14.0063 14.3066 14.1188C13.9941 14.2313 13.6816 14.2188 13.3691 14.0813L12.2441 13.5938C12.1066 13.6938 11.9629 13.7875 11.8129 13.875C11.6629 13.9625 11.5129 14.0375 11.3629 14.1L11.1941 15.3375C11.1441 15.6625 10.9972 15.9375 10.7535 16.1625C10.5097 16.3875 10.2191 16.5 9.8816 16.5H8.1191ZM8.25035 15H9.7316L9.9941 13.0125C10.3816 12.9125 10.741 12.7656 11.0722 12.5719C11.4035 12.3781 11.7066 12.1438 11.9816 11.8688L13.8379 12.6375L14.5691 11.3625L12.9566 10.1438C13.0191 9.96875 13.0629 9.78438 13.0879 9.59063C13.1129 9.39688 13.1254 9.2 13.1254 9C13.1254 8.8 13.1129 8.60313 13.0879 8.40938C13.0629 8.21563 13.0191 8.03125 12.9566 7.85625L14.5691 6.6375L13.8379 5.3625L11.9816 6.15C11.7066 5.8625 11.4035 5.62188 11.0722 5.42813C10.741 5.23438 10.3816 5.0875 9.9941 4.9875L9.75035 3H8.2691L8.0066 4.9875C7.6191 5.0875 7.25973 5.23438 6.92848 5.42813C6.59723 5.62188 6.2941 5.85625 6.0191 6.13125L4.16285 5.3625L3.4316 6.6375L5.0441 7.8375C4.9816 8.025 4.93785 8.2125 4.91285 8.4C4.88785 8.5875 4.87535 8.7875 4.87535 9C4.87535 9.2 4.88785 9.39375 4.91285 9.58125C4.93785 9.76875 4.9816 9.95625 5.0441 10.1438L3.4316 11.3625L4.16285 12.6375L6.0191 11.85C6.2941 12.1375 6.59723 12.3781 6.92848 12.5719C7.25973 12.7656 7.6191 12.9125 8.0066 13.0125L8.25035 15ZM9.03785 11.625C9.76285 11.625 10.3816 11.3688 10.8941 10.8563C11.4066 10.3438 11.6629 9.725 11.6629 9C11.6629 8.275 11.4066 7.65625 10.8941 7.14375C10.3816 6.63125 9.76285 6.375 9.03785 6.375C8.30035 6.375 7.67848 6.63125 7.17223 7.14375C6.66598 7.65625 6.41285 8.275 6.41285 9C6.41285 9.725 6.66598 10.3438 7.17223 10.8563C7.67848 11.3688 8.30035 11.625 9.03785 11.625Z\" fill=\"currentColor\" />\n </svg>\n <span>Account Settings</span>\n </button>\n\n {settingsMap?.contactSupportEmail && (\n <button\n type=\"button\"\n className=\"solid-user-menu-item\"\n onClick={() => {\n setMenuOpen(false);\n window.location.href = `mailto:${settingsMap?.contactSupportEmail}`;\n }}\n >\n {settingsMap?.contactSupportIcon ? (\n (() => { const m = parseSolidIconMeta(settingsMap?.contactSupportIcon); return m ? <SolidIcon name={m.name} spin={m.spin} aria-hidden=\"true\" /> : <i className={settingsMap?.contactSupportIcon} aria-hidden=\"true\" />; })()\n ) : (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 18 18\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M3 4.5C3 3.67157 3.67157 3 4.5 3H13.5C14.3284 3 15 3.67157 15 4.5V13.5C15 14.3284 14.3284 15 13.5 15H4.5C3.67157 15 3 14.3284 3 13.5V4.5Z\" stroke=\"currentColor\" strokeWidth=\"1.25\" />\n <path d=\"M4.125 5.25L9 9L13.875 5.25\" stroke=\"currentColor\" strokeWidth=\"1.25\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n )}\n <span>{settingsMap?.contactSupportDisplayName || \"Contact Support\"}</span>\n </button>\n )}\n\n <div className=\"solid-user-menu-sep\" />\n\n <button\n type=\"button\"\n className=\"solid-user-menu-item is-danger\"\n onClick={() => {\n setMenuOpen(false);\n setConfirmLogout(true);\n }}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 18 18\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M3.75 15.75C3.3375 15.75 2.98438 15.6031 2.69063 15.3094C2.39687 15.0156 2.25 14.6625 2.25 14.25V3.75C2.25 3.3375 2.39687 2.98438 2.69063 2.69063C2.98438 2.39687 3.3375 2.25 3.75 2.25H9V3.75H3.75V14.25H9V15.75H3.75ZM12 12.75L10.9688 11.6625L12.8813 9.75H6.75V8.25H12.8813L10.9688 6.3375L12 5.25L15.75 9L12 12.75Z\" fill=\"currentColor\" />\n </svg>\n <span>Logout</span>\n </button>\n </div>\n )}\n </div>\n {confirmLogout && (\n <SolidDialog\n open={confirmLogout}\n onOpenChange={setConfirmLogout}\n showHeader={false}\n className=\"solid-confirm-dialog solid-shadcn-confirm-dialog\"\n style={{ width: \"min(320px, calc(100vw - 40px))\" }}\n >\n <div className=\"solid-shadcn-dialog-head\">\n <h3 id=\"solid-logout-dialog-title\">Logout</h3>\n </div>\n <div className=\"solid-shadcn-dialog-sep\" />\n <div className=\"solid-shadcn-dialog-body\">\n <p className=\"solid-shadcn-dialog-text\">Are you sure you want to log out?</p>\n </div>\n <div className=\"solid-shadcn-dialog-actions\">\n <SolidButton size=\"sm\" variant=\"destructive\" onClick={onLogout}>\n Logout\n </SolidButton>\n <SolidButton size=\"sm\" variant=\"outline\" onClick={() => setConfirmLogout(false)}>\n Cancel\n </SolidButton>\n </div>\n </SolidDialog>\n )}\n {showProfileSettingsDialog &&\n <SolidAccountSettings\n showProfileSettingsDialog={showProfileSettingsDialog}\n setShowProfileSettingsDialog={setShowProfileSettingsDialog}\n />\n }\n </div>\n );\n};\n\nexport default UserProfileMenu;\n"]}
1
+ {"version":3,"file":"user-profile-menu.js","sourceRoot":"","sources":["../../../src/components/layout/user-profile-menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { SolidAccountSettings } from \"../core/common/SolidAccountSettings/SolidAccountSettings\";\nimport { useGetUserQuery } from \"../../redux/api/userApi\";\nimport { handleLogout } from \"../../adapters/auth/handleLogout\";\nimport { useLazyGetSolidSettingsQuery } from \"../../redux/api/solidSettingsApi\";\nimport { useSession } from \"../../hooks/useSession\";\nimport { showToast } from \"../../redux/features/toastSlice\";\nimport { ERROR_MESSAGES } from \"../../constants/error-messages\";\nimport { SolidButton } from \"../shad-cn-ui/SolidButton\";\nimport { SolidDialog } from \"../shad-cn-ui/SolidDialog\";\nimport { SolidIcon, parseSolidIconMeta } from \"../shad-cn-ui/SolidIcon\";\nimport { getSettingsMap } from \"../../helpers/settingsPayload\";\n\nconst UserProfileMenu = () => {\n const dispatch = useDispatch();\n const menuRef = useRef<HTMLDivElement>(null);\n const [showProfileSettingsDialog, setShowProfileSettingsDialog] = useState(false);\n const [menuOpen, setMenuOpen] = useState(false);\n const [trigger, { data: solidSettingsData }] = useLazyGetSolidSettingsQuery();\n\n useEffect(() => {\n trigger(\"\") // Fetch settings on mount\n }, [trigger])\n const settingsMap = useMemo(() => getSettingsMap(solidSettingsData), [solidSettingsData]);\n\n const session = useSession();\n const userId = session?.data?.user?.id;\n\n const { data: userData } = useGetUserQuery(userId, {\n skip: !userId,\n });\n const [confirmLogout, setConfirmLogout] = useState(false);\n\n useEffect(() => {\n if (!menuOpen) return;\n const onPointerDown = (event: MouseEvent) => {\n if (!menuRef.current) return;\n if (!menuRef.current.contains(event.target as Node)) {\n setMenuOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", onPointerDown);\n return () => document.removeEventListener(\"mousedown\", onPointerDown);\n }, [menuOpen]);\n\n const onLogout = async () => {\n const success = await handleLogout();\n if (!success) {\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.LOGOUT_FAILED }));\n }\n };\n\n const getInitials = (value: string) => {\n if (!value) return \"\";\n\n const email = value.includes('@') ? value.split('@')[0] : value;\n return email[0]?.toUpperCase() || \"\";\n };\n\n const getColorFromInitials = (initials: string) => {\n let hash = 0;\n for (let i = 0; i < initials.length; i++) {\n hash = initials.charCodeAt(i) + ((hash << 5) - hash);\n }\n const hue = Math.abs(hash) % 360;\n return `hsl(${hue}, 60%, 60%)`;\n };\n\n\n const value = userData?.data?.email;\n const initials = getInitials(value);\n const bgColor = getColorFromInitials(initials);\n const roleLabel = userData?.data?.roles\n ?.filter((role: any) => role.name !== \"Internal User\")\n .map((role: any) => role.name)\n .join(\" | \");\n const displayName = userData?.data?.fullName || (settingsMap?.enableUsername\n ? userData?.data?.username\n : userData?.data?.email);\n const primaryRole = roleLabel?.split(\"|\")?.[0]?.trim() || \"User\";\n\n const UserProfileAvatar = ({ compact = false }: { compact?: boolean }) => {\n const imageUrl = userData?.data?._media?.profilePicture?.[0]?._full_url;\n const sizeClass = compact ? \"is-compact\" : \"\";\n return (\n <span\n className={`solid-user-avatar ${sizeClass}`}\n style={imageUrl ? undefined : { backgroundColor: bgColor }}\n aria-hidden=\"true\"\n >\n {imageUrl ? (\n <img src={imageUrl} alt=\"Profile\" className=\"solid-user-avatar-image\" />\n ) : (\n <span className=\"solid-user-avatar-text\">{initials || \"U\"}</span>\n )}\n </span>\n );\n };\n\n return (\n <div className=\"userProfile\">\n <div className=\"solid-user-menu\" ref={menuRef}>\n <button\n type=\"button\"\n className=\"solid-user-menu-trigger\"\n onClick={() => setMenuOpen((prev) => !prev)}\n aria-haspopup=\"menu\"\n aria-expanded={menuOpen}\n aria-label=\"Open user menu\"\n >\n <span className=\"solid-user-menu-trigger-left\">\n <UserProfileAvatar compact />\n <span className=\"solid-user-menu-trigger-meta\">\n <span className=\"solid-user-menu-trigger-name\">{displayName || \"User\"}</span>\n <span className=\"solid-user-menu-trigger-role\">{roleLabel}</span>\n </span>\n </span>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M7 5.83301L3.5 9.33301H10.5L7 5.83301Z\" fill=\"currentColor\" />\n </svg>\n </button>\n\n {menuOpen && (\n <div className=\"solid-user-menu-content\" role=\"menu\">\n <div className=\"solid-user-menu-header\">\n <UserProfileAvatar />\n <div className=\"solid-user-menu-meta\">\n <span className=\"solid-user-menu-title\">{displayName || \"User\"}</span>\n <span className=\"solid-user-menu-subtitle\">{roleLabel || \"User\"}</span>\n </div>\n </div>\n\n <div className=\"solid-user-menu-sep\" />\n\n <button\n type=\"button\"\n className=\"solid-user-menu-item\"\n onClick={() => {\n setMenuOpen(false);\n setShowProfileSettingsDialog(true);\n }}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 18 18\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M8.1191 16.5C7.7816 16.5 7.49098 16.3875 7.24723 16.1625C7.00348 15.9375 6.8566 15.6625 6.8066 15.3375L6.63785 14.1C6.47535 14.0375 6.32223 13.9625 6.17848 13.875C6.03473 13.7875 5.8941 13.6938 5.7566 13.5938L4.5941 14.0813C4.2816 14.2188 3.9691 14.2313 3.6566 14.1188C3.3441 14.0063 3.10035 13.8063 2.92535 13.5188L2.0441 11.9813C1.8691 11.6938 1.8191 11.3875 1.8941 11.0625C1.9691 10.7375 2.13785 10.4688 2.40035 10.2563L3.3941 9.50625C3.3816 9.41875 3.37535 9.33438 3.37535 9.25313V8.74688C3.37535 8.66563 3.3816 8.58125 3.3941 8.49375L2.40035 7.74375C2.13785 7.53125 1.9691 7.2625 1.8941 6.9375C1.8191 6.6125 1.8691 6.30625 2.0441 6.01875L2.92535 4.48125C3.10035 4.19375 3.3441 3.99375 3.6566 3.88125C3.9691 3.76875 4.2816 3.78125 4.5941 3.91875L5.7566 4.40625C5.8941 4.30625 6.03785 4.2125 6.18785 4.125C6.33785 4.0375 6.48785 3.9625 6.63785 3.9L6.8066 2.6625C6.8566 2.3375 7.00348 2.0625 7.24723 1.8375C7.49098 1.6125 7.7816 1.5 8.1191 1.5H9.8816C10.2191 1.5 10.5097 1.6125 10.7535 1.8375C10.9972 2.0625 11.1441 2.3375 11.1941 2.6625L11.3629 3.9C11.5254 3.9625 11.6785 4.0375 11.8222 4.125C11.966 4.2125 12.1066 4.30625 12.2441 4.40625L13.4066 3.91875C13.7191 3.78125 14.0316 3.76875 14.3441 3.88125C14.6566 3.99375 14.9004 4.19375 15.0754 4.48125L15.9566 6.01875C16.1316 6.30625 16.1816 6.6125 16.1066 6.9375C16.0316 7.2625 15.8629 7.53125 15.6004 7.74375L14.6066 8.49375C14.6191 8.58125 14.6254 8.66563 14.6254 8.74688V9.25313C14.6254 9.33438 14.6129 9.41875 14.5879 9.50625L15.5816 10.2563C15.8441 10.4688 16.0129 10.7375 16.0879 11.0625C16.1629 11.3875 16.1129 11.6938 15.9379 11.9813L15.0379 13.5188C14.8629 13.8063 14.6191 14.0063 14.3066 14.1188C13.9941 14.2313 13.6816 14.2188 13.3691 14.0813L12.2441 13.5938C12.1066 13.6938 11.9629 13.7875 11.8129 13.875C11.6629 13.9625 11.5129 14.0375 11.3629 14.1L11.1941 15.3375C11.1441 15.6625 10.9972 15.9375 10.7535 16.1625C10.5097 16.3875 10.2191 16.5 9.8816 16.5H8.1191ZM8.25035 15H9.7316L9.9941 13.0125C10.3816 12.9125 10.741 12.7656 11.0722 12.5719C11.4035 12.3781 11.7066 12.1438 11.9816 11.8688L13.8379 12.6375L14.5691 11.3625L12.9566 10.1438C13.0191 9.96875 13.0629 9.78438 13.0879 9.59063C13.1129 9.39688 13.1254 9.2 13.1254 9C13.1254 8.8 13.1129 8.60313 13.0879 8.40938C13.0629 8.21563 13.0191 8.03125 12.9566 7.85625L14.5691 6.6375L13.8379 5.3625L11.9816 6.15C11.7066 5.8625 11.4035 5.62188 11.0722 5.42813C10.741 5.23438 10.3816 5.0875 9.9941 4.9875L9.75035 3H8.2691L8.0066 4.9875C7.6191 5.0875 7.25973 5.23438 6.92848 5.42813C6.59723 5.62188 6.2941 5.85625 6.0191 6.13125L4.16285 5.3625L3.4316 6.6375L5.0441 7.8375C4.9816 8.025 4.93785 8.2125 4.91285 8.4C4.88785 8.5875 4.87535 8.7875 4.87535 9C4.87535 9.2 4.88785 9.39375 4.91285 9.58125C4.93785 9.76875 4.9816 9.95625 5.0441 10.1438L3.4316 11.3625L4.16285 12.6375L6.0191 11.85C6.2941 12.1375 6.59723 12.3781 6.92848 12.5719C7.25973 12.7656 7.6191 12.9125 8.0066 13.0125L8.25035 15ZM9.03785 11.625C9.76285 11.625 10.3816 11.3688 10.8941 10.8563C11.4066 10.3438 11.6629 9.725 11.6629 9C11.6629 8.275 11.4066 7.65625 10.8941 7.14375C10.3816 6.63125 9.76285 6.375 9.03785 6.375C8.30035 6.375 7.67848 6.63125 7.17223 7.14375C6.66598 7.65625 6.41285 8.275 6.41285 9C6.41285 9.725 6.66598 10.3438 7.17223 10.8563C7.67848 11.3688 8.30035 11.625 9.03785 11.625Z\" fill=\"currentColor\" />\n </svg>\n <span>Account Settings</span>\n </button>\n\n {settingsMap?.contactSupportEmail && (\n <button\n type=\"button\"\n className=\"solid-user-menu-item\"\n onClick={() => {\n setMenuOpen(false);\n window.location.href = `mailto:${settingsMap?.contactSupportEmail}`;\n }}\n >\n {settingsMap?.contactSupportIcon ? (\n (() => { const m = parseSolidIconMeta(settingsMap?.contactSupportIcon); return m ? <SolidIcon name={m.name} spin={m.spin} aria-hidden=\"true\" /> : <i className={settingsMap?.contactSupportIcon} aria-hidden=\"true\" />; })()\n ) : (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 18 18\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M3 4.5C3 3.67157 3.67157 3 4.5 3H13.5C14.3284 3 15 3.67157 15 4.5V13.5C15 14.3284 14.3284 15 13.5 15H4.5C3.67157 15 3 14.3284 3 13.5V4.5Z\" stroke=\"currentColor\" strokeWidth=\"1.25\" />\n <path d=\"M4.125 5.25L9 9L13.875 5.25\" stroke=\"currentColor\" strokeWidth=\"1.25\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n )}\n <span>{settingsMap?.contactSupportDisplayName || \"Contact Support\"}</span>\n </button>\n )}\n\n <div className=\"solid-user-menu-sep\" />\n\n <button\n type=\"button\"\n className=\"solid-user-menu-item is-danger\"\n onClick={() => {\n setMenuOpen(false);\n setConfirmLogout(true);\n }}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 18 18\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M3.75 15.75C3.3375 15.75 2.98438 15.6031 2.69063 15.3094C2.39687 15.0156 2.25 14.6625 2.25 14.25V3.75C2.25 3.3375 2.39687 2.98438 2.69063 2.69063C2.98438 2.39687 3.3375 2.25 3.75 2.25H9V3.75H3.75V14.25H9V15.75H3.75ZM12 12.75L10.9688 11.6625L12.8813 9.75H6.75V8.25H12.8813L10.9688 6.3375L12 5.25L15.75 9L12 12.75Z\" fill=\"currentColor\" />\n </svg>\n <span>Logout</span>\n </button>\n </div>\n )}\n </div>\n {confirmLogout && (\n <SolidDialog\n open={confirmLogout}\n onOpenChange={setConfirmLogout}\n showHeader={false}\n className=\"solid-confirm-dialog solid-shadcn-confirm-dialog\"\n style={{ width: \"min(320px, calc(100vw - 40px))\" }}\n >\n <div className=\"solid-shadcn-dialog-head\">\n <h3 id=\"solid-logout-dialog-title\">Logout</h3>\n </div>\n <div className=\"solid-shadcn-dialog-sep\" />\n <div className=\"solid-shadcn-dialog-body\">\n <p className=\"solid-shadcn-dialog-text\">Are you sure you want to log out?</p>\n </div>\n <div className=\"solid-shadcn-dialog-actions\">\n <SolidButton size=\"sm\" variant=\"destructive\" onClick={onLogout}>\n Logout\n </SolidButton>\n <SolidButton size=\"sm\" variant=\"outline\" onClick={() => setConfirmLogout(false)}>\n Cancel\n </SolidButton>\n </div>\n </SolidDialog>\n )}\n {showProfileSettingsDialog &&\n <SolidAccountSettings\n showProfileSettingsDialog={showProfileSettingsDialog}\n setShowProfileSettingsDialog={setShowProfileSettingsDialog}\n />\n }\n </div>\n );\n};\n\nexport default UserProfileMenu;\n"]}
@@ -75,9 +75,9 @@ const UserProfileMenu = () => {
75
75
  ?.filter((role: any) => role.name !== "Internal User")
76
76
  .map((role: any) => role.name)
77
77
  .join(" | ");
78
- const displayName = settingsMap?.enableUsername
78
+ const displayName = userData?.data?.fullName || (settingsMap?.enableUsername
79
79
  ? userData?.data?.username
80
- : userData?.data?.email;
80
+ : userData?.data?.email);
81
81
  const primaryRole = roleLabel?.split("|")?.[0]?.trim() || "User";
82
82
 
83
83
  const UserProfileAvatar = ({ compact = false }: { compact?: boolean }) => {
@@ -113,7 +113,7 @@ const UserProfileMenu = () => {
113
113
  <UserProfileAvatar compact />
114
114
  <span className="solid-user-menu-trigger-meta">
115
115
  <span className="solid-user-menu-trigger-name">{displayName || "User"}</span>
116
- <span className="solid-user-menu-trigger-role">{primaryRole}</span>
116
+ <span className="solid-user-menu-trigger-role">{roleLabel}</span>
117
117
  </span>
118
118
  </span>
119
119
  <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14" fill="none" aria-hidden="true">
@@ -11,9 +11,10 @@ export interface SolidLightboxSlide {
11
11
  export interface SolidLightboxProps {
12
12
  slides: SolidLightboxSlide[];
13
13
  open: boolean;
14
+ onBeforeClose?: () => void;
14
15
  onClose: () => void;
15
16
  viewerOptions?: Viewer.Options;
16
17
  }
17
- export declare const SolidLightbox: ({ slides, open, onClose, viewerOptions, }: SolidLightboxProps) => import("react/jsx-runtime").JSX.Element | null;
18
+ export declare const SolidLightbox: ({ slides, open, onBeforeClose, onClose, viewerOptions, }: SolidLightboxProps) => import("react/jsx-runtime").JSX.Element | null;
18
19
  export {};
19
20
  //# sourceMappingURL=SolidLightbox.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SolidLightbox.d.ts","sourceRoot":"","sources":["../../../src/components/shad-cn-ui/SolidLightbox.tsx"],"names":[],"mappings":"AAEA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,0BAA0B,CAAC;AAElC,KAAK,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAE7C,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;CAChC;AAED,eAAO,MAAM,aAAa,8CAKvB,kBAAkB,mDAwMpB,CAAC"}
1
+ {"version":3,"file":"SolidLightbox.d.ts","sourceRoot":"","sources":["../../../src/components/shad-cn-ui/SolidLightbox.tsx"],"names":[],"mappings":"AAEA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,0BAA0B,CAAC;AAElC,KAAK,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAE7C,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;CAChC;AAED,eAAO,MAAM,aAAa,6DAMvB,kBAAkB,mDAmNpB,CAAC"}
@@ -14,7 +14,7 @@ import { useEffect, useMemo, useRef, useState } from "react";
14
14
  import Viewer from "viewerjs";
15
15
  import "viewerjs/dist/viewer.css";
16
16
  export var SolidLightbox = function (_a) {
17
- var slides = _a.slides, open = _a.open, onClose = _a.onClose, viewerOptions = _a.viewerOptions;
17
+ var slides = _a.slides, open = _a.open, onBeforeClose = _a.onBeforeClose, onClose = _a.onClose, viewerOptions = _a.viewerOptions;
18
18
  var _b = useState(0), currentIndex = _b[0], setCurrentIndex = _b[1];
19
19
  var containerRef = useRef(null);
20
20
  var viewerRef = useRef(null);
@@ -38,7 +38,7 @@ export var SolidLightbox = function (_a) {
38
38
  if (viewerRef.current) {
39
39
  viewerRef.current.destroy();
40
40
  }
41
- viewerRef.current = new Viewer(containerRef.current, __assign({ navbar: sanitizedSlides.length > 1, title: false, transition: true, movable: true, scalable: true, rotatable: true, zoomable: true, zIndex: 9999, hidden: function () {
41
+ viewerRef.current = new Viewer(containerRef.current, __assign(__assign({ navbar: sanitizedSlides.length > 1, title: false, transition: true, movable: true, scalable: true, rotatable: true, zoomable: true, zIndex: 9999, hidden: function () {
42
42
  onClose();
43
43
  }, toolbar: {
44
44
  prev: 1,
@@ -48,7 +48,11 @@ export var SolidLightbox = function (_a) {
48
48
  rotateLeft: 1,
49
49
  rotateRight: 1,
50
50
  reset: 1,
51
- } }, viewerOptions));
51
+ } }, viewerOptions), { hide: function (event) {
52
+ var _a;
53
+ (_a = viewerOptions === null || viewerOptions === void 0 ? void 0 : viewerOptions.hide) === null || _a === void 0 ? void 0 : _a.call(viewerOptions, event);
54
+ onBeforeClose === null || onBeforeClose === void 0 ? void 0 : onBeforeClose();
55
+ } }));
52
56
  viewerRef.current.show();
53
57
  return function () {
54
58
  if (viewerRef.current) {
@@ -107,7 +111,10 @@ export var SolidLightbox = function (_a) {
107
111
  }
108
112
  return (_jsx("img", { src: currentSlide.src, alt: "lightbox-media", style: { maxWidth: "90vw", maxHeight: "80vh", objectFit: "contain" } }, currentSlide.src));
109
113
  };
110
- return (_jsxs("div", { style: overlayStyles, children: [_jsx("button", { style: closeButtonStyles, onClick: onClose, "aria-label": "Close", children: "\u00D7" }), showNav && (_jsxs(_Fragment, { children: [_jsx("button", { style: navButtonStyles("left"), onClick: handlePrev, "aria-label": "Previous", children: "\u2039" }), _jsx("button", { style: navButtonStyles("right"), onClick: handleNext, "aria-label": "Next", children: "\u203A" })] })), _jsx("div", { style: contentStyles, children: renderSlide() })] }));
114
+ return (_jsxs("div", { style: overlayStyles, children: [_jsx("button", { style: closeButtonStyles, onClick: function () {
115
+ onBeforeClose === null || onBeforeClose === void 0 ? void 0 : onBeforeClose();
116
+ onClose();
117
+ }, "aria-label": "Close", children: "\u00D7" }), showNav && (_jsxs(_Fragment, { children: [_jsx("button", { style: navButtonStyles("left"), onClick: handlePrev, "aria-label": "Previous", children: "\u2039" }), _jsx("button", { style: navButtonStyles("right"), onClick: handleNext, "aria-label": "Next", children: "\u203A" })] })), _jsx("div", { style: contentStyles, children: renderSlide() })] }));
111
118
  };
112
119
  var overlayStyles = {
113
120
  position: "fixed",
@@ -1 +1 @@
1
- {"version":3,"file":"SolidLightbox.js","sourceRoot":"","sources":["../../../src/components/shad-cn-ui/SolidLightbox.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { CSSProperties } from \"react\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport Viewer from \"viewerjs\";\nimport \"viewerjs/dist/viewer.css\";\n\ntype SlideType = \"image\" | \"video\" | \"audio\";\n\nexport interface SolidLightboxSlide {\n src: string;\n type?: SlideType;\n mimeType?: string;\n poster?: string;\n downloadUrl?: string;\n}\n\nexport interface SolidLightboxProps {\n slides: SolidLightboxSlide[];\n open: boolean;\n onClose: () => void;\n viewerOptions?: Viewer.Options;\n}\n\nexport const SolidLightbox = ({\n slides,\n open,\n onClose,\n viewerOptions,\n}: SolidLightboxProps) => {\n const [currentIndex, setCurrentIndex] = useState(0);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const viewerRef = useRef<Viewer | null>(null);\n\n const sanitizedSlides = useMemo(\n () => slides.filter((slide) => !!slide?.src),\n [slides]\n );\n\n const hasOnlyImages = useMemo(\n () => sanitizedSlides.every((slide) => (slide.type ?? \"image\") === \"image\"),\n [sanitizedSlides]\n );\n\n useEffect(() => {\n if (open) {\n setCurrentIndex(0);\n }\n }, [open, sanitizedSlides]);\n\n useEffect(() => {\n if (!hasOnlyImages || !open) {\n if (viewerRef.current) {\n viewerRef.current.destroy();\n viewerRef.current = null;\n }\n return;\n }\n\n if (!containerRef.current || sanitizedSlides.length === 0) return;\n\n if (viewerRef.current) {\n viewerRef.current.destroy();\n }\n\n viewerRef.current = new Viewer(containerRef.current, {\n navbar: sanitizedSlides.length > 1,\n title: false,\n transition: true,\n movable: true,\n scalable: true,\n rotatable: true,\n zoomable: true,\n zIndex: 9999,\n hidden: () => {\n onClose();\n },\n toolbar: {\n prev: 1,\n next: 1,\n zoomIn: 1,\n zoomOut: 1,\n rotateLeft: 1,\n rotateRight: 1,\n reset: 1,\n },\n ...viewerOptions,\n });\n\n viewerRef.current.show();\n\n return () => {\n if (viewerRef.current) {\n viewerRef.current.destroy();\n viewerRef.current = null;\n }\n };\n }, [sanitizedSlides, hasOnlyImages, open]);\n\n if (!open || sanitizedSlides.length === 0) {\n return null;\n }\n\n if (hasOnlyImages) {\n return (\n <div\n ref={containerRef}\n style={{\n position: \"absolute\",\n visibility: \"hidden\",\n width: 0,\n height: 0,\n overflow: \"hidden\",\n }}\n >\n {sanitizedSlides.map((slide, index) => (\n <img key={index} src={slide.src} alt={`preview-${index}`} />\n ))}\n </div>\n );\n }\n\n const handlePrev = () => {\n setCurrentIndex((prev) =>\n prev === 0 ? sanitizedSlides.length - 1 : prev - 1\n );\n };\n\n const handleNext = () => {\n setCurrentIndex((prev) =>\n prev === sanitizedSlides.length - 1 ? 0 : prev + 1\n );\n };\n\n const currentSlide = sanitizedSlides[currentIndex];\n const showNav = sanitizedSlides.length > 1;\n\n const renderSlide = () => {\n const mediaType = currentSlide?.type ?? \"image\";\n if (mediaType === \"video\") {\n return (\n <video\n key={currentSlide.src}\n controls\n autoPlay\n style={{ maxWidth: \"90vw\", maxHeight: \"80vh\" }}\n poster={currentSlide.poster}\n >\n <source\n src={currentSlide.src}\n type={currentSlide.mimeType || \"video/mp4\"}\n />\n Your browser does not support the video tag.\n </video>\n );\n }\n\n if (mediaType === \"audio\") {\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n gap: \"1rem\",\n }}\n >\n <div\n style={{\n width: \"160px\",\n height: \"160px\",\n borderRadius: \"50%\",\n background: \"rgba(255,255,255,0.08)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: \"3rem\",\n color: \"#fff\",\n }}\n >\n ♪\n </div>\n <audio controls autoPlay preload=\"auto\" style={{ width: \"320px\" }}>\n <source\n src={currentSlide.src}\n type={currentSlide.mimeType || \"audio/mpeg\"}\n />\n Your browser does not support the audio element.\n </audio>\n </div>\n );\n }\n\n return (\n <img\n key={currentSlide.src}\n src={currentSlide.src}\n alt=\"lightbox-media\"\n style={{ maxWidth: \"90vw\", maxHeight: \"80vh\", objectFit: \"contain\" }}\n />\n );\n };\n\n return (\n <div style={overlayStyles}>\n <button style={closeButtonStyles} onClick={onClose} aria-label=\"Close\">\n ×\n </button>\n {showNav && (\n <>\n <button\n style={navButtonStyles(\"left\")}\n onClick={handlePrev}\n aria-label=\"Previous\"\n >\n ‹\n </button>\n <button\n style={navButtonStyles(\"right\")}\n onClick={handleNext}\n aria-label=\"Next\"\n >\n ›\n </button>\n </>\n )}\n <div style={contentStyles}>{renderSlide()}</div>\n </div>\n );\n};\n\nconst overlayStyles: CSSProperties = {\n position: \"fixed\",\n inset: 0,\n backgroundColor: \"rgba(0,0,0,0.85)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n zIndex: 10000,\n};\n\nconst contentStyles: CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"100%\",\n padding: \"16px\",\n};\n\nconst closeButtonStyles: CSSProperties = {\n position: \"absolute\",\n top: \"16px\",\n right: \"24px\",\n fontSize: \"2rem\",\n color: \"#fff\",\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n};\n\nconst navButtonStyles = (direction: \"left\" | \"right\"): CSSProperties => {\n const baseStyles: CSSProperties = {\n position: \"absolute\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n fontSize: \"2.5rem\",\n color: \"#fff\",\n background: \"rgba(0,0,0,0.4)\",\n border: \"none\",\n width: \"48px\",\n height: \"48px\",\n borderRadius: \"999px\",\n cursor: \"pointer\",\n };\n\n if (direction === \"left\") {\n baseStyles.left = \"24px\";\n } else {\n baseStyles.right = \"24px\";\n }\n\n return baseStyles;\n};\n"]}
1
+ {"version":3,"file":"SolidLightbox.js","sourceRoot":"","sources":["../../../src/components/shad-cn-ui/SolidLightbox.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { CSSProperties } from \"react\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport Viewer from \"viewerjs\";\nimport \"viewerjs/dist/viewer.css\";\n\ntype SlideType = \"image\" | \"video\" | \"audio\";\n\nexport interface SolidLightboxSlide {\n src: string;\n type?: SlideType;\n mimeType?: string;\n poster?: string;\n downloadUrl?: string;\n}\n\nexport interface SolidLightboxProps {\n slides: SolidLightboxSlide[];\n open: boolean;\n onBeforeClose?: () => void;\n onClose: () => void;\n viewerOptions?: Viewer.Options;\n}\n\nexport const SolidLightbox = ({\n slides,\n open,\n onBeforeClose,\n onClose,\n viewerOptions,\n}: SolidLightboxProps) => {\n const [currentIndex, setCurrentIndex] = useState(0);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const viewerRef = useRef<Viewer | null>(null);\n\n const sanitizedSlides = useMemo(\n () => slides.filter((slide) => !!slide?.src),\n [slides]\n );\n\n const hasOnlyImages = useMemo(\n () => sanitizedSlides.every((slide) => (slide.type ?? \"image\") === \"image\"),\n [sanitizedSlides]\n );\n\n useEffect(() => {\n if (open) {\n setCurrentIndex(0);\n }\n }, [open, sanitizedSlides]);\n\n useEffect(() => {\n if (!hasOnlyImages || !open) {\n if (viewerRef.current) {\n viewerRef.current.destroy();\n viewerRef.current = null;\n }\n return;\n }\n\n if (!containerRef.current || sanitizedSlides.length === 0) return;\n\n if (viewerRef.current) {\n viewerRef.current.destroy();\n }\n\n viewerRef.current = new Viewer(containerRef.current, {\n navbar: sanitizedSlides.length > 1,\n title: false,\n transition: true,\n movable: true,\n scalable: true,\n rotatable: true,\n zoomable: true,\n zIndex: 9999,\n hidden: () => {\n onClose();\n },\n toolbar: {\n prev: 1,\n next: 1,\n zoomIn: 1,\n zoomOut: 1,\n rotateLeft: 1,\n rotateRight: 1,\n reset: 1,\n },\n ...viewerOptions,\n hide: (event) => {\n viewerOptions?.hide?.(event);\n onBeforeClose?.();\n },\n });\n\n viewerRef.current.show();\n\n return () => {\n if (viewerRef.current) {\n viewerRef.current.destroy();\n viewerRef.current = null;\n }\n };\n }, [sanitizedSlides, hasOnlyImages, open]);\n\n if (!open || sanitizedSlides.length === 0) {\n return null;\n }\n\n if (hasOnlyImages) {\n return (\n <div\n ref={containerRef}\n style={{\n position: \"absolute\",\n visibility: \"hidden\",\n width: 0,\n height: 0,\n overflow: \"hidden\",\n }}\n >\n {sanitizedSlides.map((slide, index) => (\n <img key={index} src={slide.src} alt={`preview-${index}`} />\n ))}\n </div>\n );\n }\n\n const handlePrev = () => {\n setCurrentIndex((prev) =>\n prev === 0 ? sanitizedSlides.length - 1 : prev - 1\n );\n };\n\n const handleNext = () => {\n setCurrentIndex((prev) =>\n prev === sanitizedSlides.length - 1 ? 0 : prev + 1\n );\n };\n\n const currentSlide = sanitizedSlides[currentIndex];\n const showNav = sanitizedSlides.length > 1;\n\n const renderSlide = () => {\n const mediaType = currentSlide?.type ?? \"image\";\n if (mediaType === \"video\") {\n return (\n <video\n key={currentSlide.src}\n controls\n autoPlay\n style={{ maxWidth: \"90vw\", maxHeight: \"80vh\" }}\n poster={currentSlide.poster}\n >\n <source\n src={currentSlide.src}\n type={currentSlide.mimeType || \"video/mp4\"}\n />\n Your browser does not support the video tag.\n </video>\n );\n }\n\n if (mediaType === \"audio\") {\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n gap: \"1rem\",\n }}\n >\n <div\n style={{\n width: \"160px\",\n height: \"160px\",\n borderRadius: \"50%\",\n background: \"rgba(255,255,255,0.08)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: \"3rem\",\n color: \"#fff\",\n }}\n >\n ♪\n </div>\n <audio controls autoPlay preload=\"auto\" style={{ width: \"320px\" }}>\n <source\n src={currentSlide.src}\n type={currentSlide.mimeType || \"audio/mpeg\"}\n />\n Your browser does not support the audio element.\n </audio>\n </div>\n );\n }\n\n return (\n <img\n key={currentSlide.src}\n src={currentSlide.src}\n alt=\"lightbox-media\"\n style={{ maxWidth: \"90vw\", maxHeight: \"80vh\", objectFit: \"contain\" }}\n />\n );\n };\n\n return (\n <div style={overlayStyles}>\n <button\n style={closeButtonStyles}\n onClick={() => {\n onBeforeClose?.();\n onClose();\n }}\n aria-label=\"Close\"\n >\n ×\n </button>\n {showNav && (\n <>\n <button\n style={navButtonStyles(\"left\")}\n onClick={handlePrev}\n aria-label=\"Previous\"\n >\n ‹\n </button>\n <button\n style={navButtonStyles(\"right\")}\n onClick={handleNext}\n aria-label=\"Next\"\n >\n ›\n </button>\n </>\n )}\n <div style={contentStyles}>{renderSlide()}</div>\n </div>\n );\n};\n\nconst overlayStyles: CSSProperties = {\n position: \"fixed\",\n inset: 0,\n backgroundColor: \"rgba(0,0,0,0.85)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n zIndex: 10000,\n};\n\nconst contentStyles: CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"100%\",\n padding: \"16px\",\n};\n\nconst closeButtonStyles: CSSProperties = {\n position: \"absolute\",\n top: \"16px\",\n right: \"24px\",\n fontSize: \"2rem\",\n color: \"#fff\",\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n};\n\nconst navButtonStyles = (direction: \"left\" | \"right\"): CSSProperties => {\n const baseStyles: CSSProperties = {\n position: \"absolute\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n fontSize: \"2.5rem\",\n color: \"#fff\",\n background: \"rgba(0,0,0,0.4)\",\n border: \"none\",\n width: \"48px\",\n height: \"48px\",\n borderRadius: \"999px\",\n cursor: \"pointer\",\n };\n\n if (direction === \"left\") {\n baseStyles.left = \"24px\";\n } else {\n baseStyles.right = \"24px\";\n }\n\n return baseStyles;\n};\n"]}
@@ -16,6 +16,7 @@ export interface SolidLightboxSlide {
16
16
  export interface SolidLightboxProps {
17
17
  slides: SolidLightboxSlide[];
18
18
  open: boolean;
19
+ onBeforeClose?: () => void;
19
20
  onClose: () => void;
20
21
  viewerOptions?: Viewer.Options;
21
22
  }
@@ -23,6 +24,7 @@ export interface SolidLightboxProps {
23
24
  export const SolidLightbox = ({
24
25
  slides,
25
26
  open,
27
+ onBeforeClose,
26
28
  onClose,
27
29
  viewerOptions,
28
30
  }: SolidLightboxProps) => {
@@ -83,6 +85,10 @@ export const SolidLightbox = ({
83
85
  reset: 1,
84
86
  },
85
87
  ...viewerOptions,
88
+ hide: (event) => {
89
+ viewerOptions?.hide?.(event);
90
+ onBeforeClose?.();
91
+ },
86
92
  });
87
93
 
88
94
  viewerRef.current.show();
@@ -201,7 +207,14 @@ export const SolidLightbox = ({
201
207
 
202
208
  return (
203
209
  <div style={overlayStyles}>
204
- <button style={closeButtonStyles} onClick={onClose} aria-label="Close">
210
+ <button
211
+ style={closeButtonStyles}
212
+ onClick={() => {
213
+ onBeforeClose?.();
214
+ onClose();
215
+ }}
216
+ aria-label="Close"
217
+ >
205
218
  ×
206
219
  </button>
207
220
  {showNav && (
@@ -1,5 +1,7 @@
1
1
  export declare const persistLastModelViewRoute: (target: string) => void;
2
2
  export declare const getPersistedLastModelViewRoute: (target: string) => string | null;
3
3
  export declare const resolveRetainedModelViewRoute: (target: string) => string;
4
+ export declare const getMenuContextForActiveRoute: (currentPathname: string, currentSearchParams: URLSearchParams) => URLSearchParams;
5
+ export declare const preserveModelMenuContext: (target: string) => string;
4
6
  export declare const storeCurrentModelViewContext: (target?: string) => void;
5
7
  //# sourceMappingURL=modelViewPersistence.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"modelViewPersistence.d.ts","sourceRoot":"","sources":["../../src/helpers/modelViewPersistence.ts"],"names":[],"mappings":"AAuHA,eAAO,MAAM,yBAAyB,WAAY,MAAM,SAkBvD,CAAC;AAIF,eAAO,MAAM,8BAA8B,WAAY,MAAM,KAAG,MAAM,GAAG,IA2BxE,CAAC;AAIF,eAAO,MAAM,6BAA6B,WAAY,MAAM,KAAG,MAM9D,CAAC;AAIF,eAAO,MAAM,4BAA4B,YAAa,MAAM,SAmB3D,CAAC"}
1
+ {"version":3,"file":"modelViewPersistence.d.ts","sourceRoot":"","sources":["../../src/helpers/modelViewPersistence.ts"],"names":[],"mappings":"AAuHA,eAAO,MAAM,yBAAyB,WAAY,MAAM,SAkBvD,CAAC;AAIF,eAAO,MAAM,8BAA8B,WAAY,MAAM,KAAG,MAAM,GAAG,IA2BxE,CAAC;AAIF,eAAO,MAAM,6BAA6B,WAAY,MAAM,KAAG,MAM9D,CAAC;AAiBF,eAAO,MAAM,4BAA4B,oBACtB,MAAM,uBACF,eAAe,KACnC,eAwBF,CAAC;AAIF,eAAO,MAAM,wBAAwB,WAAY,MAAM,KAAG,MA+BzD,CAAC;AAIF,eAAO,MAAM,4BAA4B,YAAa,MAAM,SAmB3D,CAAC"}