@openviking/react 0.1.7 → 0.1.8-beta.11.1.gc6def608a25e

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/README.md +11 -1
  2. package/dist/1~0.js +57 -0
  3. package/dist/3~0.js +171 -5
  4. package/dist/5~0.js +181 -0
  5. package/dist/6~0.js +48 -0
  6. package/dist/ark-message-list-view~0.js +50 -8
  7. package/dist/components/agent-connect/style.css +4 -2
  8. package/dist/components/api-key-login-form/api-key-login-form.d.ts +2 -0
  9. package/dist/components/api-key-login-form/index.d.ts +3 -0
  10. package/dist/components/api-key-login-form/style.css +438 -0
  11. package/dist/components/api-key-login-form/style.js +0 -0
  12. package/dist/components/api-key-login-form/types.d.ts +7 -0
  13. package/dist/components/api-key-login-form.js +1 -0
  14. package/dist/components/directory-tour/directory-tour-intro.d.ts +3 -0
  15. package/dist/components/directory-tour/index.d.ts +2 -1
  16. package/dist/components/directory-tour/style.css +154 -26
  17. package/dist/components/directory-tour/tour-card.d.ts +14 -0
  18. package/dist/components/directory-tour/types.d.ts +24 -1
  19. package/dist/components/directory-tour/use-tour-anchor.d.ts +1 -0
  20. package/dist/components/directory-tour/use-tour-position.d.ts +4 -1
  21. package/dist/components/directory-tour/use-tour-theme.d.ts +2 -0
  22. package/dist/components/directory-tour.js +52 -1
  23. package/dist/components/email-login-form/email-login-form.d.ts +2 -0
  24. package/dist/components/email-login-form/index.d.ts +3 -0
  25. package/dist/components/email-login-form/style.css +438 -0
  26. package/dist/components/email-login-form/style.js +0 -0
  27. package/dist/components/email-login-form/types.d.ts +11 -0
  28. package/dist/components/email-login-form.js +1 -0
  29. package/dist/components/experience-dashboard/experience-impact.d.ts +3 -1
  30. package/dist/components/experience-dashboard/style.css +4 -2
  31. package/dist/components/file-browser-entries/style.css +12 -6
  32. package/dist/components/file-preview/file-preview-header.d.ts +4 -21
  33. package/dist/components/file-preview/file-preview-toolbar.d.ts +7 -0
  34. package/dist/components/file-preview/locales/en-US.d.ts +9 -0
  35. package/dist/components/file-preview/locales/zh-CN.d.ts +9 -0
  36. package/dist/components/file-preview/style.css +116 -2
  37. package/dist/components/file-preview/types.d.ts +14 -21
  38. package/dist/components/file-tree/style.css +4 -2
  39. package/dist/components/invitation-confirmation/index.d.ts +3 -0
  40. package/dist/components/invitation-confirmation/invitation-confirmation.d.ts +2 -0
  41. package/dist/components/invitation-confirmation/style.css +438 -0
  42. package/dist/components/invitation-confirmation/style.js +0 -0
  43. package/dist/components/invitation-confirmation/types.d.ts +20 -0
  44. package/dist/components/invitation-confirmation.js +1 -0
  45. package/dist/components/login-method-selector/index.d.ts +2 -0
  46. package/dist/components/login-method-selector/login-method-selector.d.ts +2 -0
  47. package/dist/components/login-method-selector/style.css +438 -0
  48. package/dist/components/login-method-selector/style.js +0 -0
  49. package/dist/components/login-method-selector/types.d.ts +14 -0
  50. package/dist/components/login-method-selector.js +1 -0
  51. package/dist/components/password-reset-request-form/index.d.ts +3 -0
  52. package/dist/components/password-reset-request-form/password-reset-request-form.d.ts +2 -0
  53. package/dist/components/password-reset-request-form/style.css +438 -0
  54. package/dist/components/password-reset-request-form/style.js +0 -0
  55. package/dist/components/password-reset-request-form/types.d.ts +13 -0
  56. package/dist/components/password-reset-request-form.js +1 -0
  57. package/dist/components/password-setup-form/index.d.ts +3 -0
  58. package/dist/components/password-setup-form/password-setup-form.d.ts +2 -0
  59. package/dist/components/password-setup-form/style.css +438 -0
  60. package/dist/components/password-setup-form/style.js +0 -0
  61. package/dist/components/password-setup-form/types.d.ts +10 -0
  62. package/dist/components/password-setup-form.js +1 -0
  63. package/dist/components/scope-switcher/style.css +4 -2
  64. package/dist/components/scope-switcher.js +1 -1
  65. package/dist/components/style.css +3120 -79
  66. package/dist/components/tui/style.css +8 -4
  67. package/dist/components/viking-bot/bot-popover.d.ts +2 -1
  68. package/dist/components/viking-bot/composer-reference-tags.d.ts +8 -0
  69. package/dist/components/viking-bot/composer-references.d.ts +0 -5
  70. package/dist/components/viking-bot/locales/en-US.d.ts +1 -0
  71. package/dist/components/viking-bot/locales/zh-CN.d.ts +1 -0
  72. package/dist/components/viking-bot/model.d.ts +1 -0
  73. package/dist/components/viking-bot/popover-tab-navigation.d.ts +3 -0
  74. package/dist/components/viking-bot/style.css +166 -27
  75. package/dist/components/viking-bot/types.d.ts +3 -1
  76. package/dist/components/viking-bot/user-message-group.d.ts +9 -0
  77. package/dist/components/wiki-dashboard/index.d.ts +1 -1
  78. package/dist/components/wiki-dashboard/style.css +16 -4
  79. package/dist/components/wiki-dashboard/types.d.ts +12 -16
  80. package/dist/components/wiki-dashboard/wiki-action-button.d.ts +2 -9
  81. package/dist/components/wiki-dashboard/wiki-conflict-card.d.ts +3 -10
  82. package/dist/c~0.js +77 -6
  83. package/dist/d~0.js +28 -0
  84. package/dist/ep~0.js +281 -133
  85. package/dist/fi~0.js +339 -0
  86. package/dist/fj~0.js +32 -67
  87. package/dist/fl~0.js +3 -2
  88. package/dist/f~0.js +63 -326
  89. package/dist/g~0.js +135 -0
  90. package/dist/icons/index.d.ts +2 -0
  91. package/dist/icons/viking-bot-icons.d.ts +1 -1
  92. package/dist/icons.js +1 -1
  93. package/dist/index.d.ts +12 -0
  94. package/dist/index.js +8 -2
  95. package/dist/k~0.js +44 -4
  96. package/dist/l5~0.js +3813 -0
  97. package/dist/lg~0.js +41 -1
  98. package/dist/lk~0.js +1 -1
  99. package/dist/l~0.js +54 -3811
  100. package/dist/modules/console/style.css +182 -35
  101. package/dist/modules/file-browser/file-browser-detail-icons.d.ts +0 -6
  102. package/dist/modules/file-browser/file-browser-detail.d.ts +2 -23
  103. package/dist/modules/file-browser/file-browser.d.ts +1 -1
  104. package/dist/modules/file-browser/fs-file-editing.d.ts +4 -0
  105. package/dist/modules/file-browser/fs-preview-images.d.ts +3 -0
  106. package/dist/modules/file-browser/fs-read-file.d.ts +1 -1
  107. package/dist/modules/file-browser/style.css +156 -70
  108. package/dist/modules/file-browser/types.d.ts +2 -0
  109. package/dist/modules/file-browser/use-file-browser-acl.d.ts +1 -0
  110. package/dist/modules/file-browser/wiki-dashboard-pane.d.ts +2 -4
  111. package/dist/modules/file-browser.js +1 -1
  112. package/dist/modules/scope-cascade/style.css +4 -2
  113. package/dist/modules/style.css +346 -109
  114. package/dist/n~0.js +1 -1
  115. package/dist/p0~0.js +27 -0
  116. package/dist/p~0.js +34 -25
  117. package/dist/shared/auth/agreements.d.ts +10 -0
  118. package/dist/shared/auth/fields.d.ts +15 -0
  119. package/dist/shared/auth/form-frame.d.ts +12 -0
  120. package/dist/shared/auth/locales/en-US.d.ts +24 -0
  121. package/dist/shared/auth/locales/zh-CN.d.ts +24 -0
  122. package/dist/shared/auth/types.d.ts +61 -0
  123. package/dist/shared/auth/use-auth-labels.d.ts +3 -0
  124. package/dist/shared/auth/use-form.d.ts +8 -0
  125. package/dist/style.css +3690 -410
  126. package/dist/viking-bot-composer~0.js +86 -29
  127. package/package.json +32 -2
@@ -167,9 +167,11 @@
167
167
  }
168
168
  }
169
169
 
170
- .ov-button, .ov-input, .ov-textarea, .ov-directory-tour, .ov-wiki-dashboard, .ov-experience-dashboard, .ov-agent-connect, .ov-console, .ov-divider, .ov-file-browser-entries, .ov-drawer, .ov-modal, .ov-file-browser, .ov-file-preview, .ov-file-tree, .ov-module-placeholder, .ov-popover, .ov-scope-switcher, .ov-tooltip, .ov-tui, .ov-viking-bot, .ov-viking-bot__popover, .ov-viking-bot__reference-picker--mention, .ov-viking-bot__interaction {
170
+ .ov-button, .ov-input, .ov-textarea, .ov-directory-tour, .ov-wiki-dashboard, .ov-experience-dashboard, .ov-auth, .ov-agent-connect, .ov-console, .ov-divider, .ov-file-browser-entries, .ov-drawer, .ov-modal, .ov-file-browser, .ov-file-preview, .ov-file-tree, .ov-module-placeholder, .ov-popover, .ov-scope-switcher, .ov-tooltip, .ov-tui, .ov-viking-bot, .ov-viking-bot__popover, .ov-viking-bot__reference-picker--mention, .ov-viking-bot__interaction {
171
171
  --ov-ui-tour-shadow-default: 0 15px 35px #0000000d, 0 5px 15px #0000000d;
172
172
  --ov-ui-tour-highlight-default: #5252ff14;
173
+ --ov-ui-auth-on-primary-default: #fff;
174
+ --ov-ui-auth-backdrop-default: #0006;
173
175
  --ov-ui-primary-default: #5252ff;
174
176
  --ov-ui-primary-hover-default: #7075ff;
175
177
  --ov-ui-primary-active-default: #3833d2;
@@ -226,7 +228,7 @@
226
228
  #bd9cff 100%);
227
229
  }
228
230
 
229
- html.dark .ov-button, html.dark .ov-input, html.dark .ov-textarea, .dark .ov-directory-tour, html.dark .ov-wiki-dashboard, html.dark .ov-experience-dashboard, .dark .ov-agent-connect, .dark .ov-console, .dark .ov-divider, .dark .ov-file-browser-entries, .dark .ov-drawer, .dark .ov-modal, .dark .ov-file-browser, .dark .ov-file-preview, .dark .ov-file-tree, .dark .ov-module-placeholder, .dark .ov-popover, .dark .ov-scope-switcher, .dark .ov-tooltip, .dark .ov-tui, .dark .ov-viking-bot, .dark .ov-viking-bot__popover, .dark .ov-viking-bot__reference-picker--mention, .dark .ov-viking-bot__interaction {
231
+ html.dark .ov-button, html.dark .ov-input, html.dark .ov-textarea, .dark .ov-directory-tour, html.dark .ov-wiki-dashboard, html.dark .ov-experience-dashboard, .dark .ov-auth, .dark .ov-agent-connect, .dark .ov-console, .dark .ov-divider, .dark .ov-file-browser-entries, .dark .ov-drawer, .dark .ov-modal, .dark .ov-file-browser, .dark .ov-file-preview, .dark .ov-file-tree, .dark .ov-module-placeholder, .dark .ov-popover, .dark .ov-scope-switcher, .dark .ov-tooltip, .dark .ov-tui, .dark .ov-viking-bot, .dark .ov-viking-bot__popover, .dark .ov-viking-bot__reference-picker--mention, .dark .ov-viking-bot__interaction {
230
232
  --ov-ui-primary-default: #5f5fff;
231
233
  --ov-ui-primary-hover-default: #7075ff;
232
234
  --ov-ui-primary-active-default: #4242ba;
@@ -350,9 +352,11 @@ html.dark .ov-wiki-dashboard, html.dark .ov-experience-dashboard, html.dark .ov-
350
352
  --ov-ui-dashboard-success-default: var(--ov-ui-status-success-default);
351
353
  }
352
354
 
353
- .ov-button, .ov-input, .ov-textarea, .ov-directory-tour, .ov-wiki-dashboard, .ov-experience-dashboard, .ov-agent-connect, .ov-console, .ov-divider, .ov-file-browser-entries, .ov-drawer, .ov-modal, .ov-file-browser, .ov-file-preview, .ov-file-tree, .ov-module-placeholder, .ov-popover, .ov-scope-switcher, .ov-tooltip, .ov-tui, .ov-viking-bot, .ov-viking-bot__popover, .ov-viking-bot__reference-picker--mention, .ov-viking-bot__interaction {
355
+ .ov-button, .ov-input, .ov-textarea, .ov-directory-tour, .ov-wiki-dashboard, .ov-experience-dashboard, .ov-auth, .ov-agent-connect, .ov-console, .ov-divider, .ov-file-browser-entries, .ov-drawer, .ov-modal, .ov-file-browser, .ov-file-preview, .ov-file-tree, .ov-module-placeholder, .ov-popover, .ov-scope-switcher, .ov-tooltip, .ov-tui, .ov-viking-bot, .ov-viking-bot__popover, .ov-viking-bot__reference-picker--mention, .ov-viking-bot__interaction {
354
356
  --ov-ui-tour-shadow-default: 0 15px 35px #0000000d, 0 5px 15px #0000000d;
355
357
  --ov-ui-tour-highlight-default: #5252ff14;
358
+ --ov-ui-auth-on-primary-default: #fff;
359
+ --ov-ui-auth-backdrop-default: #0006;
356
360
  --ov-ui-primary-default: #5252ff;
357
361
  --ov-ui-primary-hover-default: #7075ff;
358
362
  --ov-ui-primary-active-default: #3833d2;
@@ -409,7 +413,7 @@ html.dark .ov-wiki-dashboard, html.dark .ov-experience-dashboard, html.dark .ov-
409
413
  #bd9cff 100%);
410
414
  }
411
415
 
412
- html.dark .ov-button, html.dark .ov-input, html.dark .ov-textarea, .dark .ov-directory-tour, html.dark .ov-wiki-dashboard, html.dark .ov-experience-dashboard, .dark .ov-agent-connect, .dark .ov-console, .dark .ov-divider, .dark .ov-file-browser-entries, .dark .ov-drawer, .dark .ov-modal, .dark .ov-file-browser, .dark .ov-file-preview, .dark .ov-file-tree, .dark .ov-module-placeholder, .dark .ov-popover, .dark .ov-scope-switcher, .dark .ov-tooltip, .dark .ov-tui, .dark .ov-viking-bot, .dark .ov-viking-bot__popover, .dark .ov-viking-bot__reference-picker--mention, .dark .ov-viking-bot__interaction {
416
+ html.dark .ov-button, html.dark .ov-input, html.dark .ov-textarea, .dark .ov-directory-tour, html.dark .ov-wiki-dashboard, html.dark .ov-experience-dashboard, .dark .ov-auth, .dark .ov-agent-connect, .dark .ov-console, .dark .ov-divider, .dark .ov-file-browser-entries, .dark .ov-drawer, .dark .ov-modal, .dark .ov-file-browser, .dark .ov-file-preview, .dark .ov-file-tree, .dark .ov-module-placeholder, .dark .ov-popover, .dark .ov-scope-switcher, .dark .ov-tooltip, .dark .ov-tui, .dark .ov-viking-bot, .dark .ov-viking-bot__popover, .dark .ov-viking-bot__reference-picker--mention, .dark .ov-viking-bot__interaction {
413
417
  --ov-ui-primary-default: #5f5fff;
414
418
  --ov-ui-primary-hover-default: #7075ff;
415
419
  --ov-ui-primary-active-default: #4242ba;
@@ -1,9 +1,10 @@
1
1
  import type { ButtonHTMLAttributes, ReactNode } from 'react';
2
2
  /** Private non-modal popover shared by history and the reference toolbar. */
3
- export declare function BotPopover({ label, trigger: renderTrigger, children, placement, onOpen, }: {
3
+ export declare function BotPopover({ label, trigger: renderTrigger, children, placement, onOpen, hover, }: {
4
4
  label: string;
5
5
  trigger: (props: ButtonHTMLAttributes<HTMLButtonElement>) => ReactNode;
6
6
  children: (close: () => void) => ReactNode;
7
7
  placement?: 'top' | 'bottom';
8
8
  onOpen?: () => void;
9
+ hover?: boolean;
9
10
  }): import("react").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import type { VikingBotReferences } from './capabilities.js';
2
+ import type { VikingBotLabels } from './model.js';
3
+ export declare function ReferenceTags({ config, labels, disabled, onOpenUri, }: {
4
+ config?: VikingBotReferences;
5
+ labels: Required<VikingBotLabels>;
6
+ disabled?: boolean;
7
+ onOpenUri?: (uri: string) => void;
8
+ }): import("react").JSX.Element | null;
@@ -13,8 +13,3 @@ export declare function ReferenceButton({ locale, config, disabled, labels, send
13
13
  locale: Locale;
14
14
  senderRef: RefObject<SenderInstance | null>;
15
15
  }): import("react").JSX.Element;
16
- export declare function ReferenceTags({ config, labels, disabled, }: {
17
- config?: VikingBotReferences;
18
- labels: Required<VikingBotLabels>;
19
- disabled?: boolean;
20
- }): import("react").JSX.Element | null;
@@ -13,6 +13,7 @@ declare const messages: {
13
13
  searchReferences: string;
14
14
  emptyReferences: string;
15
15
  removeReference: string;
16
+ openReference: string;
16
17
  expandReference: string;
17
18
  collapseReference: string;
18
19
  welcomeTitle: string;
@@ -13,6 +13,7 @@ declare const messages: {
13
13
  searchReferences: string;
14
14
  emptyReferences: string;
15
15
  removeReference: string;
16
+ openReference: string;
16
17
  expandReference: string;
17
18
  collapseReference: string;
18
19
  welcomeTitle: string;
@@ -237,6 +237,7 @@ export interface VikingBotLabels {
237
237
  searchReferences?: string;
238
238
  emptyReferences?: string;
239
239
  removeReference?: string;
240
+ openReference?: string;
240
241
  expandReference?: string;
241
242
  collapseReference?: string;
242
243
  /** 欢迎标题。Welcome heading. */
@@ -0,0 +1,3 @@
1
+ import type { KeyboardEvent } from 'react';
2
+ /** Match the native popover's logical Tab order across the portal boundary. */
3
+ export declare function navigatePopoverTab(event: KeyboardEvent<HTMLElement>, anchor: HTMLElement | null, surface: HTMLElement | null, close: () => void): void;
@@ -307,9 +307,11 @@
307
307
  }
308
308
  }
309
309
 
310
- .ov-button, .ov-input, .ov-textarea, .ov-directory-tour, .ov-wiki-dashboard, .ov-experience-dashboard, .ov-agent-connect, .ov-console, .ov-divider, .ov-file-browser-entries, .ov-drawer, .ov-modal, .ov-file-browser, .ov-file-preview, .ov-file-tree, .ov-module-placeholder, .ov-popover, .ov-scope-switcher, .ov-tooltip, .ov-tui, .ov-viking-bot, .ov-viking-bot__popover, .ov-viking-bot__reference-picker--mention, .ov-viking-bot__interaction {
310
+ .ov-button, .ov-input, .ov-textarea, .ov-directory-tour, .ov-wiki-dashboard, .ov-experience-dashboard, .ov-auth, .ov-agent-connect, .ov-console, .ov-divider, .ov-file-browser-entries, .ov-drawer, .ov-modal, .ov-file-browser, .ov-file-preview, .ov-file-tree, .ov-module-placeholder, .ov-popover, .ov-scope-switcher, .ov-tooltip, .ov-tui, .ov-viking-bot, .ov-viking-bot__popover, .ov-viking-bot__reference-picker--mention, .ov-viking-bot__interaction {
311
311
  --ov-ui-tour-shadow-default: 0 15px 35px #0000000d, 0 5px 15px #0000000d;
312
312
  --ov-ui-tour-highlight-default: #5252ff14;
313
+ --ov-ui-auth-on-primary-default: #fff;
314
+ --ov-ui-auth-backdrop-default: #0006;
313
315
  --ov-ui-primary-default: #5252ff;
314
316
  --ov-ui-primary-hover-default: #7075ff;
315
317
  --ov-ui-primary-active-default: #3833d2;
@@ -366,7 +368,7 @@
366
368
  #bd9cff 100%);
367
369
  }
368
370
 
369
- html.dark .ov-button, html.dark .ov-input, html.dark .ov-textarea, .dark .ov-directory-tour, html.dark .ov-wiki-dashboard, html.dark .ov-experience-dashboard, .dark .ov-agent-connect, .dark .ov-console, .dark .ov-divider, .dark .ov-file-browser-entries, .dark .ov-drawer, .dark .ov-modal, .dark .ov-file-browser, .dark .ov-file-preview, .dark .ov-file-tree, .dark .ov-module-placeholder, .dark .ov-popover, .dark .ov-scope-switcher, .dark .ov-tooltip, .dark .ov-tui, .dark .ov-viking-bot, .dark .ov-viking-bot__popover, .dark .ov-viking-bot__reference-picker--mention, .dark .ov-viking-bot__interaction {
371
+ html.dark .ov-button, html.dark .ov-input, html.dark .ov-textarea, .dark .ov-directory-tour, html.dark .ov-wiki-dashboard, html.dark .ov-experience-dashboard, .dark .ov-auth, .dark .ov-agent-connect, .dark .ov-console, .dark .ov-divider, .dark .ov-file-browser-entries, .dark .ov-drawer, .dark .ov-modal, .dark .ov-file-browser, .dark .ov-file-preview, .dark .ov-file-tree, .dark .ov-module-placeholder, .dark .ov-popover, .dark .ov-scope-switcher, .dark .ov-tooltip, .dark .ov-tui, .dark .ov-viking-bot, .dark .ov-viking-bot__popover, .dark .ov-viking-bot__reference-picker--mention, .dark .ov-viking-bot__interaction {
370
372
  --ov-ui-primary-default: #5f5fff;
371
373
  --ov-ui-primary-hover-default: #7075ff;
372
374
  --ov-ui-primary-active-default: #4242ba;
@@ -701,7 +703,6 @@ html.dark .ov-wiki-dashboard, html.dark .ov-experience-dashboard, html.dark .ov-
701
703
  border: 1px solid var(--ov-viking-bot-border);
702
704
  border-radius: var(--ov-viking-bot-radius);
703
705
  max-width: 100%;
704
- color: var(--ov-viking-bot-accent);
705
706
  font: inherit;
706
707
  overflow-wrap: anywhere;
707
708
  cursor: pointer;
@@ -711,6 +712,14 @@ html.dark .ov-wiki-dashboard, html.dark .ov-experience-dashboard, html.dark .ov-
711
712
  font-size: 12px;
712
713
  }
713
714
 
715
+ .ov-viking-bot__context {
716
+ color: var(--ov-viking-bot-accent);
717
+ }
718
+
719
+ .ov-viking-bot__attachment {
720
+ color: var(--ov-ui-color-text-2, var(--ov-ui-text-2-default));
721
+ }
722
+
714
723
  .ov-viking-bot__context:hover, .ov-viking-bot__attachment:hover {
715
724
  background: var(--ov-viking-bot-surface-hover);
716
725
  }
@@ -2487,6 +2496,23 @@ textarea.ov-viking-bot__interaction-input {
2487
2496
  }
2488
2497
  }
2489
2498
 
2499
+ /*!
2500
+ * Copyright (c) 2026 Bytedance, Inc. and its affiliates.
2501
+ * SPDX-License-Identifier: MIT
2502
+ */
2503
+ /*!
2504
+ * Copyright (c) 2026 Bytedance, Inc. and its affiliates.
2505
+ * SPDX-License-Identifier: MIT
2506
+ */
2507
+ .ark-agentic-user-message-file-list-user-message-file-list-1 {
2508
+ justify-content: flex-end;
2509
+ align-items: flex-start;
2510
+ gap: .5rem;
2511
+ width: 100%;
2512
+ display: flex;
2513
+ overflow: auto hidden;
2514
+ }
2515
+
2490
2516
  /*!
2491
2517
  * Copyright (c) 2026 Bytedance, Inc. and its affiliates.
2492
2518
  * SPDX-License-Identifier: MIT
@@ -7851,9 +7877,11 @@ textarea.ov-viking-bot__interaction-input {
7851
7877
  }
7852
7878
  }
7853
7879
 
7854
- .ov-button, .ov-input, .ov-textarea, .ov-directory-tour, .ov-wiki-dashboard, .ov-experience-dashboard, .ov-agent-connect, .ov-console, .ov-divider, .ov-file-browser-entries, .ov-drawer, .ov-modal, .ov-file-browser, .ov-file-preview, .ov-file-tree, .ov-module-placeholder, .ov-popover, .ov-scope-switcher, .ov-tooltip, .ov-tui, .ov-viking-bot, .ov-viking-bot__popover, .ov-viking-bot__reference-picker--mention, .ov-viking-bot__interaction {
7880
+ .ov-button, .ov-input, .ov-textarea, .ov-directory-tour, .ov-wiki-dashboard, .ov-experience-dashboard, .ov-auth, .ov-agent-connect, .ov-console, .ov-divider, .ov-file-browser-entries, .ov-drawer, .ov-modal, .ov-file-browser, .ov-file-preview, .ov-file-tree, .ov-module-placeholder, .ov-popover, .ov-scope-switcher, .ov-tooltip, .ov-tui, .ov-viking-bot, .ov-viking-bot__popover, .ov-viking-bot__reference-picker--mention, .ov-viking-bot__interaction {
7855
7881
  --ov-ui-tour-shadow-default: 0 15px 35px #0000000d, 0 5px 15px #0000000d;
7856
7882
  --ov-ui-tour-highlight-default: #5252ff14;
7883
+ --ov-ui-auth-on-primary-default: #fff;
7884
+ --ov-ui-auth-backdrop-default: #0006;
7857
7885
  --ov-ui-primary-default: #5252ff;
7858
7886
  --ov-ui-primary-hover-default: #7075ff;
7859
7887
  --ov-ui-primary-active-default: #3833d2;
@@ -7910,7 +7938,7 @@ textarea.ov-viking-bot__interaction-input {
7910
7938
  #bd9cff 100%);
7911
7939
  }
7912
7940
 
7913
- html.dark .ov-button, html.dark .ov-input, html.dark .ov-textarea, .dark .ov-directory-tour, html.dark .ov-wiki-dashboard, html.dark .ov-experience-dashboard, .dark .ov-agent-connect, .dark .ov-console, .dark .ov-divider, .dark .ov-file-browser-entries, .dark .ov-drawer, .dark .ov-modal, .dark .ov-file-browser, .dark .ov-file-preview, .dark .ov-file-tree, .dark .ov-module-placeholder, .dark .ov-popover, .dark .ov-scope-switcher, .dark .ov-tooltip, .dark .ov-tui, .dark .ov-viking-bot, .dark .ov-viking-bot__popover, .dark .ov-viking-bot__reference-picker--mention, .dark .ov-viking-bot__interaction {
7941
+ html.dark .ov-button, html.dark .ov-input, html.dark .ov-textarea, .dark .ov-directory-tour, html.dark .ov-wiki-dashboard, html.dark .ov-experience-dashboard, .dark .ov-auth, .dark .ov-agent-connect, .dark .ov-console, .dark .ov-divider, .dark .ov-file-browser-entries, .dark .ov-drawer, .dark .ov-modal, .dark .ov-file-browser, .dark .ov-file-preview, .dark .ov-file-tree, .dark .ov-module-placeholder, .dark .ov-popover, .dark .ov-scope-switcher, .dark .ov-tooltip, .dark .ov-tui, .dark .ov-viking-bot, .dark .ov-viking-bot__popover, .dark .ov-viking-bot__reference-picker--mention, .dark .ov-viking-bot__interaction {
7914
7942
  --ov-ui-primary-default: #5f5fff;
7915
7943
  --ov-ui-primary-hover-default: #7075ff;
7916
7944
  --ov-ui-primary-active-default: #4242ba;
@@ -8543,9 +8571,11 @@ html.dark .ov-wiki-dashboard, html.dark .ov-experience-dashboard, html.dark .ov-
8543
8571
 
8544
8572
 
8545
8573
 
8546
- .ov-button, .ov-input, .ov-textarea, .ov-directory-tour, .ov-wiki-dashboard, .ov-experience-dashboard, .ov-agent-connect, .ov-console, .ov-divider, .ov-file-browser-entries, .ov-drawer, .ov-modal, .ov-file-browser, .ov-file-preview, .ov-file-tree, .ov-module-placeholder, .ov-popover, .ov-scope-switcher, .ov-tooltip, .ov-tui, .ov-viking-bot, .ov-viking-bot__popover, .ov-viking-bot__reference-picker--mention, .ov-viking-bot__interaction {
8574
+ .ov-button, .ov-input, .ov-textarea, .ov-directory-tour, .ov-wiki-dashboard, .ov-experience-dashboard, .ov-auth, .ov-agent-connect, .ov-console, .ov-divider, .ov-file-browser-entries, .ov-drawer, .ov-modal, .ov-file-browser, .ov-file-preview, .ov-file-tree, .ov-module-placeholder, .ov-popover, .ov-scope-switcher, .ov-tooltip, .ov-tui, .ov-viking-bot, .ov-viking-bot__popover, .ov-viking-bot__reference-picker--mention, .ov-viking-bot__interaction {
8547
8575
  --ov-ui-tour-shadow-default: 0 15px 35px #0000000d, 0 5px 15px #0000000d;
8548
8576
  --ov-ui-tour-highlight-default: #5252ff14;
8577
+ --ov-ui-auth-on-primary-default: #fff;
8578
+ --ov-ui-auth-backdrop-default: #0006;
8549
8579
  --ov-ui-primary-default: #5252ff;
8550
8580
  --ov-ui-primary-hover-default: #7075ff;
8551
8581
  --ov-ui-primary-active-default: #3833d2;
@@ -8602,7 +8632,7 @@ html.dark .ov-wiki-dashboard, html.dark .ov-experience-dashboard, html.dark .ov-
8602
8632
  #bd9cff 100%);
8603
8633
  }
8604
8634
 
8605
- html.dark .ov-button, html.dark .ov-input, html.dark .ov-textarea, .dark .ov-directory-tour, html.dark .ov-wiki-dashboard, html.dark .ov-experience-dashboard, .dark .ov-agent-connect, .dark .ov-console, .dark .ov-divider, .dark .ov-file-browser-entries, .dark .ov-drawer, .dark .ov-modal, .dark .ov-file-browser, .dark .ov-file-preview, .dark .ov-file-tree, .dark .ov-module-placeholder, .dark .ov-popover, .dark .ov-scope-switcher, .dark .ov-tooltip, .dark .ov-tui, .dark .ov-viking-bot, .dark .ov-viking-bot__popover, .dark .ov-viking-bot__reference-picker--mention, .dark .ov-viking-bot__interaction {
8635
+ html.dark .ov-button, html.dark .ov-input, html.dark .ov-textarea, .dark .ov-directory-tour, html.dark .ov-wiki-dashboard, html.dark .ov-experience-dashboard, .dark .ov-auth, .dark .ov-agent-connect, .dark .ov-console, .dark .ov-divider, .dark .ov-file-browser-entries, .dark .ov-drawer, .dark .ov-modal, .dark .ov-file-browser, .dark .ov-file-preview, .dark .ov-file-tree, .dark .ov-module-placeholder, .dark .ov-popover, .dark .ov-scope-switcher, .dark .ov-tooltip, .dark .ov-tui, .dark .ov-viking-bot, .dark .ov-viking-bot__popover, .dark .ov-viking-bot__reference-picker--mention, .dark .ov-viking-bot__interaction {
8606
8636
  --ov-ui-primary-default: #5f5fff;
8607
8637
  --ov-ui-primary-hover-default: #7075ff;
8608
8638
  --ov-ui-primary-active-default: #4242ba;
@@ -9056,54 +9086,134 @@ html.dark .ov-wiki-dashboard, html.dark .ov-experience-dashboard, html.dark .ov-
9056
9086
  outline: none;
9057
9087
  }
9058
9088
 
9059
- .ov-viking-bot__reference-tags {
9060
- flex-wrap: wrap;
9089
+ .ov-viking-bot__quick-inputs button:not(.ov-button):focus-visible, .ov-viking-bot__session-history button:not(.ov-button):focus-visible {
9090
+ outline: 2px solid var(--ov-ui-color-focus, var(--ov-ui-focus-default));
9091
+ outline-offset: 2px;
9092
+ }
9093
+
9094
+ .ov-viking-bot__quick-inputs button:not(.ov-button):disabled {
9095
+ opacity: .5;
9096
+ cursor: not-allowed;
9097
+ }
9098
+
9099
+ .ov-viking-bot__attach > svg {
9100
+ width: 10.208px;
9101
+ height: 10.208px;
9102
+ }
9103
+
9104
+ .ov-viking-bot__reference-tags, .ov-viking-bot__reference-overflow {
9105
+ flex-direction: column;
9106
+ align-items: flex-start;
9061
9107
  gap: 6px;
9062
- margin: 0 0 8px;
9063
- padding: 0;
9064
- list-style: none;
9108
+ min-width: 0;
9065
9109
  display: flex;
9066
9110
  }
9067
9111
 
9068
- .ov-viking-bot__reference-tags li {
9069
- background: var(--ov-ui-color-bg-5, var(--ov-ui-bg-5-default));
9070
- border-radius: 6px;
9112
+ .ov-viking-bot__reference-tags {
9113
+ margin-bottom: 10px;
9114
+ }
9115
+
9116
+ .ov-viking-bot__reference-row {
9071
9117
  align-items: center;
9072
9118
  gap: 4px;
9073
9119
  min-width: 0;
9074
9120
  max-width: 100%;
9075
- padding: 4px 6px;
9121
+ display: flex;
9122
+ }
9123
+
9124
+ .ov-viking-bot__reference-tag, .ov-viking-bot__reference-more {
9125
+ box-sizing: border-box;
9126
+ background: var(--ov-ui-color-bg-3, var(--ov-ui-bg-3-default));
9127
+ max-width: 100%;
9128
+ height: 26px;
9129
+ color: var(--ov-ui-color-text-2, var(--ov-ui-text-2-default));
9130
+ letter-spacing: .036px;
9131
+ border: 0;
9132
+ border-radius: 6px;
9133
+ align-items: center;
9134
+ gap: 4px;
9135
+ padding: 3px 8px;
9136
+ font-family: Roboto, PingFang SC, sans-serif;
9137
+ font-size: 12px;
9138
+ font-weight: 400;
9139
+ line-height: 20px;
9076
9140
  display: inline-flex;
9077
9141
  }
9078
9142
 
9079
- .ov-viking-bot__reference-tags li > span {
9143
+ .ov-viking-bot__reference-tag {
9144
+ min-width: 0;
9145
+ }
9146
+
9147
+ .ov-viking-bot__reference-tag > svg {
9148
+ flex-shrink: 0;
9149
+ }
9150
+
9151
+ .ov-viking-bot__reference-icon {
9152
+ color: var(--ov-ui-viking-bot-reference-icon-light);
9153
+ }
9154
+
9155
+ .dark .ov-viking-bot__reference-icon {
9156
+ color: var(--ov-ui-viking-bot-reference-icon-dark);
9157
+ }
9158
+
9159
+ .ov-viking-bot__reference-path {
9080
9160
  text-overflow: ellipsis;
9081
9161
  white-space: nowrap;
9082
9162
  min-width: 0;
9083
9163
  overflow: hidden;
9084
9164
  }
9085
9165
 
9086
- .ov-viking-bot__reference-tags button:not(.ov-button) {
9166
+ .ov-viking-bot__reference-open {
9167
+ min-width: 0;
9087
9168
  color: inherit;
9169
+ font: inherit;
9170
+ text-align: start;
9088
9171
  cursor: pointer;
9089
9172
  background: none;
9090
9173
  border: 0;
9091
- padding: 0 2px;
9174
+ padding: 0;
9175
+ display: inline-flex;
9176
+ overflow: hidden;
9092
9177
  }
9093
9178
 
9094
- .ov-viking-bot__quick-inputs button:not(.ov-button):focus-visible, .ov-viking-bot__session-history button:not(.ov-button):focus-visible, .ov-viking-bot__reference-tags button:not(.ov-button):focus-visible {
9179
+ .ov-viking-bot__reference-open:hover {
9180
+ color: var(--ov-ui-color-primary, var(--ov-ui-primary-default));
9181
+ }
9182
+
9183
+ .ov-viking-bot__reference-remove {
9184
+ width: 14px;
9185
+ height: 14px;
9186
+ color: var(--ov-ui-color-text-3, var(--ov-ui-text-3-default));
9187
+ cursor: pointer;
9188
+ background: none;
9189
+ border: 0;
9190
+ border-radius: 2px;
9191
+ flex-shrink: 0;
9192
+ justify-content: center;
9193
+ align-items: center;
9194
+ padding: 0;
9195
+ display: inline-flex;
9196
+ }
9197
+
9198
+ .ov-viking-bot__reference-more {
9199
+ cursor: pointer;
9200
+ flex-shrink: 0;
9201
+ }
9202
+
9203
+ .ov-viking-bot__reference-open:focus-visible, .ov-viking-bot__reference-more:focus-visible, .ov-viking-bot__reference-remove:focus-visible {
9095
9204
  outline: 2px solid var(--ov-ui-color-focus, var(--ov-ui-focus-default));
9096
9205
  outline-offset: 2px;
9097
9206
  }
9098
9207
 
9099
- .ov-viking-bot__quick-inputs button:not(.ov-button):disabled {
9100
- opacity: .5;
9208
+ .ov-viking-bot__reference-remove:disabled {
9101
9209
  cursor: not-allowed;
9210
+ opacity: .5;
9102
9211
  }
9103
9212
 
9104
- .ov-viking-bot__attach > svg {
9105
- width: 10.208px;
9106
- height: 10.208px;
9213
+ .ov-viking-bot__reference-overflow {
9214
+ max-width: min(440px, 100vw - 48px);
9215
+ max-height: min(360px, 50vh);
9216
+ overflow-y: auto;
9107
9217
  }
9108
9218
 
9109
9219
  .ov-viking-bot__list {
@@ -9124,6 +9234,15 @@ html.dark .ov-wiki-dashboard, html.dark .ov-experience-dashboard, html.dark .ov-
9124
9234
  padding-left: 32px;
9125
9235
  }
9126
9236
 
9237
+ .ov-viking-bot__user-message-group {
9238
+ flex-direction: column;
9239
+ align-items: flex-end;
9240
+ gap: 6px;
9241
+ width: min(88%, 960px);
9242
+ max-width: 100%;
9243
+ display: flex;
9244
+ }
9245
+
9127
9246
  .ov-viking-bot__user-bubble {
9128
9247
  --agentic-bubble-content-max-width: 100%;
9129
9248
  --agentic-bubble-content-filled-bg: var(--ov-ui-color-bg-3, var(--ov-ui-bg-3-default));
@@ -9132,10 +9251,30 @@ html.dark .ov-wiki-dashboard, html.dark .ov-experience-dashboard, html.dark .ov-
9132
9251
  --agentic-bubble-content-radius-default: 16px;
9133
9252
  --agentic-bubble-content-font-size: 14px;
9134
9253
  --agentic-bubble-content-line-height: 22px;
9135
- width: min(88%, 960px);
9136
9254
  max-width: 100%;
9137
9255
  }
9138
9256
 
9257
+ .ov-viking-bot__user-message-content {
9258
+ flex-direction: column;
9259
+ align-items: flex-start;
9260
+ gap: 6px;
9261
+ width: max-content;
9262
+ max-width: 100%;
9263
+ display: flex;
9264
+ }
9265
+
9266
+ .ov-viking-bot__user-message-attachments {
9267
+ flex-wrap: wrap;
9268
+ justify-content: flex-end;
9269
+ align-self: flex-end;
9270
+ align-items: center;
9271
+ gap: 8px;
9272
+ width: 100%;
9273
+ max-width: 100%;
9274
+ display: flex;
9275
+ overflow: visible;
9276
+ }
9277
+
9139
9278
  .ov-viking-bot__user-bubble .ark-agentic-bubble__content {
9140
9279
  inline-size: max-content;
9141
9280
  max-inline-size: 100%;
@@ -9181,7 +9320,7 @@ html.dark .ov-wiki-dashboard, html.dark .ov-experience-dashboard, html.dark .ov-
9181
9320
  display: inline-flex;
9182
9321
  }
9183
9322
 
9184
- .ov-viking-bot__message:hover .ov-viking-bot__message-footer, .ov-viking-bot__message:focus-within .ov-viking-bot__message-footer {
9323
+ .ov-viking-bot__message:not(.ov-viking-bot__message--user):hover .ov-viking-bot__message-footer, .ov-viking-bot__message:not(.ov-viking-bot__message--user):focus-within .ov-viking-bot__message-footer, .ov-viking-bot__user-message-group:hover .ov-viking-bot__message-footer, .ov-viking-bot__user-message-group:focus-within .ov-viking-bot__message-footer {
9185
9324
  opacity: 1;
9186
9325
  pointer-events: auto;
9187
9326
  }
@@ -73,6 +73,8 @@ export interface VikingBotComposerProps extends VikingBotInputFeatures {
73
73
  onFilesAdded?: (files: readonly File[]) => void;
74
74
  /** 移除一个附件。Removes an attachment. */
75
75
  onAttachmentRemove?: (attachment: VikingBotAttachment) => void;
76
+ /** 打开已选中的文件或目录引用。Opens a selected file or directory reference. */
77
+ onOpenUri?: (uri: string) => void;
76
78
  /** 上报发送意图;由宿主发送并清空草稿。省略时不能发送。Reports the send intent. */
77
79
  onSend?: (draft: VikingBotDraft) => void;
78
80
  /** 停止正在进行的回复。省略时不展示停止动作。Stops the streaming reply. */
@@ -141,7 +143,7 @@ export interface VikingBotProps extends VikingBotInputFeatures, Omit<HTMLAttribu
141
143
  onSend?: (draft: VikingBotDraft) => void;
142
144
  /** 停止正在进行的回复。Stops the streaming reply. */
143
145
  onCancel?: () => void;
144
- /** 打开消息中引用的资源。Opens a resource referenced by a message. */
146
+ /** 打开消息资源或输入区引用。Opens a message resource or composer reference. */
145
147
  onOpenUri?: (uri: string) => void;
146
148
  /** 复制由宿主执行,组件只上报意图。The host copies; the component reports intent. */
147
149
  onCopy?: (text: string) => void;
@@ -0,0 +1,9 @@
1
+ import { type ReactNode } from 'react';
2
+ import type { VikingBotMessage } from './model.js';
3
+ import type { VikingBotMessageListProps } from './types.js';
4
+ export declare function UserMessageGroup({ message, labels, footer, onOpenUri, }: {
5
+ message: VikingBotMessage;
6
+ labels: NonNullable<VikingBotMessageListProps['labels']>;
7
+ footer: ReactNode;
8
+ onOpenUri?: (uri: string) => void;
9
+ }): import("react").JSX.Element | null;
@@ -1,2 +1,2 @@
1
1
  export { WikiDashboard } from './wiki-dashboard.js';
2
- export type { WikiConflict, WikiDashboardData, WikiDashboardLabels, WikiDashboardProps, WikiDirectoryData, WikiFileData, } from './types.js';
2
+ export type { WikiConflict, WikiDashboardAction, WikiDashboardData, WikiDashboardLabels, WikiDashboardProps, WikiDirectoryData, WikiFileData, } from './types.js';
@@ -167,9 +167,11 @@
167
167
  }
168
168
  }
169
169
 
170
- .ov-button, .ov-input, .ov-textarea, .ov-directory-tour, .ov-wiki-dashboard, .ov-experience-dashboard, .ov-agent-connect, .ov-console, .ov-divider, .ov-file-browser-entries, .ov-drawer, .ov-modal, .ov-file-browser, .ov-file-preview, .ov-file-tree, .ov-module-placeholder, .ov-popover, .ov-scope-switcher, .ov-tooltip, .ov-tui, .ov-viking-bot, .ov-viking-bot__popover, .ov-viking-bot__reference-picker--mention, .ov-viking-bot__interaction {
170
+ .ov-button, .ov-input, .ov-textarea, .ov-directory-tour, .ov-wiki-dashboard, .ov-experience-dashboard, .ov-auth, .ov-agent-connect, .ov-console, .ov-divider, .ov-file-browser-entries, .ov-drawer, .ov-modal, .ov-file-browser, .ov-file-preview, .ov-file-tree, .ov-module-placeholder, .ov-popover, .ov-scope-switcher, .ov-tooltip, .ov-tui, .ov-viking-bot, .ov-viking-bot__popover, .ov-viking-bot__reference-picker--mention, .ov-viking-bot__interaction {
171
171
  --ov-ui-tour-shadow-default: 0 15px 35px #0000000d, 0 5px 15px #0000000d;
172
172
  --ov-ui-tour-highlight-default: #5252ff14;
173
+ --ov-ui-auth-on-primary-default: #fff;
174
+ --ov-ui-auth-backdrop-default: #0006;
173
175
  --ov-ui-primary-default: #5252ff;
174
176
  --ov-ui-primary-hover-default: #7075ff;
175
177
  --ov-ui-primary-active-default: #3833d2;
@@ -226,7 +228,7 @@
226
228
  #bd9cff 100%);
227
229
  }
228
230
 
229
- html.dark .ov-button, html.dark .ov-input, html.dark .ov-textarea, .dark .ov-directory-tour, html.dark .ov-wiki-dashboard, html.dark .ov-experience-dashboard, .dark .ov-agent-connect, .dark .ov-console, .dark .ov-divider, .dark .ov-file-browser-entries, .dark .ov-drawer, .dark .ov-modal, .dark .ov-file-browser, .dark .ov-file-preview, .dark .ov-file-tree, .dark .ov-module-placeholder, .dark .ov-popover, .dark .ov-scope-switcher, .dark .ov-tooltip, .dark .ov-tui, .dark .ov-viking-bot, .dark .ov-viking-bot__popover, .dark .ov-viking-bot__reference-picker--mention, .dark .ov-viking-bot__interaction {
231
+ html.dark .ov-button, html.dark .ov-input, html.dark .ov-textarea, .dark .ov-directory-tour, html.dark .ov-wiki-dashboard, html.dark .ov-experience-dashboard, .dark .ov-auth, .dark .ov-agent-connect, .dark .ov-console, .dark .ov-divider, .dark .ov-file-browser-entries, .dark .ov-drawer, .dark .ov-modal, .dark .ov-file-browser, .dark .ov-file-preview, .dark .ov-file-tree, .dark .ov-module-placeholder, .dark .ov-popover, .dark .ov-scope-switcher, .dark .ov-tooltip, .dark .ov-tui, .dark .ov-viking-bot, .dark .ov-viking-bot__popover, .dark .ov-viking-bot__reference-picker--mention, .dark .ov-viking-bot__interaction {
230
232
  --ov-ui-primary-default: #5f5fff;
231
233
  --ov-ui-primary-hover-default: #7075ff;
232
234
  --ov-ui-primary-active-default: #4242ba;
@@ -635,13 +637,21 @@ html.dark .ov-wiki-dashboard, html.dark .ov-experience-dashboard, html.dark .ov-
635
637
  }
636
638
 
637
639
  .ov-wiki-dashboard__conflict-row {
638
- grid-template-columns: 78px minmax(140px, 1fr) 200px 74px 100px;
640
+ grid-template-columns: 78px minmax(140px, 1fr) 200px 74px;
639
641
  align-items: center;
640
642
  display: grid;
641
643
  }
642
644
 
643
645
  .ov-wiki-dashboard__conflict-row--without-path {
644
- grid-template-columns: 78px minmax(140px, 1fr) 74px 100px;
646
+ grid-template-columns: 78px minmax(140px, 1fr) 74px;
647
+ }
648
+
649
+ .ov-wiki-dashboard__conflict-row--with-actions {
650
+ grid-template-columns: 78px minmax(140px, 1fr) 200px 74px max-content;
651
+ }
652
+
653
+ .ov-wiki-dashboard__conflict-row--with-actions.ov-wiki-dashboard__conflict-row--without-path {
654
+ grid-template-columns: 78px minmax(140px, 1fr) 74px max-content;
645
655
  }
646
656
 
647
657
  .ov-wiki-dashboard__severity {
@@ -822,6 +832,8 @@ html.dark .ov-wiki-dashboard, html.dark .ov-experience-dashboard, html.dark .ov-
822
832
  }
823
833
 
824
834
  .ov-wiki-dashboard__actions {
835
+ flex: none;
836
+ align-items: center;
825
837
  gap: 8px;
826
838
  padding: 0 16px;
827
839
  display: flex;
@@ -1,4 +1,4 @@
1
- import type { HTMLAttributes } from 'react';
1
+ import type { HTMLAttributes, ReactNode } from 'react';
2
2
  export interface WikiConflict {
3
3
  id: string;
4
4
  matchText: string;
@@ -31,10 +31,16 @@ export interface WikiFileData {
31
31
  path?: string;
32
32
  }
33
33
  export type WikiDashboardData = WikiDirectoryData | WikiFileData;
34
+ export interface WikiDashboardAction {
35
+ key: string;
36
+ icon: ReactNode;
37
+ tooltip: string;
38
+ disabled?: boolean;
39
+ onClick?: () => void;
40
+ }
34
41
  export interface WikiDashboardLabels {
35
42
  title: string;
36
43
  pendingLabel: string;
37
- discuss: string;
38
44
  conflicts: string;
39
45
  conflictFiles: string;
40
46
  pending: string;
@@ -51,14 +57,10 @@ export interface WikiDashboardLabels {
51
57
  failed: string;
52
58
  retry: string;
53
59
  open: string;
54
- edit: string;
55
60
  solution: string;
56
61
  occurred: string;
57
62
  fixedAt: string;
58
63
  evidence: string;
59
- history: string;
60
- historyHint: string;
61
- unavailable: string;
62
64
  limited: string;
63
65
  }
64
66
  interface WikiDashboardCommonProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
@@ -71,22 +73,16 @@ interface WikiDashboardCommonProps extends Omit<HTMLAttributes<HTMLDivElement>,
71
73
  export type WikiDashboardProps = WikiDashboardCommonProps & ({
72
74
  kind: 'directory';
73
75
  data?: WikiDirectoryData;
74
- editDisabledReason?: never;
75
- discussDisabledReason?: never;
76
76
  onOpenUri?: (uri: string) => void;
77
77
  onOpenDashboard?: (uri: string) => void;
78
- onEdit?: (uri: string) => void;
79
- onDiscuss?: never;
78
+ /** Omitted or empty actions hide the row's action area. */
79
+ defineActions?: (uri: string) => readonly WikiDashboardAction[];
80
80
  } | {
81
81
  kind: 'file';
82
82
  data?: WikiFileData;
83
- /** Explanation shown when editing has no handler. Defaults to labels.unavailable. */
84
- editDisabledReason?: string;
85
- /** Explanation shown when discussion has no handler. Defaults to labels.unavailable. */
86
- discussDisabledReason?: string;
87
83
  onOpenUri?: () => void;
88
84
  onOpenDashboard?: never;
89
- onEdit?: (conflict: WikiConflict) => void;
90
- onDiscuss?: (conflict: WikiConflict) => void;
85
+ /** Hosts choose actions, including how they vary by conflict state. */
86
+ defineActions?: (conflict: WikiConflict) => readonly WikiDashboardAction[];
91
87
  });
92
88
  export {};
@@ -1,9 +1,2 @@
1
- import type { ReactNode } from 'react';
2
- export declare function WikiActionButton({ label, hint, onClick, children, ...aria }: {
3
- label: string;
4
- hint: string;
5
- onClick?: () => void;
6
- children: ReactNode;
7
- 'aria-expanded'?: boolean;
8
- 'aria-controls'?: string;
9
- }): import("react").JSX.Element;
1
+ import type { WikiDashboardAction } from './types.js';
2
+ export declare function WikiActionButton({ icon, tooltip, disabled, onClick, }: Omit<WikiDashboardAction, 'key'>): import("react").JSX.Element;
@@ -1,15 +1,8 @@
1
- import type { WikiConflict, WikiDashboardProps, WikiDashboardLabels } from './types.js';
2
- export declare function WikiConflictCard({ conflict, path, labels: t, editDisabledReason, discussDisabledReason, onOpenUri, onEdit, onDiscuss, }: {
1
+ import type { WikiConflict, WikiDashboardAction, WikiDashboardLabels } from './types.js';
2
+ export declare function WikiConflictCard({ conflict, path, labels: t, actions, onOpenUri, }: {
3
3
  conflict: WikiConflict;
4
4
  path?: string;
5
5
  labels: WikiDashboardLabels;
6
- editDisabledReason?: string;
7
- discussDisabledReason?: string;
6
+ actions?: readonly WikiDashboardAction[];
8
7
  onOpenUri?: () => void;
9
- onEdit?: Extract<WikiDashboardProps, {
10
- kind: 'file';
11
- }>['onEdit'];
12
- onDiscuss?: Extract<WikiDashboardProps, {
13
- kind: 'file';
14
- }>['onDiscuss'];
15
8
  }): import("react").JSX.Element;