@peers-app/peers-ui 0.14.1 → 0.15.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.
- package/.github/workflows/publish.yml +8 -5
- package/babel.config.js +4 -4
- package/biome.json +198 -0
- package/dist/command-palette/command-palette-ui.d.ts +1 -2
- package/dist/command-palette/command-palette-ui.js +175 -244
- package/dist/command-palette/command-palette.js +65 -64
- package/dist/components/chat-overlay.d.ts +2 -2
- package/dist/components/chat-overlay.js +160 -217
- package/dist/components/checkbox.d.ts +5 -4
- package/dist/components/checkbox.js +4 -7
- package/dist/components/group-switcher.d.ts +1 -2
- package/dist/components/group-switcher.js +119 -159
- package/dist/components/input-date.d.ts +3 -3
- package/dist/components/input-date.js +6 -6
- package/dist/components/input-number.d.ts +7 -6
- package/dist/components/input-number.js +25 -20
- package/dist/components/input.d.ts +5 -4
- package/dist/components/input.js +4 -7
- package/dist/components/inverse-lazy-list.d.ts +3 -3
- package/dist/components/inverse-lazy-list.js +13 -47
- package/dist/components/io-schema-values.d.ts +5 -6
- package/dist/components/io-schema-values.js +28 -65
- package/dist/components/io-schema.d.ts +4 -5
- package/dist/components/io-schema.js +42 -79
- package/dist/components/lazy-list.d.ts +3 -3
- package/dist/components/lazy-list.js +38 -58
- package/dist/components/list-screen.d.ts +3 -8
- package/dist/components/list-screen.js +28 -23
- package/dist/components/loading-indicator.d.ts +1 -2
- package/dist/components/loading-indicator.js +2 -6
- package/dist/components/markdown-editor/autolink-plugin.js +5 -8
- package/dist/components/markdown-editor/editor-inline.d.ts +2 -3
- package/dist/components/markdown-editor/editor-inline.js +2 -6
- package/dist/components/markdown-editor/editor.d.ts +6 -6
- package/dist/components/markdown-editor/editor.js +9 -19
- package/dist/components/markdown-editor/markdown-plugin.d.ts +1 -1
- package/dist/components/markdown-editor/markdown-plugin.js +20 -21
- package/dist/components/markdown-editor/mention-node.d.ts +2 -2
- package/dist/components/markdown-editor/mention-node.js +24 -24
- package/dist/components/markdown-editor/mentions-plugin.d.ts +2 -2
- package/dist/components/markdown-editor/mentions-plugin.js +61 -62
- package/dist/components/markdown-editor/theme.js +28 -28
- package/dist/components/markdown-editor/toolbar.d.ts +2 -3
- package/dist/components/markdown-editor/toolbar.js +32 -49
- package/dist/components/markdown-with-mentions.d.ts +1 -1
- package/dist/components/markdown-with-mentions.js +43 -43
- package/dist/components/message-logs/message-logs.d.ts +1 -2
- package/dist/components/message-logs/message-logs.js +91 -116
- package/dist/components/messages/avatar.d.ts +3 -4
- package/dist/components/messages/avatar.js +37 -46
- package/dist/components/messages/channel-message-list.d.ts +5 -6
- package/dist/components/messages/channel-message-list.js +34 -34
- package/dist/components/messages/channel-view.d.ts +1 -2
- package/dist/components/messages/channel-view.js +23 -57
- package/dist/components/messages/message-compose.d.ts +3 -4
- package/dist/components/messages/message-compose.js +27 -38
- package/dist/components/messages/message-display.d.ts +2 -3
- package/dist/components/messages/message-display.js +42 -95
- package/dist/components/messages/thread-message-list.d.ts +4 -5
- package/dist/components/messages/thread-message-list.js +29 -29
- package/dist/components/router.d.ts +1 -2
- package/dist/components/router.js +58 -66
- package/dist/components/save-button.d.ts +3 -3
- package/dist/components/save-button.js +23 -33
- package/dist/components/sortable-list.d.ts +11 -12
- package/dist/components/sortable-list.js +42 -22
- package/dist/components/tabs.d.ts +3 -3
- package/dist/components/tabs.js +16 -47
- package/dist/components/tooltip.d.ts +4 -4
- package/dist/components/tooltip.js +4 -9
- package/dist/components/trust-level-badge.d.ts +2 -3
- package/dist/components/trust-level-badge.js +16 -16
- package/dist/components/trust-level-dropdown.d.ts +3 -4
- package/dist/components/trust-level-dropdown.js +32 -55
- package/dist/components/typeahead.d.ts +3 -3
- package/dist/components/typeahead.js +48 -89
- package/dist/components/voice-indicator.d.ts +2 -2
- package/dist/components/voice-indicator.js +93 -106
- package/dist/components/voice-subscribe-events.d.ts +32 -0
- package/dist/components/voice-subscribe-events.js +2 -0
- package/dist/globals.d.ts +3 -5
- package/dist/globals.js +22 -33
- package/dist/hooks.d.ts +5 -5
- package/dist/hooks.js +22 -12
- package/dist/hooks.test.js +129 -145
- package/dist/index.d.ts +9 -8
- package/dist/index.js +13 -12
- package/dist/mention-configs.d.ts +2 -2
- package/dist/mention-configs.js +55 -42
- package/dist/screens/assistants/assistant-config.d.ts +2 -3
- package/dist/screens/assistants/assistant-config.js +9 -22
- package/dist/screens/assistants/assistant-details.d.ts +1 -2
- package/dist/screens/assistants/assistant-details.js +13 -28
- package/dist/screens/assistants/assistant-info.d.ts +2 -3
- package/dist/screens/assistants/assistant-info.js +3 -17
- package/dist/screens/assistants/assistant-list.d.ts +1 -2
- package/dist/screens/assistants/assistant-list.js +15 -56
- package/dist/screens/assistants/assistant-tools.d.ts +2 -3
- package/dist/screens/assistants/assistant-tools.js +10 -24
- package/dist/screens/console-logs/console-logs-list.d.ts +1 -2
- package/dist/screens/console-logs/console-logs-list.js +130 -134
- package/dist/screens/console-logs/log-display.d.ts +2 -3
- package/dist/screens/console-logs/log-display.js +40 -42
- package/dist/screens/console-logs/log-filters.d.ts +1 -2
- package/dist/screens/console-logs/log-filters.js +2 -24
- package/dist/screens/console-logs/mobile-log-card.d.ts +2 -3
- package/dist/screens/console-logs/mobile-log-card.js +64 -67
- package/dist/screens/console-logs/resizable-table-header.d.ts +1 -2
- package/dist/screens/console-logs/resizable-table-header.js +31 -67
- package/dist/screens/contacts/contact-details.d.ts +1 -2
- package/dist/screens/contacts/contact-details.js +16 -46
- package/dist/screens/contacts/contact-list.d.ts +1 -2
- package/dist/screens/contacts/contact-list.js +44 -103
- package/dist/screens/contacts/index.d.ts +4 -4
- package/dist/screens/contacts/index.js +1 -1
- package/dist/screens/contacts/user-connect.d.ts +1 -2
- package/dist/screens/contacts/user-connect.js +85 -186
- package/dist/screens/data-explorer/data-explorer.d.ts +1 -2
- package/dist/screens/data-explorer/data-explorer.js +61 -181
- package/dist/screens/data-explorer/index.d.ts +2 -2
- package/dist/screens/data-explorer/query-executor.d.ts +1 -2
- package/dist/screens/data-explorer/query-executor.js +56 -166
- package/dist/screens/groups/group-details.d.ts +1 -2
- package/dist/screens/groups/group-details.js +27 -122
- package/dist/screens/groups/group-invite-listener.d.ts +2 -3
- package/dist/screens/groups/group-invite-listener.js +8 -104
- package/dist/screens/groups/group-list.d.ts +1 -2
- package/dist/screens/groups/group-list.js +56 -133
- package/dist/screens/groups/group-members.d.ts +2 -3
- package/dist/screens/groups/group-members.js +62 -132
- package/dist/screens/groups/index.d.ts +4 -4
- package/dist/screens/groups/index.js +1 -1
- package/dist/screens/join-group/index.d.ts +2 -2
- package/dist/screens/join-group/join-group.d.ts +1 -2
- package/dist/screens/join-group/join-group.js +9 -109
- package/dist/screens/network-viewer/connection-troubleshooter.d.ts +2 -3
- package/dist/screens/network-viewer/connection-troubleshooter.js +89 -193
- package/dist/screens/network-viewer/cpu-usage-graph.d.ts +1 -2
- package/dist/screens/network-viewer/cpu-usage-graph.js +60 -99
- package/dist/screens/network-viewer/device-details-modal.d.ts +1 -2
- package/dist/screens/network-viewer/device-details-modal.js +25 -177
- package/dist/screens/network-viewer/group-details-modal.d.ts +1 -2
- package/dist/screens/network-viewer/group-details-modal.js +31 -142
- package/dist/screens/network-viewer/index.d.ts +4 -4
- package/dist/screens/network-viewer/index.js +3 -3
- package/dist/screens/network-viewer/network-viewer-ipc.d.ts +22 -0
- package/dist/screens/network-viewer/network-viewer-ipc.js +6 -0
- package/dist/screens/network-viewer/network-viewer.d.ts +1 -2
- package/dist/screens/network-viewer/network-viewer.js +91 -296
- package/dist/screens/network-viewer/usage-graph.d.ts +1 -2
- package/dist/screens/network-viewer/usage-graph.js +78 -110
- package/dist/screens/packages/package-details.d.ts +1 -2
- package/dist/screens/packages/package-details.js +35 -41
- package/dist/screens/packages/package-info.d.ts +2 -2
- package/dist/screens/packages/package-info.js +33 -86
- package/dist/screens/packages/package-list.d.ts +1 -2
- package/dist/screens/packages/package-list.js +42 -106
- package/dist/screens/packages/package-new-local.d.ts +1 -2
- package/dist/screens/packages/package-new-local.js +13 -19
- package/dist/screens/packages/package-versions.d.ts +2 -3
- package/dist/screens/packages/package-versions.js +29 -96
- package/dist/screens/peer-types/peer-type-details.d.ts +3 -4
- package/dist/screens/peer-types/peer-type-details.js +26 -78
- package/dist/screens/peer-types/peer-type-list.d.ts +1 -2
- package/dist/screens/peer-types/peer-type-list.js +13 -24
- package/dist/screens/search/global-search.d.ts +1 -2
- package/dist/screens/search/global-search.js +104 -182
- package/dist/screens/settings/color-mode-dropdown.d.ts +3 -4
- package/dist/screens/settings/color-mode-dropdown.js +18 -37
- package/dist/screens/settings/settings-page.d.ts +1 -1
- package/dist/screens/settings/settings-page.js +83 -235
- package/dist/screens/settings/voice-settings-agent.d.ts +1 -1
- package/dist/screens/settings/voice-settings-agent.js +7 -44
- package/dist/screens/settings/voice-settings-api-keys.d.ts +2 -2
- package/dist/screens/settings/voice-settings-api-keys.js +2 -29
- package/dist/screens/settings/voice-settings-output.d.ts +2 -2
- package/dist/screens/settings/voice-settings-output.js +2 -40
- package/dist/screens/settings/voice-settings-providers.d.ts +2 -2
- package/dist/screens/settings/voice-settings-providers.js +2 -19
- package/dist/screens/settings/voice-settings-types.d.ts +4 -4
- package/dist/screens/settings/voice-settings-types.js +31 -31
- package/dist/screens/settings/voice-settings-wake-word.d.ts +2 -2
- package/dist/screens/settings/voice-settings-wake-word.js +2 -33
- package/dist/screens/settings/voice-settings.d.ts +1 -1
- package/dist/screens/settings/voice-settings.js +35 -112
- package/dist/screens/setup-user.d.ts +1 -2
- package/dist/screens/setup-user.js +38 -116
- package/dist/screens/tools/tool-code.d.ts +2 -3
- package/dist/screens/tools/tool-code.js +9 -13
- package/dist/screens/tools/tool-details.d.ts +1 -2
- package/dist/screens/tools/tool-details.js +26 -39
- package/dist/screens/tools/tool-info.d.ts +2 -3
- package/dist/screens/tools/tool-info.js +9 -48
- package/dist/screens/tools/tool-list.d.ts +1 -2
- package/dist/screens/tools/tool-list.js +33 -65
- package/dist/screens/tools/tool-schema.d.ts +2 -3
- package/dist/screens/tools/tool-schema.js +2 -13
- package/dist/screens/tools/tool-test-details.d.ts +1 -2
- package/dist/screens/tools/tool-test-details.js +12 -28
- package/dist/screens/tools/tool-test-list.d.ts +1 -2
- package/dist/screens/tools/tool-test-list.js +17 -56
- package/dist/screens/variables/variable-details.d.ts +1 -2
- package/dist/screens/variables/variable-details.js +19 -86
- package/dist/screens/variables/variable-list.d.ts +1 -2
- package/dist/screens/variables/variable-list.js +16 -27
- package/dist/screens/welcome-modal.d.ts +1 -2
- package/dist/screens/welcome-modal.js +44 -111
- package/dist/screens/workflows/workflow-details.d.ts +1 -2
- package/dist/screens/workflows/workflow-details.js +17 -31
- package/dist/screens/workflows/workflow-info.d.ts +2 -3
- package/dist/screens/workflows/workflow-info.js +2 -9
- package/dist/screens/workflows/workflow-instructions.d.ts +2 -3
- package/dist/screens/workflows/workflow-instructions.js +23 -55
- package/dist/screens/workflows/workflow-list.d.ts +1 -2
- package/dist/screens/workflows/workflow-list.js +23 -62
- package/dist/setupTests.d.ts +1 -1
- package/dist/setupTests.js +10 -11
- package/dist/system-apps/assistants.app.d.ts +1 -1
- package/dist/system-apps/assistants.app.js +3 -3
- package/dist/system-apps/console-logs.app.d.ts +1 -1
- package/dist/system-apps/console-logs.app.js +3 -3
- package/dist/system-apps/contacts.app.d.ts +1 -1
- package/dist/system-apps/contacts.app.js +4 -4
- package/dist/system-apps/data-explorer.app.d.ts +1 -1
- package/dist/system-apps/data-explorer.app.js +4 -4
- package/dist/system-apps/groups.app.d.ts +1 -1
- package/dist/system-apps/groups.app.js +4 -4
- package/dist/system-apps/index.d.ts +17 -17
- package/dist/system-apps/index.js +45 -45
- package/dist/system-apps/join-group.app.d.ts +1 -1
- package/dist/system-apps/join-group.app.js +4 -4
- package/dist/system-apps/mobile-settings.app.d.ts +1 -1
- package/dist/system-apps/mobile-settings.app.js +3 -3
- package/dist/system-apps/network-viewer.app.d.ts +1 -1
- package/dist/system-apps/network-viewer.app.js +4 -4
- package/dist/system-apps/packages.app.d.ts +1 -1
- package/dist/system-apps/packages.app.js +3 -3
- package/dist/system-apps/search.app.d.ts +1 -1
- package/dist/system-apps/search.app.js +4 -4
- package/dist/system-apps/settings.app.d.ts +1 -1
- package/dist/system-apps/settings.app.js +3 -3
- package/dist/system-apps/threads.app.d.ts +1 -1
- package/dist/system-apps/threads.app.js +3 -3
- package/dist/system-apps/tools.app.d.ts +1 -1
- package/dist/system-apps/tools.app.js +3 -3
- package/dist/system-apps/types.app.d.ts +1 -1
- package/dist/system-apps/types.app.js +3 -3
- package/dist/system-apps/variables.app.d.ts +1 -1
- package/dist/system-apps/variables.app.js +3 -3
- package/dist/system-apps/workflows.app.d.ts +1 -1
- package/dist/system-apps/workflows.app.js +3 -3
- package/dist/tabs-layout/tabs-layout.d.ts +2 -3
- package/dist/tabs-layout/tabs-layout.js +215 -246
- package/dist/tabs-layout/tabs-state.d.ts +2 -2
- package/dist/tabs-layout/tabs-state.js +73 -61
- package/dist/ui-defaults/index.d.ts +2 -2
- package/dist/ui-defaults/list-screen.d.ts +2 -3
- package/dist/ui-defaults/list-screen.js +33 -37
- package/dist/ui-defaults/markdown-field.js +24 -56
- package/dist/ui-router/routes-loader.d.ts +1 -1
- package/dist/ui-router/routes-loader.js +17 -13
- package/dist/ui-router/ui-loader.d.ts +6 -6
- package/dist/ui-router/ui-loader.js +172 -268
- package/dist/utils.js +49 -39
- package/jest.config.js +16 -16
- package/package.json +16 -14
- package/src/command-palette/command-palette-ui.tsx +261 -237
- package/src/command-palette/command-palette.ts +81 -78
- package/src/components/chat-overlay.tsx +366 -261
- package/src/components/checkbox.tsx +15 -12
- package/src/components/group-switcher.tsx +150 -105
- package/src/components/input-date.tsx +17 -16
- package/src/components/input-number.tsx +47 -31
- package/src/components/input.tsx +15 -12
- package/src/components/inverse-lazy-list.tsx +14 -13
- package/src/components/io-schema-values.tsx +51 -69
- package/src/components/io-schema.tsx +94 -69
- package/src/components/lazy-list.tsx +51 -34
- package/src/components/list-screen.tsx +51 -35
- package/src/components/loading-indicator.tsx +2 -4
- package/src/components/markdown-editor/autolink-plugin.tsx +4 -11
- package/src/components/markdown-editor/editor-inline.tsx +3 -4
- package/src/components/markdown-editor/editor.tsx +53 -51
- package/src/components/markdown-editor/markdown-plugin.tsx +48 -40
- package/src/components/markdown-editor/mention-node.ts +39 -38
- package/src/components/markdown-editor/mentions-plugin.tsx +99 -101
- package/src/components/markdown-editor/theme.ts +28 -29
- package/src/components/markdown-editor/toolbar.tsx +53 -47
- package/src/components/markdown-with-mentions.tsx +56 -46
- package/src/components/message-logs/message-logs.tsx +225 -165
- package/src/components/messages/avatar.tsx +70 -52
- package/src/components/messages/channel-message-list.tsx +80 -68
- package/src/components/messages/channel-view.tsx +34 -33
- package/src/components/messages/message-compose.tsx +84 -67
- package/src/components/messages/message-display.tsx +103 -89
- package/src/components/messages/thread-message-list.tsx +53 -44
- package/src/components/router.tsx +42 -43
- package/src/components/save-button.tsx +43 -39
- package/src/components/sortable-list.tsx +77 -49
- package/src/components/tabs.tsx +31 -31
- package/src/components/tooltip.tsx +21 -28
- package/src/components/trust-level-badge.tsx +15 -11
- package/src/components/trust-level-dropdown.tsx +49 -19
- package/src/components/typeahead.tsx +57 -59
- package/src/components/voice-indicator.tsx +158 -141
- package/src/components/voice-subscribe-events.ts +20 -0
- package/src/globals.tsx +42 -40
- package/src/hooks.test.tsx +141 -134
- package/src/hooks.ts +80 -48
- package/src/index.tsx +17 -10
- package/src/mention-configs.ts +122 -68
- package/src/screens/assistants/assistant-config.tsx +28 -18
- package/src/screens/assistants/assistant-details.tsx +35 -36
- package/src/screens/assistants/assistant-info.tsx +16 -11
- package/src/screens/assistants/assistant-list.tsx +37 -34
- package/src/screens/assistants/assistant-tools.tsx +41 -20
- package/src/screens/console-logs/console-logs-list.tsx +173 -140
- package/src/screens/console-logs/log-display.tsx +65 -38
- package/src/screens/console-logs/log-filters.tsx +4 -3
- package/src/screens/console-logs/mobile-log-card.tsx +78 -71
- package/src/screens/console-logs/resizable-table-header.tsx +29 -21
- package/src/screens/contacts/contact-details.tsx +29 -30
- package/src/screens/contacts/contact-list.tsx +71 -60
- package/src/screens/contacts/index.ts +5 -5
- package/src/screens/contacts/user-connect.tsx +177 -171
- package/src/screens/data-explorer/data-explorer.tsx +134 -98
- package/src/screens/data-explorer/index.ts +2 -3
- package/src/screens/data-explorer/query-executor.tsx +90 -80
- package/src/screens/groups/group-details.tsx +120 -101
- package/src/screens/groups/group-invite-listener.tsx +34 -37
- package/src/screens/groups/group-list.tsx +119 -103
- package/src/screens/groups/group-members.tsx +225 -164
- package/src/screens/groups/index.ts +5 -6
- package/src/screens/join-group/index.ts +2 -2
- package/src/screens/join-group/join-group.tsx +41 -39
- package/src/screens/network-viewer/connection-troubleshooter.tsx +145 -104
- package/src/screens/network-viewer/cpu-usage-graph.tsx +39 -43
- package/src/screens/network-viewer/device-details-modal.tsx +46 -59
- package/src/screens/network-viewer/group-details-modal.tsx +68 -49
- package/src/screens/network-viewer/index.ts +4 -5
- package/src/screens/network-viewer/network-viewer-ipc.ts +23 -0
- package/src/screens/network-viewer/network-viewer.tsx +261 -236
- package/src/screens/network-viewer/usage-graph.tsx +57 -49
- package/src/screens/packages/package-details.tsx +43 -35
- package/src/screens/packages/package-info.tsx +107 -66
- package/src/screens/packages/package-list.tsx +175 -98
- package/src/screens/packages/package-new-local.tsx +28 -26
- package/src/screens/packages/package-versions.tsx +102 -77
- package/src/screens/peer-types/peer-type-details.tsx +60 -50
- package/src/screens/peer-types/peer-type-list.tsx +20 -30
- package/src/screens/search/global-search.tsx +153 -137
- package/src/screens/settings/color-mode-dropdown.tsx +52 -35
- package/src/screens/settings/settings-page.tsx +185 -148
- package/src/screens/settings/voice-settings-agent.tsx +13 -12
- package/src/screens/settings/voice-settings-api-keys.tsx +14 -12
- package/src/screens/settings/voice-settings-output.tsx +12 -11
- package/src/screens/settings/voice-settings-providers.tsx +7 -3
- package/src/screens/settings/voice-settings-types.ts +52 -49
- package/src/screens/settings/voice-settings-wake-word.tsx +25 -9
- package/src/screens/settings/voice-settings.tsx +66 -43
- package/src/screens/setup-user.tsx +88 -41
- package/src/screens/tools/tool-code.tsx +12 -17
- package/src/screens/tools/tool-details.tsx +28 -28
- package/src/screens/tools/tool-info.tsx +14 -19
- package/src/screens/tools/tool-list.tsx +58 -40
- package/src/screens/tools/tool-schema.tsx +16 -9
- package/src/screens/tools/tool-test-details.tsx +11 -22
- package/src/screens/tools/tool-test-list.tsx +29 -30
- package/src/screens/variables/variable-details.tsx +63 -51
- package/src/screens/variables/variable-list.tsx +29 -30
- package/src/screens/welcome-modal.tsx +68 -48
- package/src/screens/workflows/workflow-details.tsx +40 -30
- package/src/screens/workflows/workflow-info.tsx +4 -11
- package/src/screens/workflows/workflow-instructions.tsx +35 -28
- package/src/screens/workflows/workflow-list.tsx +50 -40
- package/src/setupTests.ts +14 -13
- package/src/system-apps/assistants.app.ts +5 -5
- package/src/system-apps/console-logs.app.ts +4 -4
- package/src/system-apps/contacts.app.ts +6 -6
- package/src/system-apps/data-explorer.app.ts +5 -5
- package/src/system-apps/groups.app.ts +6 -6
- package/src/system-apps/index.ts +41 -43
- package/src/system-apps/join-group.app.ts +5 -5
- package/src/system-apps/mobile-settings.app.ts +4 -5
- package/src/system-apps/network-viewer.app.ts +5 -5
- package/src/system-apps/packages.app.ts +5 -5
- package/src/system-apps/search.app.ts +6 -6
- package/src/system-apps/settings.app.ts +5 -5
- package/src/system-apps/threads.app.ts +5 -5
- package/src/system-apps/tools.app.ts +5 -5
- package/src/system-apps/types.app.ts +5 -5
- package/src/system-apps/variables.app.ts +5 -5
- package/src/system-apps/workflows.app.ts +5 -5
- package/src/tabs-layout/tabs-layout.tsx +345 -254
- package/src/tabs-layout/tabs-state.ts +100 -81
- package/src/ui-defaults/index.ts +2 -3
- package/src/ui-defaults/list-screen.tsx +45 -40
- package/src/ui-defaults/markdown-field.tsx +22 -26
- package/src/ui-router/routes-loader.ts +40 -24
- package/src/ui-router/ui-loader.tsx +312 -214
- package/src/utils.ts +68 -81
- package/tsconfig.json +5 -10
- package/dist/components/input-datetime.d.ts +0 -7
- package/dist/components/input-datetime.js +0 -35
- package/dist/components/lazy-sortable-list.d.ts +0 -29
- package/dist/components/lazy-sortable-list.js +0 -12
- package/dist/components/left-bar.d.ts +0 -5
- package/dist/components/left-bar.js +0 -207
- package/dist/components/main-content-container.d.ts +0 -2
- package/dist/components/main-content-container.js +0 -92
- package/dist/components/messages/thread-view.d.ts +0 -6
- package/dist/components/messages/thread-view.js +0 -174
- package/dist/components/off-canvas.d.ts +0 -13
- package/dist/components/off-canvas.js +0 -89
- package/dist/components/text-list-editor.tsx/text-list-editor.d.ts +0 -6
- package/dist/components/text-list-editor.tsx/text-list-editor.js +0 -13
- package/dist/components/top-bar.d.ts +0 -2
- package/dist/components/top-bar.js +0 -51
- package/dist/components/typeahead/mentions-plugin.d.ts +0 -7
- package/dist/components/typeahead/mentions-plugin.js +0 -203
- package/dist/components/typeahead/typeahead-editor.d.ts +0 -15
- package/dist/components/typeahead/typeahead-editor.js +0 -134
- package/dist/components/typeahead/typeahead.d.ts +0 -12
- package/dist/components/typeahead/typeahead.js +0 -94
- package/dist/screens/profile.d.ts +0 -2
- package/dist/screens/profile.js +0 -76
- package/src/components/input-datetime.tsx +0 -41
- package/src/components/lazy-sortable-list.tsx +0 -51
- package/src/components/left-bar.tsx +0 -322
- package/src/components/main-content-container.tsx +0 -79
- package/src/components/messages/thread-view.tsx +0 -214
- package/src/components/off-canvas.tsx +0 -83
- package/src/components/text-list-editor.tsx/text-list-editor.tsx +0 -13
- package/src/components/top-bar.tsx +0 -119
- package/src/components/typeahead/mentions-plugin.tsx +0 -265
- package/src/components/typeahead/typeahead-editor.tsx +0 -140
- package/src/components/typeahead/typeahead.tsx +0 -77
- package/src/screens/profile.tsx +0 -75
|
@@ -1,69 +1,50 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.ColorModeDropdown = exports.colorModePreference = exports.colorMode = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
5
|
const peers_sdk_1 = require("@peers-app/peers-sdk");
|
|
8
|
-
const react_1 = __importDefault(require("react"));
|
|
9
6
|
const hooks_1 = require("../../hooks");
|
|
10
|
-
exports.colorMode = (0, peers_sdk_1.deviceVar)(
|
|
11
|
-
defaultValue:
|
|
7
|
+
exports.colorMode = (0, peers_sdk_1.deviceVar)("colorMode", {
|
|
8
|
+
defaultValue: "dark",
|
|
12
9
|
});
|
|
13
|
-
exports.colorModePreference = (0, peers_sdk_1.deviceVar)(
|
|
14
|
-
defaultValue:
|
|
10
|
+
exports.colorModePreference = (0, peers_sdk_1.deviceVar)("colorModePreference", {
|
|
11
|
+
defaultValue: "dark",
|
|
15
12
|
});
|
|
16
13
|
function applyColorMode(modePreference) {
|
|
17
14
|
if (!modePreference) {
|
|
18
|
-
modePreference = (0, exports.colorModePreference)() ||
|
|
15
|
+
modePreference = (0, exports.colorModePreference)() || "dark";
|
|
19
16
|
}
|
|
20
17
|
else {
|
|
21
18
|
(0, exports.colorModePreference)(modePreference);
|
|
22
19
|
}
|
|
23
20
|
let mode = (0, exports.colorMode)();
|
|
24
|
-
if (modePreference ===
|
|
25
|
-
const isDarkMode = window.matchMedia
|
|
26
|
-
mode = isDarkMode ?
|
|
21
|
+
if (modePreference === "auto") {
|
|
22
|
+
const isDarkMode = window.matchMedia?.("(prefers-color-scheme: dark)").matches;
|
|
23
|
+
mode = isDarkMode ? "dark" : "light";
|
|
27
24
|
}
|
|
28
25
|
else {
|
|
29
26
|
mode = modePreference;
|
|
30
27
|
}
|
|
31
|
-
document.documentElement.setAttribute(
|
|
32
|
-
if (mode ===
|
|
33
|
-
document.documentElement.style.backgroundColor =
|
|
34
|
-
document.body.style.backgroundColor =
|
|
28
|
+
document.documentElement.setAttribute("data-bs-theme", mode);
|
|
29
|
+
if (mode === "light") {
|
|
30
|
+
document.documentElement.style.backgroundColor = "";
|
|
31
|
+
document.body.style.backgroundColor = "initial";
|
|
35
32
|
}
|
|
36
33
|
else {
|
|
37
|
-
document.documentElement.style.backgroundColor =
|
|
38
|
-
document.body.style.backgroundColor =
|
|
34
|
+
document.documentElement.style.backgroundColor = "rgb(33, 37, 41)";
|
|
35
|
+
document.body.style.backgroundColor = "rgb(33, 37, 41)";
|
|
39
36
|
}
|
|
40
37
|
const themeMeta = document.querySelector('meta[name="theme-color"]');
|
|
41
38
|
if (themeMeta) {
|
|
42
|
-
themeMeta.setAttribute(
|
|
39
|
+
themeMeta.setAttribute("content", mode === "light" ? "#ffffff" : "#212529");
|
|
43
40
|
}
|
|
44
41
|
(0, exports.colorMode)(mode);
|
|
45
42
|
exports.colorMode.notifySubscribers();
|
|
46
43
|
return mode;
|
|
47
44
|
}
|
|
48
|
-
exports.colorModePreference.subscribe(newValue => applyColorMode(newValue));
|
|
45
|
+
exports.colorModePreference.subscribe((newValue) => applyColorMode(newValue));
|
|
49
46
|
const ColorModeDropdown = () => {
|
|
50
47
|
const [modePreference] = (0, hooks_1.useObservable)(exports.colorModePreference);
|
|
51
|
-
return (
|
|
52
|
-
react_1.default.createElement("button", { className: "btn btn-secondary dropdown-toggle", type: "button", id: "colorModeDropdown", "data-bs-toggle": "dropdown", "aria-expanded": "false" },
|
|
53
|
-
"Color Mode: ",
|
|
54
|
-
(0, peers_sdk_1.camelCaseToSpaces)(modePreference)),
|
|
55
|
-
react_1.default.createElement("ul", { className: "dropdown-menu", "aria-labelledby": "colorModeDropdown" },
|
|
56
|
-
react_1.default.createElement("li", null,
|
|
57
|
-
react_1.default.createElement("button", { className: "dropdown-item", onClick: () => (0, exports.colorModePreference)('auto') },
|
|
58
|
-
"Auto ",
|
|
59
|
-
modePreference === 'auto' && '✓')),
|
|
60
|
-
react_1.default.createElement("li", null,
|
|
61
|
-
react_1.default.createElement("button", { className: "dropdown-item", onClick: () => (0, exports.colorModePreference)('light') },
|
|
62
|
-
"Light ",
|
|
63
|
-
modePreference === 'light' && '✓')),
|
|
64
|
-
react_1.default.createElement("li", null,
|
|
65
|
-
react_1.default.createElement("button", { className: "dropdown-item", onClick: () => (0, exports.colorModePreference)('dark') },
|
|
66
|
-
"Dark ",
|
|
67
|
-
modePreference === 'dark' && '✓')))));
|
|
48
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "dropdown", children: [(0, jsx_runtime_1.jsxs)("button", { className: "btn btn-secondary dropdown-toggle", type: "button", id: "colorModeDropdown", "data-bs-toggle": "dropdown", "aria-expanded": "false", children: ["Color Mode: ", (0, peers_sdk_1.camelCaseToSpaces)(modePreference)] }), (0, jsx_runtime_1.jsxs)("ul", { className: "dropdown-menu", "aria-labelledby": "colorModeDropdown", children: [(0, jsx_runtime_1.jsx)("li", { children: (0, jsx_runtime_1.jsxs)("button", { className: "dropdown-item", onClick: () => (0, exports.colorModePreference)("auto"), children: ["Auto ", modePreference === "auto" && "✓"] }) }), (0, jsx_runtime_1.jsx)("li", { children: (0, jsx_runtime_1.jsxs)("button", { className: "dropdown-item", onClick: () => (0, exports.colorModePreference)("light"), children: ["Light ", modePreference === "light" && "✓"] }) }), (0, jsx_runtime_1.jsx)("li", { children: (0, jsx_runtime_1.jsxs)("button", { className: "dropdown-item", onClick: () => (0, exports.colorModePreference)("dark"), children: ["Dark ", modePreference === "dark" && "✓"] }) })] })] }));
|
|
68
49
|
};
|
|
69
50
|
exports.ColorModeDropdown = ColorModeDropdown;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import React from
|
|
1
|
+
import type React from "react";
|
|
2
2
|
export declare const SettingsPage: React.FC;
|
|
@@ -34,63 +34,51 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.SettingsPage = void 0;
|
|
37
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
37
38
|
const peers_sdk_1 = require("@peers-app/peers-sdk");
|
|
38
|
-
const react_1 =
|
|
39
|
+
const react_1 = require("react");
|
|
39
40
|
const input_1 = require("../../components/input");
|
|
40
|
-
const tooltip_1 = require("../../components/tooltip");
|
|
41
41
|
const tabs_1 = require("../../components/tabs");
|
|
42
|
+
const tooltip_1 = require("../../components/tooltip");
|
|
42
43
|
const globals = __importStar(require("../../globals"));
|
|
43
44
|
const hooks_1 = require("../../hooks");
|
|
44
45
|
const color_mode_dropdown_1 = require("./color-mode-dropdown");
|
|
45
46
|
const voice_settings_1 = require("./voice-settings");
|
|
46
47
|
const SettingsPage = () => {
|
|
47
|
-
return (
|
|
48
|
-
react_1.default.createElement(tabs_1.Tabs, { tabs: [
|
|
48
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "container-fluid", children: (0, jsx_runtime_1.jsx)(tabs_1.Tabs, { tabs: [
|
|
49
49
|
{
|
|
50
|
-
name:
|
|
51
|
-
content:
|
|
50
|
+
name: "User",
|
|
51
|
+
content: (0, jsx_runtime_1.jsx)(UserSettingsTab, {}),
|
|
52
52
|
active: true,
|
|
53
53
|
},
|
|
54
54
|
{
|
|
55
|
-
name:
|
|
56
|
-
content:
|
|
55
|
+
name: "Appearance",
|
|
56
|
+
content: (0, jsx_runtime_1.jsx)(AppearanceSettingsTab, {}),
|
|
57
57
|
},
|
|
58
58
|
{
|
|
59
|
-
name:
|
|
60
|
-
content:
|
|
59
|
+
name: "Voice",
|
|
60
|
+
content: (0, jsx_runtime_1.jsx)(voice_settings_1.VoiceSettings, {}),
|
|
61
61
|
},
|
|
62
62
|
{
|
|
63
|
-
name:
|
|
64
|
-
content:
|
|
63
|
+
name: "Advanced",
|
|
64
|
+
content: (0, jsx_runtime_1.jsx)(AdvancedSettingsTab, {}),
|
|
65
65
|
},
|
|
66
|
-
] })));
|
|
66
|
+
] }) }));
|
|
67
67
|
};
|
|
68
68
|
exports.SettingsPage = SettingsPage;
|
|
69
69
|
const UserSettingsTab = () => {
|
|
70
|
-
return (
|
|
71
|
-
react_1.default.createElement(ProfileSection, null),
|
|
72
|
-
react_1.default.createElement(LogoutSection, null)));
|
|
70
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(ProfileSection, {}), (0, jsx_runtime_1.jsx)(LogoutSection, {})] }));
|
|
73
71
|
};
|
|
74
72
|
const AppearanceSettingsTab = () => {
|
|
75
|
-
return (
|
|
76
|
-
react_1.default.createElement("h5", { className: "mb-3" }, "Appearance"),
|
|
77
|
-
react_1.default.createElement(color_mode_dropdown_1.ColorModeDropdown, null)));
|
|
73
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("h5", { className: "mb-3", children: "Appearance" }), (0, jsx_runtime_1.jsx)(color_mode_dropdown_1.ColorModeDropdown, {})] }));
|
|
78
74
|
};
|
|
79
75
|
const AdvancedSettingsTab = () => {
|
|
80
|
-
return (
|
|
81
|
-
react_1.default.createElement("h5", { className: "mb-3" }, "Advanced Settings"),
|
|
82
|
-
react_1.default.createElement(PackagesRootDirectory, null),
|
|
83
|
-
react_1.default.createElement(ReloadPackagesOnPageRefresh, null),
|
|
84
|
-
react_1.default.createElement(AutoUpdatePeersCore, null),
|
|
85
|
-
react_1.default.createElement(ResetDeviceSyncInfos, null),
|
|
86
|
-
react_1.default.createElement(DeleteLocalDatabase, null),
|
|
87
|
-
react_1.default.createElement(ImportOldPeersData, null),
|
|
88
|
-
react_1.default.createElement(ResetChangeTracking, null)));
|
|
76
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("h5", { className: "mb-3", children: "Advanced Settings" }), (0, jsx_runtime_1.jsx)(PackagesRootDirectory, {}), (0, jsx_runtime_1.jsx)(ReloadPackagesOnPageRefresh, {}), (0, jsx_runtime_1.jsx)(AutoUpdatePeersCore, {}), (0, jsx_runtime_1.jsx)(ResetDeviceSyncInfos, {}), (0, jsx_runtime_1.jsx)(DeleteLocalDatabase, {}), (0, jsx_runtime_1.jsx)(ImportOldPeersData, {}), (0, jsx_runtime_1.jsx)(ResetChangeTracking, {})] }));
|
|
89
77
|
};
|
|
90
78
|
const ProfileSection = () => {
|
|
91
79
|
const [deviceId] = (0, hooks_1.useObservable)(peers_sdk_1.thisDeviceId);
|
|
92
|
-
const deviceName = (0, hooks_1.useObservableState)(
|
|
93
|
-
const savedDeviceName = (0, hooks_1.useObservableState)(
|
|
80
|
+
const deviceName = (0, hooks_1.useObservableState)("");
|
|
81
|
+
const savedDeviceName = (0, hooks_1.useObservableState)("");
|
|
94
82
|
const me = (0, hooks_1.usePromise)(async () => {
|
|
95
83
|
const userContext = await (0, peers_sdk_1.getUserContext)();
|
|
96
84
|
return (0, peers_sdk_1.Users)(userContext.userDataContext).initDoc(globals.me);
|
|
@@ -103,15 +91,15 @@ const ProfileSection = () => {
|
|
|
103
91
|
try {
|
|
104
92
|
const userContext = await (0, peers_sdk_1.getUserContext)();
|
|
105
93
|
const device = await (0, peers_sdk_1.Devices)(userContext.userDataContext).get(deviceId);
|
|
106
|
-
deviceName(device?.name ||
|
|
107
|
-
savedDeviceName(device?.name ||
|
|
94
|
+
deviceName(device?.name || "");
|
|
95
|
+
savedDeviceName(device?.name || "");
|
|
108
96
|
}
|
|
109
97
|
catch (err) {
|
|
110
|
-
console.error(
|
|
98
|
+
console.error("Error loading device name:", err);
|
|
111
99
|
}
|
|
112
100
|
};
|
|
113
101
|
loadDevice();
|
|
114
|
-
}, [deviceId]);
|
|
102
|
+
}, [deviceId, deviceName, savedDeviceName]);
|
|
115
103
|
const handleSave = async () => {
|
|
116
104
|
try {
|
|
117
105
|
// Save user profile
|
|
@@ -124,7 +112,7 @@ const ProfileSection = () => {
|
|
|
124
112
|
if (deviceId && deviceName() !== savedDeviceName()) {
|
|
125
113
|
const userContext = await (0, peers_sdk_1.getUserContext)();
|
|
126
114
|
const devicesTable = (0, peers_sdk_1.Devices)(userContext.userDataContext);
|
|
127
|
-
const device = await devicesTable.get(deviceId) || {
|
|
115
|
+
const device = (await devicesTable.get(deviceId)) || {
|
|
128
116
|
deviceId,
|
|
129
117
|
userId: userContext.userId,
|
|
130
118
|
firstSeen: new Date(),
|
|
@@ -137,8 +125,8 @@ const ProfileSection = () => {
|
|
|
137
125
|
}
|
|
138
126
|
}
|
|
139
127
|
catch (err) {
|
|
140
|
-
console.error(
|
|
141
|
-
alert(
|
|
128
|
+
console.error("Error saving profile:", err);
|
|
129
|
+
alert(`Failed to save: ${err.message}`);
|
|
142
130
|
}
|
|
143
131
|
};
|
|
144
132
|
// Subscribe to changes
|
|
@@ -148,128 +136,81 @@ const ProfileSection = () => {
|
|
|
148
136
|
return null;
|
|
149
137
|
}
|
|
150
138
|
const hasChanges = !!me.q() || deviceName() !== savedDeviceName();
|
|
151
|
-
return (
|
|
152
|
-
react_1.default.createElement("div", { className: "d-flex align-items-center mb-3" },
|
|
153
|
-
react_1.default.createElement("h5", { className: "mb-0 me-auto" }, "Settings"),
|
|
154
|
-
react_1.default.createElement("button", { className: "btn btn-primary btn-sm", onClick: handleSave, disabled: !hasChanges }, "Save")),
|
|
155
|
-
react_1.default.createElement("div", { className: "mb-3" },
|
|
156
|
-
react_1.default.createElement("small", { className: "form-label" }, "Display Name:"),
|
|
157
|
-
react_1.default.createElement(input_1.Input, { value: me.qs.name, className: "form-control", placeholder: "Enter your name" })),
|
|
158
|
-
react_1.default.createElement("div", { className: "mb-3" },
|
|
159
|
-
react_1.default.createElement("small", { className: "form-label" },
|
|
160
|
-
"Device Name:",
|
|
161
|
-
react_1.default.createElement(tooltip_1.Tooltip, { markdownContent: "Give this device a friendly name to identify it in your network." })),
|
|
162
|
-
react_1.default.createElement(input_1.Input, { value: deviceName, className: "form-control", placeholder: "e.g., My Laptop" })),
|
|
163
|
-
react_1.default.createElement("div", { className: "mb-3" },
|
|
164
|
-
react_1.default.createElement("small", { className: "form-label" },
|
|
165
|
-
"User ID:",
|
|
166
|
-
react_1.default.createElement(tooltip_1.Tooltip, { markdownContent: "This uniquely identifies you to all other users." })),
|
|
167
|
-
react_1.default.createElement(input_1.Input, { value: me.userId, className: "form-control", disabled: true })),
|
|
168
|
-
react_1.default.createElement("div", { className: "row" },
|
|
169
|
-
react_1.default.createElement("div", { className: "col-md-6 mb-3" },
|
|
170
|
-
react_1.default.createElement("small", { className: "form-label" },
|
|
171
|
-
"Public Key:",
|
|
172
|
-
react_1.default.createElement(tooltip_1.Tooltip, { markdownContent: "This is your public key that other users will use to verify your signatures." })),
|
|
173
|
-
react_1.default.createElement(input_1.Input, { value: me.publicKey, className: "form-control form-control-sm", disabled: true })),
|
|
174
|
-
react_1.default.createElement("div", { className: "col-md-6 mb-3" },
|
|
175
|
-
react_1.default.createElement("small", { className: "form-label" },
|
|
176
|
-
"Public Box Key:",
|
|
177
|
-
react_1.default.createElement(tooltip_1.Tooltip, { markdownContent: "This is the public key that other users can use to encrypt data so that only you can open it." })),
|
|
178
|
-
react_1.default.createElement(input_1.Input, { value: me.publicBoxKey, className: "form-control form-control-sm", disabled: true }))),
|
|
179
|
-
react_1.default.createElement("div", { className: "mb-3" },
|
|
180
|
-
react_1.default.createElement("small", { className: "form-label" },
|
|
181
|
-
"Device ID:",
|
|
182
|
-
react_1.default.createElement(tooltip_1.Tooltip, { markdownContent: "This uniquely identifies this device on Peers networks." })),
|
|
183
|
-
react_1.default.createElement(input_1.Input, { value: deviceId || '', className: "form-control form-control-sm", disabled: true }))));
|
|
139
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { className: "d-flex align-items-center mb-3", children: [(0, jsx_runtime_1.jsx)("h5", { className: "mb-0 me-auto", children: "Settings" }), (0, jsx_runtime_1.jsx)("button", { className: "btn btn-primary btn-sm", onClick: handleSave, disabled: !hasChanges, children: "Save" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "mb-3", children: [(0, jsx_runtime_1.jsx)("small", { className: "form-label", children: "Display Name:" }), (0, jsx_runtime_1.jsx)(input_1.Input, { value: me.qs.name, className: "form-control", placeholder: "Enter your name" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "mb-3", children: [(0, jsx_runtime_1.jsxs)("small", { className: "form-label", children: ["Device Name:", (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { markdownContent: "Give this device a friendly name to identify it in your network." })] }), (0, jsx_runtime_1.jsx)(input_1.Input, { value: deviceName, className: "form-control", placeholder: "e.g., My Laptop" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "mb-3", children: [(0, jsx_runtime_1.jsxs)("small", { className: "form-label", children: ["User ID:", (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { markdownContent: "This uniquely identifies you to all other users." })] }), (0, jsx_runtime_1.jsx)(input_1.Input, { value: me.userId, className: "form-control", disabled: true })] }), (0, jsx_runtime_1.jsxs)("div", { className: "row", children: [(0, jsx_runtime_1.jsxs)("div", { className: "col-md-6 mb-3", children: [(0, jsx_runtime_1.jsxs)("small", { className: "form-label", children: ["Public Key:", (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { markdownContent: "This is your public key that other users will use to verify your signatures." })] }), (0, jsx_runtime_1.jsx)(input_1.Input, { value: me.publicKey, className: "form-control form-control-sm", disabled: true })] }), (0, jsx_runtime_1.jsxs)("div", { className: "col-md-6 mb-3", children: [(0, jsx_runtime_1.jsxs)("small", { className: "form-label", children: ["Public Box Key:", (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { markdownContent: "This is the public key that other users can use to encrypt data so that only you can open it." })] }), (0, jsx_runtime_1.jsx)(input_1.Input, { value: me.publicBoxKey, className: "form-control form-control-sm", disabled: true })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "mb-3", children: [(0, jsx_runtime_1.jsxs)("small", { className: "form-label", children: ["Device ID:", (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { markdownContent: "This uniquely identifies this device on Peers networks." })] }), (0, jsx_runtime_1.jsx)(input_1.Input, { value: deviceId || "", className: "form-control form-control-sm", disabled: true })] })] }));
|
|
184
140
|
};
|
|
185
141
|
const PackagesRootDirectory = () => {
|
|
186
|
-
return (
|
|
187
|
-
react_1.default.createElement("small", null,
|
|
188
|
-
"Packages Directory:",
|
|
189
|
-
react_1.default.createElement(tooltip_1.Tooltip, { markdownContent: `Changing this will not effect existing packages.` })),
|
|
190
|
-
react_1.default.createElement(input_1.Input, { value: peers_sdk_1.packagesRootDir, className: 'form-control' })));
|
|
142
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "mt-3", children: [(0, jsx_runtime_1.jsxs)("small", { children: ["Packages Directory:", (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { markdownContent: `Changing this will not effect existing packages.` })] }), (0, jsx_runtime_1.jsx)(input_1.Input, { value: peers_sdk_1.packagesRootDir, className: "form-control" })] }));
|
|
191
143
|
};
|
|
192
144
|
const ReloadPackagesOnPageRefresh = () => {
|
|
193
145
|
(0, hooks_1.useObservable)(peers_sdk_1.reloadPackagesOnPageRefresh);
|
|
194
|
-
return (
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
(0, peers_sdk_1.reloadPackagesOnPageRefresh)(checked);
|
|
199
|
-
} }),
|
|
200
|
-
react_1.default.createElement(tooltip_1.Tooltip, { markdownContent: `Checking this will reload all packages very time the page is loaded. Particularly useful while developing packages.` })));
|
|
146
|
+
return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("label", { htmlFor: "isPrimary", className: "form-label small mt-2 me-2", children: "Reload Packages on Page Load:" }), (0, jsx_runtime_1.jsx)("input", { type: "checkbox", checked: (0, peers_sdk_1.reloadPackagesOnPageRefresh)(), onChange: (e) => {
|
|
147
|
+
const checked = e.target.checked;
|
|
148
|
+
(0, peers_sdk_1.reloadPackagesOnPageRefresh)(checked);
|
|
149
|
+
} }), (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { markdownContent: `Checking this will reload all packages very time the page is loaded. Particularly useful while developing packages.` })] }));
|
|
201
150
|
};
|
|
202
151
|
const AutoUpdatePeersCore = () => {
|
|
203
152
|
(0, hooks_1.useObservable)(peers_sdk_1.autoUpdatePeersCore);
|
|
204
|
-
return (
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
(0, peers_sdk_1.autoUpdatePeersCore)(checked);
|
|
209
|
-
} }),
|
|
210
|
-
react_1.default.createElement(tooltip_1.Tooltip, { markdownContent: `When enabled, the peers-core system package is automatically updated from the bundled version on every app startup. Disable this if you want to manage peers-core manually.` })));
|
|
153
|
+
return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("label", { htmlFor: "autoUpdatePeersCore", className: "form-label small mt-2 me-2", children: "Auto-update peers-core on startup:" }), (0, jsx_runtime_1.jsx)("input", { type: "checkbox", checked: (0, peers_sdk_1.autoUpdatePeersCore)(), onChange: (e) => {
|
|
154
|
+
const checked = e.target.checked;
|
|
155
|
+
(0, peers_sdk_1.autoUpdatePeersCore)(checked);
|
|
156
|
+
} }), (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { markdownContent: `When enabled, the peers-core system package is automatically updated from the bundled version on every app startup. Disable this if you want to manage peers-core manually.` })] }));
|
|
211
157
|
};
|
|
212
158
|
const ResetDeviceSyncInfos = () => {
|
|
213
|
-
return (
|
|
214
|
-
react_1.default.createElement("button", { className: 'btn btn-secondary btn-sm ms-2', onClick: async () => {
|
|
159
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "mt-3", children: (0, jsx_runtime_1.jsx)("button", { className: "btn btn-secondary btn-sm ms-2", onClick: async () => {
|
|
215
160
|
try {
|
|
216
161
|
await peers_sdk_1.rpcServerCalls.resetAllDeviceSyncInfo();
|
|
217
|
-
alert(
|
|
162
|
+
alert("All device sync info has been reset. Syncing in progress...");
|
|
218
163
|
}
|
|
219
164
|
catch (err) {
|
|
220
|
-
console.error(
|
|
165
|
+
console.error("Error while resetting all device sync info", err);
|
|
221
166
|
}
|
|
222
|
-
}
|
|
167
|
+
}, children: "Reset All Device Sync Info" }) }));
|
|
223
168
|
};
|
|
224
169
|
const DeleteLocalDatabase = () => {
|
|
225
|
-
return (
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
'This will remove all local data. You will need to restart the app and re-sync from other devices.');
|
|
170
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "mt-3", children: (0, jsx_runtime_1.jsx)("button", { className: "btn btn-danger btn-sm ms-2", onClick: async () => {
|
|
171
|
+
const confirmed = confirm("Are you sure you want to delete the local database for the current group? " +
|
|
172
|
+
"This will remove all local data. You will need to restart the app and re-sync from other devices.");
|
|
229
173
|
if (!confirmed)
|
|
230
174
|
return;
|
|
231
175
|
try {
|
|
232
176
|
await peers_sdk_1.rpcServerCalls.deleteLocalDatabase();
|
|
233
|
-
alert(
|
|
177
|
+
alert("Local database has been deleted. Please restart the app.");
|
|
234
178
|
}
|
|
235
179
|
catch (err) {
|
|
236
|
-
console.error(
|
|
237
|
-
alert(
|
|
180
|
+
console.error("Error while deleting local database", err);
|
|
181
|
+
alert(`Failed to delete local database: ${err.message}`);
|
|
238
182
|
}
|
|
239
|
-
}
|
|
183
|
+
}, children: "Delete Local Database" }) }));
|
|
240
184
|
};
|
|
241
185
|
const ResetChangeTracking = () => {
|
|
242
186
|
const [busy, setBusy] = (0, react_1.useState)(false);
|
|
243
|
-
return (
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
setBusy(false);
|
|
262
|
-
}
|
|
263
|
-
} }, busy ? 'Resetting…' : 'Reset Change Tracking')));
|
|
187
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "mt-4 pt-3 border-top", children: [(0, jsx_runtime_1.jsx)("h6", { className: "mb-2", children: "Change tracking" }), (0, jsx_runtime_1.jsx)("small", { className: "text-muted d-block mb-2", children: "Clears all change history for the current group and rebuilds it from your current database rows. Device sync cursors are cleared; a full resync with peers may follow. Use when debugging sync issues." }), (0, jsx_runtime_1.jsx)("button", { className: "btn btn-warning btn-sm", disabled: busy, onClick: async () => {
|
|
188
|
+
const confirmed = window.confirm("Reset Change Tracking will clear all change history and rebuild it from scratch. This may take a while. Continue?");
|
|
189
|
+
if (!confirmed)
|
|
190
|
+
return;
|
|
191
|
+
setBusy(true);
|
|
192
|
+
try {
|
|
193
|
+
await peers_sdk_1.rpcServerCalls.resetChangeTracking();
|
|
194
|
+
await peers_sdk_1.rpcServerCalls.flushDatabases();
|
|
195
|
+
alert("Change tracking reset successfully.");
|
|
196
|
+
}
|
|
197
|
+
catch (err) {
|
|
198
|
+
console.error("Error while resetting change tracking", err);
|
|
199
|
+
alert(`Failed to reset change tracking: ${err.message || String(err)}`);
|
|
200
|
+
}
|
|
201
|
+
finally {
|
|
202
|
+
setBusy(false);
|
|
203
|
+
}
|
|
204
|
+
}, children: busy ? "Resetting…" : "Reset Change Tracking" })] }));
|
|
264
205
|
};
|
|
265
|
-
const IMPORT_TOOL_ID =
|
|
206
|
+
const IMPORT_TOOL_ID = "00mh0wlipkdbeaw8imptsk001";
|
|
266
207
|
const ImportOldPeersData = () => {
|
|
267
208
|
const fileInputRef = (0, react_1.useRef)(null);
|
|
268
|
-
const [filePath, setFilePath] = (0, react_1.useState)(
|
|
269
|
-
const [
|
|
209
|
+
const [filePath, setFilePath] = (0, react_1.useState)("");
|
|
210
|
+
const [_fileName, setFileName] = (0, react_1.useState)("");
|
|
270
211
|
const [loading, setLoading] = (0, react_1.useState)(false);
|
|
271
212
|
const [result, setResult] = (0, react_1.useState)(null);
|
|
272
|
-
const [error, setError] = (0, react_1.useState)(
|
|
213
|
+
const [error, setError] = (0, react_1.useState)("");
|
|
273
214
|
const handleFileSelect = (e) => {
|
|
274
215
|
const file = e.target.files?.[0];
|
|
275
216
|
if (!file)
|
|
@@ -282,17 +223,17 @@ const ImportOldPeersData = () => {
|
|
|
282
223
|
}
|
|
283
224
|
else {
|
|
284
225
|
setFileName(file.name);
|
|
285
|
-
setFilePath(
|
|
286
|
-
setError(
|
|
226
|
+
setFilePath("");
|
|
227
|
+
setError("File path not available. This feature requires the Electron desktop app.");
|
|
287
228
|
}
|
|
288
229
|
setResult(null);
|
|
289
|
-
setError(
|
|
230
|
+
setError("");
|
|
290
231
|
};
|
|
291
232
|
const handleDryRun = async () => {
|
|
292
233
|
if (!filePath)
|
|
293
234
|
return;
|
|
294
235
|
setLoading(true);
|
|
295
|
-
setError(
|
|
236
|
+
setError("");
|
|
296
237
|
setResult(null);
|
|
297
238
|
try {
|
|
298
239
|
const response = await peers_sdk_1.rpcServerCalls.runTool(IMPORT_TOOL_ID, {
|
|
@@ -303,127 +244,34 @@ const ImportOldPeersData = () => {
|
|
|
303
244
|
setResult(response.result);
|
|
304
245
|
}
|
|
305
246
|
else {
|
|
306
|
-
setError(
|
|
247
|
+
setError("Unexpected response from import tool");
|
|
307
248
|
}
|
|
308
249
|
}
|
|
309
250
|
catch (err) {
|
|
310
|
-
setError(err.message ||
|
|
251
|
+
setError(err.message || "Failed to run dry run");
|
|
311
252
|
}
|
|
312
253
|
finally {
|
|
313
254
|
setLoading(false);
|
|
314
255
|
}
|
|
315
256
|
};
|
|
316
|
-
return (
|
|
317
|
-
react_1.default.createElement("h6", { className: "mb-2" }, "Import Old Peers Data"),
|
|
318
|
-
react_1.default.createElement("small", { className: "text-muted d-block mb-2" }, "Import tasks and log entries from an old peers JSON export file."),
|
|
319
|
-
react_1.default.createElement("div", { className: "d-flex align-items-center gap-2 mb-2" },
|
|
320
|
-
react_1.default.createElement("input", { ref: fileInputRef, type: "file", accept: ".json", className: "form-control form-control-sm", style: { maxWidth: 350 }, onChange: handleFileSelect }),
|
|
321
|
-
react_1.default.createElement("button", { className: "btn btn-outline-primary btn-sm", onClick: handleDryRun, disabled: !filePath || loading }, loading ? 'Analyzing...' : 'Dry Run')),
|
|
322
|
-
error && (react_1.default.createElement("div", { className: "alert alert-danger py-1 px-2 small mt-2" }, error)),
|
|
323
|
-
result && react_1.default.createElement(DryRunResults, { result: result })));
|
|
257
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "mt-4 pt-3 border-top", children: [(0, jsx_runtime_1.jsx)("h6", { className: "mb-2", children: "Import Old Peers Data" }), (0, jsx_runtime_1.jsx)("small", { className: "text-muted d-block mb-2", children: "Import tasks and log entries from an old peers JSON export file." }), (0, jsx_runtime_1.jsxs)("div", { className: "d-flex align-items-center gap-2 mb-2", children: [(0, jsx_runtime_1.jsx)("input", { ref: fileInputRef, type: "file", accept: ".json", className: "form-control form-control-sm", style: { maxWidth: 350 }, onChange: handleFileSelect }), (0, jsx_runtime_1.jsx)("button", { className: "btn btn-outline-primary btn-sm", onClick: handleDryRun, disabled: !filePath || loading, children: loading ? "Analyzing..." : "Dry Run" })] }), error && (0, jsx_runtime_1.jsx)("div", { className: "alert alert-danger py-1 px-2 small mt-2", children: error }), result && (0, jsx_runtime_1.jsx)(DryRunResults, { result: result })] }));
|
|
324
258
|
};
|
|
325
259
|
const DryRunResults = ({ result }) => {
|
|
326
260
|
const sm = result.statusMapping;
|
|
327
261
|
const um = result.userMapping;
|
|
328
|
-
return (
|
|
329
|
-
react_1.default.createElement("div", { className: "alert alert-info py-2 px-3 small" },
|
|
330
|
-
react_1.default.createElement("strong", null, "Summary:"),
|
|
331
|
-
" ",
|
|
332
|
-
result.totalTasks.toLocaleString(),
|
|
333
|
-
" tasks and ",
|
|
334
|
-
result.totalLogEntries.toLocaleString(),
|
|
335
|
-
" log entries across ",
|
|
336
|
-
result.groups.length,
|
|
337
|
-
" groups (",
|
|
338
|
-
result.totalRecords.toLocaleString(),
|
|
339
|
-
" total records in file)"),
|
|
340
|
-
result.warnings.length > 0 && (react_1.default.createElement("div", { className: "alert alert-warning py-2 px-3 small" },
|
|
341
|
-
react_1.default.createElement("strong", null, "Warnings:"),
|
|
342
|
-
react_1.default.createElement("ul", { className: "mb-0 ps-3" }, result.warnings.map((w, i) => react_1.default.createElement("li", { key: i }, w))))),
|
|
343
|
-
react_1.default.createElement("details", { className: "mb-2" },
|
|
344
|
-
react_1.default.createElement("summary", { className: "small fw-bold", style: { cursor: 'pointer' } }, "Status Mapping"),
|
|
345
|
-
react_1.default.createElement("table", { className: "table table-sm small mt-1" },
|
|
346
|
-
react_1.default.createElement("thead", null,
|
|
347
|
-
react_1.default.createElement("tr", null,
|
|
348
|
-
react_1.default.createElement("th", null, "Mapping"),
|
|
349
|
-
react_1.default.createElement("th", { className: "text-end" }, "Count"))),
|
|
350
|
-
react_1.default.createElement("tbody", null,
|
|
351
|
-
react_1.default.createElement("tr", null,
|
|
352
|
-
react_1.default.createElement("td", null, "In-Progress \u2192 Done"),
|
|
353
|
-
react_1.default.createElement("td", { className: "text-end" }, sm.inProgressToDone.toLocaleString())),
|
|
354
|
-
react_1.default.createElement("tr", null,
|
|
355
|
-
react_1.default.createElement("td", null, "In-Progress \u2192 In-Progress"),
|
|
356
|
-
react_1.default.createElement("td", { className: "text-end" }, sm.inProgressKeep.toLocaleString())),
|
|
357
|
-
react_1.default.createElement("tr", null,
|
|
358
|
-
react_1.default.createElement("td", null, "Queued \u2192 Done"),
|
|
359
|
-
react_1.default.createElement("td", { className: "text-end" }, sm.queuedToDone.toLocaleString())),
|
|
360
|
-
react_1.default.createElement("tr", null,
|
|
361
|
-
react_1.default.createElement("td", null, "Queued \u2192 Queued"),
|
|
362
|
-
react_1.default.createElement("td", { className: "text-end" }, sm.queuedKeep.toLocaleString())),
|
|
363
|
-
react_1.default.createElement("tr", null,
|
|
364
|
-
react_1.default.createElement("td", null, "Backlog \u2192 Done"),
|
|
365
|
-
react_1.default.createElement("td", { className: "text-end" }, sm.backlogToDone.toLocaleString())),
|
|
366
|
-
react_1.default.createElement("tr", null,
|
|
367
|
-
react_1.default.createElement("td", null, "Backlog \u2192 Backlog"),
|
|
368
|
-
react_1.default.createElement("td", { className: "text-end" }, sm.backlogKeep.toLocaleString())),
|
|
369
|
-
react_1.default.createElement("tr", null,
|
|
370
|
-
react_1.default.createElement("td", null, "No status \u2192 Done"),
|
|
371
|
-
react_1.default.createElement("td", { className: "text-end" }, sm.noStatusToDone.toLocaleString())),
|
|
372
|
-
react_1.default.createElement("tr", null,
|
|
373
|
-
react_1.default.createElement("td", null, "No status \u2192 Backlog"),
|
|
374
|
-
react_1.default.createElement("td", { className: "text-end" }, sm.noStatusToBacklog.toLocaleString()))))),
|
|
375
|
-
react_1.default.createElement("details", { className: "mb-2" },
|
|
376
|
-
react_1.default.createElement("summary", { className: "small fw-bold", style: { cursor: 'pointer' } }, "User Mapping"),
|
|
377
|
-
react_1.default.createElement("table", { className: "table table-sm small mt-1" },
|
|
378
|
-
react_1.default.createElement("thead", null,
|
|
379
|
-
react_1.default.createElement("tr", null,
|
|
380
|
-
react_1.default.createElement("th", null, "User"),
|
|
381
|
-
react_1.default.createElement("th", { className: "text-end" }, "Tasks"))),
|
|
382
|
-
react_1.default.createElement("tbody", null,
|
|
383
|
-
react_1.default.createElement("tr", null,
|
|
384
|
-
react_1.default.createElement("td", null, "Mark"),
|
|
385
|
-
react_1.default.createElement("td", { className: "text-end" }, um.mark.toLocaleString())),
|
|
386
|
-
react_1.default.createElement("tr", null,
|
|
387
|
-
react_1.default.createElement("td", null, "Blair"),
|
|
388
|
-
react_1.default.createElement("td", { className: "text-end" }, um.blair.toLocaleString())),
|
|
389
|
-
react_1.default.createElement("tr", null,
|
|
390
|
-
react_1.default.createElement("td", null, "Other \u2192 Mark"),
|
|
391
|
-
react_1.default.createElement("td", { className: "text-end" }, um.other.toLocaleString()))))),
|
|
392
|
-
react_1.default.createElement("details", { open: true, className: "mb-2" },
|
|
393
|
-
react_1.default.createElement("summary", { className: "small fw-bold", style: { cursor: 'pointer' } },
|
|
394
|
-
"Groups (",
|
|
395
|
-
result.groups.length,
|
|
396
|
-
")"),
|
|
397
|
-
react_1.default.createElement("table", { className: "table table-sm small mt-1" },
|
|
398
|
-
react_1.default.createElement("thead", null,
|
|
399
|
-
react_1.default.createElement("tr", null,
|
|
400
|
-
react_1.default.createElement("th", null, "Group"),
|
|
401
|
-
react_1.default.createElement("th", null, "Route"),
|
|
402
|
-
react_1.default.createElement("th", { className: "text-end" }, "Tasks"),
|
|
403
|
-
react_1.default.createElement("th", { className: "text-end" }, "Active"),
|
|
404
|
-
react_1.default.createElement("th", { className: "text-end" }, "Done"),
|
|
405
|
-
react_1.default.createElement("th", { className: "text-end" }, "Logs"))),
|
|
406
|
-
react_1.default.createElement("tbody", null, result.groups.map(g => (react_1.default.createElement("tr", { key: g.groupId },
|
|
407
|
-
react_1.default.createElement("td", null, g.groupName),
|
|
408
|
-
react_1.default.createElement("td", null,
|
|
409
|
-
react_1.default.createElement("span", { className: `badge bg-${g.context === 'home' ? 'success' : 'secondary'}` }, g.context)),
|
|
410
|
-
react_1.default.createElement("td", { className: "text-end" }, g.taskCount.toLocaleString()),
|
|
411
|
-
react_1.default.createElement("td", { className: "text-end" }, g.activeCount.toLocaleString()),
|
|
412
|
-
react_1.default.createElement("td", { className: "text-end" }, g.doneCount.toLocaleString()),
|
|
413
|
-
react_1.default.createElement("td", { className: "text-end" }, g.logEntryCount.toLocaleString())))))))));
|
|
262
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "mt-2", children: [(0, jsx_runtime_1.jsxs)("div", { className: "alert alert-info py-2 px-3 small", children: [(0, jsx_runtime_1.jsx)("strong", { children: "Summary:" }), " ", result.totalTasks.toLocaleString(), " tasks and", " ", result.totalLogEntries.toLocaleString(), " log entries across ", result.groups.length, " groups (", result.totalRecords.toLocaleString(), " total records in file)"] }), result.warnings.length > 0 && ((0, jsx_runtime_1.jsxs)("div", { className: "alert alert-warning py-2 px-3 small", children: [(0, jsx_runtime_1.jsx)("strong", { children: "Warnings:" }), (0, jsx_runtime_1.jsx)("ul", { className: "mb-0 ps-3", children: result.warnings.map((w, i) => ((0, jsx_runtime_1.jsx)("li", { children: w }, i))) })] })), (0, jsx_runtime_1.jsxs)("details", { className: "mb-2", children: [(0, jsx_runtime_1.jsx)("summary", { className: "small fw-bold", style: { cursor: "pointer" }, children: "Status Mapping" }), (0, jsx_runtime_1.jsxs)("table", { className: "table table-sm small mt-1", children: [(0, jsx_runtime_1.jsx)("thead", { children: (0, jsx_runtime_1.jsxs)("tr", { children: [(0, jsx_runtime_1.jsx)("th", { children: "Mapping" }), (0, jsx_runtime_1.jsx)("th", { className: "text-end", children: "Count" })] }) }), (0, jsx_runtime_1.jsxs)("tbody", { children: [(0, jsx_runtime_1.jsxs)("tr", { children: [(0, jsx_runtime_1.jsx)("td", { children: "In-Progress \u2192 Done" }), (0, jsx_runtime_1.jsx)("td", { className: "text-end", children: sm.inProgressToDone.toLocaleString() })] }), (0, jsx_runtime_1.jsxs)("tr", { children: [(0, jsx_runtime_1.jsx)("td", { children: "In-Progress \u2192 In-Progress" }), (0, jsx_runtime_1.jsx)("td", { className: "text-end", children: sm.inProgressKeep.toLocaleString() })] }), (0, jsx_runtime_1.jsxs)("tr", { children: [(0, jsx_runtime_1.jsx)("td", { children: "Queued \u2192 Done" }), (0, jsx_runtime_1.jsx)("td", { className: "text-end", children: sm.queuedToDone.toLocaleString() })] }), (0, jsx_runtime_1.jsxs)("tr", { children: [(0, jsx_runtime_1.jsx)("td", { children: "Queued \u2192 Queued" }), (0, jsx_runtime_1.jsx)("td", { className: "text-end", children: sm.queuedKeep.toLocaleString() })] }), (0, jsx_runtime_1.jsxs)("tr", { children: [(0, jsx_runtime_1.jsx)("td", { children: "Backlog \u2192 Done" }), (0, jsx_runtime_1.jsx)("td", { className: "text-end", children: sm.backlogToDone.toLocaleString() })] }), (0, jsx_runtime_1.jsxs)("tr", { children: [(0, jsx_runtime_1.jsx)("td", { children: "Backlog \u2192 Backlog" }), (0, jsx_runtime_1.jsx)("td", { className: "text-end", children: sm.backlogKeep.toLocaleString() })] }), (0, jsx_runtime_1.jsxs)("tr", { children: [(0, jsx_runtime_1.jsx)("td", { children: "No status \u2192 Done" }), (0, jsx_runtime_1.jsx)("td", { className: "text-end", children: sm.noStatusToDone.toLocaleString() })] }), (0, jsx_runtime_1.jsxs)("tr", { children: [(0, jsx_runtime_1.jsx)("td", { children: "No status \u2192 Backlog" }), (0, jsx_runtime_1.jsx)("td", { className: "text-end", children: sm.noStatusToBacklog.toLocaleString() })] })] })] })] }), (0, jsx_runtime_1.jsxs)("details", { className: "mb-2", children: [(0, jsx_runtime_1.jsx)("summary", { className: "small fw-bold", style: { cursor: "pointer" }, children: "User Mapping" }), (0, jsx_runtime_1.jsxs)("table", { className: "table table-sm small mt-1", children: [(0, jsx_runtime_1.jsx)("thead", { children: (0, jsx_runtime_1.jsxs)("tr", { children: [(0, jsx_runtime_1.jsx)("th", { children: "User" }), (0, jsx_runtime_1.jsx)("th", { className: "text-end", children: "Tasks" })] }) }), (0, jsx_runtime_1.jsxs)("tbody", { children: [(0, jsx_runtime_1.jsxs)("tr", { children: [(0, jsx_runtime_1.jsx)("td", { children: "Mark" }), (0, jsx_runtime_1.jsx)("td", { className: "text-end", children: um.mark.toLocaleString() })] }), (0, jsx_runtime_1.jsxs)("tr", { children: [(0, jsx_runtime_1.jsx)("td", { children: "Blair" }), (0, jsx_runtime_1.jsx)("td", { className: "text-end", children: um.blair.toLocaleString() })] }), (0, jsx_runtime_1.jsxs)("tr", { children: [(0, jsx_runtime_1.jsx)("td", { children: "Other \u2192 Mark" }), (0, jsx_runtime_1.jsx)("td", { className: "text-end", children: um.other.toLocaleString() })] })] })] })] }), (0, jsx_runtime_1.jsxs)("details", { open: true, className: "mb-2", children: [(0, jsx_runtime_1.jsxs)("summary", { className: "small fw-bold", style: { cursor: "pointer" }, children: ["Groups (", result.groups.length, ")"] }), (0, jsx_runtime_1.jsxs)("table", { className: "table table-sm small mt-1", children: [(0, jsx_runtime_1.jsx)("thead", { children: (0, jsx_runtime_1.jsxs)("tr", { children: [(0, jsx_runtime_1.jsx)("th", { children: "Group" }), (0, jsx_runtime_1.jsx)("th", { children: "Route" }), (0, jsx_runtime_1.jsx)("th", { className: "text-end", children: "Tasks" }), (0, jsx_runtime_1.jsx)("th", { className: "text-end", children: "Active" }), (0, jsx_runtime_1.jsx)("th", { className: "text-end", children: "Done" }), (0, jsx_runtime_1.jsx)("th", { className: "text-end", children: "Logs" })] }) }), (0, jsx_runtime_1.jsx)("tbody", { children: result.groups.map((g) => ((0, jsx_runtime_1.jsxs)("tr", { children: [(0, jsx_runtime_1.jsx)("td", { children: g.groupName }), (0, jsx_runtime_1.jsx)("td", { children: (0, jsx_runtime_1.jsx)("span", { className: `badge bg-${g.context === "home" ? "success" : "secondary"}`, children: g.context }) }), (0, jsx_runtime_1.jsx)("td", { className: "text-end", children: g.taskCount.toLocaleString() }), (0, jsx_runtime_1.jsx)("td", { className: "text-end", children: g.activeCount.toLocaleString() }), (0, jsx_runtime_1.jsx)("td", { className: "text-end", children: g.doneCount.toLocaleString() }), (0, jsx_runtime_1.jsx)("td", { className: "text-end", children: g.logEntryCount.toLocaleString() })] }, g.groupId))) })] })] })] }));
|
|
414
263
|
};
|
|
415
|
-
const showLogoutInSettings = typeof window !==
|
|
416
|
-
|
|
417
|
-
|
|
264
|
+
const showLogoutInSettings = typeof window !== "undefined" &&
|
|
265
|
+
!window.electronAPI &&
|
|
266
|
+
!window.ReactNativeWebView;
|
|
418
267
|
const LogoutSection = () => {
|
|
419
268
|
if (!showLogoutInSettings)
|
|
420
269
|
return null;
|
|
421
|
-
return (
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
'Make sure you have your User ID and Secret Key saved securely, or you will lose access to your account.');
|
|
270
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "mt-4 pt-3 border-top", children: (0, jsx_runtime_1.jsx)("button", { className: "btn btn-outline-danger btn-sm", onClick: async () => {
|
|
271
|
+
const confirmed = confirm("Are you sure you want to logout? This will clear your credentials from this browser. " +
|
|
272
|
+
"Make sure you have your User ID and Secret Key saved securely, or you will lose access to your account.");
|
|
425
273
|
if (!confirmed)
|
|
426
274
|
return;
|
|
427
275
|
await peers_sdk_1.rpcServerCalls.logout();
|
|
428
|
-
}
|
|
276
|
+
}, children: "Logout" }) }));
|
|
429
277
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import React from
|
|
1
|
+
import type React from "react";
|
|
2
2
|
export declare const VoiceSettingsAgent: React.FC;
|