codicent-app-sdk 0.3.120 → 0.4.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 (413) hide show
  1. package/README.md +173 -26
  2. package/dist/cjs/_virtual/jsQR.js +1 -0
  3. package/dist/cjs/bootstrap.d.ts +112 -0
  4. package/dist/cjs/bootstrap.d.ts.map +1 -0
  5. package/dist/cjs/bootstrap.js +1 -0
  6. package/dist/cjs/components/AiInput.js +1 -1
  7. package/dist/cjs/components/AudioIcon.js +1 -1
  8. package/dist/cjs/components/BulkUploadDialog.d.ts +16 -0
  9. package/dist/cjs/components/BulkUploadDialog.d.ts.map +1 -0
  10. package/dist/cjs/components/BulkUploadDialog.js +1 -0
  11. package/dist/cjs/components/ChatInput.js +1 -1
  12. package/dist/cjs/components/ChatMessage.js +1 -1
  13. package/dist/cjs/components/CombinedPlaceholderDialog.js +1 -1
  14. package/dist/cjs/components/ErrorBoundary.d.ts +17 -0
  15. package/dist/cjs/components/ErrorBoundary.d.ts.map +1 -0
  16. package/dist/cjs/components/ErrorBoundary.js +1 -0
  17. package/dist/cjs/components/Footer.js +1 -1
  18. package/dist/cjs/components/GenericJsonRenderer.d.ts +20 -0
  19. package/dist/cjs/components/GenericJsonRenderer.d.ts.map +1 -0
  20. package/dist/cjs/components/GenericJsonRenderer.js +1 -0
  21. package/dist/cjs/components/Header.js +1 -1
  22. package/dist/cjs/components/HtmlView.js +1 -1
  23. package/dist/cjs/components/LanguageSelector.d.ts +11 -0
  24. package/dist/cjs/components/LanguageSelector.d.ts.map +1 -0
  25. package/dist/cjs/components/LanguageSelector.js +1 -0
  26. package/dist/cjs/components/ListView.d.ts +39 -0
  27. package/dist/cjs/components/ListView.d.ts.map +1 -0
  28. package/dist/cjs/components/ListView.js +1 -0
  29. package/dist/cjs/components/MessageInput.js +1 -1
  30. package/dist/cjs/components/MessageItem.js +1 -1
  31. package/dist/cjs/components/OfflineMessage.d.ts +6 -0
  32. package/dist/cjs/components/OfflineMessage.d.ts.map +1 -0
  33. package/dist/cjs/components/OfflineMessage.js +1 -0
  34. package/dist/cjs/components/Profile.js +1 -1
  35. package/dist/cjs/components/Prompt.js +1 -1
  36. package/dist/cjs/components/QrScanner.d.ts +12 -0
  37. package/dist/cjs/components/QrScanner.d.ts.map +1 -0
  38. package/dist/cjs/components/QrScanner.js +1 -0
  39. package/dist/cjs/components/RecordModal.d.ts +13 -0
  40. package/dist/cjs/components/RecordModal.d.ts.map +1 -0
  41. package/dist/cjs/components/RecordModal.js +1 -0
  42. package/dist/cjs/components/SnapFooter.js +1 -1
  43. package/dist/cjs/components/TextHeader.js +1 -1
  44. package/dist/cjs/components/TypingIndicator.js +1 -1
  45. package/dist/cjs/components/UploadFile.js +1 -1
  46. package/dist/cjs/components/UrlProcessor.js +1 -1
  47. package/dist/cjs/components/VoiceIcon.js +1 -1
  48. package/dist/cjs/components/index.d.ts +9 -0
  49. package/dist/cjs/components/index.d.ts.map +1 -1
  50. package/dist/cjs/config/index.d.ts +1 -0
  51. package/dist/cjs/config/index.d.ts.map +1 -1
  52. package/dist/cjs/config/index.js +1 -1
  53. package/dist/cjs/hooks/index.d.ts +3 -0
  54. package/dist/cjs/hooks/index.d.ts.map +1 -1
  55. package/dist/cjs/hooks/useAuthState.d.ts.map +1 -1
  56. package/dist/cjs/hooks/useAuthState.js +1 -1
  57. package/dist/cjs/hooks/useCodicentState.js +1 -1
  58. package/dist/cjs/hooks/useDebugLogs.d.ts +6 -0
  59. package/dist/cjs/hooks/useDebugLogs.d.ts.map +1 -0
  60. package/dist/cjs/hooks/useDebugLogs.js +1 -0
  61. package/dist/cjs/hooks/useObserveDataSchemas.d.ts +42 -0
  62. package/dist/cjs/hooks/useObserveDataSchemas.d.ts.map +1 -0
  63. package/dist/cjs/hooks/useObserveDataSchemas.js +1 -0
  64. package/dist/cjs/index.d.ts +2 -0
  65. package/dist/cjs/index.d.ts.map +1 -1
  66. package/dist/cjs/index.js +1 -1
  67. package/dist/cjs/node_modules/@auth0/auth0-react/dist/auth0-react.esm.js +1 -0
  68. package/dist/cjs/node_modules/@fluentui/react-button/lib/contexts/ButtonContext.js +1 -1
  69. package/dist/cjs/node_modules/@fluentui/react-checkbox/lib/components/Checkbox/Checkbox.js +1 -0
  70. package/dist/cjs/node_modules/@fluentui/react-checkbox/lib/components/Checkbox/renderCheckbox.js +1 -0
  71. package/dist/cjs/node_modules/@fluentui/react-checkbox/lib/components/Checkbox/useCheckbox.js +1 -0
  72. package/dist/cjs/node_modules/@fluentui/react-checkbox/lib/components/Checkbox/useCheckboxStyles.styles.js +1 -0
  73. package/dist/cjs/node_modules/@fluentui/react-combobox/lib/components/Combobox/useCombobox.js +1 -1
  74. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/Dialog/Dialog.js +1 -0
  75. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/Dialog/renderDialog.js +1 -0
  76. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/Dialog/useDialog.js +1 -0
  77. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/Dialog/useDialogContextValues.js +1 -0
  78. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogActions/DialogActions.js +1 -0
  79. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogActions/renderDialogActions.js +1 -0
  80. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogActions/useDialogActions.js +1 -0
  81. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogActions/useDialogActionsStyles.styles.js +1 -0
  82. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogBackdropMotion.js +1 -0
  83. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogBody/DialogBody.js +1 -0
  84. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogBody/renderDialogBody.js +1 -0
  85. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogBody/useDialogBody.js +1 -0
  86. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogBody/useDialogBodyStyles.styles.js +1 -0
  87. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogContent/DialogContent.js +1 -0
  88. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogContent/renderDialogContent.js +1 -0
  89. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogContent/useDialogContent.js +1 -0
  90. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogContent/useDialogContentStyles.styles.js +1 -0
  91. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogSurface/DialogSurface.js +1 -0
  92. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogSurface/renderDialogSurface.js +1 -0
  93. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogSurface/useDialogSurface.js +1 -0
  94. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogSurface/useDialogSurfaceContextValues.js +1 -0
  95. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogSurface/useDialogSurfaceStyles.styles.js +1 -0
  96. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogSurfaceMotion.js +1 -0
  97. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogTitle/DialogTitle.js +1 -0
  98. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogTitle/renderDialogTitle.js +1 -0
  99. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogTitle/useDialogTitle.js +1 -0
  100. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogTitle/useDialogTitleStyles.styles.js +1 -0
  101. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogTrigger/DialogTrigger.js +1 -0
  102. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogTrigger/renderDialogTrigger.js +1 -0
  103. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogTrigger/useDialogTrigger.js +1 -0
  104. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/MotionRefForwarder.js +1 -0
  105. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/contexts/dialogContext.js +1 -0
  106. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/contexts/dialogSurfaceContext.js +1 -0
  107. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/utils/useDisableBodyScroll.js +1 -0
  108. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/utils/useDisableBodyScroll.styles.js +1 -0
  109. package/dist/cjs/node_modules/@fluentui/react-dialog/lib/utils/useFocusFirstElement.js +1 -0
  110. package/dist/cjs/node_modules/@fluentui/react-icons/lib/contexts/IconDirectionContext.js +1 -1
  111. package/dist/cjs/node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-0.js +1 -1
  112. package/dist/cjs/node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-1.js +1 -1
  113. package/dist/cjs/node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-14.js +1 -1
  114. package/dist/cjs/node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-3.js +1 -1
  115. package/dist/cjs/node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-5.js +1 -1
  116. package/dist/cjs/node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-6.js +1 -1
  117. package/dist/cjs/node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-7.js +1 -1
  118. package/dist/cjs/node_modules/@fluentui/react-menu/lib/components/Menu/useMenu.js +1 -1
  119. package/dist/cjs/node_modules/@fluentui/react-menu/lib/components/MenuItem/useMenuItem.js +1 -1
  120. package/dist/cjs/node_modules/@fluentui/react-message-bar/lib/components/MessageBarActions/MessageBarActions.js +1 -0
  121. package/dist/cjs/node_modules/@fluentui/react-message-bar/lib/components/MessageBarActions/renderMessageBarActions.js +1 -0
  122. package/dist/cjs/node_modules/@fluentui/react-message-bar/lib/components/MessageBarActions/useMessageBarActions.js +1 -0
  123. package/dist/cjs/node_modules/@fluentui/react-message-bar/lib/components/MessageBarActions/useMessageBarActionsContextValues.js +1 -0
  124. package/dist/cjs/node_modules/@fluentui/react-message-bar/lib/components/MessageBarActions/useMessageBarActionsStyles.styles.js +1 -0
  125. package/dist/cjs/node_modules/@fluentui/react-message-bar/lib/components/MessageBarTitle/MessageBarTitle.js +1 -0
  126. package/dist/cjs/node_modules/@fluentui/react-message-bar/lib/components/MessageBarTitle/renderMessageBarTitle.js +1 -0
  127. package/dist/cjs/node_modules/@fluentui/react-message-bar/lib/components/MessageBarTitle/useMessageBarTitle.js +1 -0
  128. package/dist/cjs/node_modules/@fluentui/react-message-bar/lib/components/MessageBarTitle/useMessageBarTitleStyles.styles.js +1 -0
  129. package/dist/cjs/node_modules/@fluentui/react-motion/lib/slots/presenceMotionSlot.js +1 -0
  130. package/dist/cjs/node_modules/@fluentui/react-motion-components-preview/lib/components/Fade/Fade.js +1 -0
  131. package/dist/cjs/node_modules/@fluentui/react-positioning/lib/utils/mergeArrowOffset.js +1 -0
  132. package/dist/cjs/node_modules/@fluentui/react-provider/lib/components/FluentProvider/FluentProvider.js +1 -0
  133. package/dist/cjs/node_modules/@fluentui/react-provider/lib/components/FluentProvider/createCSSRuleFromTheme.js +1 -0
  134. package/dist/cjs/node_modules/@fluentui/react-provider/lib/components/FluentProvider/renderFluentProvider.js +1 -0
  135. package/dist/cjs/node_modules/@fluentui/react-provider/lib/components/FluentProvider/useFluentProvider.js +1 -0
  136. package/dist/cjs/node_modules/@fluentui/react-provider/lib/components/FluentProvider/useFluentProviderContextValues.js +1 -0
  137. package/dist/cjs/node_modules/@fluentui/react-provider/lib/components/FluentProvider/useFluentProviderStyles.styles.js +1 -0
  138. package/dist/cjs/node_modules/@fluentui/react-provider/lib/components/FluentProvider/useFluentProviderThemeStyleTag.js +1 -0
  139. package/dist/cjs/node_modules/@fluentui/react-search/lib/components/SearchBox/useSearchBox.js +1 -1
  140. package/dist/cjs/node_modules/@fluentui/react-shared-contexts/lib/CustomStyleHooksContext/CustomStyleHooksContext.js +1 -1
  141. package/dist/cjs/node_modules/@fluentui/react-shared-contexts/lib/OverridesContext/OverridesContext.js +1 -1
  142. package/dist/cjs/node_modules/@fluentui/react-shared-contexts/lib/ProviderContext/ProviderContext.js +1 -1
  143. package/dist/cjs/node_modules/@fluentui/react-shared-contexts/lib/ThemeClassNameContext/ThemeClassNameContext.js +1 -1
  144. package/dist/cjs/node_modules/@fluentui/react-shared-contexts/lib/ThemeContext/ThemeContext.js +1 -0
  145. package/dist/cjs/node_modules/@fluentui/react-shared-contexts/lib/TooltipVisibilityContext/TooltipContext.js +1 -0
  146. package/dist/cjs/node_modules/@fluentui/react-tabster/lib/hooks/useIsNavigatingWithKeyboard.js +1 -0
  147. package/dist/cjs/node_modules/@fluentui/react-timepicker-compat/lib/components/TimePicker/useTimePicker.js +1 -1
  148. package/dist/cjs/node_modules/@fluentui/react-tooltip/lib/components/Tooltip/Tooltip.js +1 -0
  149. package/dist/cjs/node_modules/@fluentui/react-tooltip/lib/components/Tooltip/private/constants.js +1 -0
  150. package/dist/cjs/node_modules/@fluentui/react-tooltip/lib/components/Tooltip/renderTooltip.js +1 -0
  151. package/dist/cjs/node_modules/@fluentui/react-tooltip/lib/components/Tooltip/useTooltip.js +1 -0
  152. package/dist/cjs/node_modules/@fluentui/react-tooltip/lib/components/Tooltip/useTooltipStyles.styles.js +1 -0
  153. package/dist/cjs/node_modules/@fluentui/react-utilities/lib/ssr/SSRContext.js +1 -1
  154. package/dist/cjs/node_modules/@fluentui/tokens/lib/alias/lightColor.js +1 -0
  155. package/dist/cjs/node_modules/@fluentui/tokens/lib/alias/lightColorPalette.js +1 -0
  156. package/dist/cjs/node_modules/@fluentui/tokens/lib/global/borderRadius.js +1 -0
  157. package/dist/cjs/node_modules/@fluentui/tokens/lib/global/colorPalette.js +1 -0
  158. package/dist/cjs/node_modules/@fluentui/tokens/lib/global/colors.js +1 -0
  159. package/dist/cjs/node_modules/@fluentui/tokens/lib/global/curves.js +1 -0
  160. package/dist/cjs/node_modules/@fluentui/tokens/lib/global/durations.js +1 -0
  161. package/dist/cjs/node_modules/@fluentui/tokens/lib/global/fonts.js +1 -0
  162. package/dist/cjs/node_modules/@fluentui/tokens/lib/global/spacings.js +1 -0
  163. package/dist/cjs/node_modules/@fluentui/tokens/lib/global/strokeWidths.js +1 -0
  164. package/dist/cjs/node_modules/@fluentui/tokens/lib/sharedColorNames.js +1 -0
  165. package/dist/cjs/node_modules/@fluentui/tokens/lib/statusColorMapping.js +1 -0
  166. package/dist/cjs/node_modules/@fluentui/tokens/lib/utils/createLightTheme.js +1 -0
  167. package/dist/cjs/node_modules/@fluentui/tokens/lib/utils/shadows.js +1 -0
  168. package/dist/cjs/node_modules/@griffel/react/TextDirectionContext.esm.js +1 -1
  169. package/dist/cjs/node_modules/jsqr/dist/jsQR.js +1 -0
  170. package/dist/cjs/pages/AppFrame.js +1 -1
  171. package/dist/cjs/pages/Chat.js +1 -1
  172. package/dist/cjs/pages/Compose.js +1 -1
  173. package/dist/cjs/pages/CrmPage.js +1 -1
  174. package/dist/cjs/pages/CrmPagePersistent.js +1 -1
  175. package/dist/cjs/pages/Debug.d.ts +4 -0
  176. package/dist/cjs/pages/Debug.d.ts.map +1 -0
  177. package/dist/cjs/pages/Debug.js +1 -0
  178. package/dist/cjs/pages/FormAccept.js +1 -1
  179. package/dist/cjs/pages/FormInvite.js +1 -1
  180. package/dist/cjs/pages/FormPage.d.ts +11 -0
  181. package/dist/cjs/pages/FormPage.d.ts.map +1 -0
  182. package/dist/cjs/pages/FormPage.js +1 -0
  183. package/dist/cjs/pages/Help.d.ts +7 -0
  184. package/dist/cjs/pages/Help.d.ts.map +1 -0
  185. package/dist/cjs/pages/Help.js +1 -0
  186. package/dist/cjs/pages/HtmlViewer.js +1 -1
  187. package/dist/cjs/pages/Login.js +1 -1
  188. package/dist/cjs/pages/Purchase.js +1 -1
  189. package/dist/cjs/pages/QrScan.d.ts +12 -0
  190. package/dist/cjs/pages/QrScan.d.ts.map +1 -0
  191. package/dist/cjs/pages/QrScan.js +1 -0
  192. package/dist/cjs/pages/Sales.js +1 -1
  193. package/dist/cjs/pages/SchemaEditor.d.ts +2 -0
  194. package/dist/cjs/pages/SchemaEditor.d.ts.map +1 -0
  195. package/dist/cjs/pages/SchemaEditor.js +1 -0
  196. package/dist/cjs/pages/Search.js +1 -1
  197. package/dist/cjs/pages/Snap.js +1 -1
  198. package/dist/cjs/pages/index.d.ts +5 -0
  199. package/dist/cjs/pages/index.d.ts.map +1 -1
  200. package/dist/cjs/services/codicent.d.ts +6 -0
  201. package/dist/cjs/services/codicent.d.ts.map +1 -1
  202. package/dist/cjs/services/codicent.js +1 -1
  203. package/dist/cjs/types/index.d.ts +188 -0
  204. package/dist/cjs/types/index.d.ts.map +1 -0
  205. package/dist/cjs/utils/appState.d.ts.map +1 -1
  206. package/dist/cjs/utils/appState.js +1 -1
  207. package/dist/esm/_virtual/jsQR.js +1 -0
  208. package/dist/esm/bootstrap.d.ts +112 -0
  209. package/dist/esm/bootstrap.d.ts.map +1 -0
  210. package/dist/esm/bootstrap.js +1 -0
  211. package/dist/esm/components/AiInput.js +1 -1
  212. package/dist/esm/components/AudioIcon.js +1 -1
  213. package/dist/esm/components/BulkUploadDialog.d.ts +16 -0
  214. package/dist/esm/components/BulkUploadDialog.d.ts.map +1 -0
  215. package/dist/esm/components/BulkUploadDialog.js +1 -0
  216. package/dist/esm/components/ChatInput.js +1 -1
  217. package/dist/esm/components/ChatMessage.js +1 -1
  218. package/dist/esm/components/CombinedPlaceholderDialog.js +1 -1
  219. package/dist/esm/components/ErrorBoundary.d.ts +17 -0
  220. package/dist/esm/components/ErrorBoundary.d.ts.map +1 -0
  221. package/dist/esm/components/ErrorBoundary.js +1 -0
  222. package/dist/esm/components/Footer.js +1 -1
  223. package/dist/esm/components/GenericJsonRenderer.d.ts +20 -0
  224. package/dist/esm/components/GenericJsonRenderer.d.ts.map +1 -0
  225. package/dist/esm/components/GenericJsonRenderer.js +1 -0
  226. package/dist/esm/components/Header.js +1 -1
  227. package/dist/esm/components/HtmlView.js +1 -1
  228. package/dist/esm/components/LanguageSelector.d.ts +11 -0
  229. package/dist/esm/components/LanguageSelector.d.ts.map +1 -0
  230. package/dist/esm/components/LanguageSelector.js +1 -0
  231. package/dist/esm/components/ListView.d.ts +39 -0
  232. package/dist/esm/components/ListView.d.ts.map +1 -0
  233. package/dist/esm/components/ListView.js +1 -0
  234. package/dist/esm/components/MessageInput.js +1 -1
  235. package/dist/esm/components/MessageItem.js +1 -1
  236. package/dist/esm/components/OfflineMessage.d.ts +6 -0
  237. package/dist/esm/components/OfflineMessage.d.ts.map +1 -0
  238. package/dist/esm/components/OfflineMessage.js +1 -0
  239. package/dist/esm/components/Profile.js +1 -1
  240. package/dist/esm/components/Prompt.js +1 -1
  241. package/dist/esm/components/QrScanner.d.ts +12 -0
  242. package/dist/esm/components/QrScanner.d.ts.map +1 -0
  243. package/dist/esm/components/QrScanner.js +1 -0
  244. package/dist/esm/components/RecordModal.d.ts +13 -0
  245. package/dist/esm/components/RecordModal.d.ts.map +1 -0
  246. package/dist/esm/components/RecordModal.js +1 -0
  247. package/dist/esm/components/SnapFooter.js +1 -1
  248. package/dist/esm/components/TextHeader.js +1 -1
  249. package/dist/esm/components/TypingIndicator.js +1 -1
  250. package/dist/esm/components/UploadFile.js +1 -1
  251. package/dist/esm/components/UrlProcessor.js +1 -1
  252. package/dist/esm/components/VoiceIcon.js +1 -1
  253. package/dist/esm/components/index.d.ts +9 -0
  254. package/dist/esm/components/index.d.ts.map +1 -1
  255. package/dist/esm/config/index.d.ts +1 -0
  256. package/dist/esm/config/index.d.ts.map +1 -1
  257. package/dist/esm/config/index.js +1 -1
  258. package/dist/esm/hooks/index.d.ts +3 -0
  259. package/dist/esm/hooks/index.d.ts.map +1 -1
  260. package/dist/esm/hooks/useAuthState.d.ts.map +1 -1
  261. package/dist/esm/hooks/useAuthState.js +1 -1
  262. package/dist/esm/hooks/useCodicentState.js +1 -1
  263. package/dist/esm/hooks/useDebugLogs.d.ts +6 -0
  264. package/dist/esm/hooks/useDebugLogs.d.ts.map +1 -0
  265. package/dist/esm/hooks/useDebugLogs.js +1 -0
  266. package/dist/esm/hooks/useObserveDataSchemas.d.ts +42 -0
  267. package/dist/esm/hooks/useObserveDataSchemas.d.ts.map +1 -0
  268. package/dist/esm/hooks/useObserveDataSchemas.js +1 -0
  269. package/dist/esm/index.d.ts +2 -0
  270. package/dist/esm/index.d.ts.map +1 -1
  271. package/dist/esm/index.js +1 -1
  272. package/dist/esm/node_modules/@auth0/auth0-react/dist/auth0-react.esm.js +1 -0
  273. package/dist/esm/node_modules/@fluentui/react-button/lib/contexts/ButtonContext.js +1 -1
  274. package/dist/esm/node_modules/@fluentui/react-checkbox/lib/components/Checkbox/Checkbox.js +1 -0
  275. package/dist/esm/node_modules/@fluentui/react-checkbox/lib/components/Checkbox/renderCheckbox.js +1 -0
  276. package/dist/esm/node_modules/@fluentui/react-checkbox/lib/components/Checkbox/useCheckbox.js +1 -0
  277. package/dist/esm/node_modules/@fluentui/react-checkbox/lib/components/Checkbox/useCheckboxStyles.styles.js +1 -0
  278. package/dist/esm/node_modules/@fluentui/react-combobox/lib/components/Combobox/useCombobox.js +1 -1
  279. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/Dialog/Dialog.js +1 -0
  280. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/Dialog/renderDialog.js +1 -0
  281. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/Dialog/useDialog.js +1 -0
  282. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/Dialog/useDialogContextValues.js +1 -0
  283. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogActions/DialogActions.js +1 -0
  284. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogActions/renderDialogActions.js +1 -0
  285. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogActions/useDialogActions.js +1 -0
  286. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogActions/useDialogActionsStyles.styles.js +1 -0
  287. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogBackdropMotion.js +1 -0
  288. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogBody/DialogBody.js +1 -0
  289. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogBody/renderDialogBody.js +1 -0
  290. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogBody/useDialogBody.js +1 -0
  291. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogBody/useDialogBodyStyles.styles.js +1 -0
  292. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogContent/DialogContent.js +1 -0
  293. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogContent/renderDialogContent.js +1 -0
  294. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogContent/useDialogContent.js +1 -0
  295. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogContent/useDialogContentStyles.styles.js +1 -0
  296. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogSurface/DialogSurface.js +1 -0
  297. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogSurface/renderDialogSurface.js +1 -0
  298. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogSurface/useDialogSurface.js +1 -0
  299. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogSurface/useDialogSurfaceContextValues.js +1 -0
  300. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogSurface/useDialogSurfaceStyles.styles.js +1 -0
  301. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogSurfaceMotion.js +1 -0
  302. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogTitle/DialogTitle.js +1 -0
  303. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogTitle/renderDialogTitle.js +1 -0
  304. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogTitle/useDialogTitle.js +1 -0
  305. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogTitle/useDialogTitleStyles.styles.js +1 -0
  306. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogTrigger/DialogTrigger.js +1 -0
  307. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogTrigger/renderDialogTrigger.js +1 -0
  308. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogTrigger/useDialogTrigger.js +1 -0
  309. package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/MotionRefForwarder.js +1 -0
  310. package/dist/esm/node_modules/@fluentui/react-dialog/lib/contexts/dialogContext.js +1 -0
  311. package/dist/esm/node_modules/@fluentui/react-dialog/lib/contexts/dialogSurfaceContext.js +1 -0
  312. package/dist/esm/node_modules/@fluentui/react-dialog/lib/utils/useDisableBodyScroll.js +1 -0
  313. package/dist/esm/node_modules/@fluentui/react-dialog/lib/utils/useDisableBodyScroll.styles.js +1 -0
  314. package/dist/esm/node_modules/@fluentui/react-dialog/lib/utils/useFocusFirstElement.js +1 -0
  315. package/dist/esm/node_modules/@fluentui/react-icons/lib/contexts/IconDirectionContext.js +1 -1
  316. package/dist/esm/node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-0.js +1 -1
  317. package/dist/esm/node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-1.js +1 -1
  318. package/dist/esm/node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-14.js +1 -1
  319. package/dist/esm/node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-3.js +1 -1
  320. package/dist/esm/node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-5.js +1 -1
  321. package/dist/esm/node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-6.js +1 -1
  322. package/dist/esm/node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-7.js +1 -1
  323. package/dist/esm/node_modules/@fluentui/react-menu/lib/components/Menu/useMenu.js +1 -1
  324. package/dist/esm/node_modules/@fluentui/react-menu/lib/components/MenuItem/useMenuItem.js +1 -1
  325. package/dist/esm/node_modules/@fluentui/react-message-bar/lib/components/MessageBarActions/MessageBarActions.js +1 -0
  326. package/dist/esm/node_modules/@fluentui/react-message-bar/lib/components/MessageBarActions/renderMessageBarActions.js +1 -0
  327. package/dist/esm/node_modules/@fluentui/react-message-bar/lib/components/MessageBarActions/useMessageBarActions.js +1 -0
  328. package/dist/esm/node_modules/@fluentui/react-message-bar/lib/components/MessageBarActions/useMessageBarActionsContextValues.js +1 -0
  329. package/dist/esm/node_modules/@fluentui/react-message-bar/lib/components/MessageBarActions/useMessageBarActionsStyles.styles.js +1 -0
  330. package/dist/esm/node_modules/@fluentui/react-message-bar/lib/components/MessageBarTitle/MessageBarTitle.js +1 -0
  331. package/dist/esm/node_modules/@fluentui/react-message-bar/lib/components/MessageBarTitle/renderMessageBarTitle.js +1 -0
  332. package/dist/esm/node_modules/@fluentui/react-message-bar/lib/components/MessageBarTitle/useMessageBarTitle.js +1 -0
  333. package/dist/esm/node_modules/@fluentui/react-message-bar/lib/components/MessageBarTitle/useMessageBarTitleStyles.styles.js +1 -0
  334. package/dist/esm/node_modules/@fluentui/react-motion/lib/slots/presenceMotionSlot.js +1 -0
  335. package/dist/esm/node_modules/@fluentui/react-motion-components-preview/lib/components/Fade/Fade.js +1 -0
  336. package/dist/esm/node_modules/@fluentui/react-positioning/lib/utils/mergeArrowOffset.js +1 -0
  337. package/dist/esm/node_modules/@fluentui/react-provider/lib/components/FluentProvider/FluentProvider.js +1 -0
  338. package/dist/esm/node_modules/@fluentui/react-provider/lib/components/FluentProvider/createCSSRuleFromTheme.js +1 -0
  339. package/dist/esm/node_modules/@fluentui/react-provider/lib/components/FluentProvider/renderFluentProvider.js +1 -0
  340. package/dist/esm/node_modules/@fluentui/react-provider/lib/components/FluentProvider/useFluentProvider.js +1 -0
  341. package/dist/esm/node_modules/@fluentui/react-provider/lib/components/FluentProvider/useFluentProviderContextValues.js +1 -0
  342. package/dist/esm/node_modules/@fluentui/react-provider/lib/components/FluentProvider/useFluentProviderStyles.styles.js +1 -0
  343. package/dist/esm/node_modules/@fluentui/react-provider/lib/components/FluentProvider/useFluentProviderThemeStyleTag.js +1 -0
  344. package/dist/esm/node_modules/@fluentui/react-search/lib/components/SearchBox/useSearchBox.js +1 -1
  345. package/dist/esm/node_modules/@fluentui/react-shared-contexts/lib/CustomStyleHooksContext/CustomStyleHooksContext.js +1 -1
  346. package/dist/esm/node_modules/@fluentui/react-shared-contexts/lib/OverridesContext/OverridesContext.js +1 -1
  347. package/dist/esm/node_modules/@fluentui/react-shared-contexts/lib/ProviderContext/ProviderContext.js +1 -1
  348. package/dist/esm/node_modules/@fluentui/react-shared-contexts/lib/ThemeClassNameContext/ThemeClassNameContext.js +1 -1
  349. package/dist/esm/node_modules/@fluentui/react-shared-contexts/lib/ThemeContext/ThemeContext.js +1 -0
  350. package/dist/esm/node_modules/@fluentui/react-shared-contexts/lib/TooltipVisibilityContext/TooltipContext.js +1 -0
  351. package/dist/esm/node_modules/@fluentui/react-tabster/lib/hooks/useIsNavigatingWithKeyboard.js +1 -0
  352. package/dist/esm/node_modules/@fluentui/react-timepicker-compat/lib/components/TimePicker/useTimePicker.js +1 -1
  353. package/dist/esm/node_modules/@fluentui/react-tooltip/lib/components/Tooltip/Tooltip.js +1 -0
  354. package/dist/esm/node_modules/@fluentui/react-tooltip/lib/components/Tooltip/private/constants.js +1 -0
  355. package/dist/esm/node_modules/@fluentui/react-tooltip/lib/components/Tooltip/renderTooltip.js +1 -0
  356. package/dist/esm/node_modules/@fluentui/react-tooltip/lib/components/Tooltip/useTooltip.js +1 -0
  357. package/dist/esm/node_modules/@fluentui/react-tooltip/lib/components/Tooltip/useTooltipStyles.styles.js +1 -0
  358. package/dist/esm/node_modules/@fluentui/react-utilities/lib/ssr/SSRContext.js +1 -1
  359. package/dist/esm/node_modules/@fluentui/tokens/lib/alias/lightColor.js +1 -0
  360. package/dist/esm/node_modules/@fluentui/tokens/lib/alias/lightColorPalette.js +1 -0
  361. package/dist/esm/node_modules/@fluentui/tokens/lib/global/borderRadius.js +1 -0
  362. package/dist/esm/node_modules/@fluentui/tokens/lib/global/colorPalette.js +1 -0
  363. package/dist/esm/node_modules/@fluentui/tokens/lib/global/colors.js +1 -0
  364. package/dist/esm/node_modules/@fluentui/tokens/lib/global/curves.js +1 -0
  365. package/dist/esm/node_modules/@fluentui/tokens/lib/global/durations.js +1 -0
  366. package/dist/esm/node_modules/@fluentui/tokens/lib/global/fonts.js +1 -0
  367. package/dist/esm/node_modules/@fluentui/tokens/lib/global/spacings.js +1 -0
  368. package/dist/esm/node_modules/@fluentui/tokens/lib/global/strokeWidths.js +1 -0
  369. package/dist/esm/node_modules/@fluentui/tokens/lib/sharedColorNames.js +1 -0
  370. package/dist/esm/node_modules/@fluentui/tokens/lib/statusColorMapping.js +1 -0
  371. package/dist/esm/node_modules/@fluentui/tokens/lib/utils/createLightTheme.js +1 -0
  372. package/dist/esm/node_modules/@fluentui/tokens/lib/utils/shadows.js +1 -0
  373. package/dist/esm/node_modules/@griffel/react/TextDirectionContext.esm.js +1 -1
  374. package/dist/esm/node_modules/jsqr/dist/jsQR.js +1 -0
  375. package/dist/esm/pages/AppFrame.js +1 -1
  376. package/dist/esm/pages/Chat.js +1 -1
  377. package/dist/esm/pages/Compose.js +1 -1
  378. package/dist/esm/pages/CrmPage.js +1 -1
  379. package/dist/esm/pages/CrmPagePersistent.js +1 -1
  380. package/dist/esm/pages/Debug.d.ts +4 -0
  381. package/dist/esm/pages/Debug.d.ts.map +1 -0
  382. package/dist/esm/pages/Debug.js +1 -0
  383. package/dist/esm/pages/FormAccept.js +1 -1
  384. package/dist/esm/pages/FormInvite.js +1 -1
  385. package/dist/esm/pages/FormPage.d.ts +11 -0
  386. package/dist/esm/pages/FormPage.d.ts.map +1 -0
  387. package/dist/esm/pages/FormPage.js +1 -0
  388. package/dist/esm/pages/Help.d.ts +7 -0
  389. package/dist/esm/pages/Help.d.ts.map +1 -0
  390. package/dist/esm/pages/Help.js +1 -0
  391. package/dist/esm/pages/HtmlViewer.js +1 -1
  392. package/dist/esm/pages/Login.js +1 -1
  393. package/dist/esm/pages/Purchase.js +1 -1
  394. package/dist/esm/pages/QrScan.d.ts +12 -0
  395. package/dist/esm/pages/QrScan.d.ts.map +1 -0
  396. package/dist/esm/pages/QrScan.js +1 -0
  397. package/dist/esm/pages/Sales.js +1 -1
  398. package/dist/esm/pages/SchemaEditor.d.ts +2 -0
  399. package/dist/esm/pages/SchemaEditor.d.ts.map +1 -0
  400. package/dist/esm/pages/SchemaEditor.js +1 -0
  401. package/dist/esm/pages/Search.js +1 -1
  402. package/dist/esm/pages/Snap.js +1 -1
  403. package/dist/esm/pages/index.d.ts +5 -0
  404. package/dist/esm/pages/index.d.ts.map +1 -1
  405. package/dist/esm/services/codicent.d.ts +6 -0
  406. package/dist/esm/services/codicent.d.ts.map +1 -1
  407. package/dist/esm/services/codicent.js +1 -1
  408. package/dist/esm/types/index.d.ts +188 -0
  409. package/dist/esm/types/index.d.ts.map +1 -0
  410. package/dist/esm/utils/appState.d.ts.map +1 -1
  411. package/dist/esm/utils/appState.js +1 -1
  412. package/dist/index.d.ts +521 -28
  413. package/package.json +4 -3
package/README.md CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  ![Build Status](https://img.shields.io/github/actions/workflow/status/izaxon/codicent-app-sdk/main.yml?branch=main)
4
4
  ![License](https://img.shields.io/github/license/izaxon/codicent-app-sdk)
5
+ ![Version](https://img.shields.io/badge/version-0.4.0-blue)
5
6
 
6
7
  **A comprehensive SDK for building AI-powered, chat-centric web applications with Codicent.**
7
8
 
@@ -9,35 +10,54 @@ Codicent App SDK provides React components, hooks, and utilities to help you qui
9
10
 
10
11
  ---
11
12
 
12
- ## 🚀 Quick Start
13
+ ## 🚀 Quick Start (v2 - Simplified Bootstrap)
13
14
 
14
- 1. **Install the SDK**
15
- ```bash
16
- npm install codicent-app-sdk
17
- # or
18
- yarn add codicent-app-sdk
19
- ```
15
+ **New in v0.4.0:** Create a complete Codicent app with a single function call!
20
16
 
21
- 2. **Initialize the SDK**
22
- ```tsx
23
- import { initCodicentApp } from 'codicent-app-sdk';
17
+ ```tsx
18
+ import { createCodicentApp } from 'codicent-app-sdk';
19
+
20
+ const app = createCodicentApp({
21
+ name: "My CRM",
22
+ apiBaseUrl: "https://codicent.com/",
23
+ buttons: [
24
+ { title: "Customers", url: "./#/list?tag=customer2" },
25
+ { title: "Quotes", url: "./#/list?tag=offertjson" },
26
+ { title: "Chat", url: "./#/chat" },
27
+ ],
28
+ listDefinitions: {
29
+ customer2: [
30
+ { key: "name", title: "Name", filterable: true },
31
+ { key: "email", title: "Email" },
32
+ { key: "phone", title: "Phone" },
33
+ ],
34
+ },
35
+ translations: {
36
+ en: { "Kunder": "Customers", "Offerter": "Quotes" },
37
+ sv: { "Customers": "Kunder", "Quotes": "Offerter" },
38
+ },
39
+ modules: {
40
+ sales: true,
41
+ voice: true,
42
+ search: true,
43
+ },
44
+ chatInstructions: "You are a helpful CRM assistant.",
45
+ });
24
46
 
25
- initCodicentApp({
26
- API_BASE_URL: 'https://codicent.com/',
27
- APP_NAME: 'my-app',
28
- // ...other config
29
- });
30
- ```
47
+ // Render to DOM
48
+ app.render("#root");
49
+ ```
31
50
 
32
- 3. **Use Components and Hooks**
33
- ```tsx
34
- import { useChat, Markdown } from 'codicent-app-sdk';
35
- // ...
36
- ```
51
+ That's it! You now have a fully configured Codicent vertical app with:
52
+ - ✅ Auth0 authentication
53
+ - Navigation buttons
54
+ - ✅ List views with filtering and sorting
55
+ - ✅ i18n support
56
+ - ✅ AI chat integration
57
+ - ✅ Module-based feature flags
37
58
 
38
59
  ---
39
60
 
40
-
41
61
  ## Installation
42
62
 
43
63
  ### From GitHub (Recommended)
@@ -47,17 +67,36 @@ npm install github:izaxon/codicent-app-sdk
47
67
  yarn add github:izaxon/codicent-app-sdk
48
68
  ```
49
69
 
50
- ### From npm (Coming soon)
70
+ ### From npm
51
71
  ```bash
52
- npm install @izaxon/codicent-app-sdk
72
+ npm install codicent-app-sdk
53
73
  # or
54
- yarn add @izaxon/codicent-app-sdk
74
+ yarn add codicent-app-sdk
55
75
  ```
56
76
 
77
+ ---
57
78
 
58
79
  ## Usage
59
80
 
60
- ### Initialization & Configuration
81
+ ### Option 1: Simplified Bootstrap (v2 - Recommended)
82
+
83
+ Use `createCodicentApp()` for the fastest setup. This handles all initialization, routing, and authentication automatically.
84
+
85
+ ```tsx
86
+ import { createCodicentApp } from 'codicent-app-sdk';
87
+
88
+ const app = createCodicentApp({
89
+ name: "My App",
90
+ apiBaseUrl: "https://codicent.com/",
91
+ // ... config
92
+ });
93
+
94
+ app.render("#root");
95
+ ```
96
+
97
+ See the [API Reference](#api-reference) below for all configuration options.
98
+
99
+ ### Option 2: Manual Initialization (v1 - Still Supported)
61
100
 
62
101
  Before using the SDK, initialize it with your app’s settings:
63
102
 
@@ -116,6 +155,114 @@ All API calls, including authentication, chat, file uploads, and data operations
116
155
 
117
156
  📄 **For complete custom domain setup, see the [Custom Domain Configuration Guide](docs/CUSTOM_DOMAIN_GUIDE.md)**
118
157
 
158
+ ---
159
+
160
+ ## API Reference
161
+
162
+ ### `createCodicentApp(config)`
163
+
164
+ Creates a fully-configured Codicent app instance.
165
+
166
+ **Parameters:**
167
+
168
+ | Property | Type | Required | Description |
169
+ |----------|------|----------|-------------|
170
+ | `name` | `string` | ✅ | Application name |
171
+ | `apiBaseUrl` | `string` | ✅ | API base URL (e.g., "https://codicent.com/") |
172
+ | `appPrefix` | `string` | | App-specific URL prefix (defaults to kebab-cased name) |
173
+ | `userPrefix` | `string` | | User namespace prefix (default: "users") |
174
+ | `buttons` | `ButtonConfig[]` | | Navigation buttons |
175
+ | `listDefinitions` | `ListDefinitions` | | List view column definitions per tag |
176
+ | `translations` | `Translations` | | i18n translation maps by language |
177
+ | `defaultLanguage` | `string` | | Default language code (default: "en") |
178
+ | `modules` | `ModuleFlags` | | Feature module flags (sales, voice, forms, etc.) |
179
+ | `chatInstructions` | `string` | | AI chat system prompt |
180
+ | `voiceInstructions` | `string` | | AI voice system prompt |
181
+ | `auth0` | `Auth0Config` | | Auth0 configuration |
182
+ | `stripe` | `StripeConfig` | | Stripe configuration |
183
+ | `theme` | `ThemeConfig` | | Theme/branding configuration |
184
+
185
+ **Returns:** `CodicentApp` instance with:
186
+ - `render(container)` - Render app to a DOM element
187
+ - `unmount()` - Unmount the app
188
+ - `getConfig()` - Get current configuration
189
+
190
+ **Example:**
191
+
192
+ ```tsx
193
+ const app = createCodicentApp({
194
+ name: "Sales CRM",
195
+ apiBaseUrl: "https://codicent.com/",
196
+ buttons: [
197
+ { title: "Dashboard", url: "./#/" },
198
+ { title: "Customers", url: "./#/list?tag=customer2" },
199
+ ],
200
+ listDefinitions: {
201
+ customer2: [
202
+ { key: "name", title: "Customer Name", filterable: true },
203
+ { key: "email", title: "Email" },
204
+ ],
205
+ },
206
+ modules: { sales: true, voice: false },
207
+ });
208
+
209
+ app.render("#root");
210
+ ```
211
+
212
+ ---
213
+
214
+ ## TypeScript Types
215
+
216
+ All public types are fully documented with JSDoc and exported from `codicent-app-sdk`:
217
+
218
+ ```tsx
219
+ import type {
220
+ ButtonConfig,
221
+ ColumnDefinition,
222
+ ListDefinitions,
223
+ ModuleFlags,
224
+ Translations,
225
+ UserInfo,
226
+ DataMessage,
227
+ CodicentAppState,
228
+ // ... and more
229
+ } from 'codicent-app-sdk';
230
+ ```
231
+
232
+ See [src/types/index.ts](src/types/index.ts) for the complete type definitions.
233
+
234
+ ---
235
+
236
+ ## Components
237
+
238
+ ### Standalone Components
239
+
240
+ The SDK exports several standalone React components that can be used independently:
241
+
242
+ #### `Chat`
243
+
244
+ AI chat interface component (exported from pages).
245
+
246
+ ```tsx
247
+ import { Chat } from 'codicent-app-sdk';
248
+
249
+ <Chat />
250
+ ```
251
+
252
+ For detailed usage, see [src/pages/Chat.tsx](src/pages/Chat.tsx).
253
+
254
+ #### `ListView`
255
+
256
+ Display tabular data with sorting, filtering, and actions. While ListView is currently in the `codicentapp` package, you can import the types from the SDK:
257
+
258
+ ```tsx
259
+ import type { ColumnDefinition, ListViewProps } from 'codicent-app-sdk';
260
+ ```
261
+
262
+ See [codicentapp/src/components/ListView.tsx](../codicentapp/src/components/ListView.tsx) for the reference implementation.
263
+
264
+ ---
265
+
119
266
  ### CRUD Operations
120
267
 
121
268
  The SDK provides comprehensive CRUD (Create, Read, Update, Delete) methods for managing structured data. For detailed documentation and examples, see:
@@ -0,0 +1 @@
1
+ "use strict";exports.__module={exports:{}};
@@ -0,0 +1,112 @@
1
+ /**
2
+ * @fileoverview Simplified app bootstrap for codicent-app-sdk v2
3
+ * @module codicent-app-sdk/bootstrap
4
+ * @public
5
+ */
6
+ import { Root } from "react-dom/client";
7
+ import type { ButtonConfig, ListDefinitions, Translations, ModuleFlags } from "./types";
8
+ /**
9
+ * Complete app configuration for createCodicentApp()
10
+ * @public
11
+ */
12
+ export interface CreateAppConfig {
13
+ /** Application name */
14
+ name: string;
15
+ /** API base URL (e.g., "https://codicent.com/" or custom domain) */
16
+ apiBaseUrl: string;
17
+ /** App-specific URL prefix (used in routing and namespacing) */
18
+ appPrefix?: string;
19
+ /** User namespace prefix */
20
+ userPrefix?: string;
21
+ /** Navigation buttons */
22
+ buttons?: ButtonConfig[];
23
+ /** List view column definitions per tag */
24
+ listDefinitions?: ListDefinitions;
25
+ /** i18n translations map */
26
+ translations?: Translations;
27
+ /** Default language code (e.g., "en", "sv") */
28
+ defaultLanguage?: string;
29
+ /** Feature module flags */
30
+ modules?: ModuleFlags;
31
+ /** AI chat instructions */
32
+ chatInstructions?: string;
33
+ /** AI voice instructions */
34
+ voiceInstructions?: string;
35
+ /** Auth0 configuration */
36
+ auth0?: {
37
+ domain: string;
38
+ clientId: string;
39
+ audience?: string;
40
+ };
41
+ /** Stripe configuration */
42
+ stripe?: {
43
+ publicKey: string;
44
+ priceId?: string;
45
+ trialDays?: number;
46
+ };
47
+ /** Theme/branding configuration */
48
+ theme?: {
49
+ headerColor?: string;
50
+ footerColor?: string;
51
+ buttonColor?: string;
52
+ logoUrl?: string;
53
+ };
54
+ }
55
+ /**
56
+ * CodicentApp instance returned by createCodicentApp()
57
+ * @public
58
+ */
59
+ export interface CodicentApp {
60
+ /**
61
+ * Render the app to a DOM element
62
+ * @param container - DOM element or selector to render into
63
+ */
64
+ render(container: HTMLElement | string): Root;
65
+ /**
66
+ * Unmount the app
67
+ */
68
+ unmount(): void;
69
+ /**
70
+ * Get the current configuration
71
+ */
72
+ getConfig(): CreateAppConfig;
73
+ }
74
+ /**
75
+ * Create a Codicent app with the specified configuration.
76
+ *
77
+ * This is the recommended way to bootstrap a new Codicent vertical app.
78
+ * Pass a configuration object and call `.render()` to mount the app.
79
+ *
80
+ * @example
81
+ * ```tsx
82
+ * import { createCodicentApp } from "codicent-app-sdk";
83
+ *
84
+ * const app = createCodicentApp({
85
+ * name: "My CRM",
86
+ * apiBaseUrl: "https://codicent.com/",
87
+ * buttons: [
88
+ * { title: "Customers", url: "./#/list?tag=customer2" },
89
+ * { title: "Chat", url: "./#/chat" },
90
+ * ],
91
+ * listDefinitions: {
92
+ * customer2: [
93
+ * { key: "name", title: "Name", filterable: true },
94
+ * { key: "email", title: "Email" },
95
+ * ],
96
+ * },
97
+ * translations: {
98
+ * en: { "Kunder": "Customers" },
99
+ * sv: { "Customers": "Kunder" },
100
+ * },
101
+ * modules: { sales: true, voice: false },
102
+ * });
103
+ *
104
+ * app.render("#root");
105
+ * ```
106
+ *
107
+ * @param config - App configuration
108
+ * @returns CodicentApp instance with render() method
109
+ * @public
110
+ */
111
+ export declare function createCodicentApp(config: CreateAppConfig): CodicentApp;
112
+ //# sourceMappingURL=bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAc,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAKpD,OAAO,KAAK,EAA6B,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAwBnH;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,UAAU,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,2CAA2C;IAC3C,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,4BAA4B;IAC5B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,+CAA+C;IAC/C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,2BAA2B;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4BAA4B;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,0BAA0B;IAC1B,KAAK,CAAC,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,2BAA2B;IAC3B,MAAM,CAAC,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,mCAAmC;IACnC,KAAK,CAAC,EAAE;QACN,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,MAAM,CAAC,SAAS,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAAC;IAE9C;;OAEG;IACH,OAAO,IAAI,IAAI,CAAC;IAEhB;;OAEG;IACH,SAAS,IAAI,eAAe,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,WAAW,CAsKtE"}
@@ -0,0 +1 @@
1
+ "use strict";var e=require("react"),t=require("react-dom/client"),r=require("react-router-dom"),n=require("./node_modules/@auth0/auth0-react/dist/auth0-react.esm.js"),o=require("./config/index.js"),i=require("./node_modules/@fluentui/tokens/lib/utils/createLightTheme.js"),a=require("./node_modules/@fluentui/react-provider/lib/components/FluentProvider/FluentProvider.js");const s={10:"#000000",20:"#10141C",30:"#172033",40:"#1E2E4B",50:"#233C64",60:"#284A7E",70:"#2D5A9A",80:"#3069B6",90:"#3779D1",100:"#4F89E1",110:"#6799EE",120:"#80A9F8",130:"#99BAFF",140:"#B5CBFF",150:"#CFDCFF",160:"#E7EEFF"};exports.createCodicentApp=function(u){let l=null,c=!1;if(!u.name)throw new Error("createCodicentApp: 'name' is required");if(!u.apiBaseUrl)throw new Error("createCodicentApp: 'apiBaseUrl' is required");const d={API_BASE_URL:u.apiBaseUrl,APP_NAME:u.name,APP_PREFIX:u.appPrefix||u.name.toLowerCase().replace(/\s+/g,"-"),USER_PREFIX:u.userPrefix||"users",DEFAULT_LANGUAGE:u.defaultLanguage||"en",TRANSLATIONS:u.translations,CHAT_INSTRUCTIONS:u.chatInstructions,REALTIME_VOICE_INSTRUCTIONS:u.voiceInstructions,MODULE_SALES:u.modules?.sales??!1,MODULE_VOICE:u.modules?.voice??!1,MODULE_FORMS:u.modules?.forms??!1,MODULE_SEARCH:u.modules?.search??!1,MODULE_QR:u.modules?.qr??!1,MODULE_SNAP:u.modules?.snap??!1,AUTH0_DOMAIN:u.auth0?.domain||"auth.codicent.com",AUTH0_CLIENT_ID:u.auth0?.clientId||"80STzWmmzN3Tgf76HgFRyv54keYmvnaw",AUTH0_AUDIENCE:u.auth0?.audience||"https://codicent.com/api",AUTH0_PROVIDER_SCOPE:"read:current_user update:current_user_metadata openid profile email",AUTH0_SCOPE:"read:current_user",STRIPE_PUBLIC_KEY:u.stripe?.publicKey||"",STRIPE_PRICE_ID:u.stripe?.priceId||"",STRIPE_TRIAL_PERIOD_DAYS:u.stripe?.trialDays||0,SUBSCRIPTION_NEEDED:!!u.stripe?.publicKey,APP_HEADER_COLOR:u.theme?.headerColor,APP_FOOTER_COLOR:u.theme?.footerColor,BUTTON_BACKGROUND_COLOR:u.theme?.buttonColor,APP_ICON_URL:u.theme?.logoUrl,APP_HEADER_ICON_URL:u.theme?.logoUrl,APP_CONFIG:{apps:{[u.appPrefix||u.name]:{buttons:u.buttons||[],tasks:[],voiceInstructions:u.voiceInstructions||"",chatInstructions:u.chatInstructions||"",listDefinitions:u.listDefinitions||{}}}}};o.initCodicentApp(d);const E=s,m={...i.createLightTheme(E),fontFamilyBase:"'Segoe UI', Roboto, 'Helvetica Neue', sans-serif"};return{render(o){if(c)return console.warn("createCodicentApp: App is already mounted. Call unmount() first."),l;const i="string"==typeof o?document.querySelector(o):o;if(!i)throw new Error(`createCodicentApp: Could not find container: ${o}`);return l=t.createRoot(i),l.render(e.createElement(e.StrictMode,null,e.createElement(n.Auth0Provider,{domain:d.AUTH0_DOMAIN,clientId:d.AUTH0_CLIENT_ID,authorizationParams:{redirect_uri:window.location.origin,audience:d.AUTH0_AUDIENCE,scope:d.AUTH0_PROVIDER_SCOPE,ui_locales:d.DEFAULT_LANGUAGE},cacheLocation:"localstorage",useRefreshTokens:!0},e.createElement(a.FluentProvider,{theme:m},e.createElement(r.HashRouter,null,e.createElement((()=>e.createElement("div",{style:{padding:"20px",fontFamily:"system-ui, sans-serif",maxWidth:"600px",margin:"40px auto"}},e.createElement("h1",null,`Welcome to ${u.name}`),e.createElement("p",null,"Your Codicent app is configured and ready."),e.createElement("p",null,"To use the full app UI, import and render your App component directly."),e.createElement("h2",null,"Configuration:"),e.createElement("pre",{style:{background:"#f5f5f5",padding:"10px",borderRadius:"4px",overflow:"auto"}},JSON.stringify({name:u.name,apiBaseUrl:u.apiBaseUrl,buttons:u.buttons?.length||0,modules:u.modules},null,2)))))))))),c=!0,l},unmount(){l&&(l.unmount(),l=null,c=!1)},getConfig:()=>u}};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react");require("./Markdown.js"),require("./Textarea.js");var s=require("./Button.js");require("./CompoundButton.js");var i=require("./Text.js"),a=require("./Spinner.js");require("./TextHeader.js"),require("./TypingIndicator.js"),require("./Dialog.js"),require("./ChatInput.js"),require("./CombinedPlaceholderDialog.js"),require("./ChatMessage.js"),require("./Header.js"),require("../services/codicent.js");var o=require("../utils/MessageContent.js");require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js"),require("../config/index.js"),require("../utils/cacheManager.js"),require("../lib/wavtools/lib/wav_packer.js"),require("../lib/wavtools/lib/analysis/audio_analysis.js"),require("../lib/wavtools/lib/wav_stream_player.js"),require("../lib/wavtools/lib/wav_recorder.js"),require("../pages/AppFrame.js"),require("../pages/Chat.js"),require("../pages/Compose.js"),require("../pages/Snap.js"),require("../pages/Search.js"),require("../pages/Login.js"),require("../pages/CrmPage.js"),require("../pages/CrmPagePersistent.js"),require("../pages/ImageView.js"),require("../pages/FormInvite.js"),require("../pages/FormAccept.js"),require("../pages/Sales.js"),require("../pages/Purchase.js");var t=require("../hooks/useLocalization.js");require("../hooks/useAppStyles.js"),require("./FileThumbnail.js"),require("./MessageInput.js"),require("./UploadFile.js"),require("./SnapFooter.js"),require("./Profile.js"),require("./MessageItem.js"),require("./Content.js"),require("./SearchBox.js"),require("./HtmlView.js"),require("./Footer.js"),require("./Page.js"),require("./QrCodeDialog.js");var u=require("../node_modules/@griffel/react/makeStyles.esm.js"),l=require("../node_modules/@fluentui/react-utilities/lib/hooks/useId.js"),n=require("../node_modules/@fluentui/react-combobox/lib/components/Combobox/Combobox.js"),j=require("../node_modules/@fluentui/react-combobox/lib/components/Option/Option.js");const c=u.makeStyles({root:{display:"grid",gridTemplateRows:"repeat(1fr)",justifyItems:"start",gap:"2px",maxWidth:"400px",padding:"8px"},combo:{width:"100%"},horizonal:{display:"flex",flexDirection:"row",verticalAlign:"middle"}});exports.default=u=>{const{id:p,options:d,title:q,placeholder:m,onChangeValue:g,value:x="",prompt:b,service:f}=u,h=l.useId(p+"-combo"),[v,C]=r.useState([...d||[]]),[w,y]=r.useState(),[S,_]=r.useState(!1),k=c(),{t:T}=t.default();r.useEffect((()=>{g(w)}),[w,g]);return e.jsxs("div",{id:p,className:k.root,children:[e.jsxs("div",{className:k.horizonal,children:[e.jsx(i.Text,{size:400,id:h,children:q}),b&&e.jsxs(e.Fragment,{children:[!S&&e.jsx(s.Button,{icon:"WandRegular",title:T("Autoskapa"),style:{fontSize:16,marginLeft:6},onClick:async()=>{_(!0),await(async e=>{if(e){const r=await f.chat(e);if(r){const e=new o.default(r.content).content;g(e)}}})(b),_(!1)},appearance:"transparent",size:"small"}),S&&e.jsx(a.Spinner,{size:"extra-small",style:{marginLeft:12},children:T("Arbetar...")})]})]}),e.jsxs(n.Combobox,{className:k.combo,"aria-labelledby":h,freeform:!0,placeholder:m||T("Välj..."),onChange:e=>{const r=e.target.value;y(r);const s=(d||[]).filter((e=>0===e.toLowerCase().indexOf(r.toLowerCase())));C(s)},onOptionSelect:(e,r)=>{r.optionText&&(d||[]).includes(r.optionText);y(r.optionText)},size:"large",value:x,children:[w?e.jsx(j.Option,{text:w,children:T("Sök efter ")+w},"freeform"):null,v.map((r=>e.jsx(j.Option,{children:r},r)))]})]})};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react");require("./Markdown.js"),require("./Textarea.js");var s=require("./Button.js");require("./CompoundButton.js");var i=require("./Text.js"),a=require("./Spinner.js");require("./TextHeader.js"),require("./TypingIndicator.js"),require("./Dialog.js"),require("./ChatInput.js"),require("./CombinedPlaceholderDialog.js"),require("./ChatMessage.js"),require("./Header.js"),require("../services/codicent.js");var t=require("../utils/MessageContent.js");require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js"),require("../config/index.js"),require("../utils/cacheManager.js"),require("../lib/wavtools/lib/wav_packer.js"),require("../lib/wavtools/lib/analysis/audio_analysis.js"),require("../lib/wavtools/lib/wav_stream_player.js"),require("../lib/wavtools/lib/wav_recorder.js"),require("../pages/AppFrame.js"),require("../pages/Chat.js"),require("../pages/Compose.js"),require("../pages/Snap.js"),require("../pages/Search.js"),require("../pages/Login.js"),require("../pages/CrmPage.js"),require("../pages/CrmPagePersistent.js"),require("../pages/ImageView.js"),require("../pages/FormInvite.js"),require("../pages/FormAccept.js"),require("../pages/Sales.js"),require("../pages/Purchase.js"),require("./Content.js"),require("./Page.js"),require("../pages/QrScan.js");var o=require("../hooks/useLocalization.js");require("./FileThumbnail.js"),require("react-dom/client"),require("react-router-dom"),require("../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js"),require("../hooks/useAppStyles.js"),require("./MessageInput.js"),require("./UploadFile.js"),require("./SnapFooter.js"),require("./Profile.js"),require("./MessageItem.js"),require("./SearchBox.js"),require("./HtmlView.js"),require("./Footer.js"),require("./QrCodeDialog.js"),require("./QrScanner.js"),require("./OfflineMessage.js"),require("./LanguageSelector.js"),require("./ListView.js"),require("./RecordModal.js"),require("./BulkUploadDialog.js");var u=require("../node_modules/@griffel/react/makeStyles.esm.js"),l=require("../node_modules/@fluentui/react-utilities/lib/hooks/useId.js"),n=require("../node_modules/@fluentui/react-combobox/lib/components/Combobox/Combobox.js"),c=require("../node_modules/@fluentui/react-combobox/lib/components/Option/Option.js");const j=u.makeStyles({root:{display:"grid",gridTemplateRows:"repeat(1fr)",justifyItems:"start",gap:"2px",maxWidth:"400px",padding:"8px"},combo:{width:"100%"},horizonal:{display:"flex",flexDirection:"row",verticalAlign:"middle"}});exports.default=u=>{const{id:d,options:q,title:p,placeholder:m,onChangeValue:g,value:x="",prompt:h,service:f}=u,b=l.useId(d+"-combo"),[v,w]=r.useState([...q||[]]),[C,S]=r.useState(),[y,_]=r.useState(!1),k=j(),{t:T}=o.default();r.useEffect((()=>{g(C)}),[C,g]);return e.jsxs("div",{id:d,className:k.root,children:[e.jsxs("div",{className:k.horizonal,children:[e.jsx(i.Text,{size:400,id:b,children:p}),h&&e.jsxs(e.Fragment,{children:[!y&&e.jsx(s.Button,{icon:"WandRegular",title:T("Autoskapa"),style:{fontSize:16,marginLeft:6},onClick:async()=>{_(!0),await(async e=>{if(e){const r=await f.chat(e);if(r){const e=new t.default(r.content).content;g(e)}}})(h),_(!1)},appearance:"transparent",size:"small"}),y&&e.jsx(a.Spinner,{size:"extra-small",style:{marginLeft:12},children:T("Arbetar...")})]})]}),e.jsxs(n.Combobox,{className:k.combo,"aria-labelledby":b,freeform:!0,placeholder:m||T("Välj..."),onChange:e=>{const r=e.target.value;S(r);const s=(q||[]).filter((e=>0===e.toLowerCase().indexOf(r.toLowerCase())));w(s)},onOptionSelect:(e,r)=>{r.optionText&&(q||[]).includes(r.optionText);S(r.optionText)},size:"large",value:x,children:[C?e.jsx(c.Option,{text:C,children:T("Sök efter ")+C},"freeform"):null,v.map((r=>e.jsx(c.Option,{children:r},r)))]})]})};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime");require("react"),require("../services/codicent.js"),require("./Markdown.js"),require("./Textarea.js"),require("./Button.js"),require("./CompoundButton.js"),require("./Spinner.js"),require("./TextHeader.js"),require("./TypingIndicator.js"),require("./Dialog.js"),require("./ChatInput.js"),require("./CombinedPlaceholderDialog.js"),require("./ChatMessage.js"),require("./Header.js"),require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js");var r=require("../utils/withWakeLock.js");require("../_virtual/index.js"),require("../config/index.js"),require("../utils/cacheManager.js"),require("../lib/wavtools/lib/wav_packer.js"),require("../lib/wavtools/lib/analysis/audio_analysis.js"),require("../lib/wavtools/lib/wav_stream_player.js"),require("../lib/wavtools/lib/wav_recorder.js"),require("./FileThumbnail.js"),require("./MessageInput.js"),require("./UploadFile.js"),require("./SnapFooter.js"),require("./Profile.js"),require("./MessageItem.js"),require("./Content.js"),require("./AiInput.js"),require("./SearchBox.js"),require("./HtmlView.js"),require("./Footer.js"),require("./Page.js"),require("./QrCodeDialog.js"),require("../pages/AppFrame.js"),require("../pages/Chat.js"),require("../pages/Compose.js"),require("../pages/Snap.js"),require("../pages/Search.js"),require("../pages/Login.js"),require("../pages/CrmPage.js"),require("../pages/CrmPagePersistent.js"),require("../pages/ImageView.js"),require("../pages/FormInvite.js"),require("../pages/FormAccept.js"),require("../pages/Sales.js"),require("../pages/Purchase.js"),require("../hooks/useLocalization.js");var s=require("../hooks/useAppStyles.js"),i=require("../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-10.js");const u=r.default((({isSoundCaptured:r,stopRecording:u})=>{const{pointer:a}=s.default();return r?e.jsx(i.MicPulse24Filled,{onClick:u,className:a}):e.jsx(i.MicRecord24Filled,{onClick:u,className:a})}));exports.default=({audio:r,disabled:a})=>{const{isRecording:o,isSoundCaptured:t,startRecording:j,stopRecording:l}=r,{pointer:n}=s.default();return a?e.jsx(i.Mic24Regular,{}):o?e.jsx(u,{isSoundCaptured:t,stopRecording:l}):e.jsx(i.Mic24Regular,{onClick:()=>j(""),className:n})};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime");require("react"),require("../services/codicent.js"),require("./Markdown.js"),require("./Textarea.js"),require("./Button.js"),require("./CompoundButton.js"),require("./Spinner.js"),require("./TextHeader.js"),require("./TypingIndicator.js"),require("./Dialog.js"),require("./ChatInput.js"),require("./CombinedPlaceholderDialog.js"),require("./ChatMessage.js"),require("./Header.js"),require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js");var r=require("../utils/withWakeLock.js");require("../_virtual/index.js"),require("../config/index.js"),require("../utils/cacheManager.js"),require("../lib/wavtools/lib/wav_packer.js"),require("../lib/wavtools/lib/analysis/audio_analysis.js"),require("../lib/wavtools/lib/wav_stream_player.js"),require("../lib/wavtools/lib/wav_recorder.js"),require("./FileThumbnail.js"),require("./MessageInput.js"),require("./UploadFile.js"),require("./SnapFooter.js"),require("./Profile.js"),require("./MessageItem.js"),require("./Content.js"),require("./AiInput.js"),require("./SearchBox.js"),require("./HtmlView.js"),require("./Footer.js"),require("./Page.js"),require("./QrCodeDialog.js"),require("./QrScanner.js"),require("../hooks/useLocalization.js"),require("./OfflineMessage.js"),require("./LanguageSelector.js"),require("./ListView.js"),require("./RecordModal.js"),require("./BulkUploadDialog.js"),require("../pages/AppFrame.js"),require("../pages/Chat.js"),require("../pages/Compose.js"),require("../pages/Snap.js"),require("../pages/Search.js"),require("../pages/Login.js"),require("../pages/CrmPage.js"),require("../pages/CrmPagePersistent.js"),require("../pages/ImageView.js"),require("../pages/FormInvite.js"),require("../pages/FormAccept.js"),require("../pages/Sales.js"),require("../pages/Purchase.js"),require("../pages/QrScan.js"),require("react-dom/client"),require("react-router-dom"),require("../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js");var s=require("../hooks/useAppStyles.js"),i=require("../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-10.js");const u=r.default((({isSoundCaptured:r,stopRecording:u})=>{const{pointer:a}=s.default();return r?e.jsx(i.MicPulse24Filled,{onClick:u,className:a}):e.jsx(i.MicRecord24Filled,{onClick:u,className:a})}));exports.default=({audio:r,disabled:a})=>{const{isRecording:o,isSoundCaptured:t,startRecording:j,stopRecording:l}=r,{pointer:n}=s.default();return a?e.jsx(i.Mic24Regular,{}):o?e.jsx(u,{isSoundCaptured:t,stopRecording:l}):e.jsx(i.Mic24Regular,{onClick:()=>j(""),className:n})};
@@ -0,0 +1,16 @@
1
+ import { CodicentService } from "../services/codicent";
2
+ interface BulkUploadDialogProps {
3
+ project: string;
4
+ hidden: boolean;
5
+ onDismiss: () => void;
6
+ sendMessage: (text: string) => Promise<string | undefined>;
7
+ onUploaded?: () => void;
8
+ service: CodicentService;
9
+ tags?: string[];
10
+ title?: string;
11
+ description?: string;
12
+ dropText?: string;
13
+ }
14
+ declare const BulkUploadDialog: (props: BulkUploadDialogProps) => import("react/jsx-runtime").JSX.Element;
15
+ export default BulkUploadDialog;
16
+ //# sourceMappingURL=BulkUploadDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BulkUploadDialog.d.ts","sourceRoot":"","sources":["../../../src/components/BulkUploadDialog.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAMvD,UAAU,qBAAqB;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAE3D,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,OAAO,EAAE,eAAe,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAkCD,QAAA,MAAM,gBAAgB,UAAW,qBAAqB,4CAkNrD,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),o=require("./Spinner.js"),r=require("../hooks/useLocalization.js"),n=require("./Button.js"),l=require("react"),a=require("../node_modules/@griffel/react/makeStyles.esm.js"),t=require("../node_modules/@griffel/core/index.esm.js"),s=require("../node_modules/@fluentui/tokens/lib/tokens.js"),i=require("../node_modules/@fluentui/react-dialog/lib/components/Dialog/Dialog.js"),c=require("../node_modules/@fluentui/react-dialog/lib/components/DialogSurface/DialogSurface.js"),d=require("../node_modules/@fluentui/react-dialog/lib/components/DialogBody/DialogBody.js"),u=require("../node_modules/@fluentui/react-dialog/lib/components/DialogTitle/DialogTitle.js"),g=require("../node_modules/@fluentui/react-dialog/lib/components/DialogContent/DialogContent.js"),p=require("../node_modules/@fluentui/react-message-bar/lib/components/MessageBar/MessageBar.js"),f=require("../node_modules/@fluentui/react-dialog/lib/components/DialogActions/DialogActions.js");const m=a.makeStyles({dropZone:{...t.shorthands.border("2px","dashed",s.tokens.colorNeutralStroke2),...t.shorthands.borderRadius(s.tokens.borderRadiusMedium),...t.shorthands.padding("2rem"),textAlign:"center",backgroundColor:s.tokens.colorNeutralBackground1,cursor:"pointer",transition:"all 0.2s ease-in-out","&:hover":{backgroundColor:s.tokens.colorNeutralBackground1Hover}},dropZoneActive:{...t.shorthands.border("2px","dashed",s.tokens.colorBrandBackground),backgroundColor:s.tokens.colorBrandBackground2},dropZoneText:{color:s.tokens.colorNeutralForeground2,fontSize:s.tokens.fontSizeBase300,marginBottom:"1rem"},fileInput:{display:"none"},fileList:{fontSize:"0.8rem",color:s.tokens.colorNeutralForeground3,marginTop:"0.5rem"}});exports.default=a=>{const[t,s]=l.useState(""),[h,k]=l.useState(!1),[j,D]=l.useState(""),[x,b]=l.useState(!1),[C,v]=l.useState([]),B=m(),S=l.useRef(null),{hidden:q,onDismiss:y,project:_,sendMessage:N,onUploaded:$,service:A,title:T,description:z,dropText:E}=a,{t:M}=r.default();l.useEffect((()=>{q&&(v([]),s(""),k(!1),D(""),b(!1),S.current&&(S.current.value=""))}),[q]);const P=l.useCallback((async e=>{0!==e.length&&(v(e),s(""))}),[]),U=l.useCallback((()=>{try{if(S.current?.files){const e=Array.from(S.current.files);P(e)}}catch{s(M("Error selecting files"))}}),[P,M]),Z=l.useCallback((e=>{e.preventDefault(),e.stopPropagation(),b(!0)}),[]),F=l.useCallback((e=>{e.preventDefault(),e.stopPropagation(),b(!1)}),[]),L=l.useCallback((e=>{e.preventDefault(),e.stopPropagation()}),[]),w=l.useCallback((e=>{e.preventDefault(),e.stopPropagation(),b(!1);const o=Array.from(e.dataTransfer.files);P(o)}),[P]),O=l.useCallback((()=>{S.current?.click()}),[]);return e.jsx(i.Dialog,{open:!q,onOpenChange:(e,o)=>!o.open&&y(),children:e.jsx(c.DialogSurface,{children:e.jsxs(d.DialogBody,{children:[e.jsx(u.DialogTitle,{children:T||M("Bulk Upload")}),e.jsxs(g.DialogContent,{children:[e.jsx("p",{children:z||M("Drag and drop files here or click to select files")}),e.jsxs("div",{className:`${B.dropZone} ${x?B.dropZoneActive:""}`,onDragEnter:Z,onDragLeave:F,onDragOver:L,onDrop:w,onClick:O,children:[e.jsx("div",{className:B.dropZoneText,children:x?M("Drop files here..."):C.length>0?M(`${C.length} ${1===C.length?"file":"files"} selected`):E||M("Drag and drop files here or click to select")}),!x&&C.length>0&&e.jsx("div",{className:B.fileList,children:C.map(((o,r)=>e.jsx("div",{children:o.name},r)))})]}),e.jsx("input",{ref:S,className:B.fileInput,title:"Upload",type:"file",name:"files",multiple:!0,onChange:U}),h&&e.jsx(o.Spinner,{size:"large",children:M("Uploading...")}),h&&e.jsxs("p",{children:[M("Uploading")," ",j]}),""!==t&&e.jsx(p.MessageBar,{intent:"error",children:t})]}),e.jsxs(f.DialogActions,{children:[e.jsx(n.Button,{onClick:y,children:M("Cancel")}),e.jsx(n.Button,{disabled:0===C.length||h,onClick:async()=>{if(0!==C.length){k(!0),s("");for(const e of C)try{const o=new FormData;o.append("file",e),D(e.name);const r=await A.uploadFile(e.name,o);if(!r){s(M("Error uploading file"));continue}const n=a.tags?a.tags.map((e=>`#${e}`)).join(" "):"#index #summarize",l=`@${_} ${n}\n\n${e.name}\n#file:${r}\n`;console.log("uploading file: "+l);if(!await N(l)){s(M("Error sending file"));continue}}catch(e){console.log(e),s(M("Error uploading file"))}k(!1),$&&$(),y()}else s(M("Please select files to upload"))},appearance:"primary",children:M("Upload")})]})]})})})};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react"),i=require("./FileThumbnail.js"),t=require("../hooks/useStateWithLocalStorage.js");require("../services/codicent.js"),require("./Markdown.js");var s=require("./Textarea.js");require("./Button.js"),require("./CompoundButton.js"),require("./Spinner.js"),require("./TextHeader.js"),require("./TypingIndicator.js"),require("./Dialog.js"),require("./CombinedPlaceholderDialog.js"),require("./ChatMessage.js"),require("./Header.js"),require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js");var a=require("../config/index.js");require("../utils/cacheManager.js"),require("../lib/wavtools/lib/wav_packer.js"),require("../lib/wavtools/lib/analysis/audio_analysis.js"),require("../lib/wavtools/lib/wav_stream_player.js"),require("../lib/wavtools/lib/wav_recorder.js"),require("./MessageInput.js"),require("./UploadFile.js"),require("./SnapFooter.js"),require("./Profile.js"),require("./MessageItem.js"),require("./Content.js"),require("./AiInput.js"),require("./SearchBox.js"),require("./HtmlView.js"),require("./Footer.js"),require("./Page.js"),require("./QrCodeDialog.js"),require("../pages/AppFrame.js"),require("../pages/Chat.js"),require("../pages/Compose.js"),require("../pages/Snap.js"),require("../pages/Search.js"),require("../pages/Login.js"),require("../pages/CrmPage.js"),require("../pages/CrmPagePersistent.js"),require("../pages/ImageView.js"),require("../pages/FormInvite.js"),require("../pages/FormAccept.js"),require("../pages/Sales.js"),require("../pages/Purchase.js");var o=require("../hooks/useLocalization.js"),l=require("../hooks/useAppStyles.js"),n=require("../node_modules/@griffel/react/makeStyles.esm.js"),u=require("../node_modules/@fluentui/react-button/lib/components/Button/Button.js"),c=require("../node_modules/@fluentui/react-spinner/lib/components/Spinner/Spinner.js"),d=require("../node_modules/@fluentui/react-icons/lib/icons/chunk-3.js"),p=require("../node_modules/@griffel/core/mergeClasses.esm.js"),g=require("../node_modules/@fluentui/tokens/lib/tokens.js"),j=require("../node_modules/@fluentui/react-icons/lib/icons/chunk-0.js");const f=n.makeStyles({inputContainer:{display:"flex",flexDirection:"column",padding:"8px",width:"100%",position:"relative",gap:"8px"},textareaWrapper:{position:"relative",width:"100%",display:"flex",flexDirection:"column"},actionButtonRow:{position:"absolute",left:"8px",bottom:"8px",right:"8px",zIndex:1,display:"flex",justifyContent:"space-between",alignItems:"center"},fileList:{display:"flex",overflowX:"auto",overflowY:"hidden",scrollbarWidth:"thin",msOverflowStyle:"none",padding:"4px 0",maxWidth:"100%",boxSizing:"border-box",gap:"4px",minHeight:"72px",backgroundColor:g.tokens.colorNeutralBackground2,borderRadius:g.tokens.borderRadiusMedium,"&::-webkit-scrollbar":{height:"6px"},"&::-webkit-scrollbar-track":{background:"transparent"},"&::-webkit-scrollbar-thumb":{backgroundColor:g.tokens.colorNeutralStroke1,borderRadius:"3px"}},hiddenInput:{display:"none"},button:{color:g.tokens.colorNeutralForeground2,"&:hover":{color:g.tokens.colorBrandBackground,backgroundColor:"transparent"}}});exports.default=({onSend:n,disableSend:g,onSelectFiles:m,getImageUrl:q,getFileInfo:x,codicent:h,defaultText:b,rows:S,noMemory:_,selectAll:k,id:v})=>{const C=f(),[T,y]=t.default("chatInput-"+h,""),w=r.useRef(null),[N,D]=r.useState([]),[B,F]=r.useState([]),[E,I]=r.useState(!1),[O,P]=r.useState([]),{t:A}=o.default(),H=l.default();r.useEffect((()=>{b&&y(b)}),[y,b]),r.useEffect((()=>{!0===_&&y("")}),[_,y]);const R=()=>{if(""===T.trim()&&0===O.length)return;const e=N.length>0?" #"+N.join(" #"):"",r=B.length>0?"\n#file:"+B.join("\n#file:"):"";n(e+T+r),y(""),D([]),F([]),P([])};return e.jsxs("div",{className:C.inputContainer,children:[e.jsx("input",{title:A("Välj fil att ladda upp"),type:"file",ref:w,className:C.hiddenInput,onChange:async e=>{const r=e.target.files;if(r&&r.length>0&&m){I(!0);try{const e=await m(r),i=await Promise.all(e.map((e=>x(e))));F((r=>[...r,...e])),P((e=>[...e,...i]))}catch(e){console.error("Failed to upload files",e)}finally{I(!1),w.current&&(w.current.value="")}}},multiple:!0,accept:"image/*,.pdf,.doc,.docx,.xls,.xlsx,.txt"}),O.length>0&&e.jsx("div",{className:C.fileList,children:O.map((r=>e.jsx(i.FileThumbnail,{file:r,getImageUrl:q,onDelete:()=>{return e=r.id,F((r=>r.filter((r=>r!==e)))),void P((r=>r.filter((r=>r.id!==e))));var e}},r.id)))}),e.jsxs("div",{className:C.textareaWrapper,onPaste:async e=>{for(const r of e.clipboardData.items)if(-1!==r.type.indexOf("image")){const i=r.getAsFile();if(i&&(e.preventDefault(),m))try{I(!0);const e=new DataTransfer;e.items.add(i);const r=await m(e.files),t=await Promise.all(r.map((e=>x(e))));F((e=>[...e,...r])),P((e=>[...e,...t]))}catch(e){console.error("Failed to upload pasted image",e)}finally{I(!1)}}},children:[e.jsx(s.Textarea,{size:"large",id:v||"chat-input",placeholder:A(a.getConfigValue("APP_CHAT_TEXT_PLACEHOLDER")||"Skriv ditt meddelande här..."),value:T,onChange:e=>y(e.target.value),onKeyDown:e=>{g||"Enter"!==e.key||e.shiftKey||(e.preventDefault(),R())},autoFocus:!1,rows:S||4,onFocus:e=>{if(!0===k){e.target.select()}}}),e.jsxs("div",{className:C.actionButtonRow,children:[e.jsx("div",{children:!a.getConfigValue("HIDE_CHAT_ADD_FILE_BUTTON")&&m&&e.jsx(u.Button,{appearance:"subtle",size:"small",title:A("Lägg till fil"),icon:E?e.jsx(c.Spinner,{}):e.jsx(j.AddRegular,{}),onClick:()=>w.current?.click(),className:C.button})}),e.jsx(u.Button,{appearance:a.getConfigValue("SHOW_SEND_BUTTON_TEXT")?"primary":"subtle",size:a.getConfigValue("SHOW_SEND_BUTTON_TEXT")?"small":"large",title:A("Skicka"),disabled:g,icon:""===T.trim()&&0===O.length?e.jsx(d.SendRegular,{}):e.jsx(d.SendFilled,{}),onClick:R,className:a.getConfigValue("SEND_BUTTON_ROUND_BACKGROUND")?p.mergeClasses(H.roundButton,C.button):a.getConfigValue("SHOW_SEND_BUTTON_TEXT")?void 0:C.button,children:a.getConfigValue("SHOW_SEND_BUTTON_TEXT")&&e.jsx("span",{children:A("Skicka")})})]})]})]})};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react"),i=require("./FileThumbnail.js"),t=require("../hooks/useStateWithLocalStorage.js");require("../services/codicent.js"),require("./Markdown.js");var s=require("./Textarea.js");require("./Button.js"),require("./CompoundButton.js"),require("./Spinner.js"),require("./TextHeader.js"),require("./TypingIndicator.js"),require("./Dialog.js"),require("./CombinedPlaceholderDialog.js"),require("./ChatMessage.js"),require("./Header.js"),require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js");var a=require("../config/index.js");require("../utils/cacheManager.js"),require("../lib/wavtools/lib/wav_packer.js"),require("../lib/wavtools/lib/analysis/audio_analysis.js"),require("../lib/wavtools/lib/wav_stream_player.js"),require("../lib/wavtools/lib/wav_recorder.js"),require("./MessageInput.js"),require("./UploadFile.js"),require("./SnapFooter.js"),require("./Profile.js"),require("./MessageItem.js"),require("./Content.js"),require("./AiInput.js"),require("./SearchBox.js"),require("./HtmlView.js"),require("./Footer.js"),require("./Page.js"),require("./QrCodeDialog.js"),require("./QrScanner.js");var o=require("../hooks/useLocalization.js");require("./OfflineMessage.js"),require("./LanguageSelector.js"),require("./ListView.js"),require("./RecordModal.js"),require("./BulkUploadDialog.js"),require("../pages/AppFrame.js"),require("../pages/Chat.js"),require("../pages/Compose.js"),require("../pages/Snap.js"),require("../pages/Search.js"),require("../pages/Login.js"),require("../pages/CrmPage.js"),require("../pages/CrmPagePersistent.js"),require("../pages/ImageView.js"),require("../pages/FormInvite.js"),require("../pages/FormAccept.js"),require("../pages/Sales.js"),require("../pages/Purchase.js"),require("../pages/QrScan.js"),require("react-dom/client"),require("react-router-dom"),require("../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js");var l=require("../hooks/useAppStyles.js"),n=require("../node_modules/@griffel/react/makeStyles.esm.js"),u=require("../node_modules/@fluentui/react-button/lib/components/Button/Button.js"),c=require("../node_modules/@fluentui/react-spinner/lib/components/Spinner/Spinner.js"),d=require("../node_modules/@fluentui/react-icons/lib/icons/chunk-3.js"),p=require("../node_modules/@griffel/core/mergeClasses.esm.js"),g=require("../node_modules/@fluentui/tokens/lib/tokens.js"),j=require("../node_modules/@fluentui/react-icons/lib/icons/chunk-0.js");const f=n.makeStyles({inputContainer:{display:"flex",flexDirection:"column",padding:"8px",width:"100%",position:"relative",gap:"8px"},textareaWrapper:{position:"relative",width:"100%",display:"flex",flexDirection:"column"},actionButtonRow:{position:"absolute",left:"8px",bottom:"8px",right:"8px",zIndex:1,display:"flex",justifyContent:"space-between",alignItems:"center"},fileList:{display:"flex",overflowX:"auto",overflowY:"hidden",scrollbarWidth:"thin",msOverflowStyle:"none",padding:"4px 0",maxWidth:"100%",boxSizing:"border-box",gap:"4px",minHeight:"72px",backgroundColor:g.tokens.colorNeutralBackground2,borderRadius:g.tokens.borderRadiusMedium,"&::-webkit-scrollbar":{height:"6px"},"&::-webkit-scrollbar-track":{background:"transparent"},"&::-webkit-scrollbar-thumb":{backgroundColor:g.tokens.colorNeutralStroke1,borderRadius:"3px"}},hiddenInput:{display:"none"},button:{color:g.tokens.colorNeutralForeground2,"&:hover":{color:g.tokens.colorBrandBackground,backgroundColor:"transparent"}}});exports.default=({onSend:n,disableSend:g,onSelectFiles:m,getImageUrl:q,getFileInfo:h,codicent:x,defaultText:b,rows:S,noMemory:_,selectAll:k,id:v})=>{const C=f(),[T,w]=t.default("chatInput-"+x,""),y=r.useRef(null),[D,N]=r.useState([]),[B,F]=r.useState([]),[E,O]=r.useState(!1),[I,P]=r.useState([]),{t:A}=o.default(),H=l.default();r.useEffect((()=>{b&&w(b)}),[w,b]),r.useEffect((()=>{!0===_&&w("")}),[_,w]);const R=()=>{if(""===T.trim()&&0===I.length)return;const e=D.length>0?" #"+D.join(" #"):"",r=B.length>0?"\n#file:"+B.join("\n#file:"):"";n(e+T+r),w(""),N([]),F([]),P([])};return e.jsxs("div",{className:C.inputContainer,children:[e.jsx("input",{title:A("Välj fil att ladda upp"),type:"file",ref:y,className:C.hiddenInput,onChange:async e=>{const r=e.target.files;if(r&&r.length>0&&m){O(!0);try{const e=await m(r),i=await Promise.all(e.map((e=>h(e))));F((r=>[...r,...e])),P((e=>[...e,...i]))}catch(e){console.error("Failed to upload files",e)}finally{O(!1),y.current&&(y.current.value="")}}},multiple:!0,accept:"image/*,.pdf,.doc,.docx,.xls,.xlsx,.txt"}),I.length>0&&e.jsx("div",{className:C.fileList,children:I.map((r=>e.jsx(i.FileThumbnail,{file:r,getImageUrl:q,onDelete:()=>{return e=r.id,F((r=>r.filter((r=>r!==e)))),void P((r=>r.filter((r=>r.id!==e))));var e}},r.id)))}),e.jsxs("div",{className:C.textareaWrapper,onPaste:async e=>{for(const r of e.clipboardData.items)if(-1!==r.type.indexOf("image")){const i=r.getAsFile();if(i&&(e.preventDefault(),m))try{O(!0);const e=new DataTransfer;e.items.add(i);const r=await m(e.files),t=await Promise.all(r.map((e=>h(e))));F((e=>[...e,...r])),P((e=>[...e,...t]))}catch(e){console.error("Failed to upload pasted image",e)}finally{O(!1)}}},children:[e.jsx(s.Textarea,{size:"large",id:v||"chat-input",placeholder:A(a.getConfigValue("APP_CHAT_TEXT_PLACEHOLDER")||"Skriv ditt meddelande här..."),value:T,onChange:e=>w(e.target.value),onKeyDown:e=>{g||"Enter"!==e.key||e.shiftKey||(e.preventDefault(),R())},autoFocus:!1,rows:S||4,onFocus:e=>{if(!0===k){e.target.select()}}}),e.jsxs("div",{className:C.actionButtonRow,children:[e.jsx("div",{children:!a.getConfigValue("HIDE_CHAT_ADD_FILE_BUTTON")&&m&&e.jsx(u.Button,{appearance:"subtle",size:"small",title:A("Lägg till fil"),icon:E?e.jsx(c.Spinner,{}):e.jsx(j.AddRegular,{}),onClick:()=>y.current?.click(),className:C.button})}),e.jsx(u.Button,{appearance:a.getConfigValue("SHOW_SEND_BUTTON_TEXT")?"primary":"subtle",size:a.getConfigValue("SHOW_SEND_BUTTON_TEXT")?"small":"large",title:A("Skicka"),disabled:g,icon:""===T.trim()&&0===I.length?e.jsx(d.SendRegular,{}):e.jsx(d.SendFilled,{}),onClick:R,className:a.getConfigValue("SEND_BUTTON_ROUND_BACKGROUND")?p.mergeClasses(H.roundButton,C.button):a.getConfigValue("SHOW_SEND_BUTTON_TEXT")?void 0:C.button,children:a.getConfigValue("SHOW_SEND_BUTTON_TEXT")&&e.jsx("span",{children:A("Skicka")})})]})]})]})};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime");require("react"),require("../services/codicent.js");var r=require("./Markdown.js");require("./Textarea.js");var s=require("./Button.js");require("./CompoundButton.js"),require("./Spinner.js"),require("./TextHeader.js"),require("./TypingIndicator.js"),require("./Dialog.js"),require("./ChatInput.js"),require("./CombinedPlaceholderDialog.js"),require("./Header.js");var t=require("../utils/MessageContent.js");require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js");var i=require("../config/index.js");require("../utils/cacheManager.js"),require("../lib/wavtools/lib/wav_packer.js"),require("../lib/wavtools/lib/analysis/audio_analysis.js"),require("../lib/wavtools/lib/wav_stream_player.js"),require("../lib/wavtools/lib/wav_recorder.js"),require("./FileThumbnail.js"),require("./MessageInput.js"),require("./UploadFile.js"),require("./SnapFooter.js"),require("./Profile.js"),require("./MessageItem.js"),require("./Content.js"),require("./AiInput.js"),require("./SearchBox.js"),require("./HtmlView.js"),require("./Footer.js"),require("./Page.js"),require("./QrCodeDialog.js"),require("../pages/AppFrame.js"),require("../pages/Chat.js"),require("../pages/Compose.js"),require("../pages/Snap.js"),require("../pages/Search.js"),require("../pages/Login.js"),require("../pages/CrmPage.js"),require("../pages/CrmPagePersistent.js"),require("../pages/ImageView.js"),require("../pages/FormInvite.js"),require("../pages/FormAccept.js"),require("../pages/Sales.js"),require("../pages/Purchase.js");var o=require("../hooks/useLocalization.js");require("../hooks/useAppStyles.js");var a=require("../node_modules/@griffel/react/makeStyles.esm.js"),u=require("../node_modules/@griffel/core/mergeClasses.esm.js"),n=require("../node_modules/@fluentui/tokens/lib/tokens.js"),l=require("../node_modules/@fluentui/react-text/lib/components/Text/Text.js"),g=require("../node_modules/@fluentui/react-icons/lib/icons/chunk-1.js");const d=a.makeStyles({message:{display:"flex",marginBottom:"16px",webkitUserSelect:"text",userSelect:"text"},user:{justifyContent:"flex-end"},bot:{justifyContent:"flex-start"},messageContent:{maxWidth:"80%",padding:"12px 16px",borderRadius:"16px",fontSize:"1rem",lineHeight:"1.4",whiteSpace:"pre-wrap",wordBreak:"break-word",overflow:"auto"},userMessage:{borderTopRightRadius:"0"},botMessage:{borderTopLeftRadius:"0"},newMessage:{animation:"$fadeIn 0.5s ease-in-out"}});exports.default=({sender:a,content:c,isNew:j,children:p,showSuggestions:q,onSuggestionClicked:m})=>{const C=d(),{t:f}=o.default();let x=[];if("bot"===a&&c.includes("#suggested_questions")){const e=c.split("#suggested_questions");c=e[0],x=e[1].split("\n").filter((e=>""!==e.trim())).map((e=>e.trim()))}const h=new t.default(c);let _=h.content;"user"===a&&h.content.includes("---")&&(_=h.content.split("---")[0]);const b=h.content.startsWith("Error code: ")?f("Ett fel uppstod 😟 => starta en ny chatt"):null;return e.jsx("div",{className:u.mergeClasses(C.message,"user"===a?C.user:C.bot),children:e.jsxs("div",{className:u.mergeClasses(C.messageContent,"user"===a?C.userMessage:C.botMessage,j&&C.newMessage),style:{backgroundColor:"user"===a?i.getConfigValue("CHAT_USER_BACKGROUND_COLOR")||n.tokens.colorBrandBackground:i.getConfigValue("CHAT_BOT_BACKGROUND_COLOR")||n.tokens.colorBrandBackground2,color:"user"===a?i.getConfigValue("CHAT_USER_TEXT_COLOR")||n.tokens.colorNeutralForegroundInverted:i.getConfigValue("CHAT_BOT_TEXT_COLOR")||n.tokens.colorNeutralForeground1},children:[e.jsxs(l.Text,{size:400,children:[b,!b&&e.jsx(r.default,{content:_}),h.files.length>0&&e.jsx(g.ChannelRegular,{}),q&&x&&x.length>0&&e.jsx("div",{style:{marginTop:"8px",display:"flex",gap:"8px",flexWrap:"wrap"},children:x.map(((r,t)=>e.jsx(s.Button,{size:"small",shape:"circular",onClick:()=>m?.(r),style:{textAlign:"left"},children:r},t)))})]}),p]})})};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime");require("react"),require("../services/codicent.js");var r=require("./Markdown.js");require("./Textarea.js");var s=require("./Button.js");require("./CompoundButton.js"),require("./Spinner.js"),require("./TextHeader.js"),require("./TypingIndicator.js"),require("./Dialog.js"),require("./ChatInput.js"),require("./CombinedPlaceholderDialog.js"),require("./Header.js");var i=require("../utils/MessageContent.js");require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js");var t=require("../config/index.js");require("../utils/cacheManager.js"),require("../lib/wavtools/lib/wav_packer.js"),require("../lib/wavtools/lib/analysis/audio_analysis.js"),require("../lib/wavtools/lib/wav_stream_player.js"),require("../lib/wavtools/lib/wav_recorder.js"),require("./FileThumbnail.js"),require("./MessageInput.js"),require("./UploadFile.js"),require("./SnapFooter.js"),require("./Profile.js"),require("./MessageItem.js"),require("./Content.js"),require("./AiInput.js"),require("./SearchBox.js"),require("./HtmlView.js"),require("./Footer.js"),require("./Page.js"),require("./QrCodeDialog.js"),require("./QrScanner.js");var a=require("../hooks/useLocalization.js");require("./OfflineMessage.js"),require("./LanguageSelector.js"),require("./ListView.js"),require("./RecordModal.js"),require("./BulkUploadDialog.js"),require("../pages/AppFrame.js"),require("../pages/Chat.js"),require("../pages/Compose.js"),require("../pages/Snap.js"),require("../pages/Search.js"),require("../pages/Login.js"),require("../pages/CrmPage.js"),require("../pages/CrmPagePersistent.js"),require("../pages/ImageView.js"),require("../pages/FormInvite.js"),require("../pages/FormAccept.js"),require("../pages/Sales.js"),require("../pages/Purchase.js"),require("../pages/QrScan.js"),require("react-dom/client"),require("react-router-dom"),require("../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js"),require("../hooks/useAppStyles.js");var o=require("../node_modules/@griffel/react/makeStyles.esm.js"),u=require("../node_modules/@griffel/core/mergeClasses.esm.js"),n=require("../node_modules/@fluentui/tokens/lib/tokens.js"),l=require("../node_modules/@fluentui/react-text/lib/components/Text/Text.js"),d=require("../node_modules/@fluentui/react-icons/lib/icons/chunk-1.js");const g=o.makeStyles({message:{display:"flex",marginBottom:"16px",webkitUserSelect:"text",userSelect:"text"},user:{justifyContent:"flex-end"},bot:{justifyContent:"flex-start"},messageContent:{maxWidth:"80%",padding:"12px 16px",borderRadius:"16px",fontSize:"1rem",lineHeight:"1.4",whiteSpace:"pre-wrap",wordBreak:"break-word",overflow:"auto"},userMessage:{borderTopRightRadius:"0"},botMessage:{borderTopLeftRadius:"0"},newMessage:{animation:"$fadeIn 0.5s ease-in-out"}});exports.default=({sender:o,content:c,isNew:j,children:q,showSuggestions:p,onSuggestionClicked:m})=>{const f=g(),{t:C}=a.default();let x=[];if("bot"===o&&c.includes("#suggested_questions")){const e=c.split("#suggested_questions");c=e[0],x=e[1].split("\n").filter((e=>""!==e.trim())).map((e=>e.trim()))}const h=new i.default(c);let _=h.content;"user"===o&&h.content.includes("---")&&(_=h.content.split("---")[0]);const b=h.content.startsWith("Error code: ")?C("Ett fel uppstod 😟 => starta en ny chatt"):null;return e.jsx("div",{className:u.mergeClasses(f.message,"user"===o?f.user:f.bot),children:e.jsxs("div",{className:u.mergeClasses(f.messageContent,"user"===o?f.userMessage:f.botMessage,j&&f.newMessage),style:{backgroundColor:"user"===o?t.getConfigValue("CHAT_USER_BACKGROUND_COLOR")||n.tokens.colorBrandBackground:t.getConfigValue("CHAT_BOT_BACKGROUND_COLOR")||n.tokens.colorBrandBackground2,color:"user"===o?t.getConfigValue("CHAT_USER_TEXT_COLOR")||n.tokens.colorNeutralForegroundInverted:t.getConfigValue("CHAT_BOT_TEXT_COLOR")||n.tokens.colorNeutralForeground1},children:[e.jsxs(l.Text,{size:400,children:[b,!b&&e.jsx(r.default,{content:_}),h.files.length>0&&e.jsx(d.ChannelRegular,{}),p&&x&&x.length>0&&e.jsx("div",{style:{marginTop:"8px",display:"flex",gap:"8px",flexWrap:"wrap"},children:x.map(((r,i)=>e.jsx(s.Button,{size:"small",shape:"circular",onClick:()=>m?.(r),style:{textAlign:"left"},children:r},i)))})]}),q]})})};
@@ -1 +1 @@
1
- "use strict";var e=require("react/jsx-runtime");require("react"),require("../services/codicent.js"),require("./Markdown.js");var r=require("./Textarea.js"),i=require("./Button.js");require("./CompoundButton.js");var s=require("./Text.js");require("./Spinner.js");var a=require("./Label.js");require("./TextHeader.js"),require("./TypingIndicator.js");var l=require("./Dialog.js");require("./ChatInput.js"),require("./ChatMessage.js"),require("./Header.js"),require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js"),require("../config/index.js"),require("../utils/cacheManager.js"),require("../lib/wavtools/lib/wav_packer.js"),require("../lib/wavtools/lib/analysis/audio_analysis.js"),require("../lib/wavtools/lib/wav_stream_player.js"),require("../lib/wavtools/lib/wav_recorder.js"),require("./FileThumbnail.js"),require("./MessageInput.js"),require("./UploadFile.js"),require("./SnapFooter.js"),require("./Profile.js"),require("./MessageItem.js"),require("./Content.js"),require("./AiInput.js"),require("./SearchBox.js"),require("./HtmlView.js"),require("./Footer.js"),require("./Page.js"),require("./QrCodeDialog.js"),require("../pages/AppFrame.js"),require("../pages/Chat.js"),require("../pages/Compose.js"),require("../pages/Snap.js"),require("../pages/Search.js"),require("../pages/Login.js"),require("../pages/CrmPage.js"),require("../pages/CrmPagePersistent.js"),require("../pages/ImageView.js"),require("../pages/FormInvite.js"),require("../pages/FormAccept.js"),require("../pages/Sales.js"),require("../pages/Purchase.js");var n=require("../hooks/useLocalization.js");require("../hooks/useAppStyles.js");var o=require("../node_modules/@griffel/react/makeStyles.esm.js"),t=require("../node_modules/@griffel/core/index.esm.js"),u=require("../node_modules/@fluentui/tokens/lib/tokens.js");const c=o.makeStyles({container:{display:"flex",flexDirection:"column",...t.shorthands.gap("12px")},section:{display:"flex",flexDirection:"column",...t.shorthands.gap("8px")},field:{display:"flex",flexDirection:"column",...t.shorthands.gap("4px")},fileItem:{display:"flex",alignItems:"center",...t.shorthands.gap("8px")},label:{fontWeight:u.tokens.fontWeightSemibold},textarea:{minHeight:"100px",resize:"vertical"},dialogSurface:{backgroundColor:u.tokens.colorNeutralBackground1,boxShadow:u.tokens.shadow16},dialogBody:{backgroundColor:"transparent"}});exports.CombinedPlaceholderDialog=({open:o,templateVariables:t,filePlaceholders:u,onTemplateVariablesChange:d,onFilePlaceholdersChange:j,onConfirm:p,onCancel:g,uploadFile:q})=>{const m=c(),{t:h}=n.default();return e.jsxs(l.Dialog,{open:o,children:[e.jsx(l.DialogTitle,{children:h("Fyll i information")}),e.jsx(l.DialogContent,{children:e.jsxs("div",{className:m.container,children:[t.length>0&&e.jsx("div",{className:m.section,children:t.map(((i,s)=>e.jsxs("div",{className:m.field,children:[e.jsx(a.Label,{className:m.label,children:i.name}),e.jsx(r.Textarea,{className:m.textarea,value:i.value,onChange:e=>{const r=[...t];r[s].value=e.target.value,d(r)}})]},s)))}),u.length>0&&e.jsx("div",{className:m.section,children:u.map(((r,a)=>e.jsxs("div",{className:m.fileItem,children:[e.jsx(s.Text,{weight:"semibold",children:r.description}),e.jsx(i.Button,{appearance:"primary",onClick:()=>(async e=>{const r=document.createElement("input");r.type="file";const i=await new Promise((e=>{r.onchange=r=>e(r.target.files),r.click()}));if(i&&i.length>0){const r=i[0],s=new FormData;s.append("file",r);const a=await q(r.name,s),l=[...u];l[e].fileId=a,j(l)}})(a),children:r.fileId?h("Fil vald"):h("Välj fil")})]},a)))})]})}),e.jsxs(l.DialogActions,{children:[e.jsx(i.Button,{appearance:"secondary",onClick:g,children:h("Avbryt")}),e.jsx(i.Button,{appearance:"primary",onClick:p,children:h("OK")})]})]})};
1
+ "use strict";var e=require("react/jsx-runtime");require("react"),require("../services/codicent.js"),require("./Markdown.js");var r=require("./Textarea.js"),i=require("./Button.js");require("./CompoundButton.js");var s=require("./Text.js");require("./Spinner.js");var a=require("./Label.js");require("./TextHeader.js"),require("./TypingIndicator.js");var l=require("./Dialog.js");require("./ChatInput.js"),require("./ChatMessage.js"),require("./Header.js"),require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js"),require("../config/index.js"),require("../utils/cacheManager.js"),require("../lib/wavtools/lib/wav_packer.js"),require("../lib/wavtools/lib/analysis/audio_analysis.js"),require("../lib/wavtools/lib/wav_stream_player.js"),require("../lib/wavtools/lib/wav_recorder.js"),require("./FileThumbnail.js"),require("./MessageInput.js"),require("./UploadFile.js"),require("./SnapFooter.js"),require("./Profile.js"),require("./MessageItem.js"),require("./Content.js"),require("./AiInput.js"),require("./SearchBox.js"),require("./HtmlView.js"),require("./Footer.js"),require("./Page.js"),require("./QrCodeDialog.js"),require("./QrScanner.js");var o=require("../hooks/useLocalization.js");require("./OfflineMessage.js"),require("./LanguageSelector.js"),require("./ListView.js"),require("./RecordModal.js"),require("./BulkUploadDialog.js"),require("../pages/AppFrame.js"),require("../pages/Chat.js"),require("../pages/Compose.js"),require("../pages/Snap.js"),require("../pages/Search.js"),require("../pages/Login.js"),require("../pages/CrmPage.js"),require("../pages/CrmPagePersistent.js"),require("../pages/ImageView.js"),require("../pages/FormInvite.js"),require("../pages/FormAccept.js"),require("../pages/Sales.js"),require("../pages/Purchase.js"),require("../pages/QrScan.js"),require("react-dom/client"),require("react-router-dom"),require("../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js"),require("../hooks/useAppStyles.js");var n=require("../node_modules/@griffel/react/makeStyles.esm.js"),t=require("../node_modules/@griffel/core/index.esm.js"),u=require("../node_modules/@fluentui/tokens/lib/tokens.js");const c=n.makeStyles({container:{display:"flex",flexDirection:"column",...t.shorthands.gap("12px")},section:{display:"flex",flexDirection:"column",...t.shorthands.gap("8px")},field:{display:"flex",flexDirection:"column",...t.shorthands.gap("4px")},fileItem:{display:"flex",alignItems:"center",...t.shorthands.gap("8px")},label:{fontWeight:u.tokens.fontWeightSemibold},textarea:{minHeight:"100px",resize:"vertical"},dialogSurface:{backgroundColor:u.tokens.colorNeutralBackground1,boxShadow:u.tokens.shadow16},dialogBody:{backgroundColor:"transparent"}});exports.CombinedPlaceholderDialog=({open:n,templateVariables:t,filePlaceholders:u,onTemplateVariablesChange:d,onFilePlaceholdersChange:j,onConfirm:p,onCancel:q,uploadFile:g})=>{const m=c(),{t:h}=o.default();return e.jsxs(l.Dialog,{open:n,children:[e.jsx(l.DialogTitle,{children:h("Fyll i information")}),e.jsx(l.DialogContent,{children:e.jsxs("div",{className:m.container,children:[t.length>0&&e.jsx("div",{className:m.section,children:t.map(((i,s)=>e.jsxs("div",{className:m.field,children:[e.jsx(a.Label,{className:m.label,children:i.name}),e.jsx(r.Textarea,{className:m.textarea,value:i.value,onChange:e=>{const r=[...t];r[s].value=e.target.value,d(r)}})]},s)))}),u.length>0&&e.jsx("div",{className:m.section,children:u.map(((r,a)=>e.jsxs("div",{className:m.fileItem,children:[e.jsx(s.Text,{weight:"semibold",children:r.description}),e.jsx(i.Button,{appearance:"primary",onClick:()=>(async e=>{const r=document.createElement("input");r.type="file";const i=await new Promise((e=>{r.onchange=r=>e(r.target.files),r.click()}));if(i&&i.length>0){const r=i[0],s=new FormData;s.append("file",r);const a=await g(r.name,s),l=[...u];l[e].fileId=a,j(l)}})(a),children:r.fileId?h("Fil vald"):h("Välj fil")})]},a)))})]})}),e.jsxs(l.DialogActions,{children:[e.jsx(i.Button,{appearance:"secondary",onClick:q,children:h("Avbryt")}),e.jsx(i.Button,{appearance:"primary",onClick:p,children:h("OK")})]})]})};
@@ -0,0 +1,17 @@
1
+ import { Component, ErrorInfo, ReactNode } from 'react';
2
+ interface Props {
3
+ children: ReactNode;
4
+ fallback?: ReactNode;
5
+ }
6
+ interface State {
7
+ hasError: boolean;
8
+ error: Error | null;
9
+ }
10
+ declare class ErrorBoundary extends Component<Props, State> {
11
+ constructor(props: Props);
12
+ static getDerivedStateFromError(error: Error): State;
13
+ componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
14
+ render(): ReactNode;
15
+ }
16
+ export default ErrorBoundary;
17
+ //# sourceMappingURL=ErrorBoundary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorBoundary.d.ts","sourceRoot":"","sources":["../../../src/components/ErrorBoundary.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAExD,UAAU,KAAK;IACZ,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,UAAU,KAAK;IACZ,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACtB;AAED,cAAM,aAAc,SAAQ,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;gBACpC,KAAK,EAAE,KAAK;IAQxB,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAKpD,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IAM3D,MAAM,IAAI,SAAS;CAqCrB;AAED,eAAe,aAAa,CAAC"}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var r=require("react/jsx-runtime"),e=require("react");class o extends e.Component{constructor(r){super(r),this.state={hasError:!1,error:null}}static getDerivedStateFromError(r){return{hasError:!0,error:r}}componentDidCatch(r,e){console.error("Error caught by ErrorBoundary:",r),console.error("Component stack:",e.componentStack)}render(){return this.state.hasError?this.props.fallback||r.jsxs("div",{style:{padding:"20px",margin:"20px",border:"1px solid #f5c2c7",borderRadius:"5px",backgroundColor:"#f8d7da",color:"#842029"},children:[r.jsx("h2",{children:"Something went wrong"}),r.jsx("p",{children:"The application encountered an error. Please try refreshing the page."}),r.jsxs("details",{style:{whiteSpace:"pre-wrap",margin:"10px 0"},children:[r.jsx("summary",{children:"Error Details"}),this.state.error?.toString()]}),r.jsx("button",{onClick:()=>window.location.reload(),style:{padding:"8px 16px",backgroundColor:"#0d6efd",color:"white",border:"none",borderRadius:"4px",cursor:"pointer"},children:"Refresh Page"})]}):this.props.children}}exports.default=o;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),s=require("react"),r=require("react-router-dom");require("../services/codicent.js"),require("./Markdown.js"),require("./Textarea.js"),require("./Button.js"),require("./CompoundButton.js"),require("./Spinner.js"),require("./TextHeader.js"),require("./TypingIndicator.js"),require("./Dialog.js"),require("./ChatInput.js"),require("./CombinedPlaceholderDialog.js"),require("./ChatMessage.js"),require("./Header.js"),require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js");var i=require("../config/index.js");require("../utils/cacheManager.js"),require("../lib/wavtools/lib/wav_packer.js"),require("../lib/wavtools/lib/analysis/audio_analysis.js"),require("../lib/wavtools/lib/wav_stream_player.js"),require("../lib/wavtools/lib/wav_recorder.js"),require("./FileThumbnail.js"),require("./MessageInput.js"),require("./UploadFile.js"),require("./SnapFooter.js"),require("./Profile.js"),require("./MessageItem.js"),require("./Content.js"),require("./AiInput.js"),require("./SearchBox.js"),require("./HtmlView.js"),require("./Page.js"),require("./QrCodeDialog.js"),require("../pages/AppFrame.js"),require("../pages/Chat.js"),require("../pages/Compose.js"),require("../pages/Snap.js"),require("../pages/Search.js"),require("../pages/Login.js"),require("../pages/CrmPage.js"),require("../pages/CrmPagePersistent.js"),require("../pages/ImageView.js"),require("../pages/FormInvite.js"),require("../pages/FormAccept.js"),require("../pages/Sales.js"),require("../pages/Purchase.js");var o=require("../hooks/useLocalization.js");require("../hooks/useAppStyles.js");var n=require("../node_modules/@griffel/react/makeStyles.esm.js"),a=require("../node_modules/@griffel/core/index.esm.js"),t=require("../node_modules/@fluentui/tokens/lib/tokens.js"),l=require("../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-8.js"),u=require("../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-3.js"),c=require("../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-0.js"),d=require("../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-4.js"),j=require("../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-14.js"),g=require("../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-18.js");const p=n.makeStyles({footer:{...a.shorthands.padding("14px"),textAlign:"center",display:"flex",justifyContent:"space-around",alignItems:"center",position:"sticky",bottom:0,zIndex:1e3,paddingBottom:"22px",width:"100%"},container:{display:"flex",justifyContent:"space-around",alignItems:"center",maxWidth:"480px",width:"100%"},button:{color:t.tokens.colorNeutralForegroundOnBrand,height:"24px",width:"24px",...a.shorthands.borderWidth("0")},link:{textDecoration:"none",color:"inherit",display:"flex",flexDirection:"column",alignItems:"center","&.selected":{border:"none"},"&:hover":{textDecoration:"none"}},buttonText:{fontSize:"12px"}}),m=()=>{const n=p(),a=r.useLocation(),[m,x]=s.useState(null),{t:h}=o.default(),q={backgroundColor:i.getConfigValue("APP_FOOTER_COLOR")||t.tokens.colorBrandBackground,color:i.getConfigValue("APP_FOOTER_TEXT_COLOR")||t.tokens.colorNeutralForegroundOnBrand},C=i.getConfigValue("APP_FOOTER_SELECTED_COLOR")||void 0;return s.useEffect((()=>{const e=a.pathname;"/"===e?x("home"):"/chat"===e?x("chat"):"/new"===e?x("save"):"/menu"===e?x("menu"):"/log"===e?x("log"):"/canvas"===e?x("canvas"):"/snap"===e&&x("snap")}),[a]),s.useEffect((()=>{m&&console.log(`footer-button: ${m}`)}),[m]),e.jsx("footer",{className:n.footer,style:q,children:e.jsxs("div",{className:n.container,children:[e.jsxs(r.Link,{to:"/",className:`${n.link} ${"home"===m?"selected":""}`,onClick:()=>x("home"),style:"home"===m?{color:C}:void 0,children:["home"===m?e.jsx(l.Home24Filled,{}):e.jsx(l.Home24Regular,{}),e.jsx("p",{className:n.buttonText,children:h("Hem")})]}),!i.getConfigValue("HIDE_CHAT_BUTTON")&&e.jsxs(r.Link,{to:"/chat",className:`${n.link} ${"chat"===m?"selected":""}`,onClick:()=>x("chat"),style:"chat"===m?{color:C}:void 0,children:["chat"===m?e.jsx(u.Chat24Filled,{}):e.jsx(u.Chat24Regular,{}),e.jsx("p",{className:n.buttonText,children:h(i.getConfigValue("APP_CHAT_TITLE")||"Chatt")})]}),!i.getConfigValue("HIDE_SAVE_BUTTON")&&e.jsxs(r.Link,{to:"/new",className:`${n.link} ${"save"===m?"selected":""}`,onClick:()=>x("save"),style:"save"===m?{color:C}:void 0,children:["save"===m?e.jsx(c.AddSquare24Filled,{}):e.jsx(c.AddSquare24Regular,{}),e.jsx("p",{className:n.buttonText,children:h(i.getConfigValue("APP_SAVE_TITLE")||"Spara")})]}),i.getConfigValue("SHOW_SNAP_BUTTON")&&e.jsxs(r.Link,{to:"/snap",className:`${n.link} ${"snap"===m?"selected":""}`,onClick:()=>x("snap"),style:"snap"===m?{color:C}:void 0,children:["snap"===m?e.jsx(d.ClipboardDay24Filled,{}):e.jsx(d.ClipboardDay24Regular,{}),e.jsx("p",{className:n.buttonText,children:h("Snap")})]}),i.getConfigValue("SHOW_LOGBOOK_BUTTON")&&e.jsxs(r.Link,{to:"/log",className:`${n.link} ${"log"===m?"selected":""}`,onClick:()=>x("log"),style:"log"===m?{color:C}:void 0,children:["log"===m?e.jsx(j.SlideText24Filled,{}):e.jsx(j.SlideText24Regular,{}),e.jsx("p",{className:n.buttonText,children:h(i.getConfigValue("APP_LOGBOOK_TITLE")||"Loggbok")})]}),i.getConfigValue("SHOW_CANVAS_BUTTON")&&e.jsxs(r.Link,{to:"/canvas",className:`${n.link} ${"canvas"===m?"selected":""}`,onClick:()=>x("canvas"),style:"canvas"===m?{color:C}:void 0,children:["canvas"===m?e.jsx(g.Whiteboard24Filled,{}):e.jsx(g.Whiteboard24Regular,{}),e.jsx("p",{className:n.buttonText,children:h("Kanvas")})]}),!i.getConfigValue("HIDE_MENU_BUTTON")&&e.jsxs(r.Link,{to:"/menu",className:`${n.link} ${"menu"===m?"selected":""}`,onClick:()=>x("menu"),style:"menu"===m?{color:C}:void 0,children:["menu"===m?e.jsx(c.Apps24Filled,{}):e.jsx(c.Apps24Regular,{}),e.jsx("p",{className:n.buttonText,children:h("Meny")})]})]})})};exports.Footer=m,exports.default=m;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),s=require("react"),r=require("react-router-dom");require("../services/codicent.js"),require("./Markdown.js"),require("./Textarea.js"),require("./Button.js"),require("./CompoundButton.js"),require("./Spinner.js"),require("./TextHeader.js"),require("./TypingIndicator.js"),require("./Dialog.js"),require("./ChatInput.js"),require("./CombinedPlaceholderDialog.js"),require("./ChatMessage.js"),require("./Header.js"),require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js");var i=require("../config/index.js");require("../utils/cacheManager.js"),require("../lib/wavtools/lib/wav_packer.js"),require("../lib/wavtools/lib/analysis/audio_analysis.js"),require("../lib/wavtools/lib/wav_stream_player.js"),require("../lib/wavtools/lib/wav_recorder.js"),require("./FileThumbnail.js"),require("./MessageInput.js"),require("./UploadFile.js"),require("./SnapFooter.js"),require("./Profile.js"),require("./MessageItem.js"),require("./Content.js"),require("./AiInput.js"),require("./SearchBox.js"),require("./HtmlView.js"),require("./Page.js"),require("./QrCodeDialog.js"),require("./QrScanner.js");var o=require("../hooks/useLocalization.js");require("./OfflineMessage.js"),require("./LanguageSelector.js"),require("./ListView.js"),require("./RecordModal.js"),require("./BulkUploadDialog.js"),require("../pages/AppFrame.js"),require("../pages/Chat.js"),require("../pages/Compose.js"),require("../pages/Snap.js"),require("../pages/Search.js"),require("../pages/Login.js"),require("../pages/CrmPage.js"),require("../pages/CrmPagePersistent.js"),require("../pages/ImageView.js"),require("../pages/FormInvite.js"),require("../pages/FormAccept.js"),require("../pages/Sales.js"),require("../pages/Purchase.js"),require("../pages/QrScan.js"),require("react-dom/client"),require("../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js"),require("../hooks/useAppStyles.js");var a=require("../node_modules/@griffel/react/makeStyles.esm.js"),n=require("../node_modules/@griffel/core/index.esm.js"),t=require("../node_modules/@fluentui/tokens/lib/tokens.js"),l=require("../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-8.js"),u=require("../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-3.js"),c=require("../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-0.js"),d=require("../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-4.js"),j=require("../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-14.js"),g=require("../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-18.js");const p=a.makeStyles({footer:{...n.shorthands.padding("14px"),textAlign:"center",display:"flex",justifyContent:"space-around",alignItems:"center",position:"sticky",bottom:0,zIndex:1e3,paddingBottom:"22px",width:"100%"},container:{display:"flex",justifyContent:"space-around",alignItems:"center",maxWidth:"480px",width:"100%"},button:{color:t.tokens.colorNeutralForegroundOnBrand,height:"24px",width:"24px",...n.shorthands.borderWidth("0")},link:{textDecoration:"none",color:"inherit",display:"flex",flexDirection:"column",alignItems:"center","&.selected":{border:"none"},"&:hover":{textDecoration:"none"}},buttonText:{fontSize:"12px"}}),m=()=>{const a=p(),n=r.useLocation(),[m,q]=s.useState(null),{t:h}=o.default(),x={backgroundColor:i.getConfigValue("APP_FOOTER_COLOR")||t.tokens.colorBrandBackground,color:i.getConfigValue("APP_FOOTER_TEXT_COLOR")||t.tokens.colorNeutralForegroundOnBrand},f=i.getConfigValue("APP_FOOTER_SELECTED_COLOR")||void 0;return s.useEffect((()=>{const e=n.pathname;"/"===e?q("home"):"/chat"===e?q("chat"):"/new"===e?q("save"):"/menu"===e?q("menu"):"/log"===e?q("log"):"/canvas"===e?q("canvas"):"/snap"===e&&q("snap")}),[n]),s.useEffect((()=>{m&&console.log(`footer-button: ${m}`)}),[m]),e.jsx("footer",{className:a.footer,style:x,children:e.jsxs("div",{className:a.container,children:[e.jsxs(r.Link,{to:"/",className:`${a.link} ${"home"===m?"selected":""}`,onClick:()=>q("home"),style:"home"===m?{color:f}:void 0,children:["home"===m?e.jsx(l.Home24Filled,{}):e.jsx(l.Home24Regular,{}),e.jsx("p",{className:a.buttonText,children:h("Hem")})]}),!i.getConfigValue("HIDE_CHAT_BUTTON")&&e.jsxs(r.Link,{to:"/chat",className:`${a.link} ${"chat"===m?"selected":""}`,onClick:()=>q("chat"),style:"chat"===m?{color:f}:void 0,children:["chat"===m?e.jsx(u.Chat24Filled,{}):e.jsx(u.Chat24Regular,{}),e.jsx("p",{className:a.buttonText,children:h(i.getConfigValue("APP_CHAT_TITLE")||"Chatt")})]}),!i.getConfigValue("HIDE_SAVE_BUTTON")&&e.jsxs(r.Link,{to:"/new",className:`${a.link} ${"save"===m?"selected":""}`,onClick:()=>q("save"),style:"save"===m?{color:f}:void 0,children:["save"===m?e.jsx(c.AddSquare24Filled,{}):e.jsx(c.AddSquare24Regular,{}),e.jsx("p",{className:a.buttonText,children:h(i.getConfigValue("APP_SAVE_TITLE")||"Spara")})]}),i.getConfigValue("SHOW_SNAP_BUTTON")&&e.jsxs(r.Link,{to:"/snap",className:`${a.link} ${"snap"===m?"selected":""}`,onClick:()=>q("snap"),style:"snap"===m?{color:f}:void 0,children:["snap"===m?e.jsx(d.ClipboardDay24Filled,{}):e.jsx(d.ClipboardDay24Regular,{}),e.jsx("p",{className:a.buttonText,children:h("Snap")})]}),i.getConfigValue("SHOW_LOGBOOK_BUTTON")&&e.jsxs(r.Link,{to:"/log",className:`${a.link} ${"log"===m?"selected":""}`,onClick:()=>q("log"),style:"log"===m?{color:f}:void 0,children:["log"===m?e.jsx(j.SlideText24Filled,{}):e.jsx(j.SlideText24Regular,{}),e.jsx("p",{className:a.buttonText,children:h(i.getConfigValue("APP_LOGBOOK_TITLE")||"Loggbok")})]}),i.getConfigValue("SHOW_CANVAS_BUTTON")&&e.jsxs(r.Link,{to:"/canvas",className:`${a.link} ${"canvas"===m?"selected":""}`,onClick:()=>q("canvas"),style:"canvas"===m?{color:f}:void 0,children:["canvas"===m?e.jsx(g.Whiteboard24Filled,{}):e.jsx(g.Whiteboard24Regular,{}),e.jsx("p",{className:a.buttonText,children:h("Kanvas")})]}),!i.getConfigValue("HIDE_MENU_BUTTON")&&e.jsxs(r.Link,{to:"/menu",className:`${a.link} ${"menu"===m?"selected":""}`,onClick:()=>q("menu"),style:"menu"===m?{color:f}:void 0,children:["menu"===m?e.jsx(c.Apps24Filled,{}):e.jsx(c.Apps24Regular,{}),e.jsx("p",{className:a.buttonText,children:h("Meny")})]})]})})};exports.Footer=m,exports.default=m;