@k2b/cloud 0.38.0 → 0.40.0
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/README.md +8 -0
- package/package.json +12 -5
- package/scripts/build-canvas-workers.ts +109 -29
- package/scripts/build.ts +3 -5
- package/src/_internal/app-favicon.ts +4 -2
- package/src/_internal/app-path.ts +25 -0
- package/src/_internal/app-presentation.ts +4 -0
- package/src/_internal/canvas-worker.ts +5 -3
- package/src/_internal/capabilities.ts +72 -48
- package/src/_internal/capability-reviews.ts +81 -0
- package/src/_internal/capability-schemas.ts +29 -0
- package/src/_internal/capability-sentences.ts +216 -1
- package/src/_internal/capability-streams.ts +7 -0
- package/src/_internal/define-app.ts +63 -16
- package/src/_internal/font-preloads.ts +2 -1
- package/src/_internal/panel-cookie.ts +39 -0
- package/src/_internal/registry-validation.ts +21 -26
- package/src/_internal/runtime-context.ts +1 -0
- package/src/_internal/runtime-watcher.ts +6 -0
- package/src/_internal/static-assets.ts +52 -3
- package/src/_internal/status-preserving-ssr.ts +2 -0
- package/src/access/PermissionEditor.browser-harness.tsx +57 -38
- package/src/access/PermissionEditor.tsx +32 -7
- package/src/access/ResourceApiKeys.tsx +5 -1
- package/src/account/EntitySearch.tsx +1 -1
- package/src/ai/action-review.ts +101 -0
- package/src/ai/approval-routes.ts +5 -2
- package/src/ai/approvals.ts +139 -28
- package/src/ai/background-review.ts +72 -0
- package/src/ai/browser.ts +10 -0
- package/src/ai/capabilities.ts +29 -11
- package/src/ai/capability-execution.ts +76 -43
- package/src/ai/capability-result.ts +95 -0
- package/src/ai/chat/action-card.ts +398 -0
- package/src/ai/chat/action-messages.ts +129 -0
- package/src/ai/chat/action-question.browser-harness.tsx +245 -0
- package/src/ai/chat/action-question.fixtures.ts +733 -0
- package/src/ai/chat/action-question.tsx +669 -0
- package/src/ai/chat/action-sentences.ts +1 -44
- package/src/ai/chat/blocks.tsx +19 -25
- package/src/ai/chat/message-actions.tsx +6 -0
- package/src/ai/chat/tool-action.tsx +481 -0
- package/src/ai/chat/turn-view.tsx +45 -163
- package/src/ai/chat/view-block.tsx +22 -7
- package/src/ai/chat-task-contracts.ts +31 -3
- package/src/ai/chat-task-reasons-migrate.ts +75 -0
- package/src/ai/chat-task-reasons.ts +92 -0
- package/src/ai/chat-tasks.ts +438 -78
- package/src/ai/client/controller.ts +59 -0
- package/src/ai/default-tools.ts +9 -1
- package/src/ai/executor.ts +190 -39
- package/src/ai/index.ts +14 -0
- package/src/ai/migrate.ts +39 -4
- package/src/ai/projects-routes.ts +3 -0
- package/src/ai/protocol.ts +14 -2
- package/src/ai/recent-resources.ts +240 -0
- package/src/ai/recent-sent-refs.ts +38 -0
- package/src/ai/request-context.ts +7 -1
- package/src/ai/routes.ts +172 -2
- package/src/ai/runtime.ts +13 -27
- package/src/ai/skills-routes.ts +3 -0
- package/src/ai/skills.ts +10 -1
- package/src/ai/store.ts +232 -27
- package/src/ai/timeline.ts +9 -1
- package/src/ai/tool-audit.ts +8 -0
- package/src/ai/tool-wording.ts +67 -0
- package/src/ai/turn-abort.ts +33 -0
- package/src/ai/types.ts +40 -4
- package/src/api/accounts-entities.ts +2 -1
- package/src/api/admin-ai-projects.ts +2 -0
- package/src/api/admin-ai-skills.ts +2 -0
- package/src/api/admin-ai-usage.ts +2 -0
- package/src/api/admin-core-settings.ts +190 -139
- package/src/api/admin-geoip.ts +80 -0
- package/src/api/admin-identity.ts +3 -0
- package/src/api/admin-lifecycle.ts +3 -0
- package/src/api/admin-outgoing-mail.ts +6 -2
- package/src/api/app-approval.ts +54 -6
- package/src/api/approvals-loader.ts +23 -1
- package/src/api/approvals.ts +3 -1
- package/src/api/auth.ts +25 -6
- package/src/api/capabilities.ts +44 -11
- package/src/api/capability-streams.ts +12 -0
- package/src/api/help.ts +4 -28
- package/src/api/index.ts +7 -1
- package/src/api/lasting-access-messages.ts +17 -0
- package/src/api/mcp.ts +3 -0
- package/src/api/me-panel-consent.ts +71 -0
- package/src/api/me.ts +80 -33
- package/src/api/search.ts +3 -1
- package/src/api/sync-ops.ts +2 -0
- package/src/api/widgets.ts +3 -0
- package/src/approvals/Approvals.tsx +180 -238
- package/src/approvals/messages.ts +12 -24
- package/src/browser/CloudResourceSearch.browser-harness.tsx +10 -2
- package/src/browser/CloudResourceSearch.tsx +10 -6
- package/src/browser/app-approval.ts +60 -6
- package/src/browser/commands.ts +22 -6
- package/src/browser/composer-catalog.ts +145 -0
- package/src/browser/composer-insert-messages.ts +31 -0
- package/src/browser/composer-insert.ts +160 -0
- package/src/browser/composer-open-messages.ts +17 -0
- package/src/browser/composer-open.ts +110 -0
- package/src/browser/discoverable-command.ts +6 -0
- package/src/browser/hints.ts +6 -0
- package/src/browser/live-connection.ts +26 -2
- package/src/browser/navigation-apps.ts +7 -0
- package/src/browser/panel-context-bridge.ts +30 -0
- package/src/browser/panel-context-receiver.ts +53 -0
- package/src/browser/panel-menu.tsx +56 -0
- package/src/browser/panel-messages.ts +35 -0
- package/src/browser/panel-shortcuts.ts +31 -0
- package/src/browser/panel-slot.ts +756 -0
- package/src/browser/panel.ts +65 -0
- package/src/browser/resource-picker.tsx +12 -1
- package/src/browser/search-commands.ts +6 -3
- package/src/capabilities/client.ts +8 -2
- package/src/capabilities/reviews.ts +205 -0
- package/src/capabilities/server.ts +10 -3
- package/src/capabilities/testing.ts +47 -0
- package/src/capabilities/types.ts +2 -2
- package/src/cli/account.ts +13 -3
- package/src/cli/admin/geoip.ts +115 -0
- package/src/cli/admin/index.ts +3 -0
- package/src/contracts/app-approval.ts +159 -12
- package/src/contracts/app.ts +14 -0
- package/src/contracts/approvals.ts +2 -2
- package/src/contracts/capabilities.ts +410 -18
- package/src/contracts/geoip.ts +42 -0
- package/src/contracts/index.ts +3 -0
- package/src/contracts/panel-context-plain.ts +99 -0
- package/src/contracts/panel-context.ts +93 -0
- package/src/contracts/registry.ts +3 -1
- package/src/contracts/seen-hints.ts +35 -0
- package/src/contracts/shared.ts +2 -0
- package/src/server/client-ip.ts +5 -0
- package/src/server/help-payload.ts +38 -0
- package/src/server/middleware/auth.ts +11 -1
- package/src/server/middleware/middleware.ts +9 -0
- package/src/server/middleware/no-transform.ts +19 -0
- package/src/server/middleware/rate-limit.ts +4 -6
- package/src/server/request-context/address.ts +45 -0
- package/src/server/request-context/geoip.ts +380 -0
- package/src/server/request-context/index.ts +33 -0
- package/src/server/request-context/user-agent.ts +95 -0
- package/src/server/services/access.ts +5 -1
- package/src/services/accounts/posix.ts +2 -1
- package/src/services/app-approval.ts +533 -90
- package/src/services/approvals/device.ts +9 -5
- package/src/services/approvals/index.ts +6 -5
- package/src/services/approvals/list.ts +26 -5
- package/src/services/auth-flows/notification-sender.ts +3 -0
- package/src/services/geoip/index.ts +164 -0
- package/src/services/geoip/store.ts +30 -0
- package/src/services/geoip/upload.ts +150 -0
- package/src/services/identity/routes.ts +5 -1
- package/src/services/index.ts +32 -3
- package/src/services/known-browsers.ts +312 -0
- package/src/services/login-address-store.ts +51 -0
- package/src/services/login-context.ts +118 -0
- package/src/services/mandates/index.ts +3 -0
- package/src/services/mandates/policy.ts +15 -3
- package/src/services/notifications/browser.ts +16 -5
- package/src/services/notifications/email-frame.ts +1 -1
- package/src/services/oauth-tokens.ts +16 -2
- package/src/services/panel-context-consent.ts +58 -0
- package/src/services/pdf/image-protocol.ts +135 -0
- package/src/services/pdf/image-variants.ts +124 -0
- package/src/services/pdf/image-worker.ts +31 -0
- package/src/services/pdf/image.ts +109 -0
- package/src/services/pdf/index.ts +9 -0
- package/src/services/service-account-credentials.ts +21 -0
- package/src/services/session/index.ts +97 -16
- package/src/services/session/recent.ts +13 -0
- package/src/services/settings/api.ts +11 -6
- package/src/services/settings/app.ts +5 -4
- package/src/services/settings/core-settings.ts +4 -3
- package/src/services/settings/index.ts +19 -17
- package/src/services/settings/namespace.ts +2 -1
- package/src/services/settings/store.ts +83 -11
- package/src/services/webauthn.ts +12 -0
- package/src/shared/ai-platform-prompt.ts +1 -1
- package/src/shared/app-presentation.ts +1 -0
- package/src/shared/email-html.ts +2 -0
- package/src/shared/help.ts +3 -0
- package/src/shared/redirect.ts +12 -0
- package/src/shared-text/cursor.ts +22 -0
- package/src/shared-text/documents.ts +142 -0
- package/src/shared-text/events.ts +43 -0
- package/src/shared-text/index.ts +12 -0
- package/src/shared-text/log.ts +48 -0
- package/src/shared-text/text-diff.ts +23 -0
- package/src/shared-text/types.ts +41 -0
- package/src/ssr/AdminLayout.tsx +2 -0
- package/src/ssr/AppLaunchpadPanel.tsx +2 -2
- package/src/ssr/CloudShell.island.tsx +95 -10
- package/src/ssr/Layout.tsx +66 -10
- package/src/ssr/LayoutHeader.tsx +15 -9
- package/src/ssr/LayoutHelp.browser-harness.tsx +2 -0
- package/src/ssr/LayoutHelp.tsx +435 -274
- package/src/ssr/LayoutHelpPanel.browser-harness.tsx +136 -0
- package/src/ssr/LayoutHelpTrigger.tsx +27 -2
- package/src/ssr/LayoutRail.tsx +2 -2
- package/src/ssr/LayoutTabBar.tsx +29 -0
- package/src/ssr/MobileNavigation.tsx +2 -2
- package/src/ssr/PanelLayout.tsx +35 -0
- package/src/ssr/PanelRuntime.island.tsx +94 -0
- package/src/ssr/PanelSlot.tsx +158 -0
- package/src/ssr/PanelTrigger.tsx +49 -0
- package/src/ssr/ShellRuntime.island.tsx +69 -5
- package/src/ssr/app-appearance.ts +3 -2
- package/src/ssr/app-color.ts +105 -0
- package/src/ssr/app-launchpad.tsx +18 -1
- package/src/ssr/app-navigation.ts +28 -0
- package/src/ssr/compact-shell.baseline.json +5270 -0
- package/src/ssr/compact-shell.browser-harness.ts +439 -0
- package/src/ssr/dialog-app-colors.browser-harness.tsx +43 -0
- package/src/ssr/help-messages.ts +4 -0
- package/src/ssr/help.ts +20 -0
- package/src/ssr/hints.ts +25 -0
- package/src/ssr/index.ts +5 -0
- package/src/ssr/islands/index.ts +4 -3
- package/src/ssr/layout-context.ts +2 -0
- package/src/ssr/layout-help-article.server.ts +50 -0
- package/src/ssr/layout-help-start.ts +33 -7
- package/src/ssr/panel-consent.ts +29 -0
- package/src/ssr/panel-context.ts +10 -0
- package/src/ssr/panel-slot.browser-harness.tsx +159 -0
- package/src/ssr/platform-messages.ts +48 -0
- package/src/ssr/rail-navigation.ts +44 -0
- package/src/ssr/shell-data.tsx +5 -0
- package/src/ssr/shell-shortcuts.ts +13 -2
- package/src/styles/effects.css +201 -11
- package/src/styles/file-chooser.css +2 -1
- package/src/styles/global.css +314 -63
- package/src/styles/panel.css +416 -0
- package/src/styles/resource-search.css +6 -2
- package/src/styles/tokens.css +36 -13
- package/src/styles/utilities-buttons.css +3 -2
- package/src/styles/utilities-data.css +2 -1
- package/src/styles/utilities-feedback.css +2 -2
- package/src/styles/utilities-layout.css +3 -13
- package/src/styles/utilities-markdown-editor.css +6 -6
- package/src/styles/utilities-navigation.css +22 -43
package/src/styles/effects.css
CHANGED
|
@@ -104,6 +104,12 @@
|
|
|
104
104
|
border-radius: var(--k2b-radius-control);
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
+
/* An open question stands apart from the place before and after it; consecutive outcome lines stay together. */
|
|
108
|
+
.k2b-ui .ai-turn__action:has(.k2b-chat-decision__card) + .ai-turn__action,
|
|
109
|
+
.k2b-ui .ai-turn__action + .ai-turn__action:has(.k2b-chat-decision__card) {
|
|
110
|
+
margin-top: 1rem;
|
|
111
|
+
}
|
|
112
|
+
|
|
107
113
|
.k2b-ui .ai-turn__action:focus {
|
|
108
114
|
outline: none;
|
|
109
115
|
}
|
|
@@ -113,6 +119,60 @@
|
|
|
113
119
|
outline-offset: var(--k2b-focus-offset);
|
|
114
120
|
}
|
|
115
121
|
|
|
122
|
+
/* Assistant questions and outcome lines (card v4), built from @k2b/ui Chat.Decision, Chat.Preview, and Chat.Outcome.
|
|
123
|
+
Only what an older review needs lives here: values that keep their line breaks, a Markdown block, and the call's
|
|
124
|
+
raw input on demand. Everything else is the shared primitives' look. */
|
|
125
|
+
.k2b-ui .cloud-action-preview__value {
|
|
126
|
+
white-space: pre-wrap;
|
|
127
|
+
overflow-wrap: anywhere;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.k2b-ui .cloud-action-preview__markdown {
|
|
131
|
+
min-width: 0;
|
|
132
|
+
color: var(--k2b-text-secondary);
|
|
133
|
+
font-size: inherit;
|
|
134
|
+
line-height: inherit;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.k2b-ui .cloud-action-preview__input {
|
|
138
|
+
display: grid;
|
|
139
|
+
min-width: 0;
|
|
140
|
+
justify-items: start;
|
|
141
|
+
gap: 0.5rem;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.k2b-ui .cloud-action-preview__input > [role="region"] {
|
|
145
|
+
width: 100%;
|
|
146
|
+
min-width: 0;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.k2b-ui .cloud-action-preview__raw {
|
|
150
|
+
max-height: 13rem;
|
|
151
|
+
margin: 0;
|
|
152
|
+
overflow: auto;
|
|
153
|
+
border-radius: var(--k2b-radius-control);
|
|
154
|
+
padding: 0.5rem;
|
|
155
|
+
color: var(--k2b-text);
|
|
156
|
+
background: var(--k2b-surface-muted);
|
|
157
|
+
box-shadow: var(--ui-control-recess);
|
|
158
|
+
font-size: 0.6875rem;
|
|
159
|
+
line-height: 1.45;
|
|
160
|
+
white-space: pre-wrap;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/* The review's other links continue the preview above them instead of starting a new block. */
|
|
164
|
+
.k2b-ui .k2b-chat-decision__card > .k2b-chat-preview + .cloud-action-preview__links {
|
|
165
|
+
margin-top: 0.25rem;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/* The approvals page: where a request waits stands above its card, quiet, on the card's edge. */
|
|
169
|
+
.k2b-ui .cloud-approvals .cloud-approval {
|
|
170
|
+
display: grid;
|
|
171
|
+
min-width: 0;
|
|
172
|
+
gap: 0.25rem;
|
|
173
|
+
grid-template-columns: minmax(0, 1fr);
|
|
174
|
+
}
|
|
175
|
+
|
|
116
176
|
/* A pending approval: a calm tinted card in place 4 that says what will happen. Fields stack on phones and the
|
|
117
177
|
decision buttons share the width there. */
|
|
118
178
|
.k2b-ui .ai-approval {
|
|
@@ -341,10 +401,6 @@
|
|
|
341
401
|
/* App help is a reader, not a generic Markdown preview. Keep the measure,
|
|
342
402
|
hierarchy, and rhythm close to the task-first Help wireframe while reusing
|
|
343
403
|
the same safe server-rendered Markdown pipeline as the rest of Cloud. */
|
|
344
|
-
.help-topic-icon {
|
|
345
|
-
background: color-mix(in srgb, var(--app-accent, var(--color-blue-500)) 10%, var(--ui-surface-muted));
|
|
346
|
-
}
|
|
347
|
-
|
|
348
404
|
/* Help shell: one head (app tile, "Help for <App>", the menu, and the search) above the start, an article, or
|
|
349
405
|
results. The head never changes size between them, so the search stays in one place. The start and the head share
|
|
350
406
|
the article's measure: wide, the article and its contents; narrower, the article column alone. */
|
|
@@ -371,6 +427,7 @@
|
|
|
371
427
|
|
|
372
428
|
/* Above a scroll area the head keeps the same scrollbar gutter, so both centre their measure alike. */
|
|
373
429
|
.help-shell[data-surface="modal"] .help-head,
|
|
430
|
+
.help-shell[data-surface="panel"] .help-head,
|
|
374
431
|
.help-shell[data-surface="embedded"] .help-head {
|
|
375
432
|
overflow: hidden;
|
|
376
433
|
padding-bottom: 0.25rem;
|
|
@@ -384,6 +441,29 @@
|
|
|
384
441
|
}
|
|
385
442
|
}
|
|
386
443
|
|
|
444
|
+
/* Help without a panel slot on a phone: the shared bottom sheet at its full height, with its grabber (#858). */
|
|
445
|
+
.k2b-ui .k2b-dialog.cloud-help-sheet {
|
|
446
|
+
height: min(92dvh, var(--k2b-dialog-available-height));
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
.cloud-help-sheet .k2b-bottom-sheet-viewport {
|
|
450
|
+
height: 100%;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
.cloud-help-sheet .help-shell[data-surface="modal"] {
|
|
454
|
+
height: auto;
|
|
455
|
+
flex: 1 1 auto;
|
|
456
|
+
border: 0;
|
|
457
|
+
border-radius: 0;
|
|
458
|
+
background: transparent;
|
|
459
|
+
box-shadow: none;
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
/* In the panel the slot's own title row sits right above: the Help head follows it closely. */
|
|
463
|
+
.help-shell[data-surface="panel"] .help-head {
|
|
464
|
+
padding-top: 0.25rem;
|
|
465
|
+
}
|
|
466
|
+
|
|
387
467
|
.help-head-inner {
|
|
388
468
|
display: flex;
|
|
389
469
|
flex-direction: column;
|
|
@@ -549,7 +629,7 @@
|
|
|
549
629
|
}
|
|
550
630
|
|
|
551
631
|
.help-start-tile:hover {
|
|
552
|
-
background:
|
|
632
|
+
background: var(--ui-surface-muted);
|
|
553
633
|
}
|
|
554
634
|
|
|
555
635
|
.help-start-tile-icon,
|
|
@@ -559,8 +639,6 @@
|
|
|
559
639
|
height: 2.25rem;
|
|
560
640
|
flex: 0 0 auto;
|
|
561
641
|
place-items: center;
|
|
562
|
-
border-radius: var(--ui-radius-control);
|
|
563
|
-
background: color-mix(in srgb, var(--app-accent, var(--color-blue-500)) 14%, var(--ui-surface-muted));
|
|
564
642
|
font-size: 1.125rem;
|
|
565
643
|
}
|
|
566
644
|
|
|
@@ -568,6 +646,32 @@
|
|
|
568
646
|
margin-bottom: 0.5rem;
|
|
569
647
|
}
|
|
570
648
|
|
|
649
|
+
/* A narrow reader, such as the panel column at 20-23 rem, has no room for two tiles side by side: each task keeps
|
|
650
|
+
its tile, one per row, with the icon beside its title. */
|
|
651
|
+
@container help-shell (max-width: 23rem) {
|
|
652
|
+
.help-start-tiles {
|
|
653
|
+
grid-template-columns: minmax(0, 1fr);
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
.help-start-tile {
|
|
657
|
+
display: grid;
|
|
658
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
659
|
+
column-gap: 0.75rem;
|
|
660
|
+
row-gap: 0.125rem;
|
|
661
|
+
align-items: start;
|
|
662
|
+
padding: 0.75rem;
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
.help-start-tile-icon {
|
|
666
|
+
grid-row: span 2;
|
|
667
|
+
margin-bottom: 0;
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
.help-start-tile-description {
|
|
671
|
+
-webkit-line-clamp: 2;
|
|
672
|
+
}
|
|
673
|
+
}
|
|
674
|
+
|
|
571
675
|
.help-start-tile-title {
|
|
572
676
|
max-width: 100%;
|
|
573
677
|
color: var(--color-zinc-950);
|
|
@@ -750,12 +854,56 @@
|
|
|
750
854
|
padding-top: 0.25rem;
|
|
751
855
|
}
|
|
752
856
|
|
|
857
|
+
/* The article head names the app whose Help this is: the app's own canvas gradient (the same tokens and strength as
|
|
858
|
+
the app background, over the reader's surface), without a border or a shadow, and the article's icon in the flat
|
|
859
|
+
shared tile. Without app colours it stays the plain surface. The embedded readers (Grids, Pulse) sit inside the
|
|
860
|
+
app's own chrome, which already names the app: their head stays flat. Text sits on this gradient, so its tint stays at
|
|
861
|
+
most 30 % light and 15 % dark, as on the phone shell: then the title and the lead read at 4.5:1 on any app colour. */
|
|
753
862
|
.help-article-head {
|
|
863
|
+
margin-bottom: 2rem;
|
|
864
|
+
}
|
|
865
|
+
|
|
866
|
+
.help-article:not([data-surface="embedded"]) .help-article-head {
|
|
867
|
+
display: grid;
|
|
868
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
869
|
+
align-items: center;
|
|
870
|
+
gap: 1.5rem;
|
|
871
|
+
border-radius: var(--ui-radius-surface);
|
|
872
|
+
padding: 1.5rem;
|
|
873
|
+
background: linear-gradient(
|
|
874
|
+
var(--app-canvas-angle, 135deg),
|
|
875
|
+
color-mix(in srgb, var(--app-canvas-from, var(--k2b-surface)) min(var(--app-canvas-strength, 0%), 30%), var(--k2b-surface)),
|
|
876
|
+
color-mix(in srgb, var(--app-canvas-via, var(--k2b-surface)) min(var(--app-canvas-strength, 0%), 30%), var(--k2b-surface)) 50%,
|
|
877
|
+
color-mix(in srgb, var(--app-canvas-to, var(--k2b-surface)) min(var(--app-canvas-strength, 0%), 30%), var(--k2b-surface))
|
|
878
|
+
);
|
|
879
|
+
}
|
|
880
|
+
|
|
881
|
+
.dark .help-article:not([data-surface="embedded"]) .help-article-head {
|
|
882
|
+
background: linear-gradient(
|
|
883
|
+
var(--app-canvas-angle, 135deg),
|
|
884
|
+
color-mix(in srgb, var(--app-canvas-from, var(--k2b-surface)) min(var(--app-canvas-dark-strength, 0%), 15%), var(--k2b-surface)),
|
|
885
|
+
var(--k2b-surface) 50%,
|
|
886
|
+
color-mix(in srgb, var(--app-canvas-to, var(--k2b-surface)) min(var(--app-canvas-dark-strength, 0%), 15%), var(--k2b-surface))
|
|
887
|
+
);
|
|
888
|
+
}
|
|
889
|
+
|
|
890
|
+
.help-article-head-copy {
|
|
754
891
|
display: flex;
|
|
892
|
+
min-width: 0;
|
|
755
893
|
flex-direction: column;
|
|
756
894
|
align-items: flex-start;
|
|
757
895
|
gap: 0.75rem;
|
|
758
|
-
|
|
896
|
+
}
|
|
897
|
+
|
|
898
|
+
.help-article-icon {
|
|
899
|
+
width: 4.5rem;
|
|
900
|
+
height: 4.5rem;
|
|
901
|
+
font-size: 2.25rem;
|
|
902
|
+
}
|
|
903
|
+
|
|
904
|
+
/* Over the gradient the chips keep their own quiet fill, so they read as facts and not as part of the colour. */
|
|
905
|
+
.help-article:not([data-surface="embedded"]) .help-article-head .help-article-fact {
|
|
906
|
+
background: color-mix(in srgb, var(--k2b-surface) 72%, transparent);
|
|
759
907
|
}
|
|
760
908
|
|
|
761
909
|
.help-article-path {
|
|
@@ -880,14 +1028,15 @@
|
|
|
880
1028
|
flex-direction: column;
|
|
881
1029
|
gap: 0.5rem;
|
|
882
1030
|
border-radius: var(--ui-radius-surface);
|
|
883
|
-
|
|
1031
|
+
/* Both fills are computed with the app ink, so its label stays at AA. */
|
|
1032
|
+
background: var(--ui-app-selected);
|
|
884
1033
|
padding: 1.25rem 1.25rem 1.375rem;
|
|
885
1034
|
text-decoration: none;
|
|
886
1035
|
transition: background-color 140ms ease;
|
|
887
1036
|
}
|
|
888
1037
|
|
|
889
1038
|
.help-article-next:hover {
|
|
890
|
-
background:
|
|
1039
|
+
background: var(--ui-app-selected-nav);
|
|
891
1040
|
}
|
|
892
1041
|
|
|
893
1042
|
.help-article-next-label {
|
|
@@ -1103,7 +1252,7 @@
|
|
|
1103
1252
|
}
|
|
1104
1253
|
|
|
1105
1254
|
.help-document :where(ul > li)::marker {
|
|
1106
|
-
color:
|
|
1255
|
+
color: var(--ui-text-secondary);
|
|
1107
1256
|
}
|
|
1108
1257
|
|
|
1109
1258
|
.help-document :where(ol > li)::marker {
|
|
@@ -1459,11 +1608,52 @@
|
|
|
1459
1608
|
}
|
|
1460
1609
|
}
|
|
1461
1610
|
|
|
1611
|
+
/* Narrow: the tile stands before the title, and the path, the short answer, and the chips use the full width. */
|
|
1462
1612
|
@container help-article (max-width: 40rem) {
|
|
1463
1613
|
.help-article-head {
|
|
1464
1614
|
margin-bottom: 1.5rem;
|
|
1465
1615
|
}
|
|
1466
1616
|
|
|
1617
|
+
.help-article:not([data-surface="embedded"]) .help-article-head {
|
|
1618
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
1619
|
+
column-gap: 0.75rem;
|
|
1620
|
+
row-gap: 0;
|
|
1621
|
+
padding: 1.25rem 1rem;
|
|
1622
|
+
}
|
|
1623
|
+
|
|
1624
|
+
.help-article:not([data-surface="embedded"]) .help-article-head-copy {
|
|
1625
|
+
display: contents;
|
|
1626
|
+
}
|
|
1627
|
+
|
|
1628
|
+
.help-article:not([data-surface="embedded"]) .help-article-path {
|
|
1629
|
+
grid-column: 1 / -1;
|
|
1630
|
+
grid-row: 1;
|
|
1631
|
+
margin-bottom: 0.75rem;
|
|
1632
|
+
}
|
|
1633
|
+
|
|
1634
|
+
.help-article-icon {
|
|
1635
|
+
grid-column: 1;
|
|
1636
|
+
grid-row: 2;
|
|
1637
|
+
width: 2.75rem;
|
|
1638
|
+
height: 2.75rem;
|
|
1639
|
+
font-size: 1.375rem;
|
|
1640
|
+
}
|
|
1641
|
+
|
|
1642
|
+
.help-article:not([data-surface="embedded"]) .help-article-title {
|
|
1643
|
+
grid-column: 2;
|
|
1644
|
+
grid-row: 2;
|
|
1645
|
+
}
|
|
1646
|
+
|
|
1647
|
+
.help-article:not([data-surface="embedded"]) .help-article-head-copy > :not(.help-article-path, .help-article-title) {
|
|
1648
|
+
grid-column: 1 / -1;
|
|
1649
|
+
margin-top: 0.75rem;
|
|
1650
|
+
}
|
|
1651
|
+
|
|
1652
|
+
/* The panel article has no path row (the panel head names the app), so the tile and the title open the head. */
|
|
1653
|
+
.help-article[data-surface="panel"] :is(.help-article-icon, .help-article-title) {
|
|
1654
|
+
grid-row: 1;
|
|
1655
|
+
}
|
|
1656
|
+
|
|
1467
1657
|
/* Two columns leave a phone about 140 px per alternative. */
|
|
1468
1658
|
.help-document .help-compare > ul {
|
|
1469
1659
|
grid-template-columns: minmax(0, 1fr);
|
|
@@ -68,8 +68,9 @@
|
|
|
68
68
|
color: var(--k2b-text-secondary);
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
+
/* A picked file is an object row: its check carries the app ink. */
|
|
71
72
|
.cloud-file-chooser__icon[data-selected="true"] {
|
|
72
|
-
color: var(--
|
|
73
|
+
color: var(--ui-app-accent-text);
|
|
73
74
|
}
|
|
74
75
|
|
|
75
76
|
.cloud-file-chooser__meta {
|