@openviking/react 0.1.6 → 0.1.7

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 (94) hide show
  1. package/README.md +2 -0
  2. package/dist/2~0.js +6 -5
  3. package/dist/3c~0.js +10 -4
  4. package/dist/3~0.js +18 -8
  5. package/dist/ae~0.js +8 -1
  6. package/dist/ark-message-list-view~0.js +9 -4
  7. package/dist/a~0.js +12 -6
  8. package/dist/c7r~0.js +50 -0
  9. package/dist/ck~0.js +3 -0
  10. package/dist/client/paths.d.ts +6 -0
  11. package/dist/client/provider.d.ts +6 -1
  12. package/dist/components/agent-connect/style.css +222 -35
  13. package/dist/components/directory-tour/style.css +221 -21
  14. package/dist/components/directory-tour.js +1 -1
  15. package/dist/components/experience-dashboard/style.css +227 -12
  16. package/dist/components/experience-dashboard.js +1 -1
  17. package/dist/components/file-browser-entries/style.css +325 -80
  18. package/dist/components/file-preview/style.css +221 -76
  19. package/dist/components/file-tree/file-tree-toolbar.d.ts +3 -3
  20. package/dist/components/file-tree/locales/en-US.d.ts +3 -0
  21. package/dist/components/file-tree/locales/zh-CN.d.ts +3 -0
  22. package/dist/components/file-tree/style.css +311 -86
  23. package/dist/components/file-tree/types.d.ts +13 -4
  24. package/dist/components/scope-switcher/style.css +366 -37
  25. package/dist/components/scope-switcher.js +1 -1
  26. package/dist/components/style.css +3329 -640
  27. package/dist/components/tui/style.css +267 -35
  28. package/dist/components/viking-bot/interaction/style.css +143 -22
  29. package/dist/components/viking-bot/style.css +945 -295
  30. package/dist/components/wiki-dashboard/style.css +227 -12
  31. package/dist/c~0.js +16 -8
  32. package/dist/ep~0.js +345 -0
  33. package/dist/e~0.js +33 -328
  34. package/dist/fj~0.js +8 -4
  35. package/dist/fl~0.js +709 -0
  36. package/dist/f~0.js +302 -663
  37. package/dist/index.js +3 -3
  38. package/dist/lk~0.js +6 -3
  39. package/dist/l~0.js +1874 -437
  40. package/dist/modules/console/style.css +1471 -351
  41. package/dist/modules/file-browser/acl/acl-add-principal.d.ts +12 -0
  42. package/dist/modules/file-browser/acl/acl-candidate.d.ts +8 -0
  43. package/dist/modules/file-browser/acl/acl-client.d.ts +13 -0
  44. package/dist/modules/file-browser/acl/acl-confirmation.d.ts +6 -0
  45. package/dist/modules/file-browser/acl/acl-entry.d.ts +13 -0
  46. package/dist/modules/file-browser/acl/acl-labels.d.ts +47 -0
  47. package/dist/modules/file-browser/acl/acl-menu.d.ts +10 -0
  48. package/dist/modules/file-browser/acl/acl-modal.d.ts +17 -0
  49. package/dist/modules/file-browser/acl/acl-model.d.ts +17 -0
  50. package/dist/modules/file-browser/acl/acl-principal-tabs.d.ts +6 -0
  51. package/dist/modules/file-browser/acl/acl-tag.d.ts +7 -0
  52. package/dist/modules/file-browser/acl/locales/en-US.d.ts +44 -0
  53. package/dist/modules/file-browser/acl/locales/zh-CN.d.ts +44 -0
  54. package/dist/modules/file-browser/acl/use-acl-principals.d.ts +17 -0
  55. package/dist/modules/file-browser/acl/use-acl-report.d.ts +27 -0
  56. package/dist/modules/file-browser/acl-types.d.ts +86 -0
  57. package/dist/modules/file-browser/dashboard-model.d.ts +3 -0
  58. package/dist/modules/file-browser/file-browser-detail.d.ts +4 -1
  59. package/dist/modules/file-browser/file-browser-labels.d.ts +1 -1
  60. package/dist/modules/file-browser/file-browser-search.d.ts +20 -0
  61. package/dist/modules/file-browser/file-browser-toolbar.d.ts +3 -10
  62. package/dist/modules/file-browser/file-browser-tree-pane.d.ts +2 -6
  63. package/dist/modules/file-browser/file-browser.d.ts +1 -1
  64. package/dist/modules/file-browser/fs-directories.d.ts +1 -0
  65. package/dist/modules/file-browser/fs-model.d.ts +3 -1
  66. package/dist/modules/file-browser/index.d.ts +1 -0
  67. package/dist/modules/file-browser/locales/en-US.d.ts +5 -0
  68. package/dist/modules/file-browser/locales/zh-CN.d.ts +5 -0
  69. package/dist/modules/file-browser/style.css +2409 -603
  70. package/dist/modules/file-browser/types.d.ts +20 -20
  71. package/dist/modules/file-browser/use-file-browser-acl.d.ts +15 -0
  72. package/dist/modules/file-browser/use-file-browser.d.ts +5 -7
  73. package/dist/modules/file-browser/use-fs-tree.d.ts +1 -0
  74. package/dist/modules/scope-cascade/style.css +535 -37
  75. package/dist/modules/style.css +12227 -8757
  76. package/dist/n~0.js +60 -36
  77. package/dist/rt~0.js +107 -4
  78. package/dist/r~0.js +1 -1
  79. package/dist/shared/components/button/button.d.ts +20 -0
  80. package/dist/shared/components/input/input.d.ts +17 -0
  81. package/dist/shared/components/modal/locales/en-US.d.ts +4 -0
  82. package/dist/shared/components/modal/locales/zh-CN.d.ts +4 -0
  83. package/dist/shared/components/modal/modal.d.ts +2 -0
  84. package/dist/shared/components/modal/types.d.ts +18 -0
  85. package/dist/shared/components/overlay/lock-body-scroll.d.ts +1 -0
  86. package/dist/style.css +7776 -1571
  87. package/dist/s~0.js +16 -0
  88. package/dist/u~0.js +15 -6
  89. package/dist/viking-bot-composer~0.js +29 -11
  90. package/dist/viking-bot-interaction~0.js +2 -1
  91. package/package.json +3 -2
  92. package/dist/fi~0.js +0 -354
  93. package/dist/modules/file-browser/fs-selection.d.ts +0 -4
  94. package/dist/o~0.js +0 -106
@@ -1,4 +1,173 @@
1
- .ov-directory-tour, .ov-wiki-dashboard, .ov-experience-dashboard, .ov-agent-connect, .ov-console, .ov-divider, .ov-file-browser-entries, .ov-drawer, .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 {
1
+ .ov-button {
2
+ --ov-ui-button-height: 32px;
3
+ --ov-ui-button-padding: 16px;
4
+ --ov-ui-button-primary: var(--ov-ui-color-primary, var(--ov-ui-primary-default));
5
+ --ov-ui-button-text: var(--ov-ui-color-text-2, var(--ov-ui-text-2-default));
6
+ --ov-ui-button-fill: var(--ov-ui-color-bg-5, var(--ov-ui-bg-5-default));
7
+ --ov-ui-button-fill-hover: var(--ov-ui-color-bg-11, var(--ov-ui-bg-11-default));
8
+ --ov-ui-button-focus-ring: var(--ov-ui-color-neutral-4, var(--ov-ui-neutral-4-default));
9
+ appearance: none;
10
+ box-sizing: border-box;
11
+ height: var(--ov-ui-button-height);
12
+ padding: 0 var(--ov-ui-button-padding);
13
+ background: var(--ov-ui-button-fill);
14
+ color: var(--ov-ui-button-text);
15
+ white-space: nowrap;
16
+ cursor: pointer;
17
+ -webkit-user-select: none;
18
+ user-select: none;
19
+ border: 1px solid #0000;
20
+ border-radius: 6px;
21
+ flex-shrink: 0;
22
+ justify-content: center;
23
+ align-items: center;
24
+ gap: 8px;
25
+ margin: 0;
26
+ font-family: inherit;
27
+ font-size: 13px;
28
+ font-weight: 500;
29
+ line-height: 1.53846;
30
+ text-decoration: none;
31
+ transition: background-color .1s cubic-bezier(0, 0, 1, 1), border-color .1s cubic-bezier(0, 0, 1, 1), color .1s cubic-bezier(0, 0, 1, 1);
32
+ display: inline-flex;
33
+ }
34
+
35
+ .ov-button--mini {
36
+ --ov-ui-button-height: 24px;
37
+ --ov-ui-button-padding: 12px;
38
+ gap: 4px;
39
+ font-size: 12px;
40
+ }
41
+
42
+ .ov-button--small {
43
+ --ov-ui-button-height: 28px;
44
+ }
45
+
46
+ .ov-button--large {
47
+ --ov-ui-button-height: 36px;
48
+ }
49
+
50
+ .ov-button--icon-only {
51
+ width: var(--ov-ui-button-height);
52
+ padding: 0;
53
+ }
54
+
55
+ .ov-button--circle {
56
+ border-radius: 50%;
57
+ }
58
+
59
+ .ov-button--long {
60
+ width: 100%;
61
+ }
62
+
63
+ .ov-button:not(:disabled):not([aria-disabled="true"]):hover {
64
+ background: var(--ov-ui-button-fill-hover);
65
+ }
66
+
67
+ .ov-button:not(:disabled):not([aria-disabled="true"]):active {
68
+ background: var(--ov-ui-button-fill);
69
+ color: var(--ov-ui-color-text-1, var(--ov-ui-text-1-default));
70
+ transition: none;
71
+ }
72
+
73
+ .ov-button:focus-visible {
74
+ box-shadow: 0 0 0 2px var(--ov-ui-button-focus-ring);
75
+ outline: none;
76
+ }
77
+
78
+ .ov-button:disabled:not(.ov-button--loading), .ov-button.ov-button--disabled, .ov-button[aria-disabled="true"] {
79
+ background: var(--ov-ui-color-bg-4, var(--ov-ui-bg-4-default));
80
+ cursor: not-allowed;
81
+ color: var(--ov-ui-color-text-disabled, var(--ov-ui-text-disabled-default));
82
+ }
83
+
84
+ .ov-button--primary, .ov-button--outline {
85
+ --ov-ui-button-focus-ring: var(--ov-ui-color-primary-disabled, var(--ov-ui-primary-disabled-default));
86
+ }
87
+
88
+ .ov-button--primary {
89
+ background: var(--ov-ui-button-primary);
90
+ color: var(--ov-ui-color-text-on-primary, var(--ov-ui-text-on-primary-default));
91
+ border-style: dashed;
92
+ }
93
+
94
+ .ov-button--primary:not(:disabled):not([aria-disabled="true"]):hover {
95
+ background: var(--ov-ui-color-primary-strong, var(--ov-ui-primary-strong-default));
96
+ color: var(--ov-ui-color-text-on-primary, var(--ov-ui-text-on-primary-default));
97
+ }
98
+
99
+ .ov-button--primary:not(:disabled):not([aria-disabled="true"]):active {
100
+ background: var(--ov-ui-button-primary);
101
+ color: var(--ov-ui-color-text-on-primary, var(--ov-ui-text-on-primary-default));
102
+ }
103
+
104
+ .ov-button--primary:disabled:not(.ov-button--loading), .ov-button--primary.ov-button--disabled, .ov-button--primary[aria-disabled="true"] {
105
+ background: var(--ov-ui-color-primary-disabled, var(--ov-ui-primary-disabled-default));
106
+ color: var(--ov-ui-color-text-on-primary-disabled, var(--ov-ui-on-primary-disabled-default));
107
+ }
108
+
109
+ .ov-button--outline, .ov-button--outline:disabled:not(.ov-button--loading), .ov-button--outline.ov-button--disabled, .ov-button--outline[aria-disabled="true"] {
110
+ border-color: var(--ov-ui-color-border-3, var(--ov-ui-border-3-default));
111
+ background: none;
112
+ }
113
+
114
+ .ov-button--outline:not(:disabled):not([aria-disabled="true"]):hover, .ov-button--outline:not(:disabled):not([aria-disabled="true"]):active {
115
+ background: var(--ov-ui-color-bg-7, var(--ov-ui-bg-7-default));
116
+ color: var(--ov-ui-button-text);
117
+ }
118
+
119
+ .ov-button--outline:not(:disabled):not([aria-disabled="true"]):active {
120
+ border-color: var(--ov-ui-color-border-4, var(--ov-ui-border-4-default));
121
+ }
122
+
123
+ .ov-button--text {
124
+ color: var(--ov-ui-color-link, var(--ov-ui-link-default));
125
+ background: none;
126
+ }
127
+
128
+ .ov-button--text:not(:disabled):not([aria-disabled="true"]):hover, .ov-button--text:disabled:not(.ov-button--loading), .ov-button--text.ov-button--disabled, .ov-button--text[aria-disabled="true"] {
129
+ color: var(--ov-ui-color-primary-muted, var(--ov-ui-primary-muted-default));
130
+ background: none;
131
+ }
132
+
133
+ .ov-button--text:not(:disabled):not([aria-disabled="true"]):active {
134
+ color: var(--ov-ui-color-link-active, var(--ov-ui-link-active-default));
135
+ background: none;
136
+ }
137
+
138
+ .ov-button__icon {
139
+ flex: none;
140
+ align-items: center;
141
+ display: inline-flex;
142
+ }
143
+
144
+ .ov-button__spinner {
145
+ box-sizing: border-box;
146
+ border: 1.5px solid;
147
+ border-inline-start-color: #0000;
148
+ border-radius: 50%;
149
+ width: 1em;
150
+ height: 1em;
151
+ animation: 1s linear infinite ov-button-spin;
152
+ }
153
+
154
+ @keyframes ov-button-spin {
155
+ to {
156
+ transform: rotate(360deg);
157
+ }
158
+ }
159
+
160
+ @media (prefers-reduced-motion: reduce) {
161
+ .ov-button {
162
+ transition: none;
163
+ }
164
+
165
+ .ov-button__spinner {
166
+ animation: none;
167
+ }
168
+ }
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 {
2
171
  --ov-ui-tour-shadow-default: 0 15px 35px #0000000d, 0 5px 15px #0000000d;
3
172
  --ov-ui-tour-highlight-default: #5252ff14;
4
173
  --ov-ui-primary-default: #5252ff;
@@ -57,7 +226,7 @@
57
226
  #bd9cff 100%);
58
227
  }
59
228
 
60
- .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-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 {
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 {
61
230
  --ov-ui-primary-default: #5f5fff;
62
231
  --ov-ui-primary-hover-default: #7075ff;
63
232
  --ov-ui-primary-active-default: #4242ba;
@@ -87,6 +256,52 @@
87
256
  --ov-ui-tooltip-text-default: #f0f1f3;
88
257
  }
89
258
 
259
+ .ov-button, .ov-input, .ov-textarea {
260
+ --ov-ui-bg-white-default: var(--ov-ui-bg-1-default);
261
+ --ov-ui-bg-2-default: #fafbfd;
262
+ --ov-ui-bg-7-default: var(--ov-ui-border-1-default);
263
+ --ov-ui-bg-11-default: #e1e3ef;
264
+ --ov-ui-border-4-default: #acb0c5;
265
+ --ov-ui-neutral-4-default: #c9cdd4;
266
+ --ov-ui-primary-muted-default: #8e96ff;
267
+ --ov-ui-primary-strong-default: var(--ov-ui-primary-active-default);
268
+ --ov-ui-link-default: var(--ov-ui-primary-default);
269
+ --ov-ui-link-active-default: var(--ov-ui-primary-active-default);
270
+ --ov-ui-text-5-default: #c9c9d4;
271
+ --ov-ui-on-primary-disabled-default: var(--ov-ui-text-on-primary-default);
272
+ --ov-ui-input-focus-ring-default: color-mix(in srgb,
273
+ var(--ov-ui-color-primary, var(--ov-ui-primary-default)) 30%,
274
+ transparent);
275
+ --ov-ui-error-default: #e31b54;
276
+ --ov-ui-error-bg-default: #ffecec;
277
+ --ov-ui-error-border-default: #ffa3a0;
278
+ }
279
+
280
+ html.dark .ov-button, html.dark .ov-input, html.dark .ov-textarea {
281
+ --ov-ui-bg-white-default: #fff0;
282
+ --ov-ui-bg-2-default: #fcfdfe03;
283
+ --ov-ui-bg-4-default: #f6f8fa0f;
284
+ --ov-ui-bg-5-default: #f1f3f514;
285
+ --ov-ui-bg-7-default: #1a1b1e;
286
+ --ov-ui-bg-11-default: #1e2023;
287
+ --ov-ui-border-2-default: #dde2e926;
288
+ --ov-ui-border-3-default: #dde2e94d;
289
+ --ov-ui-border-4-default: #6d6d6d;
290
+ --ov-ui-neutral-4-default: #5f5f60;
291
+ --ov-ui-primary-disabled-default: #3f3a89;
292
+ --ov-ui-primary-muted-default: #4c48b4;
293
+ --ov-ui-primary-strong-default: var(--ov-ui-primary-hover-default);
294
+ --ov-ui-link-default: #787dff;
295
+ --ov-ui-link-active-default: #949cff;
296
+ --ov-ui-text-disabled-default: #42464e;
297
+ --ov-ui-text-5-default: #e1e3ef;
298
+ --ov-ui-on-primary-disabled-default: #ffffff4d;
299
+ --ov-ui-input-focus-ring-default: #4583ff4d;
300
+ --ov-ui-error-default: #ff706d;
301
+ --ov-ui-error-bg-default: #9f211c33;
302
+ --ov-ui-error-border-default: #ff706d4d;
303
+ }
304
+
90
305
  .dark .ov-viking-bot {
91
306
  --ov-ui-code-bg-default: var(--ov-ui-bg-3-default);
92
307
  }
@@ -172,6 +387,55 @@ html.dark .ov-wiki-dashboard, html.dark .ov-experience-dashboard, html.dark .ov-
172
387
  }
173
388
  }
174
389
 
390
+ .ov-tooltip {
391
+ --ov-ui-tooltip-bg: var(--ov-ui-color-tooltip-bg, var(--ov-ui-tooltip-bg-default, #1f2329));
392
+ --ov-ui-tooltip-text: var(--ov-ui-color-tooltip-text, var(--ov-ui-tooltip-text-default, #fff));
393
+ --ov-ui-tooltip-border: transparent;
394
+ --ov-ui-tooltip-radius: var(--ov-ui-radius, 6px);
395
+ --ov-ui-tooltip-offset: 6px;
396
+ z-index: 1000;
397
+ box-sizing: border-box;
398
+ border: 1px solid var(--ov-ui-tooltip-border);
399
+ border-radius: var(--ov-ui-tooltip-radius);
400
+ background: var(--ov-ui-tooltip-bg);
401
+ max-width: 320px;
402
+ color: var(--ov-ui-tooltip-text);
403
+ overflow-wrap: break-word;
404
+ padding: 6px 8px;
405
+ font-family: inherit;
406
+ font-size: 12px;
407
+ line-height: 18px;
408
+ animation: .12s ease-out ov-tooltip-enter;
409
+ position: fixed;
410
+ box-shadow: 0 4px 12px #0000001f;
411
+ }
412
+
413
+ .ov-tooltip[role="dialog"] {
414
+ --ov-ui-tooltip-bg: var(--ov-ui-color-bg-1, var(--ov-ui-bg-1-default, #fff));
415
+ --ov-ui-tooltip-text: var(--ov-ui-color-text-1, var(--ov-ui-text-1-default, #0b0b0f));
416
+ --ov-ui-tooltip-border: var(--ov-ui-color-border-2, var(--ov-ui-border-2-default, #e1e4f2));
417
+ min-width: 120px;
418
+ max-width: 360px;
419
+ padding: 4px;
420
+ box-shadow: 0 6px 16px #0000001f;
421
+ }
422
+
423
+ @keyframes ov-tooltip-enter {
424
+ from {
425
+ opacity: 0;
426
+ }
427
+
428
+ to {
429
+ opacity: 1;
430
+ }
431
+ }
432
+
433
+ @media (prefers-reduced-motion: reduce) {
434
+ .ov-tooltip {
435
+ animation: none;
436
+ }
437
+ }
438
+
175
439
  .ov-file-tree {
176
440
  --ov-ui-file-tree-row-height: 32px;
177
441
  --ov-ui-file-tree-row-radius: 4px;
@@ -493,24 +757,6 @@ html.dark .ov-wiki-dashboard, html.dark .ov-experience-dashboard, html.dark .ov-
493
757
  }
494
758
  }
495
759
 
496
- .ov-file-tree__action {
497
- color: inherit;
498
- font: inherit;
499
- cursor: pointer;
500
- background: none;
501
- border: 0;
502
- padding: 0;
503
- transition: color .12s;
504
- }
505
-
506
- .ov-file-tree__action:hover:not(:disabled) {
507
- color: var(--ov-ui-file-tree-action);
508
- }
509
-
510
- .ov-file-tree__action:disabled {
511
- cursor: default;
512
- }
513
-
514
760
  @media (prefers-reduced-motion: reduce) {
515
761
  .ov-file-tree__chevron, .ov-file-tree__folder-layer {
516
762
  transition: none;
@@ -529,6 +775,14 @@ html.dark .ov-wiki-dashboard, html.dark .ov-experience-dashboard, html.dark .ov-
529
775
  color: var(--ov-file-tree-icon-dark, var(--ov-ui-file-tree-icon));
530
776
  }
531
777
 
778
+ .ov-file-tree .ov-button.ov-file-tree__action, .ov-file-tree .ov-button.ov-file-tree__action:disabled, .ov-file-tree .ov-button.ov-file-tree__action[aria-disabled="true"] {
779
+ color: var(--ov-ui-color-text-3, var(--ov-ui-text-3-default));
780
+ }
781
+
782
+ .ov-file-tree .ov-button.ov-file-tree__action:not(:disabled):not([aria-disabled="true"]):hover {
783
+ color: var(--ov-ui-color-primary, var(--ov-ui-primary-default));
784
+ }
785
+
532
786
  .ov-file-tree__controls {
533
787
  flex: none;
534
788
  align-items: center;
@@ -538,98 +792,69 @@ html.dark .ov-wiki-dashboard, html.dark .ov-experience-dashboard, html.dark .ov-
538
792
  display: flex;
539
793
  }
540
794
 
541
- .ov-file-tree__search, .ov-file-tree__refresh {
542
- box-sizing: border-box;
543
- border: 1px solid var(--ov-ui-color-border-2, var(--ov-ui-border-2-default));
544
- background: var(--ov-ui-color-bg-1, var(--ov-ui-bg-1-default));
545
- height: 32px;
546
- color: var(--ov-ui-file-tree-icon);
547
- box-shadow: 0 1px 1px
548
- var(--ov-ui-color-shadow-control, var(--ov-ui-shadow-control-default));
549
- cursor: pointer;
550
- border-radius: 6px;
551
- flex-shrink: 0;
552
- justify-content: center;
553
- align-items: center;
554
- margin: 0;
555
- padding: 0;
556
- font-family: inherit;
557
- font-size: 12px;
558
- font-weight: 400;
559
- line-height: 22px;
560
- transition: border-color .16s, background-color .16s;
561
- display: inline-flex;
562
- }
563
-
564
- .ov-file-tree__search {
795
+ .ov-file-tree__controls .ov-file-tree__search {
796
+ --ov-ui-button-fill: var(--ov-ui-color-bg-white, var(--ov-ui-bg-white-default));
797
+ --ov-ui-button-fill-hover: var(--ov-ui-button-fill);
798
+ text-align: start;
565
799
  min-width: 0;
566
- color: var(--ov-ui-file-tree-text-muted);
567
- text-align: left;
800
+ box-shadow: 0 0 0 1px var(--ov-ui-color-border-2, var(--ov-ui-border-2-default)),
801
+ 0 1px 1px
802
+ var(--ov-ui-color-shadow-control, var(--ov-ui-shadow-control-default));
803
+ border: 0;
568
804
  flex: auto;
569
805
  justify-content: flex-start;
570
806
  gap: 4px;
571
807
  padding: 4px 12px;
808
+ font-weight: 400;
572
809
  }
573
810
 
574
- .ov-file-tree__search svg {
575
- flex: none;
576
- width: 16px;
577
- height: 16px;
578
- display: block;
811
+ .ov-file-tree__controls .ov-file-tree__search:not(:disabled):hover {
812
+ box-shadow: 0 0 0 1px var(--ov-ui-color-border-3, var(--ov-ui-border-3-default)),
813
+ 0 1px 1px
814
+ var(--ov-ui-color-shadow-control, var(--ov-ui-shadow-control-default));
579
815
  }
580
816
 
581
817
  .ov-file-tree__search-label {
582
- letter-spacing: .036px;
583
818
  text-overflow: ellipsis;
584
819
  white-space: nowrap;
585
820
  min-width: 0;
821
+ color: var(--ov-ui-color-text-3, var(--ov-ui-text-3-default));
822
+ letter-spacing: .036px;
823
+ font-size: 12px;
824
+ line-height: 22px;
586
825
  overflow: hidden;
587
826
  }
588
827
 
589
- .ov-file-tree__refresh {
590
- width: 32px;
591
- }
592
-
593
- .ov-file-tree__refresh svg {
594
- flex: none;
595
- display: block;
596
- }
597
-
598
- .ov-file-tree__search:hover:not(:disabled), .ov-file-tree__refresh:hover:not(:disabled) {
599
- border-color: var(--ov-ui-color-border-3, var(--ov-ui-border-3-default));
600
- }
601
-
602
- .ov-file-tree__refresh:hover:not(:disabled) {
603
- background: var(--ov-ui-file-tree-row-hover);
604
- }
605
-
606
- .ov-file-tree__search:focus-visible, .ov-file-tree__refresh:focus-visible {
607
- outline: 2px solid var(--ov-ui-file-tree-action);
608
- outline-offset: 2px;
828
+ .ov-file-tree__controls .ov-file-tree__refresh {
829
+ --ov-ui-button-fill: var(--ov-ui-color-bg-white, var(--ov-ui-bg-white-default));
830
+ --ov-ui-button-fill-hover: var(--ov-ui-color-bg-3, var(--ov-ui-bg-3-default));
831
+ box-shadow: 0 0 0 1px var(--ov-ui-color-border-2, var(--ov-ui-border-2-default)),
832
+ 0 1px 1px
833
+ var(--ov-ui-color-shadow-control, var(--ov-ui-shadow-control-default));
834
+ border: 0;
609
835
  }
610
836
 
611
- .ov-file-tree__search:disabled, .ov-file-tree__refresh:disabled {
612
- cursor: not-allowed;
837
+ .ov-file-tree__controls :is(.ov-file-tree__search, .ov-file-tree__refresh):disabled {
838
+ background: var(--ov-ui-button-fill);
839
+ color: var(--ov-ui-color-text-2, var(--ov-ui-text-2-default));
613
840
  opacity: .6;
614
841
  }
615
842
 
616
- .ov-file-tree__refresh[aria-busy="true"] {
617
- cursor: wait;
843
+ .ov-file-tree__controls .ov-file-tree__refresh[aria-busy="true"] {
618
844
  opacity: 1;
845
+ cursor: default;
619
846
  }
620
847
 
621
- .ov-file-tree__refresh-spinning {
622
- animation: .9s linear infinite ov-file-tree-spin;
848
+ .ov-file-tree__search > svg {
849
+ color: var(--ov-ui-color-text-3, var(--ov-ui-text-3-default));
623
850
  }
624
851
 
625
- @media (prefers-reduced-motion: reduce) {
626
- .ov-file-tree__search, .ov-file-tree__refresh {
627
- transition: none;
628
- }
629
-
630
- .ov-file-tree__refresh-spinning {
631
- animation-duration: 2s;
632
- }
852
+ .ov-file-tree__controls .ov-button:focus-visible {
853
+ box-shadow: 0 0 0 1px var(--ov-ui-color-border-2, var(--ov-ui-border-2-default)),
854
+ 0 1px 1px
855
+ var(--ov-ui-color-shadow-control, var(--ov-ui-shadow-control-default));
856
+ outline: 2px solid var(--ov-ui-color-focus, var(--ov-ui-focus-default));
857
+ outline-offset: -2px;
633
858
  }
634
859
 
635
860
 
@@ -96,6 +96,10 @@ export interface FileTreeEntryRow extends FileTreeRowBase {
96
96
  * without detail permission.
97
97
  */
98
98
  disabled?: boolean;
99
+ /** 允许展开但不选中,例如仅能遍历的目录。Allows expansion without selection. */
100
+ selectable?: boolean;
101
+ /** 权限状态的纯展示标签,不执行鉴权。Display-only permission status. */
102
+ access?: 'read-only' | 'denied' | 'container';
99
103
  /**
100
104
  * 名称下方的次要说明,例如摘要或行内描述。
101
105
  * Secondary line under the name, for example an abstract or inline
@@ -385,6 +389,9 @@ export interface FileTreeInfoLabels {
385
389
  * Replaceable copy with built-in Chinese and English defaults.
386
390
  */
387
391
  export interface FileTreeLabels {
392
+ readOnly?: string;
393
+ noAccess?: string;
394
+ traverseOnly?: string;
388
395
  /** 搜索入口文案。Search trigger label. */
389
396
  search?: string;
390
397
  /** 刷新按钮的无障碍名称。Accessible refresh button label. */
@@ -523,20 +530,22 @@ export interface FileTreeProps extends Omit<HTMLAttributes<HTMLDivElement>, 'chi
523
530
  */
524
531
  selectedId?: string | null;
525
532
  /**
526
- * 显示内置搜索入口;默认隐藏,未提供 operations.search 时禁用。
527
- * Shows the built-in search trigger. Hidden by default; disabled without operations.search.
533
+ * 显示内置搜索入口;默认显示,未提供 operations.search 时禁用。
534
+ * Shows the built-in search trigger. Visible by default; disabled without operations.search.
528
535
  */
529
536
  search?: boolean | {
530
537
  disabled?: boolean;
531
538
  };
532
539
  /**
533
- * 显示内置刷新按钮;默认隐藏。loading 可表达宿主额外的刷新状态。
534
- * Shows the refresh button. Hidden by default; loading adds a host-controlled pending state.
540
+ * 显示内置刷新按钮;默认显示。loading 可表达宿主额外的刷新状态。
541
+ * Shows the refresh button. Visible by default; loading adds a host-controlled pending state.
535
542
  */
536
543
  refresh?: boolean | {
537
544
  disabled?: boolean;
538
545
  loading?: boolean;
539
546
  };
547
+ /** 刷新按钮的受控加载态,与异步刷新、refresh.loading 合并。Host-controlled refresh pending state. */
548
+ loading?: boolean;
540
549
  /**
541
550
  * 首次加载是否已完成。
542
551
  * Whether the tree has finished its first load.