@micha.bigler/ui-core-micha 3.14.4 → 4.0.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/CHANGELOG.md +29 -0
- package/README.md +7 -0
- package/dist/chat/kitSxRegistry.js +9 -0
- package/dist/components/charts/kitSxRegistry.js +6 -0
- package/dist/entries/charts.js +6 -0
- package/dist/entries/chat.js +8 -0
- package/dist/entries/markdown.js +1 -0
- package/dist/index.js +0 -14
- package/dist/pages/AccountPage.js +1 -2
- package/dist/pages/LoginPage.js +1 -2
- package/dist/pages/PasswordChangePage.js +1 -2
- package/dist/pages/PasswordInvitePage.js +1 -2
- package/dist/pages/PasswordResetRequestPage.js +1 -2
- package/dist/pages/SignUpPage.js +1 -2
- package/dist/pages/SignupConfirmPage.js +1 -2
- package/dist/theme/kitSxEntry.js +11 -0
- package/dist/theme/kitSxRegistry.js +2 -15
- package/package.json +31 -7
- package/.github/workflows/ci.yml +0 -35
- package/.github/workflows/publish.yml +0 -126
- package/DESIGN.md +0 -60
- package/WORK_ORDERS.md +0 -150
- package/dev/entries.jsx +0 -721
- package/dev/fixtures.js +0 -26
- package/dev/main.jsx +0 -75
- package/dev/mockTransport.jsx +0 -128
- package/docs/CHART-LAYOUT.md +0 -157
- package/docs/DARK-TOKENS.md +0 -140
- package/docs/TYPE-SCALE.md +0 -111
- package/docs/messaging-deviations.md +0 -118
- package/index.html +0 -12
- package/renovate.json +0 -10
- package/scripts/chart-api-census.mjs +0 -415
- package/src/auth/AuthContext.jsx +0 -158
- package/src/auth/ReauthModal.jsx +0 -82
- package/src/auth/UserMenu.jsx +0 -121
- package/src/auth/apiClient.jsx +0 -232
- package/src/auth/authApi.jsx +0 -539
- package/src/auth/authConfig.jsx +0 -34
- package/src/auth/reauth.js +0 -47
- package/src/chat/ChatComposer.jsx +0 -36
- package/src/chat/ChatList.jsx +0 -87
- package/src/chat/ChatThread.jsx +0 -128
- package/src/chat/ChatWorkspace.jsx +0 -244
- package/src/chat/MarkdownReply.jsx +0 -22
- package/src/chat/ModelPicker.jsx +0 -85
- package/src/chat/api.js +0 -18
- package/src/chat/useChatSocket.js +0 -32
- package/src/chat/wire.js +0 -7
- package/src/components/AccessCodeManager.jsx +0 -288
- package/src/components/AccessCodeSingleUseToggle.jsx +0 -92
- package/src/components/AllowedEmailDomainsManager.jsx +0 -92
- package/src/components/AuthFactorRequirementCard.jsx +0 -95
- package/src/components/BulkInviteCsvTab.jsx +0 -198
- package/src/components/EmptyState.jsx +0 -38
- package/src/components/LoginForm.jsx +0 -159
- package/src/components/MFAComponent.jsx +0 -350
- package/src/components/MfaLoginComponent.jsx +0 -252
- package/src/components/MobileBottomNav.jsx +0 -82
- package/src/components/PasskeysComponent.jsx +0 -252
- package/src/components/PasswordChangeForm.jsx +0 -87
- package/src/components/PasswordResetRequestForm.jsx +0 -43
- package/src/components/PasswordSetForm.jsx +0 -97
- package/src/components/ProfileComponent.jsx +0 -348
- package/src/components/QrSignupManager.jsx +0 -404
- package/src/components/QrSignupValidityManager.jsx +0 -106
- package/src/components/RegistrationMethodsManager.jsx +0 -150
- package/src/components/SecurityComponent.jsx +0 -141
- package/src/components/SocialLoginButtons.jsx +0 -83
- package/src/components/SoftChip.jsx +0 -93
- package/src/components/StatTile.jsx +0 -39
- package/src/components/SupportRecoveryRequestsTab.jsx +0 -482
- package/src/components/TurnstileWidget.jsx +0 -99
- package/src/components/UserInviteComponent.jsx +0 -76
- package/src/components/UserListComponent.jsx +0 -618
- package/src/components/charts/BarChart.jsx +0 -102
- package/src/components/charts/ChartFrame.jsx +0 -214
- package/src/components/charts/LineChart.jsx +0 -126
- package/src/components/charts/ScatterChart.jsx +0 -299
- package/src/components/charts/TimeSeriesChart.jsx +0 -300
- package/src/components/charts/chartDefaults.js +0 -644
- package/src/components/charts/chartLabels.js +0 -36
- package/src/components/charts/exportChart.js +0 -258
- package/src/components/charts/formatters.js +0 -39
- package/src/components/charts/palette.js +0 -33
- package/src/components/charts/yearTickInterval.js +0 -7
- package/src/i18n/authTranslations.ts +0 -2651
- package/src/i18n/chartsTranslations.ts +0 -91
- package/src/i18n/chatTranslations.ts +0 -55
- package/src/i18n/messagingTranslations.ts +0 -120
- package/src/i18n/notificationsTranslations.ts +0 -32
- package/src/i18n/onboardingTranslations.ts +0 -29
- package/src/i18n/sectionNavTranslations.ts +0 -20
- package/src/i18n/uiCoreTranslations.js +0 -29
- package/src/i18n/userMenuTranslations.ts +0 -5
- package/src/index.js +0 -158
- package/src/layout/PageLayout.jsx +0 -36
- package/src/layout/SectionNav.jsx +0 -320
- package/src/messaging/AttachmentList.jsx +0 -145
- package/src/messaging/Composer.jsx +0 -197
- package/src/messaging/ConversationLaunchers.jsx +0 -51
- package/src/messaging/ConversationList.jsx +0 -109
- package/src/messaging/DirectMessageLauncher.jsx +0 -112
- package/src/messaging/MessageBubble.jsx +0 -183
- package/src/messaging/MessagingProvider.jsx +0 -0
- package/src/messaging/MessagingScopeConfig.jsx +0 -24
- package/src/messaging/PollCard.jsx +0 -163
- package/src/messaging/ReactionBar.jsx +0 -43
- package/src/messaging/ReadTicks.jsx +0 -82
- package/src/messaging/Thread.jsx +0 -195
- package/src/messaging/api.js +0 -48
- package/src/messaging/composerImageCompression.js +0 -35
- package/src/messaging/linkifyText.jsx +0 -37
- package/src/notifications/NotificationBell.jsx +0 -84
- package/src/notifications/NotificationSettings.jsx +0 -330
- package/src/notifications/NotificationsProvider.jsx +0 -224
- package/src/notifications/PopupSurface.jsx +0 -105
- package/src/notifications/api.js +0 -55
- package/src/notifications/feedApi.js +0 -18
- package/src/notifications/realtime.jsx +0 -138
- package/src/notifications/serviceWorker/sw.js +0 -50
- package/src/onboarding/OnboardingProvider.jsx +0 -326
- package/src/onboarding/OnboardingWizard.jsx +0 -61
- package/src/onboarding/WizardDialogShell.jsx +0 -51
- package/src/onboarding/api.js +0 -13
- package/src/onboarding/stepSelection.js +0 -16
- package/src/onboarding/steps/BrowserPushStep.jsx +0 -121
- package/src/onboarding/steps/CompleteNameStep.jsx +0 -46
- package/src/onboarding/steps/CookieConsentStep.jsx +0 -133
- package/src/onboarding/steps/PwaInstallStep.jsx +0 -47
- package/src/pages/AccountPage.jsx +0 -394
- package/src/pages/LoginPage.jsx +0 -343
- package/src/pages/PasswordChangePage.jsx +0 -62
- package/src/pages/PasswordInvitePage.jsx +0 -177
- package/src/pages/PasswordResetRequestPage.jsx +0 -68
- package/src/pages/SignUpPage.jsx +0 -268
- package/src/pages/SignupConfirmPage.jsx +0 -155
- package/src/testing/checkKitIntegration.js +0 -233
- package/src/theme/createAppTheme.js +0 -423
- package/src/theme/fonts.js +0 -3
- package/src/theme/index.js +0 -21
- package/src/theme/kitSxRegistry.js +0 -285
- package/src/theme/themeCompleteness.js +0 -1045
- package/src/theme/tokens.js +0 -478
- package/src/utils/auth-errors.js +0 -76
- package/src/utils/authService.js +0 -223
- package/src/utils/resolveErrorText.js +0 -28
- package/src/utils/webauthn.js +0 -51
- package/tests/AccountPage.profileStatements.test.jsx +0 -162
- package/tests/AccountPage.test.jsx +0 -200
- package/tests/AuthContext.test.jsx +0 -129
- package/tests/BarChart.test.jsx +0 -112
- package/tests/BrowserPushStep.test.jsx +0 -110
- package/tests/ChartFrame.test.jsx +0 -336
- package/tests/ConversationList.test.jsx +0 -144
- package/tests/CookieConsentStep.test.jsx +0 -69
- package/tests/EmptyState.test.jsx +0 -62
- package/tests/LineChart.test.jsx +0 -80
- package/tests/MessagingProvider.test.jsx +0 -50
- package/tests/MobileBottomNav.test.jsx +0 -319
- package/tests/NotificationBell.test.jsx +0 -60
- package/tests/NotificationSettings.test.jsx +0 -276
- package/tests/NotificationsProvider.test.jsx +0 -240
- package/tests/OnboardingProvider.test.jsx +0 -294
- package/tests/OnboardingWizard.test.jsx +0 -143
- package/tests/PasswordChangeForm.test.jsx +0 -70
- package/tests/PasswordInvitePage.test.jsx +0 -142
- package/tests/PasswordSetForm.test.jsx +0 -70
- package/tests/PopupSurface.test.jsx +0 -142
- package/tests/ProfileComponent.refresh.test.jsx +0 -194
- package/tests/QrSignupManager.registrationContext.test.jsx +0 -106
- package/tests/QrSignupManagerInfoBox.test.jsx +0 -49
- package/tests/ScatterChart.test.jsx +0 -270
- package/tests/SectionNav.test.jsx +0 -363
- package/tests/SignUpPage.test.jsx +0 -208
- package/tests/SoftChip.test.jsx +0 -105
- package/tests/StatTile.test.jsx +0 -57
- package/tests/Thread.test.jsx +0 -151
- package/tests/TimeSeriesChart.test.jsx +0 -367
- package/tests/UserListComponent.test.jsx +0 -192
- package/tests/UserMenu.test.jsx +0 -171
- package/tests/apiClientLanguage.test.js +0 -33
- package/tests/apiClientPublicPaths.test.js +0 -178
- package/tests/authApiLogin.test.js +0 -42
- package/tests/authApiRegistration.test.js +0 -31
- package/tests/authErrorCodeRendering.test.jsx +0 -77
- package/tests/authErrors.test.js +0 -74
- package/tests/authTranslations.test.js +0 -74
- package/tests/chart-api-census.test.js +0 -366
- package/tests/chartAxisTickBand.test.jsx +0 -95
- package/tests/chartDefaults.test.js +0 -902
- package/tests/chartLabels.test.js +0 -50
- package/tests/chartsPalette.test.js +0 -99
- package/tests/chatApi.test.js +0 -48
- package/tests/chatDriverNames.test.jsx +0 -71
- package/tests/chatExports.test.js +0 -3
- package/tests/chatList.test.jsx +0 -84
- package/tests/chatPicker.test.jsx +0 -82
- package/tests/chatSocket.test.jsx +0 -26
- package/tests/chatThread.test.jsx +0 -116
- package/tests/chatTranslations.test.js +0 -47
- package/tests/chatWorkspace.test.jsx +0 -234
- package/tests/checkKitIntegration.test.jsx +0 -219
- package/tests/createAppTheme.test.js +0 -132
- package/tests/createAppThemeDark.test.js +0 -127
- package/tests/createAppThemeLightGuard.test.js +0 -40
- package/tests/createAppThemePageContrast.test.js +0 -108
- package/tests/createAppThemeTypography.test.js +0 -53
- package/tests/errorCallSiteGuard.test.js +0 -32
- package/tests/exportChart.test.js +0 -313
- package/tests/feedApi.test.js +0 -46
- package/tests/fixtures/light-theme-baseline.json +0 -2234
- package/tests/i18nAggregate.test.js +0 -120
- package/tests/i18nGermanVariant.test.js +0 -65
- package/tests/loginPageErrorResolution.test.jsx +0 -102
- package/tests/messagingApi.test.js +0 -32
- package/tests/messagingChunk6.test.jsx +0 -116
- package/tests/messagingCompactBubble.test.jsx +0 -64
- package/tests/messagingComposer.test.jsx +0 -136
- package/tests/messagingComposerChunk5.test.jsx +0 -113
- package/tests/messagingContractConformance.test.js +0 -69
- package/tests/messagingDirectMessageLauncher.test.jsx +0 -151
- package/tests/messagingExports.test.js +0 -21
- package/tests/messagingInteractions.test.jsx +0 -136
- package/tests/messagingLastMessagePreview.test.jsx +0 -93
- package/tests/messagingLinkify.test.jsx +0 -51
- package/tests/messagingMessageActions.test.jsx +0 -163
- package/tests/messagingMsg6.test.jsx +0 -105
- package/tests/messagingMsg6f.test.jsx +0 -155
- package/tests/messagingMsg6g.test.jsx +0 -166
- package/tests/messagingMsg6h.test.jsx +0 -136
- package/tests/messagingMsg6i.test.jsx +0 -129
- package/tests/messagingPollRendering.test.jsx +0 -142
- package/tests/messagingReactionMerge.test.jsx +0 -77
- package/tests/messagingReadTicksTooltip.test.jsx +0 -36
- package/tests/messagingThreadReceipts.test.jsx +0 -178
- package/tests/messagingThreadingQuoting.test.jsx +0 -87
- package/tests/messagingUnreadLifecycle.test.jsx +0 -78
- package/tests/notificationsApi.test.js +0 -41
- package/tests/notificationsExports.test.js +0 -34
- package/tests/onboardingDescriptors.test.js +0 -132
- package/tests/packageTreeShaking.test.js +0 -126
- package/tests/realtime.test.jsx +0 -219
- package/tests/resolveErrorText.test.js +0 -72
- package/tests/stepSelection.test.js +0 -53
- package/tests/themeCompleteness.test.js +0 -626
- package/tests/timeSeriesLegend.test.js +0 -99
- package/tests/userScreenTranslations.test.jsx +0 -218
- package/tsconfig.build.json +0 -18
- package/vite.config.mjs +0 -6
- package/work-orders/AUTH-1.md +0 -74
- package/work-orders/AUTH-2.md +0 -74
- package/work-orders/AUTH-4.md +0 -183
- package/work-orders/AUTH-5.md +0 -154
- package/work-orders/AUTH-7.md +0 -181
- package/work-orders/AUTH-8.md +0 -184
- package/work-orders/CHART-1.md +0 -285
- package/work-orders/CHART-2.md +0 -222
- package/work-orders/CHART-3.md +0 -163
- package/work-orders/CHART-4.md +0 -203
- package/work-orders/CHART-5.md +0 -226
- package/work-orders/CHART-6.md +0 -428
- package/work-orders/CHART-7.md +0 -175
- package/work-orders/DX-1.md +0 -169
- package/work-orders/DX-2.md +0 -188
- package/work-orders/DX-3.md +0 -195
- package/work-orders/I18N-1.md +0 -254
- package/work-orders/I18N-3.md +0 -207
- package/work-orders/MSG-3.md +0 -375
- package/work-orders/MSG-3b.md +0 -1002
- package/work-orders/MSG-3c.md +0 -378
- package/work-orders/MSG-3d.md +0 -268
- package/work-orders/MSG-3e.md +0 -164
- package/work-orders/MSG-3f.md +0 -391
- package/work-orders/MSG-6e.md +0 -308
- package/work-orders/MSG-6f.md +0 -214
- package/work-orders/MSG-6g.md +0 -244
- package/work-orders/MSG-6h.md +0 -238
- package/work-orders/MSG-6i.md +0 -271
- package/work-orders/MSG-6j.md +0 -117
- package/work-orders/NOTIF-12.md +0 -214
- package/work-orders/NOTIF-13.md +0 -142
- package/work-orders/NOTIF-14.md +0 -151
- package/work-orders/PRIM-1.md +0 -177
- package/work-orders/SHELL-1.md +0 -255
- package/work-orders/SHELL-2.md +0 -197
- package/work-orders/SHELL-3.md +0 -359
- package/work-orders/SHELL-4.md +0 -351
- package/work-orders/SHELL-5.md +0 -345
- package/work-orders/SHELL-6.md +0 -210
- package/work-orders/THEME-1.md +0 -587
- package/work-orders/THEME-10.md +0 -303
- package/work-orders/THEME-11.md +0 -208
- package/work-orders/THEME-2.md +0 -339
- package/work-orders/THEME-3.md +0 -210
- package/work-orders/THEME-4.md +0 -271
- package/work-orders/THEME-5.md +0 -341
- package/work-orders/THEME-6.md +0 -247
- package/work-orders/THEME-7.md +0 -82
- package/work-orders/THEME-8.md +0 -211
- package/work-orders/THEME-9.md +0 -194
- package/work-orders/UCM-AUTH-10.md +0 -490
- package/work-orders/UCM-AUTH-11.md +0 -185
- package/work-orders/UCM-AUTH-12.md +0 -98
- package/work-orders/UCM-AUTH-13.md +0 -47
- package/work-orders/UCM-AUTH-9.md +0 -207
- package/work-orders/UCM-CHART-10.md +0 -150
- package/work-orders/UCM-CHART-11.md +0 -132
- package/work-orders/UCM-CHART-12.md +0 -348
- package/work-orders/UCM-CHART-13.md +0 -122
- package/work-orders/UCM-CHART-14.md +0 -198
- package/work-orders/UCM-CHART-15.md +0 -187
- package/work-orders/UCM-CHART-16.md +0 -169
- package/work-orders/UCM-CHART-17.md +0 -195
- package/work-orders/UCM-CHART-18.md +0 -200
- package/work-orders/UCM-CHART-8.md +0 -147
- package/work-orders/UCM-CHART-9.md +0 -265
- package/work-orders/UCM-CHAT-1.md +0 -190
- package/work-orders/UCM-CHAT-2.md +0 -75
- package/work-orders/UCM-CI-1.md +0 -65
- package/work-orders/UCM-DEP-1.md +0 -63
- package/work-orders/UCM-I18N-4.md +0 -226
- package/work-orders/UCM-I18N-5.md +0 -211
- package/work-orders/UCM-MSG-20.md +0 -192
- package/work-orders/UCM-PRIM-2.md +0 -114
- package/work-orders/UCM-SHELL-7.md +0 -134
- package/work-orders/UCM-SHELL-8.md +0 -125
- package/work-orders/UCM-TEST-1.md +0 -304
- package/work-orders/UCM-THEME-13.md +0 -69
- package/work-orders/UCM-THEME-14.md +0 -312
- package/work-orders/UCM-THEME-15.md +0 -356
- package/work-orders/UCM-THEME-16.md +0 -80
- package/work-orders/UCM-THEME-17.md +0 -111
- package/work-orders/UCM-THEME-18.md +0 -184
- package/work-orders/assets/AUTH-4-user-list-card.html +0 -407
- package/work-orders/assets/PRIM-1-dashboard-primitives.html +0 -624
- package/work-orders/assets/SHELL-2-account-navigation.html +0 -1159
- package/work-orders/assets/THEME-1-baseline-reference-sheet.html +0 -1352
- package/work-orders/assets/UCM-CHAT-1-ai-chat.html +0 -447
- package/work-orders/assets/UCM-THEME-13-dark-prototype.html +0 -390
- package/work-orders/assets/UCM-THEME-17-type-scale.html +0 -391
|
@@ -1,447 +0,0 @@
|
|
|
1
|
-
<title>AI Chat Surface</title>
|
|
2
|
-
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=DM+Sans:opsz,wght@9..40,400;9..40,500;9..40,600;9..40,700&display=swap">
|
|
3
|
-
<style>
|
|
4
|
-
/* Layout: chat list column + thread column at 1280; list and model picker become sheets at 375.
|
|
5
|
-
Tokens: cockpit theme (primary #3D5A99) over the ui-core-micha light baseline, identical to
|
|
6
|
-
cockpit/work-orders/assets/CKP-REM-4-prs.html. Cockpit is light-only, so this spec is too. */
|
|
7
|
-
:root {
|
|
8
|
-
color-scheme: light;
|
|
9
|
-
--page: #FAFAFA;
|
|
10
|
-
--paper: #FFFFFF;
|
|
11
|
-
--subtle: #F4F5F6;
|
|
12
|
-
--divider: rgba(33,37,41,.10);
|
|
13
|
-
--ink: #212529;
|
|
14
|
-
--ink-2: #5B6670;
|
|
15
|
-
--ink-3: #6A7178;
|
|
16
|
-
--primary: #3D5A99;
|
|
17
|
-
--primary-dark: #324a7d;
|
|
18
|
-
--accent-tint: #eff2f7;
|
|
19
|
-
--ok-text: #35794A; --ok-bg: #E5F4E9;
|
|
20
|
-
--warn-text: #976100; --warn-bg: #FBF0DC;
|
|
21
|
-
--err-text: #BF3227; --err-bg: #FBEAE8;
|
|
22
|
-
--stale-text: #5B6B7D; --stale-bg: #EAEDF1;
|
|
23
|
-
--scrim: rgba(33,37,41,.32);
|
|
24
|
-
--font: 'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
|
25
|
-
--mono: ui-monospace, 'SFMono-Regular', Consolas, monospace;
|
|
26
|
-
}
|
|
27
|
-
* { box-sizing: border-box; }
|
|
28
|
-
body { background: var(--page); color: var(--ink); font-family: var(--font); font-size: 13px; margin: 0; padding: 24px 16px 40px; }
|
|
29
|
-
.frames { display: flex; gap: 32px; align-items: flex-start; overflow-x: auto; padding-bottom: 8px; }
|
|
30
|
-
.frame { flex: 0 0 auto; display: grid; gap: 8px; align-content: start; }
|
|
31
|
-
.frame-label { font-size: 12px; color: var(--ink-3); font-variant-numeric: tabular-nums; }
|
|
32
|
-
.vp { background: var(--page); border: 1px solid var(--divider); border-radius: 6px; position: relative; overflow: hidden; }
|
|
33
|
-
.vp-375 { width: 375px; height: 740px; }
|
|
34
|
-
.vp-1280 { width: 1280px; height: 760px; }
|
|
35
|
-
.coverage { max-width: 1280px; margin: 0 0 20px; color: var(--ink-2); font-size: 12.5px; line-height: 1.5; display: grid; gap: 4px; }
|
|
36
|
-
.coverage b { color: var(--ink); font-weight: 600; }
|
|
37
|
-
|
|
38
|
-
/* Workspace */
|
|
39
|
-
.ws { display: grid; grid-template-columns: 272px minmax(0, 1fr); height: 100%; }
|
|
40
|
-
.vp-375 .ws { grid-template-columns: minmax(0, 1fr); }
|
|
41
|
-
|
|
42
|
-
/* Chat list */
|
|
43
|
-
.list { background: var(--subtle); border-right: 1px solid var(--divider); display: flex; flex-direction: column; min-height: 0; }
|
|
44
|
-
.list-head { display: flex; align-items: center; justify-content: space-between; padding: 14px 12px 10px 16px; }
|
|
45
|
-
.list-title { font-size: 14px; font-weight: 600; }
|
|
46
|
-
.items { display: grid; gap: 2px; padding: 0 8px; overflow: hidden; }
|
|
47
|
-
.item { display: grid; grid-template-columns: minmax(0, 1fr) 28px; align-items: center; gap: 4px; padding: 8px 4px 8px 10px; border-radius: 6px; color: var(--ink); }
|
|
48
|
-
.item.active { background: var(--accent-tint); }
|
|
49
|
-
.item.active .item-title { color: var(--primary-dark); font-weight: 600; }
|
|
50
|
-
.item-title { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
51
|
-
.item-meta { font-size: 11.5px; color: var(--ink-3); font-variant-numeric: tabular-nums; }
|
|
52
|
-
.item .icon-btn { opacity: .0; }
|
|
53
|
-
.item.active .icon-btn, .item.hover .icon-btn { opacity: 1; }
|
|
54
|
-
.list-foot { margin-top: auto; border-top: 1px solid var(--divider); padding: 8px; }
|
|
55
|
-
.archived-toggle { display: flex; align-items: center; justify-content: space-between; width: 100%; padding: 8px 10px; border-radius: 6px; color: var(--ink-2); font-weight: 500; }
|
|
56
|
-
.count { color: var(--ink-3); font-variant-numeric: tabular-nums; font-weight: 500; }
|
|
57
|
-
|
|
58
|
-
/* Menu (row overflow) */
|
|
59
|
-
.menu { position: absolute; background: var(--paper); border: 1px solid var(--divider); border-radius: 6px; box-shadow: 0 6px 20px rgba(33,37,41,.14); padding: 4px 0; min-width: 168px; z-index: 3; }
|
|
60
|
-
.menu-item { display: flex; align-items: center; gap: 10px; padding: 7px 14px; }
|
|
61
|
-
.menu-item.danger { color: var(--err-text); }
|
|
62
|
-
.menu-sep { height: 1px; background: var(--divider); margin: 4px 0; }
|
|
63
|
-
|
|
64
|
-
/* Thread */
|
|
65
|
-
.main { display: flex; flex-direction: column; min-width: 0; min-height: 0; background: var(--paper); }
|
|
66
|
-
.bar { display: flex; align-items: center; gap: 8px; padding: 10px 16px; border-bottom: 1px solid var(--divider); min-height: 52px; }
|
|
67
|
-
.vp-375 .bar { padding: 8px 8px 8px 4px; }
|
|
68
|
-
.bar-title { font-size: 15px; font-weight: 600; min-width: 0; flex: 1 1 auto; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
69
|
-
.picker-btn { display: inline-flex; align-items: center; gap: 6px; height: 32px; padding: 0 10px; border: 1px solid var(--divider); border-radius: 6px; background: var(--paper); color: var(--ink); font-weight: 500; white-space: nowrap; }
|
|
70
|
-
.picker-btn .sep { color: var(--ink-3); }
|
|
71
|
-
.picker-btn .effort { color: var(--ink-2); }
|
|
72
|
-
.vp-375 .picker-btn { padding: 0 8px; }
|
|
73
|
-
.icon-btn { width: 32px; height: 32px; display: inline-grid; place-items: center; border-radius: 6px; color: var(--ink-2); flex: 0 0 32px; }
|
|
74
|
-
.icon-btn svg, .menu-item svg, .archived-toggle svg, .picker-btn svg, .send svg, .opt svg { width: 18px; height: 18px; fill: currentColor; }
|
|
75
|
-
|
|
76
|
-
.thread { flex: 1 1 auto; overflow: hidden; padding: 20px 24px 8px; display: grid; gap: 18px; align-content: start; }
|
|
77
|
-
.vp-375 .thread { padding: 14px 12px 8px; gap: 14px; }
|
|
78
|
-
.col { width: 100%; max-width: 760px; margin: 0 auto; display: grid; gap: 18px; }
|
|
79
|
-
.vp-375 .col { gap: 14px; }
|
|
80
|
-
.msg-user { justify-self: end; max-width: 78%; background: var(--accent-tint); border-radius: 10px 10px 2px 10px; padding: 10px 14px; line-height: 1.5; }
|
|
81
|
-
.vp-375 .msg-user { max-width: 88%; }
|
|
82
|
-
.msg-ai { display: grid; gap: 8px; line-height: 1.55; min-width: 0; }
|
|
83
|
-
.md p { margin: 0; }
|
|
84
|
-
.md ul { margin: 0; padding-left: 20px; display: grid; gap: 3px; }
|
|
85
|
-
.md code { font-family: var(--mono); font-size: 12px; background: var(--subtle); padding: 1px 4px; border-radius: 3px; }
|
|
86
|
-
.md table { border-collapse: collapse; font-size: 12.5px; font-variant-numeric: tabular-nums; }
|
|
87
|
-
.md th, .md td { text-align: left; padding: 5px 12px 5px 0; border-bottom: 1px solid var(--divider); }
|
|
88
|
-
.md th { font-weight: 600; color: var(--ink-2); }
|
|
89
|
-
.md .table-wrap { overflow-x: auto; }
|
|
90
|
-
.md { display: grid; gap: 8px; }
|
|
91
|
-
|
|
92
|
-
.sources { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
|
|
93
|
-
.src { display: inline-flex; align-items: center; gap: 5px; height: 24px; max-width: 260px; padding: 0 8px; border: 1px solid var(--divider); border-radius: 4px; font-size: 12px; color: var(--ink-2); background: var(--paper); }
|
|
94
|
-
.src svg { width: 13px; height: 13px; fill: var(--ink-3); flex: 0 0 13px; }
|
|
95
|
-
.src span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
96
|
-
.turn-meta { font-size: 11.5px; color: var(--ink-3); font-variant-numeric: tabular-nums; }
|
|
97
|
-
.switch-mark { display: flex; align-items: center; gap: 10px; color: var(--ink-3); font-size: 11.5px; }
|
|
98
|
-
.switch-mark::before, .switch-mark::after { content: ""; height: 1px; background: var(--divider); flex: 1 1 auto; }
|
|
99
|
-
|
|
100
|
-
.typing { display: inline-flex; gap: 4px; align-items: center; height: 18px; }
|
|
101
|
-
.typing i { width: 6px; height: 6px; border-radius: 50%; background: var(--ink-3); opacity: .55; }
|
|
102
|
-
.caret { display: inline-block; width: 7px; height: 14px; background: var(--ink-2); vertical-align: -2px; margin-left: 1px; }
|
|
103
|
-
.searching { display: inline-flex; align-items: center; gap: 6px; height: 24px; padding: 0 8px; border-radius: 4px; background: var(--subtle); color: var(--ink-2); font-size: 12px; }
|
|
104
|
-
|
|
105
|
-
/* Composer */
|
|
106
|
-
.composer { border-top: 1px solid var(--divider); padding: 12px 24px 14px; }
|
|
107
|
-
.vp-375 .composer { padding: 10px 12px 12px; }
|
|
108
|
-
.composer .col { gap: 8px; }
|
|
109
|
-
.input { border: 1px solid rgba(33,37,41,.23); border-radius: 8px; min-height: 64px; padding: 10px 12px; color: var(--ink-3); line-height: 1.5; background: var(--paper); }
|
|
110
|
-
.input.filled { color: var(--ink); }
|
|
111
|
-
.input.focus { border: 2px solid var(--primary); padding: 9px 11px; }
|
|
112
|
-
.actions { display: flex; justify-content: flex-end; gap: 8px; align-items: center; }
|
|
113
|
-
.btn { display: inline-flex; align-items: center; gap: 6px; height: 34px; padding: 0 14px; border-radius: 6px; font-weight: 600; font-size: 13px; letter-spacing: .02em; }
|
|
114
|
-
.btn.contained { background: var(--primary); color: #FFFFFF; }
|
|
115
|
-
.btn.contained.disabled { background: rgba(33,37,41,.12); color: rgba(33,37,41,.38); }
|
|
116
|
-
.btn.outlined { border: 1px solid rgba(61,90,153,.5); color: var(--primary); }
|
|
117
|
-
.btn.text { color: var(--primary); padding: 0 8px; }
|
|
118
|
-
.send svg { fill: currentColor; }
|
|
119
|
-
|
|
120
|
-
/* Notices */
|
|
121
|
-
.notice { display: flex; align-items: flex-start; gap: 10px; padding: 10px 12px; border-radius: 6px; line-height: 1.45; }
|
|
122
|
-
.notice.err { background: var(--err-bg); color: var(--err-text); }
|
|
123
|
-
.notice.warn { background: var(--warn-bg); color: var(--warn-text); }
|
|
124
|
-
.notice .grow { flex: 1 1 auto; min-width: 0; }
|
|
125
|
-
.notice .btn { height: 28px; padding: 0 8px; color: inherit; }
|
|
126
|
-
.chip { display: inline-flex; align-items: center; gap: 6px; height: 22px; padding: 0 8px; border-radius: 4px; font-size: 11.5px; font-weight: 500; white-space: nowrap; }
|
|
127
|
-
.chip.stale { background: var(--stale-bg); color: var(--stale-text); }
|
|
128
|
-
.chip.warn { background: var(--warn-bg); color: var(--warn-text); }
|
|
129
|
-
.chip .dot { width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
|
|
130
|
-
|
|
131
|
-
/* Sheets / popover */
|
|
132
|
-
.scrim { position: absolute; inset: 0; background: var(--scrim); z-index: 2; }
|
|
133
|
-
.drawer { position: absolute; top: 0; bottom: 0; left: 0; width: 300px; background: var(--paper); z-index: 3; display: flex; flex-direction: column; box-shadow: 4px 0 24px rgba(33,37,41,.18); }
|
|
134
|
-
.drawer .list { background: var(--paper); border-right: 0; height: 100%; }
|
|
135
|
-
.sheet { position: absolute; left: 0; right: 0; bottom: 0; background: var(--paper); z-index: 3; border-radius: 12px 12px 0 0; box-shadow: 0 -6px 24px rgba(33,37,41,.18); padding: 8px 0 12px; }
|
|
136
|
-
.grabber { width: 36px; height: 4px; border-radius: 2px; background: var(--divider); margin: 0 auto 8px; }
|
|
137
|
-
.popover { position: absolute; top: 50px; right: 56px; width: 340px; background: var(--paper); border: 1px solid var(--divider); border-radius: 8px; box-shadow: 0 8px 28px rgba(33,37,41,.16); z-index: 3; padding: 6px 0 12px; }
|
|
138
|
-
.grp { font-size: 11.5px; font-weight: 600; color: var(--ink-3); padding: 10px 16px 4px; }
|
|
139
|
-
.opt { display: grid; grid-template-columns: 20px minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 7px 16px; }
|
|
140
|
-
.opt.sel { background: var(--accent-tint); }
|
|
141
|
-
.opt .check { color: var(--primary); }
|
|
142
|
-
.opt .name { font-weight: 500; }
|
|
143
|
-
.opt .cost { font-size: 11.5px; color: var(--ink-3); }
|
|
144
|
-
.effort-row { border-top: 1px solid var(--divider); margin-top: 6px; padding: 12px 16px 0; display: grid; gap: 8px; }
|
|
145
|
-
.effort-label { font-size: 11.5px; font-weight: 600; color: var(--ink-3); }
|
|
146
|
-
.seg { display: grid; grid-template-columns: repeat(4, 1fr); border: 1px solid rgba(61,90,153,.5); border-radius: 6px; overflow: hidden; }
|
|
147
|
-
.seg span { text-align: center; padding: 6px 0; font-weight: 500; color: var(--primary); border-left: 1px solid rgba(61,90,153,.5); }
|
|
148
|
-
.seg span:first-child { border-left: 0; }
|
|
149
|
-
.seg span.on { background: var(--primary); color: #FFFFFF; }
|
|
150
|
-
.seg span.off { color: rgba(33,37,41,.38); background: var(--subtle); }
|
|
151
|
-
|
|
152
|
-
/* Edge-state gallery */
|
|
153
|
-
.states { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; padding: 20px; height: 100%; align-content: start; background: var(--page); }
|
|
154
|
-
.state { background: var(--paper); border: 1px solid var(--divider); border-radius: 6px; display: flex; flex-direction: column; min-height: 220px; overflow: hidden; }
|
|
155
|
-
.state-label { font-size: 12px; color: var(--ink-3); padding: 8px 12px; border-bottom: 1px solid var(--divider); background: var(--subtle); }
|
|
156
|
-
.state-body { padding: 16px; display: grid; gap: 12px; align-content: start; flex: 1 1 auto; }
|
|
157
|
-
.empty { display: grid; gap: 6px; justify-items: center; text-align: center; padding: 28px 8px; color: var(--ink-2); }
|
|
158
|
-
.empty h3 { margin: 0; font-size: 15px; color: var(--ink); font-weight: 600; }
|
|
159
|
-
</style>
|
|
160
|
-
|
|
161
|
-
<div class="coverage">
|
|
162
|
-
<div><b>Coverage:</b> the shared ui-core-micha chat surface (chat list with archive, thread with Markdown replies and source chips, composer with stop, per-chat model and effort picker, edge states), shown in cockpit's theme as the first consumer. Everything app-specific around it (cockpit navigation, the existing Open WebUI chat page) is outside this prototype and stays untouched.</div>
|
|
163
|
-
<div><b>Example content:</b> chat titles, questions, answers and source paths are illustrative, not real knowledge-base data.</div>
|
|
164
|
-
</div>
|
|
165
|
-
|
|
166
|
-
<svg width="0" height="0" style="position:absolute" aria-hidden="true">
|
|
167
|
-
<symbol id="i-more" viewBox="0 0 24 24"><path d="M12 8a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm0 2a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm0 6a2 2 0 1 0 0 4 2 2 0 0 0 0-4z"/></symbol>
|
|
168
|
-
<symbol id="i-new" viewBox="0 0 24 24"><path d="M20 2H4a2 2 0 0 0-2 2v18l4-4h14a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm0 14H5.17L4 17.17V4h16v12zM11 5h2v3h3v2h-3v3h-2v-3H8V8h3z"/></symbol>
|
|
169
|
-
<symbol id="i-menu" viewBox="0 0 24 24"><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/></symbol>
|
|
170
|
-
<symbol id="i-down" viewBox="0 0 24 24"><path d="M7 10l5 5 5-5z"/></symbol>
|
|
171
|
-
<symbol id="i-right" viewBox="0 0 24 24"><path d="M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"/></symbol>
|
|
172
|
-
<symbol id="i-send" viewBox="0 0 24 24"><path d="M2.01 21 23 12 2.01 3 2 10l15 2-15 2z"/></symbol>
|
|
173
|
-
<symbol id="i-stop" viewBox="0 0 24 24"><path d="M6 6h12v12H6z"/></symbol>
|
|
174
|
-
<symbol id="i-doc" viewBox="0 0 24 24"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zM6 20V4h7v5h5v11H6z"/></symbol>
|
|
175
|
-
<symbol id="i-edit" viewBox="0 0 24 24"><path d="M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04a1 1 0 0 0 0-1.41l-2.34-2.34a1 1 0 0 0-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z"/></symbol>
|
|
176
|
-
<symbol id="i-archive" viewBox="0 0 24 24"><path d="M20.54 5.23 19.15 3.55A1.45 1.45 0 0 0 18 3H6c-.47 0-.88.21-1.16.55L3.46 5.23A1.97 1.97 0 0 0 3 6.5V19a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6.5c0-.48-.17-.93-.46-1.27zM12 17.5 6.5 12H10v-2h4v2h3.5L12 17.5zM5.12 5l.81-1h12l.94 1H5.12z"/></symbol>
|
|
177
|
-
<symbol id="i-delete" viewBox="0 0 24 24"><path d="M6 19a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"/></symbol>
|
|
178
|
-
<symbol id="i-check" viewBox="0 0 24 24"><path d="M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"/></symbol>
|
|
179
|
-
<symbol id="i-search" viewBox="0 0 24 24"><path d="M15.5 14h-.79l-.28-.27A6.47 6.47 0 0 0 16 9.5 6.5 6.5 0 1 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/></symbol>
|
|
180
|
-
</svg>
|
|
181
|
-
|
|
182
|
-
<div class="frames">
|
|
183
|
-
|
|
184
|
-
<!-- ===================== 1280 · main working state ===================== -->
|
|
185
|
-
<div class="frame">
|
|
186
|
-
<div class="frame-label">1280 px · chat with a completed answer, a streaming answer and the model picker open</div>
|
|
187
|
-
<div class="vp vp-1280">
|
|
188
|
-
<div class="ws">
|
|
189
|
-
<aside class="list" aria-label="Chats">
|
|
190
|
-
<div class="list-head">
|
|
191
|
-
<span class="list-title">Chats</span>
|
|
192
|
-
<span class="icon-btn" role="button" aria-label="New chat" title="New chat"><svg><use href="#i-new"/></svg></span>
|
|
193
|
-
</div>
|
|
194
|
-
<div class="items">
|
|
195
|
-
<div class="item active"><div><div class="item-title">Steering meeting follow-ups</div><div class="item-meta">Today 09:42</div></div><span class="icon-btn" aria-label="Chat actions" title="Chat actions"><svg><use href="#i-more"/></svg></span></div>
|
|
196
|
-
<div class="item hover"><div><div class="item-title">Funding call deadlines Q1 2027</div><div class="item-meta">Yesterday</div></div><span class="icon-btn" aria-label="Chat actions" title="Chat actions"><svg><use href="#i-more"/></svg></span></div>
|
|
197
|
-
<div class="item"><div><div class="item-title">Calibration targets for the Kigoma run</div><div class="item-meta">13 Oct</div></div><span class="icon-btn" aria-label="Chat actions"><svg><use href="#i-more"/></svg></span></div>
|
|
198
|
-
<div class="item"><div><div class="item-title">What the backup runbook says about restic</div><div class="item-meta">9 Oct</div></div><span class="icon-btn" aria-label="Chat actions"><svg><use href="#i-more"/></svg></span></div>
|
|
199
|
-
<div class="item"><div><div class="item-title">Ethics amendment wording</div><div class="item-meta">2 Oct</div></div><span class="icon-btn" aria-label="Chat actions"><svg><use href="#i-more"/></svg></span></div>
|
|
200
|
-
</div>
|
|
201
|
-
<div class="list-foot">
|
|
202
|
-
<div class="archived-toggle" role="button"><span>Archived</span><span class="count">7 <svg style="vertical-align:-4px"><use href="#i-right"/></svg></span></div>
|
|
203
|
-
</div>
|
|
204
|
-
<!-- row overflow menu, opened on the hovered row -->
|
|
205
|
-
<div class="menu" style="top: 118px; left: 214px;">
|
|
206
|
-
<div class="menu-item"><svg><use href="#i-edit"/></svg>Rename</div>
|
|
207
|
-
<div class="menu-item"><svg><use href="#i-archive"/></svg>Archive</div>
|
|
208
|
-
<div class="menu-sep"></div>
|
|
209
|
-
<div class="menu-item danger"><svg><use href="#i-delete"/></svg>Delete</div>
|
|
210
|
-
</div>
|
|
211
|
-
</aside>
|
|
212
|
-
|
|
213
|
-
<section class="main" aria-label="Chat">
|
|
214
|
-
<div class="bar">
|
|
215
|
-
<span class="bar-title">Steering meeting follow-ups</span>
|
|
216
|
-
<span class="picker-btn" role="button" aria-haspopup="listbox">Opus 5.5 <span class="sep">·</span> <span class="effort">High</span><svg><use href="#i-down"/></svg></span>
|
|
217
|
-
</div>
|
|
218
|
-
|
|
219
|
-
<div class="thread">
|
|
220
|
-
<div class="col">
|
|
221
|
-
<div class="msg-user">Which open points from the October steering meeting are still without an owner?</div>
|
|
222
|
-
<div class="msg-ai">
|
|
223
|
-
<div class="md">
|
|
224
|
-
<p>Three of the eight action items in the minutes have no owner assigned:</p>
|
|
225
|
-
<ul>
|
|
226
|
-
<li><b>Data-sharing agreement</b> with the regional health office, due before the field phase.</li>
|
|
227
|
-
<li><b>Re-run of the calibration</b> with the corrected referral distances (<code>v3.1</code> inputs).</li>
|
|
228
|
-
<li><b>Budget reallocation</b> of the travel line to transcription.</li>
|
|
229
|
-
</ul>
|
|
230
|
-
<div class="table-wrap"><table>
|
|
231
|
-
<thead><tr><th>Item</th><th>Due</th><th>Raised by</th></tr></thead>
|
|
232
|
-
<tbody>
|
|
233
|
-
<tr><td>Data-sharing agreement</td><td>30 Nov</td><td>Supervisor</td></tr>
|
|
234
|
-
<tr><td>Calibration re-run</td><td>15 Nov</td><td>Modelling team</td></tr>
|
|
235
|
-
<tr><td>Budget reallocation</td><td>31 Dec</td><td>Finance</td></tr>
|
|
236
|
-
</tbody>
|
|
237
|
-
</table></div>
|
|
238
|
-
</div>
|
|
239
|
-
<div class="sources" aria-label="Sources">
|
|
240
|
-
<span class="src" title="PhD/hram/meetings/2026-10-07 steering minutes.docx"><svg><use href="#i-doc"/></svg><span>2026-10-07 steering minutes.docx</span></span>
|
|
241
|
-
<span class="src" title="PhD/hram/planning/field phase plan.xlsx"><svg><use href="#i-doc"/></svg><span>field phase plan.xlsx</span></span>
|
|
242
|
-
</div>
|
|
243
|
-
<div class="turn-meta">Opus 5.5 · High</div>
|
|
244
|
-
</div>
|
|
245
|
-
|
|
246
|
-
<div class="msg-user">Draft a short email to the supervisor proposing owners for the first two.</div>
|
|
247
|
-
<div class="msg-ai">
|
|
248
|
-
<span class="searching"><svg style="width:13px;height:13px;fill:currentColor"><use href="#i-search"/></svg>Searching the knowledge base</span>
|
|
249
|
-
<div class="md">
|
|
250
|
-
<p>Here is a draft you can adapt:</p>
|
|
251
|
-
<p>Dear Grace, following up on the steering meeting of 7 October, I would suggest that I take the calibration re-run, since the corrected referral distances are already in the v3.1 inputs, and that<span class="caret"></span></p>
|
|
252
|
-
</div>
|
|
253
|
-
</div>
|
|
254
|
-
</div>
|
|
255
|
-
</div>
|
|
256
|
-
|
|
257
|
-
<div class="composer">
|
|
258
|
-
<div class="col">
|
|
259
|
-
<div class="input">Message</div>
|
|
260
|
-
<div class="actions">
|
|
261
|
-
<span class="btn outlined"><svg style="width:16px;height:16px;fill:currentColor"><use href="#i-stop"/></svg>Stop</span>
|
|
262
|
-
<span class="btn contained disabled send">Send<svg style="width:16px;height:16px"><use href="#i-send"/></svg></span>
|
|
263
|
-
</div>
|
|
264
|
-
</div>
|
|
265
|
-
</div>
|
|
266
|
-
</section>
|
|
267
|
-
</div>
|
|
268
|
-
|
|
269
|
-
<!-- model picker, opened from the bar -->
|
|
270
|
-
<div class="popover" role="listbox" aria-label="Model" style="right: 16px;">
|
|
271
|
-
<div class="grp">Claude Code subscription</div>
|
|
272
|
-
<div class="opt sel"><span class="check"><svg><use href="#i-check"/></svg></span><span class="name">Opus 5.5</span><span></span></div>
|
|
273
|
-
<div class="opt"><span></span><span class="name">Sonnet 5.5</span><span></span></div>
|
|
274
|
-
<div class="grp">Anthropic API</div>
|
|
275
|
-
<div class="opt"><span></span><span class="name">Sonnet 5.5</span><span class="cost">pay per use</span></div>
|
|
276
|
-
<div class="opt"><span></span><span class="name">Haiku 5.5</span><span class="cost">pay per use</span></div>
|
|
277
|
-
<div class="grp">OpenAI API</div>
|
|
278
|
-
<div class="opt"><span></span><span class="name">GPT-6 Luna</span><span class="cost">pay per use</span></div>
|
|
279
|
-
<div class="effort-row">
|
|
280
|
-
<span class="effort-label">Effort</span>
|
|
281
|
-
<div class="seg" role="radiogroup" aria-label="Effort"><span>Low</span><span>Medium</span><span class="on">High</span><span>Max</span></div>
|
|
282
|
-
</div>
|
|
283
|
-
</div>
|
|
284
|
-
</div>
|
|
285
|
-
</div>
|
|
286
|
-
|
|
287
|
-
<!-- ===================== 375 · thread ===================== -->
|
|
288
|
-
<div class="frame">
|
|
289
|
-
<div class="frame-label">375 px · thread (list and picker collapse into the bar)</div>
|
|
290
|
-
<div class="vp vp-375">
|
|
291
|
-
<div class="ws">
|
|
292
|
-
<section class="main" aria-label="Chat">
|
|
293
|
-
<div class="bar">
|
|
294
|
-
<span class="icon-btn" role="button" aria-label="Chats" title="Chats"><svg><use href="#i-menu"/></svg></span>
|
|
295
|
-
<span class="bar-title">Steering meeting follow-ups</span>
|
|
296
|
-
<span class="picker-btn" role="button">Opus 5.5 <span class="sep">·</span> <span class="effort">High</span></span>
|
|
297
|
-
<span class="icon-btn" role="button" aria-label="New chat" title="New chat"><svg><use href="#i-new"/></svg></span>
|
|
298
|
-
</div>
|
|
299
|
-
<div class="thread">
|
|
300
|
-
<div class="col">
|
|
301
|
-
<div class="msg-user">Which open points from the October steering meeting are still without an owner?</div>
|
|
302
|
-
<div class="msg-ai">
|
|
303
|
-
<div class="md">
|
|
304
|
-
<p>Three of the eight action items in the minutes have no owner assigned:</p>
|
|
305
|
-
<ul>
|
|
306
|
-
<li><b>Data-sharing agreement</b> with the regional health office, due before the field phase.</li>
|
|
307
|
-
<li><b>Re-run of the calibration</b> with the corrected referral distances (<code>v3.1</code> inputs).</li>
|
|
308
|
-
<li><b>Budget reallocation</b> of the travel line to transcription.</li>
|
|
309
|
-
</ul>
|
|
310
|
-
</div>
|
|
311
|
-
<div class="sources" aria-label="Sources">
|
|
312
|
-
<span class="src" title="PhD/hram/meetings/2026-10-07 steering minutes.docx"><svg><use href="#i-doc"/></svg><span>2026-10-07 steering minutes.docx</span></span>
|
|
313
|
-
<span class="src" title="PhD/hram/planning/field phase plan.xlsx"><svg><use href="#i-doc"/></svg><span>field phase plan.xlsx</span></span>
|
|
314
|
-
</div>
|
|
315
|
-
<div class="turn-meta">Opus 5.5 · High</div>
|
|
316
|
-
</div>
|
|
317
|
-
<div class="switch-mark">Sonnet 5.5 · Anthropic API · Medium</div>
|
|
318
|
-
<div class="msg-user">Shorter please, three bullets.</div>
|
|
319
|
-
<div class="msg-ai">
|
|
320
|
-
<div class="typing" aria-label="Answer is being written"><i></i><i></i><i></i></div>
|
|
321
|
-
</div>
|
|
322
|
-
</div>
|
|
323
|
-
</div>
|
|
324
|
-
<div class="composer">
|
|
325
|
-
<div class="col">
|
|
326
|
-
<div class="input">Message</div>
|
|
327
|
-
<div class="actions">
|
|
328
|
-
<span class="btn outlined"><svg style="width:16px;height:16px;fill:currentColor"><use href="#i-stop"/></svg>Stop</span>
|
|
329
|
-
<span class="btn contained disabled send">Send<svg style="width:16px;height:16px"><use href="#i-send"/></svg></span>
|
|
330
|
-
</div>
|
|
331
|
-
</div>
|
|
332
|
-
</div>
|
|
333
|
-
</section>
|
|
334
|
-
</div>
|
|
335
|
-
</div>
|
|
336
|
-
</div>
|
|
337
|
-
|
|
338
|
-
<!-- ===================== 375 · chat list drawer ===================== -->
|
|
339
|
-
<div class="frame">
|
|
340
|
-
<div class="frame-label">375 px · chat list as drawer</div>
|
|
341
|
-
<div class="vp vp-375">
|
|
342
|
-
<div class="ws">
|
|
343
|
-
<section class="main"><div class="bar"><span class="icon-btn"><svg><use href="#i-menu"/></svg></span><span class="bar-title">Steering meeting follow-ups</span></div><div class="thread"></div></section>
|
|
344
|
-
</div>
|
|
345
|
-
<div class="scrim"></div>
|
|
346
|
-
<div class="drawer">
|
|
347
|
-
<aside class="list" aria-label="Chats">
|
|
348
|
-
<div class="list-head">
|
|
349
|
-
<span class="list-title">Chats</span>
|
|
350
|
-
<span class="icon-btn" role="button" aria-label="New chat" title="New chat"><svg><use href="#i-new"/></svg></span>
|
|
351
|
-
</div>
|
|
352
|
-
<div class="items">
|
|
353
|
-
<div class="item active"><div><div class="item-title">Steering meeting follow-ups</div><div class="item-meta">Today 09:42</div></div><span class="icon-btn" aria-label="Chat actions"><svg><use href="#i-more"/></svg></span></div>
|
|
354
|
-
<div class="item"><div><div class="item-title">Funding call deadlines Q1 2027</div><div class="item-meta">Yesterday</div></div><span class="icon-btn" aria-label="Chat actions" style="opacity:1"><svg><use href="#i-more"/></svg></span></div>
|
|
355
|
-
<div class="item"><div><div class="item-title">Calibration targets for the Kigoma run</div><div class="item-meta">13 Oct</div></div><span class="icon-btn" aria-label="Chat actions" style="opacity:1"><svg><use href="#i-more"/></svg></span></div>
|
|
356
|
-
<div class="item"><div><div class="item-title">What the backup runbook says about restic</div><div class="item-meta">9 Oct</div></div><span class="icon-btn" aria-label="Chat actions" style="opacity:1"><svg><use href="#i-more"/></svg></span></div>
|
|
357
|
-
<div class="item"><div><div class="item-title">Ethics amendment wording</div><div class="item-meta">2 Oct</div></div><span class="icon-btn" aria-label="Chat actions" style="opacity:1"><svg><use href="#i-more"/></svg></span></div>
|
|
358
|
-
</div>
|
|
359
|
-
<div class="list-foot">
|
|
360
|
-
<div class="archived-toggle" role="button"><span>Archived</span><span class="count">7 <svg style="vertical-align:-4px"><use href="#i-right"/></svg></span></div>
|
|
361
|
-
</div>
|
|
362
|
-
</aside>
|
|
363
|
-
</div>
|
|
364
|
-
</div>
|
|
365
|
-
</div>
|
|
366
|
-
|
|
367
|
-
<!-- ===================== 375 · model picker sheet ===================== -->
|
|
368
|
-
<div class="frame">
|
|
369
|
-
<div class="frame-label">375 px · model and effort picker as bottom sheet</div>
|
|
370
|
-
<div class="vp vp-375">
|
|
371
|
-
<div class="ws">
|
|
372
|
-
<section class="main"><div class="bar"><span class="icon-btn"><svg><use href="#i-menu"/></svg></span><span class="bar-title">Steering meeting follow-ups</span><span class="picker-btn">Opus 5.5 <span class="sep">·</span> <span class="effort">High</span></span></div><div class="thread"></div></section>
|
|
373
|
-
</div>
|
|
374
|
-
<div class="scrim"></div>
|
|
375
|
-
<div class="sheet" role="listbox" aria-label="Model">
|
|
376
|
-
<div class="grabber"></div>
|
|
377
|
-
<div class="grp">Claude Code subscription</div>
|
|
378
|
-
<div class="opt sel"><span class="check"><svg><use href="#i-check"/></svg></span><span class="name">Opus 5.5</span><span></span></div>
|
|
379
|
-
<div class="opt"><span></span><span class="name">Sonnet 5.5</span><span></span></div>
|
|
380
|
-
<div class="grp">Anthropic API</div>
|
|
381
|
-
<div class="opt"><span></span><span class="name">Sonnet 5.5</span><span class="cost">pay per use</span></div>
|
|
382
|
-
<div class="opt"><span></span><span class="name">Haiku 5.5</span><span class="cost">pay per use</span></div>
|
|
383
|
-
<div class="grp">OpenAI API</div>
|
|
384
|
-
<div class="opt"><span></span><span class="name">GPT-6 Luna</span><span class="cost">pay per use</span></div>
|
|
385
|
-
<div class="effort-row">
|
|
386
|
-
<span class="effort-label">Effort</span>
|
|
387
|
-
<div class="seg" role="radiogroup" aria-label="Effort"><span>Low</span><span>Medium</span><span class="on">High</span><span class="off" aria-disabled="true">Max</span></div>
|
|
388
|
-
</div>
|
|
389
|
-
</div>
|
|
390
|
-
</div>
|
|
391
|
-
</div>
|
|
392
|
-
|
|
393
|
-
<!-- ===================== 1280 · edge states ===================== -->
|
|
394
|
-
<div class="frame">
|
|
395
|
-
<div class="frame-label">1280 px · edge states (each shown inside the thread column)</div>
|
|
396
|
-
<div class="vp vp-1280">
|
|
397
|
-
<div class="states">
|
|
398
|
-
<div class="state">
|
|
399
|
-
<div class="state-label">New chat, no messages yet</div>
|
|
400
|
-
<div class="state-body">
|
|
401
|
-
<div class="empty"><h3>New chat</h3><span>Opus 5.5 · High</span></div>
|
|
402
|
-
<div class="input focus">Message</div>
|
|
403
|
-
<div class="actions"><span class="btn contained disabled send">Send<svg style="width:16px;height:16px"><use href="#i-send"/></svg></span></div>
|
|
404
|
-
</div>
|
|
405
|
-
</div>
|
|
406
|
-
<div class="state">
|
|
407
|
-
<div class="state-label">Usage limit of the selected model reached</div>
|
|
408
|
-
<div class="state-body">
|
|
409
|
-
<div class="msg-user" style="max-width:90%">Summarise the restic section.</div>
|
|
410
|
-
<div class="notice warn"><span class="grow">Usage limit reached for Opus 5.5. Choose another model or try again later.</span><span class="btn text">Change model</span></div>
|
|
411
|
-
</div>
|
|
412
|
-
</div>
|
|
413
|
-
<div class="state">
|
|
414
|
-
<div class="state-label">Answer interrupted (provider error, timeout or stop)</div>
|
|
415
|
-
<div class="state-body">
|
|
416
|
-
<div class="msg-user" style="max-width:90%">List the deadlines in November.</div>
|
|
417
|
-
<div class="msg-ai"><div class="md"><p>There are two deadlines in November: the data-sharing agreement</p></div><span class="chip stale"><span class="dot"></span>Interrupted</span></div>
|
|
418
|
-
<div class="notice err"><span class="grow">The answer could not be completed.</span><span class="btn text">Retry</span></div>
|
|
419
|
-
</div>
|
|
420
|
-
</div>
|
|
421
|
-
<div class="state">
|
|
422
|
-
<div class="state-label">Connection lost</div>
|
|
423
|
-
<div class="state-body">
|
|
424
|
-
<span class="chip warn"><span class="dot"></span>Reconnecting</span>
|
|
425
|
-
<div class="input filled">Which items are due before the field phase?</div>
|
|
426
|
-
<div class="actions"><span class="btn contained disabled send">Send<svg style="width:16px;height:16px"><use href="#i-send"/></svg></span></div>
|
|
427
|
-
</div>
|
|
428
|
-
</div>
|
|
429
|
-
<div class="state">
|
|
430
|
-
<div class="state-label">No model configured on this server</div>
|
|
431
|
-
<div class="state-body">
|
|
432
|
-
<div class="empty"><h3>Chat is not available</h3><span>No language model is configured on this server.</span></div>
|
|
433
|
-
</div>
|
|
434
|
-
</div>
|
|
435
|
-
<div class="state">
|
|
436
|
-
<div class="state-label">Archived chat opened</div>
|
|
437
|
-
<div class="state-body">
|
|
438
|
-
<span class="chip stale">Archived</span>
|
|
439
|
-
<div class="msg-user" style="max-width:90%">What the backup runbook says about restic</div>
|
|
440
|
-
<div class="actions"><span class="btn outlined">Restore</span></div>
|
|
441
|
-
</div>
|
|
442
|
-
</div>
|
|
443
|
-
</div>
|
|
444
|
-
</div>
|
|
445
|
-
</div>
|
|
446
|
-
|
|
447
|
-
</div>
|