@flux-ui/components 3.1.2 → 3.1.4

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 (72) hide show
  1. package/dist/component/FluxAvatarGroup.vue.d.ts +17 -0
  2. package/dist/component/FluxButton.vue.d.ts +2 -0
  3. package/dist/component/FluxContextMenu.vue.d.ts +26 -0
  4. package/dist/component/FluxDataTable.vue.d.ts +20 -10
  5. package/dist/component/FluxDescriptionItem.vue.d.ts +19 -0
  6. package/dist/component/FluxDescriptionList.vue.d.ts +17 -0
  7. package/dist/component/FluxFlyout.vue.d.ts +9 -2
  8. package/dist/component/FluxFormCombobox.vue.d.ts +20 -0
  9. package/dist/component/FluxFormRating.vue.d.ts +21 -0
  10. package/dist/component/FluxFormTagsInput.vue.d.ts +27 -0
  11. package/dist/component/FluxFormTextArea.vue.d.ts +6 -1
  12. package/dist/component/FluxInlineEdit.vue.d.ts +41 -0
  13. package/dist/component/FluxMenu.vue.d.ts +1 -0
  14. package/dist/component/FluxMenuFlyout.vue.d.ts +22 -0
  15. package/dist/component/FluxTableCell.vue.d.ts +1 -0
  16. package/dist/component/FluxTour.vue.d.ts +35 -0
  17. package/dist/component/FluxTourItem.vue.d.ts +18 -0
  18. package/dist/component/FluxVirtualScroller.vue.d.ts +27 -0
  19. package/dist/component/index.d.ts +12 -0
  20. package/dist/component/primitive/AnchorPopup.vue.d.ts +7 -1
  21. package/dist/component/primitive/SelectBase.vue.d.ts +3 -0
  22. package/dist/composable/private/index.d.ts +1 -0
  23. package/dist/composable/private/useMenuFlyout.d.ts +42 -0
  24. package/dist/data/di.d.ts +35 -0
  25. package/dist/data/i18n.d.ts +7 -0
  26. package/dist/index.css +449 -5
  27. package/dist/index.js +2156 -408
  28. package/dist/index.js.map +1 -1
  29. package/package.json +7 -7
  30. package/src/component/FluxAvatarGroup.vue +52 -0
  31. package/src/component/FluxButton.vue +3 -0
  32. package/src/component/FluxContextMenu.vue +134 -0
  33. package/src/component/FluxDataTable.vue +113 -32
  34. package/src/component/FluxDescriptionItem.vue +43 -0
  35. package/src/component/FluxDescriptionList.vue +37 -0
  36. package/src/component/FluxDestructiveButton.vue +2 -1
  37. package/src/component/FluxFlyout.vue +16 -3
  38. package/src/component/FluxFormCombobox.vue +98 -0
  39. package/src/component/FluxFormRating.vue +172 -0
  40. package/src/component/FluxFormTagsInput.vue +249 -0
  41. package/src/component/FluxFormTextArea.vue +16 -1
  42. package/src/component/FluxInlineEdit.vue +176 -0
  43. package/src/component/FluxMenu.vue +13 -3
  44. package/src/component/FluxMenuFlyout.vue +118 -0
  45. package/src/component/FluxPrimaryButton.vue +2 -1
  46. package/src/component/FluxPrimaryLinkButton.vue +2 -1
  47. package/src/component/FluxPublishButton.vue +2 -1
  48. package/src/component/FluxSecondaryButton.vue +2 -1
  49. package/src/component/FluxSecondaryLinkButton.vue +2 -1
  50. package/src/component/FluxTableCell.vue +2 -0
  51. package/src/component/FluxTour.vue +332 -0
  52. package/src/component/FluxTourItem.vue +27 -0
  53. package/src/component/FluxVirtualScroller.vue +96 -0
  54. package/src/component/index.ts +12 -0
  55. package/src/component/primitive/AnchorPopup.vue +27 -0
  56. package/src/component/primitive/SelectBase.vue +37 -2
  57. package/src/composable/private/index.ts +1 -0
  58. package/src/composable/private/useMenuFlyout.ts +417 -0
  59. package/src/css/component/AvatarGroup.module.scss +22 -0
  60. package/src/css/component/ContextMenu.module.scss +17 -0
  61. package/src/css/component/DescriptionList.module.scss +98 -0
  62. package/src/css/component/Form.module.scss +51 -0
  63. package/src/css/component/FormRating.module.scss +47 -0
  64. package/src/css/component/InlineEdit.module.scss +45 -0
  65. package/src/css/component/Menu.module.scss +4 -1
  66. package/src/css/component/MenuFlyout.module.scss +38 -0
  67. package/src/css/component/Table.module.scss +16 -0
  68. package/src/css/component/Tour.module.scss +108 -0
  69. package/src/css/component/VirtualScroller.module.scss +17 -0
  70. package/src/css/mixin/button-active.scss +3 -1
  71. package/src/data/di.ts +40 -0
  72. package/src/data/i18n.ts +7 -0
package/dist/data/di.d.ts CHANGED
@@ -11,6 +11,7 @@ export declare const FluxFilterInjectionKey: InjectionKey<FluxFilterInjection>;
11
11
  export declare const FluxFormCheckboxGroupInjectionKey: InjectionKey<FluxFormCheckboxGroupInjection>;
12
12
  export declare const FluxFormFieldInjectionKey: InjectionKey<FluxFormFieldInjection>;
13
13
  export declare const FluxFormRadioGroupInjectionKey: InjectionKey<FluxFormRadioGroupInjection>;
14
+ export declare const FluxMenuFlyoutInjectionKey: InjectionKey<FluxMenuFlyoutInjection>;
14
15
  export declare const FluxSegmentedControlInjectionKey: InjectionKey<FluxSegmentedControlInjection>;
15
16
  export declare const FluxSplitViewInjectionKey: InjectionKey<FluxSplitViewInjection>;
16
17
  export declare const FluxTabBarInjectionKey: InjectionKey<FluxTabBarInjection>;
@@ -128,6 +129,40 @@ export type FluxFlyoutInjection = {
128
129
  readonly isOpen: Ref<boolean>;
129
130
  readonly isOpening: Ref<boolean>;
130
131
  };
132
+ export type FluxMenuFlyoutPointer = {
133
+ readonly x: number;
134
+ readonly y: number;
135
+ readonly px: number;
136
+ readonly py: number;
137
+ };
138
+ export type FluxMenuFlyoutCone = {
139
+ readonly id: number;
140
+ readonly ax: number;
141
+ readonly ay: number;
142
+ readonly bx: number;
143
+ readonly by: number;
144
+ readonly cx: number;
145
+ readonly cy: number;
146
+ };
147
+ export type FluxMenuFlyoutEntry = {
148
+ getTrigger(): HTMLElement | null;
149
+ getPopup(): HTMLElement | null;
150
+ readonly isOpen: Ref<boolean>;
151
+ close(): void;
152
+ };
153
+ export type FluxMenuFlyoutInjection = {
154
+ readonly debugCone: Ref<boolean>;
155
+ readonly pointer: Readonly<Ref<FluxMenuFlyoutPointer>>;
156
+ readonly activeCone: Ref<FluxMenuFlyoutCone | null>;
157
+ readonly keyboardStack: Ref<number[]>;
158
+ register(entry: FluxMenuFlyoutEntry): void;
159
+ unregister(entry: FluxMenuFlyoutEntry): void;
160
+ closeOthers(self: FluxMenuFlyoutEntry): void;
161
+ hasOpenDescendant(self: FluxMenuFlyoutEntry): boolean;
162
+ isAimingAtOpenSubmenu(): boolean;
163
+ isInsidePopups(target: Node | null): boolean;
164
+ closeAll(): void;
165
+ };
131
166
  export type FluxFormFieldInjection = {
132
167
  readonly id?: string;
133
168
  readonly labelId?: string;
@@ -4,10 +4,14 @@ export declare const english: {
4
4
  readonly 'flux.back': "Back";
5
5
  readonly 'flux.cancel': "Cancel";
6
6
  readonly 'flux.close': "Close";
7
+ readonly 'flux.collapseRow': "Collapse row";
8
+ readonly 'flux.expandRow': "Expand row";
7
9
  readonly 'flux.comingSoon': "Coming soon";
8
10
  readonly 'flux.continue': "Continue";
11
+ readonly 'flux.createOption': "Create \"{value}\"";
9
12
  readonly 'flux.customPeriod': "Custom period";
10
13
  readonly 'flux.delete': "Delete";
14
+ readonly 'flux.done': "Done";
11
15
  readonly 'flux.filter': "Filter";
12
16
  readonly 'flux.filterReset': "Reset filters";
13
17
  readonly 'flux.justNow': "Just now";
@@ -20,6 +24,7 @@ export declare const english: {
20
24
  readonly 'flux.previewClose': "Close preview";
21
25
  readonly 'flux.displayingOf': "{from}–{to} of {total}";
22
26
  readonly 'flux.showN': "Show {n}";
27
+ readonly 'flux.skip': "Skip";
23
28
  readonly 'flux.next': "Next";
24
29
  readonly 'flux.noItems': "There are no items (left).";
25
30
  readonly 'flux.pagination': "Pagination";
@@ -32,6 +37,7 @@ export declare const english: {
32
37
  readonly 'flux.sortAscending': "Ascending";
33
38
  readonly 'flux.sortDescending': "Descending";
34
39
  readonly 'flux.sortRemove': "Remove sorting";
40
+ readonly 'flux.submenu': "Submenu";
35
41
  readonly 'flux.today': "Today";
36
42
  readonly 'flux.selectMonth': "Select month";
37
43
  readonly 'flux.selectYear': "Select year";
@@ -41,6 +47,7 @@ export declare const english: {
41
47
  readonly 'flux.previousYears': "Previous years";
42
48
  readonly 'flux.nextYears': "Next years";
43
49
  readonly 'flux.allDay': "All day";
50
+ readonly 'flux.andNMore': "{n} more";
44
51
  readonly 'flux.grabbedAnnounce': "Item grabbed. Use arrow keys to move, Enter to drop, Escape to cancel.";
45
52
  readonly 'flux.releasedAnnounce': "Item released.";
46
53
  readonly 'flux.goToPage': "Go to page {page}";
package/dist/index.css CHANGED
@@ -850,8 +850,9 @@
850
850
  border-color: var(--primary-800);
851
851
  }
852
852
  }
853
- .primary-button:active {
853
+ .primary-button:active, .primary-button.is-active {
854
854
  background: var(--primary-800);
855
+ box-shadow: none;
855
856
  scale: 0.9875;
856
857
  }
857
858
  .primary-button .spinner {
@@ -876,8 +877,9 @@
876
877
  background: var(--surface-hover);
877
878
  }
878
879
  }
879
- .secondary-button:active {
880
+ .secondary-button:active, .secondary-button.is-active {
880
881
  background: var(--surface-active);
882
+ box-shadow: none;
881
883
  scale: 0.9875;
882
884
  }
883
885
 
@@ -898,8 +900,9 @@
898
900
  background: var(--surface-hover);
899
901
  }
900
902
  }
901
- .destructive-button:active {
903
+ .destructive-button:active, .destructive-button.is-active {
902
904
  background: var(--surface-active);
905
+ box-shadow: none;
903
906
  scale: 0.9875;
904
907
  }
905
908
  .destructive-button .spinner {
@@ -931,8 +934,9 @@
931
934
  background: var(--surface-hover);
932
935
  }
933
936
  }
934
- .base-link-button:active {
937
+ .base-link-button:active, .base-link-button.is-active {
935
938
  background: var(--surface-active);
939
+ box-shadow: none;
936
940
  scale: 0.9875;
937
941
  }
938
942
 
@@ -1878,6 +1882,25 @@
1878
1882
  .persona-details :is(span) {
1879
1883
  color: var(--foreground);
1880
1884
  font-size: 14px;
1885
+ }.avatar-group {
1886
+ display: inline-flex;
1887
+ align-items: center;
1888
+ flex-flow: row nowrap;
1889
+ }
1890
+
1891
+ .avatar-group-item {
1892
+ position: relative;
1893
+ display: inline-flex;
1894
+ margin-left: calc(var(--overlap, 0.3) * -1em);
1895
+ border-radius: 0.3em;
1896
+ box-shadow: 0 0 0 0.125em var(--gray-25);
1897
+ transition: translate 0.2s var(--swift-out);
1898
+ }
1899
+ .avatar-group-item:first-child {
1900
+ margin-left: 0;
1901
+ }
1902
+ .avatar-group-item:hover {
1903
+ z-index: 1;
1881
1904
  }.badge {
1882
1905
  display: inline-flex;
1883
1906
  height: 28px;
@@ -4963,6 +4986,53 @@
4963
4986
  .form-toggle-input::after {
4964
4987
  transition: 210ms var(--swift-out);
4965
4988
  transition-property: background, border-color, color, opacity, scale, translate, outline-color, outline-offset;
4989
+ }
4990
+
4991
+ .form-tags-input {
4992
+ display: flex;
4993
+ height: unset;
4994
+ min-height: 42px;
4995
+ padding: 4px 6px;
4996
+ align-items: center;
4997
+ flex-wrap: wrap;
4998
+ gap: 6px;
4999
+ cursor: text;
5000
+ }
5001
+ .form-tags-input:not(.form-tags-input-disabled) {
5002
+ outline: 2px solid rgb(from var(--primary-600) r g b/0);
5003
+ outline-offset: 0;
5004
+ }
5005
+ .form-tags-input:not(.form-tags-input-disabled):focus-visible, .form-tags-input:not(.form-tags-input-disabled):focus-within {
5006
+ outline-color: var(--primary-600);
5007
+ outline-offset: -1px;
5008
+ }
5009
+
5010
+ .form-tags-input-enabled {
5011
+ }
5012
+
5013
+ .form-tags-input-disabled {
5014
+ background: var(--gray-100);
5015
+ cursor: not-allowed;
5016
+ }
5017
+
5018
+ .form-tags-input-field {
5019
+ height: 30px;
5020
+ min-width: 60px;
5021
+ flex: 1 1 60px;
5022
+ background: none;
5023
+ border: 0;
5024
+ color: inherit;
5025
+ font: inherit;
5026
+ outline: 0;
5027
+ }
5028
+ .form-tags-input-field::placeholder {
5029
+ color: var(--foreground-secondary);
5030
+ }
5031
+ .form-tags-input-field:disabled {
5032
+ cursor: not-allowed;
5033
+ }
5034
+
5035
+ .form-tags-input-popup {
4966
5036
  }.filter {
4967
5037
  max-height: 50dvh;
4968
5038
  max-width: 100%;
@@ -5097,7 +5167,6 @@
5097
5167
  .menu-group-vertical {
5098
5168
  display: flex;
5099
5169
  flex-flow: column;
5100
- gap: 1px;
5101
5170
  }
5102
5171
 
5103
5172
  .menu-item {
@@ -5183,6 +5252,10 @@
5183
5252
  margin-left: 33px;
5184
5253
  }
5185
5254
 
5255
+ .menu-cone-active .menu-item {
5256
+ pointer-events: none;
5257
+ }
5258
+
5186
5259
  .menu-collapsible {
5187
5260
  display: flex;
5188
5261
  flex-flow: column;
@@ -5818,6 +5891,20 @@
5818
5891
  .color-select-check :is(path) {
5819
5892
  stroke: currentColor;
5820
5893
  stroke-width: 54px;
5894
+ }.context-menu {
5895
+ display: contents;
5896
+ }
5897
+
5898
+ .context-menu-popup {
5899
+ position: fixed;
5900
+ top: 0;
5901
+ left: 0;
5902
+ min-width: 270px;
5903
+ max-height: max(330px, 50dvh);
5904
+ overflow: auto;
5905
+ box-shadow: var(--shadow-md);
5906
+ translate: var(--x) var(--y);
5907
+ z-index: 10000;
5821
5908
  }.pagination {
5822
5909
  display: flex;
5823
5910
  gap: 1px;
@@ -6111,6 +6198,115 @@ tfoot .table-cell {
6111
6198
 
6112
6199
  :not(.base-pane-structure) > .table .table-cell:not(.is-bordered):last-child .table-cell-content {
6113
6200
  padding-right: 0;
6201
+ }
6202
+
6203
+ .table-cell-expand {
6204
+ width: 0;
6205
+ }
6206
+
6207
+ .table-expand-toggle svg {
6208
+ transition: rotate 0.2s var(--swift-out);
6209
+ }
6210
+
6211
+ .table-expand-toggle.is-expanded svg {
6212
+ rotate: 90deg;
6213
+ }
6214
+
6215
+ .table-expand-content {
6216
+ padding: 12px 15px;
6217
+ }.description-list {
6218
+ display: flex;
6219
+ flex-flow: column;
6220
+ gap: 12px;
6221
+ }
6222
+
6223
+ .description-list-header {
6224
+ color: var(--foreground-secondary);
6225
+ font-size: 14px;
6226
+ font-weight: 500;
6227
+ }
6228
+
6229
+ .description-list-items {
6230
+ display: flex;
6231
+ margin: 0;
6232
+ flex-flow: column;
6233
+ gap: 12px;
6234
+ }
6235
+
6236
+ .description-item {
6237
+ display: flex;
6238
+ gap: 12px;
6239
+ align-items: center;
6240
+ }
6241
+
6242
+ .description-item.is-stacked {
6243
+ gap: 2px;
6244
+ align-items: stretch;
6245
+ flex-flow: column;
6246
+ }
6247
+
6248
+ .description-item.is-stacked .description-item-value {
6249
+ margin-left: 0;
6250
+ justify-content: flex-start;
6251
+ text-align: left;
6252
+ }
6253
+
6254
+ .description-item-term {
6255
+ display: flex;
6256
+ gap: 9px;
6257
+ align-items: center;
6258
+ color: var(--foreground);
6259
+ font-size: 15px;
6260
+ }
6261
+
6262
+ .description-item-icon {
6263
+ flex-shrink: 0;
6264
+ color: var(--foreground);
6265
+ font-size: 16px;
6266
+ }
6267
+
6268
+ .description-item-label {
6269
+ overflow-wrap: anywhere;
6270
+ }
6271
+
6272
+ .description-item-value {
6273
+ display: flex;
6274
+ margin: 0;
6275
+ margin-left: auto;
6276
+ gap: 6px;
6277
+ align-items: center;
6278
+ color: var(--foreground-prominent);
6279
+ font-size: 15px;
6280
+ font-weight: 600;
6281
+ text-align: right;
6282
+ overflow-wrap: anywhere;
6283
+ }
6284
+
6285
+ .description-list-items.is-horizontal {
6286
+ gap: 0;
6287
+ flex-flow: row;
6288
+ }
6289
+ .description-list-items.is-horizontal .description-item {
6290
+ gap: 6px;
6291
+ align-items: stretch;
6292
+ flex: 1 1 0;
6293
+ flex-flow: column;
6294
+ padding-right: 24px;
6295
+ padding-left: 24px;
6296
+ border-left: 1px solid var(--gray-100);
6297
+ }
6298
+ .description-list-items.is-horizontal .description-item:first-child {
6299
+ padding-left: 0;
6300
+ border-left: 0;
6301
+ }
6302
+ .description-list-items.is-horizontal .description-item-term {
6303
+ font-size: 14px;
6304
+ }
6305
+ .description-list-items.is-horizontal .description-item-value {
6306
+ margin-left: 0;
6307
+ justify-content: flex-start;
6308
+ font-weight: 500;
6309
+ text-align: left;
6114
6310
  }.drop-zone {
6115
6311
  --dz-fill: transparent;
6116
6312
  --dz-stroke: transparent;
@@ -6446,6 +6642,52 @@ tfoot .table-cell {
6446
6642
  100% {
6447
6643
  aspect-ratio: var(--aspect-ratio);
6448
6644
  }
6645
+ }.form-rating {
6646
+ display: inline-flex;
6647
+ gap: 0.15em;
6648
+ font-size: 24px;
6649
+ line-height: 1;
6650
+ border-radius: 4px;
6651
+ outline: 2px solid rgb(from var(--primary-600) r g b/0);
6652
+ outline-offset: 0;
6653
+ }
6654
+ .form-rating:focus-visible {
6655
+ outline-color: var(--primary-600);
6656
+ outline-offset: 4px;
6657
+ }
6658
+ .form-rating.is-disabled {
6659
+ opacity: 0.6;
6660
+ }
6661
+
6662
+ .form-rating-star {
6663
+ position: relative;
6664
+ display: inline-flex;
6665
+ padding: 0;
6666
+ border: 0;
6667
+ background: none;
6668
+ line-height: 0;
6669
+ cursor: pointer;
6670
+ }
6671
+ .form-rating-star:disabled {
6672
+ cursor: default;
6673
+ }
6674
+
6675
+ .form-rating-star-empty {
6676
+ color: var(--gray-300);
6677
+ }
6678
+
6679
+ .form-rating-star-full {
6680
+ position: absolute;
6681
+ top: 0;
6682
+ bottom: 0;
6683
+ left: 0;
6684
+ color: var(--warning-400);
6685
+ clip-path: inset(0 calc((1 - var(--fill, 0)) * 100%) 0 0);
6686
+ pointer-events: none;
6687
+ }
6688
+
6689
+ .is-invalid .form-rating-star-empty {
6690
+ color: var(--danger-200);
6449
6691
  }.tree-view-select-value {
6450
6692
  margin-left: 6px;
6451
6693
  overflow: hidden;
@@ -6697,6 +6939,51 @@ tfoot .table-cell {
6697
6939
 
6698
6940
  .info-body {
6699
6941
  align-items: center;
6942
+ }.inline-edit {
6943
+ display: flex;
6944
+ gap: 6px;
6945
+ align-items: flex-start;
6946
+ }
6947
+
6948
+ .inline-edit-field {
6949
+ min-width: 0;
6950
+ flex: 1 1 auto;
6951
+ }
6952
+
6953
+ .inline-edit-actions {
6954
+ display: flex;
6955
+ gap: 6px;
6956
+ align-items: center;
6957
+ flex-shrink: 0;
6958
+ }
6959
+
6960
+ .inline-edit-display {
6961
+ display: inline-flex;
6962
+ min-height: 30px;
6963
+ padding: 3px 6px;
6964
+ align-items: center;
6965
+ border-radius: 6px;
6966
+ color: var(--foreground);
6967
+ line-height: 21px;
6968
+ white-space: pre-wrap;
6969
+ overflow-wrap: anywhere;
6970
+ }
6971
+ .inline-edit-display.is-interactive {
6972
+ cursor: text;
6973
+ outline: 2px solid rgb(from var(--primary-600) r g b/0);
6974
+ outline-offset: 0;
6975
+ }
6976
+ .inline-edit-display.is-interactive:focus-visible {
6977
+ outline-color: var(--primary-600);
6978
+ outline-offset: 2px;
6979
+ }
6980
+ @media (hover: hover) {
6981
+ .inline-edit-display.is-interactive:hover {
6982
+ background: var(--surface-hover);
6983
+ }
6984
+ }
6985
+ .inline-edit-display.is-placeholder {
6986
+ color: var(--foreground-secondary);
6700
6987
  }.kanban {
6701
6988
  position: relative;
6702
6989
  display: grid;
@@ -6956,6 +7243,39 @@ tfoot .table-cell {
6956
7243
 
6957
7244
  .base-pane-structure:is(a, button):hover:has(> .item) {
6958
7245
  background-color: color-mix(in srgb, rgb(from var(--surface-hover) r g b/0.125), var(--surface));
7246
+ }.menu-flyout-popup {
7247
+ position: fixed;
7248
+ top: 0;
7249
+ left: 0;
7250
+ min-width: 270px;
7251
+ max-height: max(330px, 50dvh);
7252
+ overflow: auto;
7253
+ box-shadow: var(--shadow-md);
7254
+ translate: var(--x) var(--y);
7255
+ z-index: 10000;
7256
+ }
7257
+
7258
+ .menu-flyout-trigger-open {
7259
+ background: var(--gray-100);
7260
+ }
7261
+
7262
+ .menu-flyout-cone-debug {
7263
+ position: fixed;
7264
+ top: 0;
7265
+ left: 0;
7266
+ width: 100vw;
7267
+ height: 100vh;
7268
+ pointer-events: none;
7269
+ z-index: 20000;
7270
+ }
7271
+ .menu-flyout-cone-debug polygon {
7272
+ fill: var(--primary-500);
7273
+ fill-opacity: 0.15;
7274
+ stroke: var(--primary-500);
7275
+ stroke-width: 1.5;
7276
+ }
7277
+ .menu-flyout-cone-debug circle {
7278
+ fill: var(--danger-500);
6959
7279
  }.notice {
6960
7280
  display: flex;
6961
7281
  padding: 12px 15px;
@@ -8519,6 +8839,114 @@ tfoot .table-cell {
8519
8839
 
8520
8840
  .pane-header + .toolbar-flat {
8521
8841
  margin-top: 18px;
8842
+ }.tour {
8843
+ position: fixed;
8844
+ inset: 0;
8845
+ pointer-events: auto;
8846
+ z-index: 9999;
8847
+ }
8848
+
8849
+ .tour-spotlight {
8850
+ position: fixed;
8851
+ top: 0;
8852
+ left: 0;
8853
+ width: var(--w);
8854
+ height: var(--h);
8855
+ border-radius: 8px;
8856
+ box-shadow: 0 0 0 9999px rgba(0, 0, 0, 0.55);
8857
+ pointer-events: none;
8858
+ translate: var(--x) var(--y);
8859
+ transition: translate 0.25s var(--swift-out), width 0.25s var(--swift-out), height 0.25s var(--swift-out);
8860
+ }
8861
+
8862
+ .tour-popover {
8863
+ position: fixed;
8864
+ top: 0;
8865
+ left: 0;
8866
+ width: 321px;
8867
+ max-width: calc(100vw - 24px);
8868
+ translate: var(--x) var(--y);
8869
+ z-index: 1;
8870
+ }
8871
+ .tour-popover.is-stepping {
8872
+ transition: translate 0.25s var(--swift-out);
8873
+ }
8874
+
8875
+ .tour-pane {
8876
+ overflow: hidden;
8877
+ }
8878
+
8879
+ .tour-body-viewport {
8880
+ position: relative;
8881
+ overflow: hidden;
8882
+ transition: height 0.25s var(--swift-out);
8883
+ }
8884
+
8885
+ .tour-body {
8886
+ display: flex;
8887
+ padding: 15px 18px;
8888
+ flex-flow: column;
8889
+ gap: 6px;
8890
+ transition: opacity 0.15s var(--swift-out);
8891
+ }
8892
+ .tour-body.v-leave-active {
8893
+ position: absolute;
8894
+ top: 0;
8895
+ left: 0;
8896
+ width: 100%;
8897
+ }
8898
+ .tour-body.v-enter-from, .tour-body.v-leave-to {
8899
+ opacity: 0;
8900
+ }
8901
+
8902
+ .tour-title {
8903
+ color: var(--foreground-prominent);
8904
+ font-size: 15px;
8905
+ font-weight: 600;
8906
+ }
8907
+
8908
+ .tour-content {
8909
+ font-size: 14px;
8910
+ line-height: 21px;
8911
+ color: var(--foreground);
8912
+ }
8913
+
8914
+ .tour-footer {
8915
+ display: flex;
8916
+ padding: 12px 18px;
8917
+ gap: 6px;
8918
+ align-items: center;
8919
+ border-top: 1px solid var(--surface-stroke);
8920
+ }
8921
+
8922
+ .tour-progress {
8923
+ color: var(--foreground-secondary);
8924
+ font-size: 13px;
8925
+ }
8926
+
8927
+ .tour-skip {
8928
+ font: inherit;
8929
+ font-size: 13px;
8930
+ margin-right: 12px;
8931
+ padding: 0;
8932
+ cursor: pointer;
8933
+ transition: color 0.15s var(--swift-out);
8934
+ color: var(--foreground-secondary);
8935
+ border: 0;
8936
+ background: none;
8937
+ }
8938
+ @media (hover: hover) {
8939
+ .tour-skip:hover {
8940
+ color: var(--foreground);
8941
+ }
8942
+ }
8943
+ .tour-skip {
8944
+ outline: 2px solid rgb(from var(--primary-600) r g b/0);
8945
+ outline-offset: 0;
8946
+ }
8947
+ .tour-skip:focus-visible {
8948
+ outline-color: var(--primary-600);
8949
+ outline-offset: 2px;
8522
8950
  }.tree-view {
8523
8951
  display: flex;
8524
8952
  flex-flow: column;
@@ -8535,4 +8963,20 @@ tfoot .table-cell {
8535
8963
  }
8536
8964
  .tree-node.is-highlighted {
8537
8965
  background: var(--surface-hover);
8966
+ }.virtual-scroller {
8967
+ position: relative;
8968
+ height: 100%;
8969
+ overflow: auto;
8970
+ }
8971
+
8972
+ .virtual-scroller-spacer {
8973
+ position: relative;
8974
+ width: 100%;
8975
+ }
8976
+
8977
+ .virtual-scroller-window {
8978
+ position: absolute;
8979
+ top: 0;
8980
+ left: 0;
8981
+ width: 100%;
8538
8982
  }/*$vite$:1*/