@gooddata/sdk-ui-dashboard 11.60.0-alpha.3 → 11.60.0-alpha.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 (130) hide show
  1. package/esm/__version.d.ts +1 -1
  2. package/esm/__version.js +1 -1
  3. package/esm/internal.d.ts +3 -0
  4. package/esm/internal.d.ts.map +1 -1
  5. package/esm/internal.js +3 -0
  6. package/esm/presentation/automations/shared/automationFilters/useAutomationFilters.d.ts.map +1 -1
  7. package/esm/presentation/automations/shared/automationFilters/useAutomationFilters.js +4 -8
  8. package/esm/presentation/automations/shared/automationFilters/utils.d.ts +1 -1
  9. package/esm/presentation/automations/shared/automationFilters/utils.d.ts.map +1 -1
  10. package/esm/presentation/automations/shared/automationFilters/utils.js +6 -1
  11. package/esm/presentation/dashboard/DashboardSidebar/CreationPanel.d.ts.map +1 -1
  12. package/esm/presentation/dashboard/DashboardSidebar/CreationPanel.js +9 -6
  13. package/esm/presentation/dashboard/DashboardSidebar/DashboardSidebarChrome.d.ts +31 -0
  14. package/esm/presentation/dashboard/DashboardSidebar/DashboardSidebarChrome.d.ts.map +1 -0
  15. package/esm/presentation/dashboard/DashboardSidebar/DashboardSidebarChrome.js +26 -0
  16. package/esm/presentation/dashboard/DashboardSidebar/SidebarCollapseToggle.d.ts +3 -2
  17. package/esm/presentation/dashboard/DashboardSidebar/SidebarCollapseToggle.d.ts.map +1 -1
  18. package/esm/presentation/dashboard/DashboardSidebar/SidebarCollapseToggle.js +4 -7
  19. package/esm/presentation/dashboard/DashboardSidebar/SidebarConfigurationPanel.d.ts.map +1 -1
  20. package/esm/presentation/dashboard/DashboardSidebar/SidebarConfigurationPanel.js +5 -13
  21. package/esm/presentation/dashboard/DashboardSidebar/SidebarExpandTrigger.d.ts +7 -0
  22. package/esm/presentation/dashboard/DashboardSidebar/SidebarExpandTrigger.d.ts.map +1 -0
  23. package/esm/presentation/dashboard/DashboardSidebar/SidebarExpandTrigger.js +15 -0
  24. package/esm/presentation/dashboard/DashboardSidebar/SidebarHeaderToggle.d.ts +12 -0
  25. package/esm/presentation/dashboard/DashboardSidebar/SidebarHeaderToggle.d.ts.map +1 -0
  26. package/esm/presentation/dashboard/DashboardSidebar/SidebarHeaderToggle.js +21 -0
  27. package/esm/presentation/dashboard/DashboardSidebar/useResizableSidebarState.d.ts +21 -0
  28. package/esm/presentation/dashboard/DashboardSidebar/useResizableSidebarState.d.ts.map +1 -0
  29. package/esm/presentation/dashboard/DashboardSidebar/useResizableSidebarState.js +75 -0
  30. package/esm/presentation/dashboard/components/DashboardInner.d.ts.map +1 -1
  31. package/esm/presentation/dashboard/components/DashboardInner.js +4 -4
  32. package/esm/presentation/filterBar/attributeFilter/AttributeFilterParentFilteringContext.d.ts +9 -0
  33. package/esm/presentation/filterBar/attributeFilter/AttributeFilterParentFilteringContext.d.ts.map +1 -1
  34. package/esm/presentation/filterBar/attributeFilter/AttributeFilterParentFilteringContext.js +3 -0
  35. package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/AttributeFilterConfiguration.d.ts.map +1 -1
  36. package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/AttributeFilterConfiguration.js +3 -7
  37. package/esm/presentation/flexibleLayout/dragAndDrop/DragLayer.d.ts.map +1 -1
  38. package/esm/presentation/flexibleLayout/dragAndDrop/DragLayer.js +2 -1
  39. package/esm/presentation/localization/bundles/de-DE.localization-bundle.d.ts +2 -1
  40. package/esm/presentation/localization/bundles/de-DE.localization-bundle.d.ts.map +1 -1
  41. package/esm/presentation/localization/bundles/de-DE.localization-bundle.js +2 -1
  42. package/esm/presentation/localization/bundles/en-AU.localization-bundle.d.ts +2 -1
  43. package/esm/presentation/localization/bundles/en-AU.localization-bundle.d.ts.map +1 -1
  44. package/esm/presentation/localization/bundles/en-AU.localization-bundle.js +2 -1
  45. package/esm/presentation/localization/bundles/en-GB.localization-bundle.d.ts +2 -1
  46. package/esm/presentation/localization/bundles/en-GB.localization-bundle.d.ts.map +1 -1
  47. package/esm/presentation/localization/bundles/en-GB.localization-bundle.js +2 -1
  48. package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts +6 -2
  49. package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts.map +1 -1
  50. package/esm/presentation/localization/bundles/en-US.localization-bundle.js +8 -4
  51. package/esm/presentation/localization/bundles/es-419.localization-bundle.d.ts +2 -1
  52. package/esm/presentation/localization/bundles/es-419.localization-bundle.d.ts.map +1 -1
  53. package/esm/presentation/localization/bundles/es-419.localization-bundle.js +2 -1
  54. package/esm/presentation/localization/bundles/es-ES.localization-bundle.d.ts +2 -1
  55. package/esm/presentation/localization/bundles/es-ES.localization-bundle.d.ts.map +1 -1
  56. package/esm/presentation/localization/bundles/es-ES.localization-bundle.js +2 -1
  57. package/esm/presentation/localization/bundles/fi-FI.localization-bundle.d.ts +2 -1
  58. package/esm/presentation/localization/bundles/fi-FI.localization-bundle.d.ts.map +1 -1
  59. package/esm/presentation/localization/bundles/fi-FI.localization-bundle.js +2 -1
  60. package/esm/presentation/localization/bundles/fr-CA.localization-bundle.d.ts +2 -1
  61. package/esm/presentation/localization/bundles/fr-CA.localization-bundle.d.ts.map +1 -1
  62. package/esm/presentation/localization/bundles/fr-CA.localization-bundle.js +2 -1
  63. package/esm/presentation/localization/bundles/fr-FR.localization-bundle.d.ts +2 -1
  64. package/esm/presentation/localization/bundles/fr-FR.localization-bundle.d.ts.map +1 -1
  65. package/esm/presentation/localization/bundles/fr-FR.localization-bundle.js +2 -1
  66. package/esm/presentation/localization/bundles/id-ID.localization-bundle.d.ts +2 -1
  67. package/esm/presentation/localization/bundles/id-ID.localization-bundle.d.ts.map +1 -1
  68. package/esm/presentation/localization/bundles/id-ID.localization-bundle.js +2 -1
  69. package/esm/presentation/localization/bundles/it-IT.localization-bundle.d.ts +2 -1
  70. package/esm/presentation/localization/bundles/it-IT.localization-bundle.d.ts.map +1 -1
  71. package/esm/presentation/localization/bundles/it-IT.localization-bundle.js +2 -1
  72. package/esm/presentation/localization/bundles/ja-JP.localization-bundle.d.ts +2 -1
  73. package/esm/presentation/localization/bundles/ja-JP.localization-bundle.d.ts.map +1 -1
  74. package/esm/presentation/localization/bundles/ja-JP.localization-bundle.js +2 -1
  75. package/esm/presentation/localization/bundles/ko-KR.localization-bundle.d.ts +2 -1
  76. package/esm/presentation/localization/bundles/ko-KR.localization-bundle.d.ts.map +1 -1
  77. package/esm/presentation/localization/bundles/ko-KR.localization-bundle.js +2 -1
  78. package/esm/presentation/localization/bundles/nl-NL.localization-bundle.d.ts +2 -1
  79. package/esm/presentation/localization/bundles/nl-NL.localization-bundle.d.ts.map +1 -1
  80. package/esm/presentation/localization/bundles/nl-NL.localization-bundle.js +2 -1
  81. package/esm/presentation/localization/bundles/pl-PL.localization-bundle.d.ts +2 -1
  82. package/esm/presentation/localization/bundles/pl-PL.localization-bundle.d.ts.map +1 -1
  83. package/esm/presentation/localization/bundles/pl-PL.localization-bundle.js +2 -1
  84. package/esm/presentation/localization/bundles/pt-BR.localization-bundle.d.ts +2 -1
  85. package/esm/presentation/localization/bundles/pt-BR.localization-bundle.d.ts.map +1 -1
  86. package/esm/presentation/localization/bundles/pt-BR.localization-bundle.js +2 -1
  87. package/esm/presentation/localization/bundles/pt-PT.localization-bundle.d.ts +2 -1
  88. package/esm/presentation/localization/bundles/pt-PT.localization-bundle.d.ts.map +1 -1
  89. package/esm/presentation/localization/bundles/pt-PT.localization-bundle.js +2 -1
  90. package/esm/presentation/localization/bundles/ru-RU.localization-bundle.d.ts +2 -1
  91. package/esm/presentation/localization/bundles/ru-RU.localization-bundle.d.ts.map +1 -1
  92. package/esm/presentation/localization/bundles/ru-RU.localization-bundle.js +2 -1
  93. package/esm/presentation/localization/bundles/sl-SI.localization-bundle.d.ts +2 -1
  94. package/esm/presentation/localization/bundles/sl-SI.localization-bundle.d.ts.map +1 -1
  95. package/esm/presentation/localization/bundles/sl-SI.localization-bundle.js +2 -1
  96. package/esm/presentation/localization/bundles/th-TH.localization-bundle.d.ts +2 -1
  97. package/esm/presentation/localization/bundles/th-TH.localization-bundle.d.ts.map +1 -1
  98. package/esm/presentation/localization/bundles/th-TH.localization-bundle.js +2 -1
  99. package/esm/presentation/localization/bundles/tr-TR.localization-bundle.d.ts +2 -1
  100. package/esm/presentation/localization/bundles/tr-TR.localization-bundle.d.ts.map +1 -1
  101. package/esm/presentation/localization/bundles/tr-TR.localization-bundle.js +2 -1
  102. package/esm/presentation/localization/bundles/uk-UA.localization-bundle.d.ts +2 -1
  103. package/esm/presentation/localization/bundles/uk-UA.localization-bundle.d.ts.map +1 -1
  104. package/esm/presentation/localization/bundles/uk-UA.localization-bundle.js +2 -1
  105. package/esm/presentation/localization/bundles/vi-VN.localization-bundle.d.ts +2 -1
  106. package/esm/presentation/localization/bundles/vi-VN.localization-bundle.d.ts.map +1 -1
  107. package/esm/presentation/localization/bundles/vi-VN.localization-bundle.js +2 -1
  108. package/esm/presentation/localization/bundles/zh-HK.localization-bundle.d.ts +2 -1
  109. package/esm/presentation/localization/bundles/zh-HK.localization-bundle.d.ts.map +1 -1
  110. package/esm/presentation/localization/bundles/zh-HK.localization-bundle.js +2 -1
  111. package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.d.ts +2 -1
  112. package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.d.ts.map +1 -1
  113. package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.js +2 -1
  114. package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.d.ts +2 -1
  115. package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.d.ts.map +1 -1
  116. package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.js +2 -1
  117. package/esm/presentation/topBar/topBar/DefaultTopBar.d.ts.map +1 -1
  118. package/esm/presentation/topBar/topBar/DefaultTopBar.js +2 -1
  119. package/package.json +21 -21
  120. package/styles/css/main.css +52 -121
  121. package/styles/css/main.css.map +1 -1
  122. package/styles/css/sidebar.css +52 -121
  123. package/styles/css/sidebar.css.map +1 -1
  124. package/styles/scss/sidebar.scss +89 -152
  125. package/esm/presentation/dashboard/DashboardSidebar/SidebarResizeChrome.d.ts +0 -23
  126. package/esm/presentation/dashboard/DashboardSidebar/SidebarResizeChrome.d.ts.map +0 -1
  127. package/esm/presentation/dashboard/DashboardSidebar/SidebarResizeChrome.js +0 -95
  128. package/esm/presentation/dashboard/DashboardSidebar/SidebarResizeContext.d.ts +0 -42
  129. package/esm/presentation/dashboard/DashboardSidebar/SidebarResizeContext.d.ts.map +0 -1
  130. package/esm/presentation/dashboard/DashboardSidebar/SidebarResizeContext.js +0 -136
@@ -18,21 +18,29 @@
18
18
  transition: width var(--sidebar-slide-duration);
19
19
  }
20
20
  .gd-sidebar-container--resizable {
21
- min-width: 230px;
22
21
  width: 100%;
23
22
  }
24
23
  .gd-sidebar-container--collapsed {
25
- min-width: 48px;
26
- width: 48px;
24
+ min-width: 0;
25
+ width: 0;
27
26
  }
28
27
  .gd-sidebar-container--resizable.gd-sidebar-container--collapsed {
29
28
  width: 100%;
30
29
  }
31
30
 
31
+ .gd-dashboards-root > .gd-ui-kit-resizable-sidebar,
32
+ .gd-dashboards-root > .gd-ui-kit-resizable-sidebar__expand-trigger {
33
+ --resizable-sidebar-slide-duration: 0.5s;
34
+ z-index: 6001;
35
+ }
36
+
37
+ .gd-dashboards-root > .gd-ui-kit-resizable-sidebar--dragging {
38
+ z-index: 9999;
39
+ }
40
+
32
41
  .gd-creation-panel-header {
33
42
  display: flex;
34
43
  align-items: center;
35
- justify-content: space-between;
36
44
  }
37
45
 
38
46
  .gd-sidebar-collapse-toggle {
@@ -40,6 +48,10 @@
40
48
  margin: 0 10px;
41
49
  }
42
50
 
51
+ .dash-header-inner .gd-sidebar-collapse-toggle {
52
+ margin: 0;
53
+ }
54
+
43
55
  .gd-sidebar-panel {
44
56
  height: 100%;
45
57
  }
@@ -50,20 +62,14 @@
50
62
  box-sizing: border-box;
51
63
  height: 32px;
52
64
  white-space: nowrap;
53
- transition: color var(--sidebar-fade-duration) var(--sidebar-fade-delay);
54
65
  }
55
66
  .gd-sidebar-panel--collapsible .add-item-placeholder svg {
56
67
  flex: 0 0 auto;
57
68
  width: 18px;
58
69
  height: 18px;
59
- transition: transform var(--sidebar-slide-duration);
60
70
  }
61
71
  .gd-sidebar-panel--collapsible .add-item-placeholder::before {
62
72
  background-size: 18px auto;
63
- transition: width var(--sidebar-slide-duration);
64
- }
65
- .gd-sidebar-panel--collapsible .gd-visualizations-list {
66
- transition: opacity var(--sidebar-fade-duration) var(--sidebar-fade-delay);
67
73
  }
68
74
  .gd-sidebar-panel--collapsible .configuration-panel {
69
75
  padding-top: 0;
@@ -74,8 +80,8 @@
74
80
  }
75
81
  .gd-sidebar-panel--collapsible .gd-creation-panel-header h2 {
76
82
  margin-bottom: 0;
83
+ margin-left: 0;
77
84
  color: var(--gd-palette-complementary-8, #464e56);
78
- transition: opacity var(--sidebar-fade-duration) var(--sidebar-fade-delay);
79
85
  }
80
86
  .gd-sidebar-panel--collapsible .add-item-panel {
81
87
  display: flex;
@@ -83,9 +89,6 @@
83
89
  gap: 5px;
84
90
  padding: 0 8px;
85
91
  }
86
- .gd-sidebar-panel--collapsible .add-item-panel .gd-ui-kit-tooltip__anchor {
87
- width: auto;
88
- }
89
92
  .gd-sidebar-panel--collapsible .configuration-category {
90
93
  margin-bottom: 0;
91
94
  padding-top: 10px;
@@ -93,10 +96,33 @@
93
96
  .gd-sidebar-panel--collapsible .configuration-category:not(.flex-panel-item-stretch) {
94
97
  flex: 0 0 auto;
95
98
  }
96
- .gd-sidebar-panel--collapsible .configuration-category-vis {
99
+ .gd-sidebar-container--hidden .gd-sidebar-panel--collapsible .flex-panel-full-height {
100
+ transition: opacity var(--sidebar-fade-duration) var(--sidebar-fade-delay);
101
+ }
102
+ .gd-sidebar-container--hidden.gd-sidebar-container--collapsed .gd-sidebar-panel--collapsible .flex-panel-full-height {
103
+ opacity: 0;
104
+ transition: opacity var(--sidebar-fade-duration);
105
+ }
106
+ .gd-sidebar-container--rail .gd-sidebar-panel--collapsible .add-item-placeholder {
107
+ transition: color var(--sidebar-fade-duration) var(--sidebar-fade-delay);
108
+ }
109
+ .gd-sidebar-container--rail .gd-sidebar-panel--collapsible .add-item-placeholder svg {
110
+ transition: transform var(--sidebar-slide-duration);
111
+ }
112
+ .gd-sidebar-container--rail .gd-sidebar-panel--collapsible .add-item-placeholder::before {
113
+ transition: width var(--sidebar-slide-duration);
114
+ }
115
+ .gd-sidebar-container--rail .gd-sidebar-panel--collapsible .add-item-panel .gd-ui-kit-tooltip__anchor {
116
+ width: auto;
117
+ }
118
+ .gd-sidebar-container--rail .gd-sidebar-panel--collapsible .gd-creation-panel-header h2,
119
+ .gd-sidebar-container--rail .gd-sidebar-panel--collapsible .gd-visualizations-list {
120
+ transition: opacity var(--sidebar-fade-duration) var(--sidebar-fade-delay);
121
+ }
122
+ .gd-sidebar-container--rail .gd-sidebar-panel--collapsible .configuration-category-vis {
97
123
  position: relative;
98
124
  }
99
- .gd-sidebar-panel--collapsible .configuration-category-vis::before {
125
+ .gd-sidebar-container--rail .gd-sidebar-panel--collapsible .configuration-category-vis::before {
100
126
  content: "";
101
127
  position: absolute;
102
128
  top: 10px;
@@ -107,34 +133,33 @@
107
133
  visibility: hidden;
108
134
  transition: opacity var(--sidebar-fade-duration), visibility 0s linear var(--sidebar-fade-duration);
109
135
  }
110
- .gd-sidebar-container--collapsed .gd-sidebar-panel--collapsible .gd-creation-panel-header h2,
111
- .gd-sidebar-container--collapsed .gd-sidebar-panel--collapsible .gd-creation-panel-header .gd-sidebar-collapse-toggle,
112
- .gd-sidebar-container--collapsed .gd-sidebar-panel--collapsible .gd-visualizations-list {
136
+ .gd-sidebar-container--rail.gd-sidebar-container--collapsed .gd-sidebar-panel--collapsible .gd-creation-panel-header h2,
137
+ .gd-sidebar-container--rail.gd-sidebar-container--collapsed .gd-sidebar-panel--collapsible .gd-visualizations-list {
113
138
  opacity: 0;
114
139
  visibility: hidden;
115
140
  transition: opacity var(--sidebar-fade-duration), visibility 0s linear var(--sidebar-fade-duration);
116
141
  }
117
- .gd-sidebar-container--collapsed .gd-sidebar-panel--collapsible .add-item-panel {
142
+ .gd-sidebar-container--rail.gd-sidebar-container--collapsed .gd-sidebar-panel--collapsible .add-item-panel {
118
143
  align-items: flex-start;
119
144
  }
120
- .gd-sidebar-container--collapsed .gd-sidebar-panel--collapsible .add-item-placeholder {
145
+ .gd-sidebar-container--rail.gd-sidebar-container--collapsed .gd-sidebar-panel--collapsible .add-item-placeholder {
121
146
  width: 32px;
122
147
  padding: 0;
123
148
  overflow: hidden;
124
149
  color: transparent;
125
150
  transition: color var(--sidebar-fade-duration), padding 0s linear var(--sidebar-fade-duration);
126
151
  }
127
- .gd-sidebar-container--collapsed .gd-sidebar-panel--collapsible .add-item-placeholder.add-panel-item svg {
152
+ .gd-sidebar-container--rail.gd-sidebar-container--collapsed .gd-sidebar-panel--collapsible .add-item-placeholder.add-panel-item svg {
128
153
  transform: translateX(calc(-50% + 1px));
129
154
  }
130
- .gd-sidebar-container--collapsed .gd-sidebar-panel--collapsible .add-item-placeholder::before {
155
+ .gd-sidebar-container--rail.gd-sidebar-container--collapsed .gd-sidebar-panel--collapsible .add-item-placeholder::before {
131
156
  width: 32px;
132
157
  }
133
- .gd-sidebar-container--collapsed .gd-sidebar-panel--collapsible .add-item-placeholder.add-panel-item .gd-add-item-placeholder-help-trigger {
158
+ .gd-sidebar-container--rail.gd-sidebar-container--collapsed .gd-sidebar-panel--collapsible .add-item-placeholder.add-panel-item .gd-add-item-placeholder-help-trigger {
134
159
  display: none;
135
160
  }
136
- .gd-sidebar-container--collapsed .gd-sidebar-panel--collapsible .configuration-category-vis::before,
137
- .gd-sidebar-container--collapsed .gd-sidebar-panel--collapsible .gd-sidebar-rail-search {
161
+ .gd-sidebar-container--rail.gd-sidebar-container--collapsed .gd-sidebar-panel--collapsible .configuration-category-vis::before,
162
+ .gd-sidebar-container--rail.gd-sidebar-container--collapsed .gd-sidebar-panel--collapsible .gd-sidebar-rail-search {
138
163
  opacity: 1;
139
164
  visibility: visible;
140
165
  transition: opacity var(--sidebar-fade-duration) var(--sidebar-fade-delay);
@@ -149,107 +174,13 @@
149
174
  transition: opacity var(--sidebar-fade-duration), visibility 0s linear var(--sidebar-fade-duration);
150
175
  }
151
176
 
152
- .gd-sidebar-rail {
153
- position: absolute;
154
- top: 0;
155
- left: 0;
156
- z-index: 1;
157
- display: flex;
158
- flex-direction: column;
159
- align-items: center;
160
- width: 48px;
161
- opacity: 0;
162
- visibility: hidden;
163
- transition: opacity var(--sidebar-fade-duration), visibility 0s linear var(--sidebar-fade-duration);
164
- }
165
- .gd-sidebar-container--collapsed .gd-sidebar-rail {
166
- opacity: 1;
167
- visibility: visible;
168
- transition: opacity var(--sidebar-fade-duration) var(--sidebar-fade-delay);
169
- }
170
- .gd-sidebar-rail .gd-sidebar-collapse-toggle {
171
- align-items: center;
172
- height: 48px;
173
- margin: 0;
174
- }
175
-
176
177
  @media (prefers-reduced-motion: reduce) {
177
- .gd-sidebar-container,
178
- .gd-resizable-sidebar {
178
+ .gd-sidebar-container {
179
179
  --sidebar-fade-duration: 0s;
180
180
  --sidebar-fade-delay: 0s;
181
181
  --sidebar-slide-duration: 0s;
182
182
  }
183
183
  }
184
- .gd-resizable-sidebar {
185
- --sidebar-fade-duration: 0.2s;
186
- --sidebar-fade-delay: 0.3s;
187
- --sidebar-slide-duration: 0.5s;
188
- display: flex;
189
- flex-direction: column;
190
- flex: 0 0 auto;
191
- transition: width var(--sidebar-slide-duration);
192
- }
193
- .gd-resizable-sidebar--dragging, .gd-resizable-sidebar:has(.gd-resizable-sidebar__handle:focus) {
194
- z-index: 9999;
195
- transition: none;
196
- }
197
- .gd-resizable-sidebar__handle {
198
- opacity: 0;
199
- position: absolute;
200
- top: 0;
201
- bottom: 0;
202
- transform: translateX(calc(var(--drag-x, 0) - 50%));
203
- z-index: 2;
204
- display: flex;
205
- align-items: center;
206
- justify-content: center;
207
- width: 6px;
208
- background: transparent;
209
- border: 0;
210
- cursor: col-resize;
211
- touch-action: none;
212
- }
213
- .gd-resizable-sidebar__handle:focus {
214
- outline: none;
215
- }
216
- .gd-resizable-sidebar__handle:disabled {
217
- cursor: initial;
218
- }
219
- .gd-resizable-sidebar__handle--dragging {
220
- opacity: 1;
221
- }
222
- .gd-resizable-sidebar--resizable:hover .gd-resizable-sidebar__handle, .gd-resizable-sidebar--resizable:focus-within .gd-resizable-sidebar__handle {
223
- opacity: 1;
224
- }
225
- .gd-resizable-sidebar__handle-grip {
226
- display: flex;
227
- align-items: center;
228
- justify-content: center;
229
- gap: 10px;
230
- height: 25px;
231
- padding: 5px 3px;
232
- background: var(--gd-palette-complementary-0);
233
- border: 1px solid var(--gd-palette-complementary-5);
234
- border-radius: 2px;
235
- }
236
- .gd-resizable-sidebar--dragging .gd-resizable-sidebar__handle-grip, .gd-resizable-sidebar__handle:focus .gd-resizable-sidebar__handle-grip {
237
- border: 2px solid #14b2e2;
238
- border-radius: 3px;
239
- }
240
- .gd-resizable-sidebar--dragging .gd-resizable-sidebar__handle-grip::after, .gd-resizable-sidebar__handle:focus .gd-resizable-sidebar__handle-grip::after {
241
- content: "";
242
- position: absolute;
243
- top: 0;
244
- bottom: 0;
245
- left: 50%;
246
- transform: translateX(-50%);
247
- z-index: -1;
248
- width: 2px;
249
- background: #14b2e2;
250
- box-shadow: 0 0 0 4px var(--gd-palette-primary-base-t85, rgba(20, 178, 226, 0.15));
251
- }
252
-
253
184
  .add-item-panel {
254
185
  padding: 0 7px;
255
186
  }
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../node_modules/@gooddata/sdk-ui-kit/styles/scss/mixins.scss","../../node_modules/@gooddata/sdk-ui-kit/styles/scss/Bubble/_variables.scss","../../node_modules/@gooddata/sdk-ui-kit/styles/scss/Button/_variables.scss","../scss/sidebar.scss","../scss/_variables.scss","../../node_modules/@gooddata/sdk-ui-kit/styles/scss/variables.scss"],"names":[],"mappings":"AA0HA;AA4DA;ACjLA;AAAA;AAAA;ACDA;AAAA;AAAA;ACcA;EACI;EACA;EACA;EAEA;EACA;EACA;EACA;EACA,cCsDS;EDrDT;;AAEA;EACI;EACA;;AAGJ;EACI,WA7BkB;EA8BlB,OA9BkB;;AAiCtB;EACI;;;AAIR;EACI;EACA;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;;AAEA;EACI;;AAEA;EACI;EACA,QAtDQ;EAuDR;EACA;;AAGJ;EACI;EACA,OA/DQ;EAgER,QAhEQ;EAiER;;AAGJ;EACI;EACA;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI,QAjFY;EAkFZ,eCVC;;ADYD;EACI;EACA;EACA;;AAIR;EACI;EACA;EACA;EACA;;AAGJ;EACI;;AAGJ;EACI;EACA;;AAGJ;EACI;;AAGJ;EACI;;AAEA;EACI;EACA;EACA,KAnHc;EAoHd;EACA;EACA,YChDH;EDiDG;EACA;EACA,YACI;;AAMR;AAAA;AAAA;EAGI;EACA;EACA,YACI;;AAIR;EACI;;AAGJ;EACI,OAhJI;EAiJJ;EACA;EACA;EACA,YACI;;AAIR;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;AAAA;EAEI;EACA;EACA;;;AAMhB;EACI;EACA,KA9KyB;EA+KzB;EACA;EACA;EACA,YACI;;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OArMsB;EAsMtB;EACA;EACA,YACI;;AAGJ;EACI;EACA;EACA;;AAGJ;EACI;EACA,QAlNgB;EAmNhB;;;AAIR;EACI;AAAA;IAEI;IACA;IACA;;;AAIR;EACI;EACA;EACA;EAEA;EACA;EACA;EACA;;AAIA;EAEI;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;;AAEA;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EAEI;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEI;EACA;;AAGJ;EAEI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,YEhTS;EFiTT;;;AAKZ;EACI;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OEzSY;EF0SZ;;AAEA;EACI,OEtTY;EFuTZ;EACA;;AAGJ;EACI;EAIA,YACI;EAEJ;;AAMJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAGJ;EACI;;AAGJ;EACI;;AAIA;EACI;EACA;;AAIR;EACI;EACA;EACA;EACA;EACA;;AAGJ;EACI;;AAIR;EACI;;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OEzYmB;;;AF4YvB;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA","file":"sidebar.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../../node_modules/@gooddata/sdk-ui-kit/styles/scss/mixins.scss","../../node_modules/@gooddata/sdk-ui-kit/styles/scss/Bubble/_variables.scss","../../node_modules/@gooddata/sdk-ui-kit/styles/scss/Button/_variables.scss","../scss/sidebar.scss","../scss/_variables.scss","../../node_modules/@gooddata/sdk-ui-kit/styles/scss/variables.scss"],"names":[],"mappings":"AA0HA;AA4DA;ACjLA;AAAA;AAAA;ACDA;AAAA;AAAA;ACiBA;EACI;EACA;EACA;EAEA;EACA;EACA;EACA;EACA,cCmDS;EDlDT;;AAIA;EACI;;AAGJ;EACI;EACA;;AAGJ;EACI;;;AAQR;AAAA;EAEI;EAEA;;;AAKJ;EACI;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;;;AAIJ;EACI;;;AAGJ;EACI;;AAEA;EACI;;AAEA;EACI;EACA,QA7EQ;EA8ER;;AAGJ;EACI;EACA,OArFQ;EAsFR,QAtFQ;;AAyFZ;EACI;;AAGJ;EACI;;AAGJ;EACI,QAjGY;EAkGZ,eC5BC;;AD+BD;EACI;EACA;EACA;;AAIR;EACI;EACA;EACA;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;;AAOJ;EACI;;AAGJ;EACI;EACA;;AAMA;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;AAAA;EAEI;;AAGJ;EACI;;AAEA;EACI;EACA;EACA,KApKU;EAqKV;EACA;EACA,YCpGP;EDqGO;EACA;EACA,YACI;;AAOZ;AAAA;EAEI;EACA;EACA,YACI;;AAIR;EACI;;AAGJ;EACI,OAlMI;EAmMJ;EACA;EACA;EACA,YACI;;AAIR;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;AAAA;EAEI;EACA;EACA;;;AAOhB;EACI;EACA,KAhOyB;EAiOzB,MApOiB;EAqOjB;EACA;EACA,YACI;;;AAIR;EACI;IACI;IACA;IACA;;;AAIR;EACI;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OE1OY;EF2OZ;;AAEA;EACI,OEvPY;EFwPZ;EACA;;AAGJ;EACI;EAIA,YACI;EAEJ;;AAMJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAGJ;EACI;;AAGJ;EACI;;AAIA;EACI;EACA;;AAIR;EACI;EACA;EACA;EACA;EACA;;AAGJ;EACI;;AAIR;EACI;;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OE1UmB;;;AF6UvB;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA","file":"sidebar.css"}
@@ -1,14 +1,17 @@
1
- // (C) 2024-2025 GoodData Corporation
1
+ // (C) 2024-2026 GoodData Corporation
2
2
 
3
3
  @use "sass:color";
4
4
  @use "variables";
5
+ @use "zIndexes";
5
6
  @use "@gooddata/sdk-ui-kit/styles/scss/Button/variables" as button-variables;
6
7
  @use "@gooddata/sdk-ui-kit/styles/scss/variables" as kit-variables;
7
8
 
9
+ // Fixed rail width owned by the kit (UI_RESIZABLE_SIDEBAR_RAIL_WIDTH in sdk-ui-kit).
8
10
  $sidebar-collapsed-width: 48px;
9
11
  $sidebar-icon-size: 18px;
10
12
  $sidebar-header-height: 48px;
11
13
  $sidebar-item-size: 32px;
14
+ $sidebar-item-inset: ($sidebar-collapsed-width - $sidebar-item-size) * 0.5;
12
15
  $sidebar-rail-divider-offset: 10px;
13
16
  $sidebar-rail-search-gap: 10px;
14
17
  $sidebar-rail-search-offset: $sidebar-rail-divider-offset + variables.$nav-border-size +
@@ -28,14 +31,15 @@ $sidebar-fade-delay: 0.3s;
28
31
  border-right: variables.$nav-border;
29
32
  transition: width var(--sidebar-slide-duration);
30
33
 
34
+ // Follows the kit wrapper, which owns the width and its slide; a min-width here would snap the
35
+ // container open before the wrapper has slid.
31
36
  &--resizable {
32
- min-width: 230px;
33
37
  width: 100%;
34
38
  }
35
39
 
36
40
  &--collapsed {
37
- min-width: $sidebar-collapsed-width;
38
- width: $sidebar-collapsed-width;
41
+ min-width: 0;
42
+ width: 0;
39
43
  }
40
44
 
41
45
  &--resizable#{&}--collapsed {
@@ -43,10 +47,26 @@ $sidebar-fade-delay: 0.3s;
43
47
  }
44
48
  }
45
49
 
50
+ // Keeps the kit sidebar's width transition in step with the container and content transitions, and
51
+ // paints the sidebar and its expand trigger above the sticky dashboard header so neither is cut off at
52
+ // the top. The drag layer sits one level higher still (see DragLayer.tsx). The parent selector
53
+ // out-specifies the kit's own z-index on the trigger.
54
+ .gd-dashboards-root > .gd-ui-kit-resizable-sidebar,
55
+ .gd-dashboards-root > .gd-ui-kit-resizable-sidebar__expand-trigger {
56
+ --resizable-sidebar-slide-duration: #{variables.$sidebar-transition-length};
57
+
58
+ z-index: zIndexes.$filterbar-sdk-8-12 + 1;
59
+ }
60
+
61
+ // The rule above would also beat the kit's drag-time lift, so restate it: dragging and a focused handle
62
+ // then layer the same way.
63
+ .gd-dashboards-root > .gd-ui-kit-resizable-sidebar--dragging {
64
+ z-index: 9999;
65
+ }
66
+
46
67
  .gd-creation-panel-header {
47
68
  display: flex;
48
69
  align-items: center;
49
- justify-content: space-between;
50
70
  }
51
71
 
52
72
  .gd-sidebar-collapse-toggle {
@@ -54,6 +74,11 @@ $sidebar-fade-delay: 0.3s;
54
74
  margin: 0 10px;
55
75
  }
56
76
 
77
+ // Restore control in the top bar while the sidebar is hidden, placed right before the title.
78
+ .dash-header-inner .gd-sidebar-collapse-toggle {
79
+ margin: 0;
80
+ }
81
+
57
82
  .gd-sidebar-panel {
58
83
  height: 100%;
59
84
 
@@ -64,23 +89,16 @@ $sidebar-fade-delay: 0.3s;
64
89
  box-sizing: border-box;
65
90
  height: $sidebar-item-size;
66
91
  white-space: nowrap;
67
- transition: color var(--sidebar-fade-duration) var(--sidebar-fade-delay);
68
92
  }
69
93
 
70
94
  .add-item-placeholder svg {
71
95
  flex: 0 0 auto;
72
96
  width: $sidebar-icon-size;
73
97
  height: $sidebar-icon-size;
74
- transition: transform var(--sidebar-slide-duration);
75
98
  }
76
99
 
77
100
  .add-item-placeholder::before {
78
101
  background-size: $sidebar-icon-size auto;
79
- transition: width var(--sidebar-slide-duration);
80
- }
81
-
82
- .gd-visualizations-list {
83
- transition: opacity var(--sidebar-fade-duration) var(--sidebar-fade-delay);
84
102
  }
85
103
 
86
104
  .configuration-panel {
@@ -91,10 +109,11 @@ $sidebar-fade-delay: 0.3s;
91
109
  height: $sidebar-header-height;
92
110
  border-bottom: variables.$nav-border;
93
111
 
112
+ // The toggle in front of the headline provides the inset.
94
113
  h2 {
95
114
  margin-bottom: 0;
115
+ margin-left: 0;
96
116
  color: var(--gd-palette-complementary-8, #464e56);
97
- transition: opacity var(--sidebar-fade-duration) var(--sidebar-fade-delay);
98
117
  }
99
118
  }
100
119
 
@@ -102,11 +121,7 @@ $sidebar-fade-delay: 0.3s;
102
121
  display: flex;
103
122
  flex-direction: column;
104
123
  gap: 5px;
105
- padding: 0 (($sidebar-collapsed-width - $sidebar-item-size) * 0.5);
106
- }
107
-
108
- .add-item-panel .gd-ui-kit-tooltip__anchor {
109
- width: auto;
124
+ padding: 0 $sidebar-item-inset;
110
125
  }
111
126
 
112
127
  .configuration-category {
@@ -118,27 +133,64 @@ $sidebar-fade-delay: 0.3s;
118
133
  flex: 0 0 auto;
119
134
  }
120
135
 
121
- .configuration-category-vis {
122
- position: relative;
136
+ // Hidden mode: the whole content fades out at the start of the collapse and back in once the
137
+ // expand slide has nearly finished, so it never overlaps the dashboard mid-slide. Opacity only:
138
+ // the collapsed wrapper is already inert and clipped, and the toggle must stay focusable for the
139
+ // focus hand-off.
140
+ .gd-sidebar-container--hidden & .flex-panel-full-height {
141
+ transition: opacity var(--sidebar-fade-duration) var(--sidebar-fade-delay);
142
+ }
123
143
 
124
- &::before {
125
- content: "";
126
- position: absolute;
127
- top: $sidebar-rail-divider-offset;
128
- left: 0;
129
- right: 0;
130
- border-top: variables.$nav-border;
131
- opacity: 0;
132
- visibility: hidden;
133
- transition:
134
- opacity var(--sidebar-fade-duration),
135
- visibility 0s linear var(--sidebar-fade-duration);
144
+ .gd-sidebar-container--hidden.gd-sidebar-container--collapsed & .flex-panel-full-height {
145
+ opacity: 0;
146
+ transition: opacity var(--sidebar-fade-duration);
147
+ }
148
+
149
+ // Rail mode: the headline and the list fade out while the palette items shrink to their icons,
150
+ // which stay in place in the 48px rail together with the toggle in front of the headline.
151
+ .gd-sidebar-container--rail & {
152
+ .add-item-placeholder {
153
+ transition: color var(--sidebar-fade-duration) var(--sidebar-fade-delay);
154
+ }
155
+
156
+ .add-item-placeholder svg {
157
+ transition: transform var(--sidebar-slide-duration);
158
+ }
159
+
160
+ .add-item-placeholder::before {
161
+ transition: width var(--sidebar-slide-duration);
162
+ }
163
+
164
+ .add-item-panel .gd-ui-kit-tooltip__anchor {
165
+ width: auto;
166
+ }
167
+
168
+ .gd-creation-panel-header h2,
169
+ .gd-visualizations-list {
170
+ transition: opacity var(--sidebar-fade-duration) var(--sidebar-fade-delay);
171
+ }
172
+
173
+ .configuration-category-vis {
174
+ position: relative;
175
+
176
+ &::before {
177
+ content: "";
178
+ position: absolute;
179
+ top: $sidebar-rail-divider-offset;
180
+ left: 0;
181
+ right: 0;
182
+ border-top: variables.$nav-border;
183
+ opacity: 0;
184
+ visibility: hidden;
185
+ transition:
186
+ opacity var(--sidebar-fade-duration),
187
+ visibility 0s linear var(--sidebar-fade-duration);
188
+ }
136
189
  }
137
190
  }
138
191
 
139
- .gd-sidebar-container--collapsed & {
192
+ .gd-sidebar-container--rail.gd-sidebar-container--collapsed & {
140
193
  .gd-creation-panel-header h2,
141
- .gd-creation-panel-header .gd-sidebar-collapse-toggle,
142
194
  .gd-visualizations-list {
143
195
  opacity: 0;
144
196
  visibility: hidden;
@@ -183,141 +235,26 @@ $sidebar-fade-delay: 0.3s;
183
235
  }
184
236
  }
185
237
 
238
+ // Rail mode: the search shortcut is hidden while expanded and fades in with the rail.
186
239
  .gd-sidebar-rail-search {
187
240
  position: absolute;
188
241
  top: $sidebar-rail-search-offset;
189
- left: ($sidebar-collapsed-width - $sidebar-item-size) * 0.5;
190
- opacity: 0;
191
- visibility: hidden;
192
- transition:
193
- opacity var(--sidebar-fade-duration),
194
- visibility 0s linear var(--sidebar-fade-duration);
195
- }
196
-
197
- .gd-sidebar-rail {
198
- position: absolute;
199
- top: 0;
200
- left: 0;
201
- z-index: 1;
202
- display: flex;
203
- flex-direction: column;
204
- align-items: center;
205
- width: $sidebar-collapsed-width;
242
+ left: $sidebar-item-inset;
206
243
  opacity: 0;
207
244
  visibility: hidden;
208
245
  transition:
209
246
  opacity var(--sidebar-fade-duration),
210
247
  visibility 0s linear var(--sidebar-fade-duration);
211
-
212
- .gd-sidebar-container--collapsed & {
213
- opacity: 1;
214
- visibility: visible;
215
- transition: opacity var(--sidebar-fade-duration) var(--sidebar-fade-delay);
216
- }
217
-
218
- .gd-sidebar-collapse-toggle {
219
- align-items: center;
220
- height: $sidebar-header-height;
221
- margin: 0;
222
- }
223
248
  }
224
249
 
225
250
  @media (prefers-reduced-motion: reduce) {
226
- .gd-sidebar-container,
227
- .gd-resizable-sidebar {
251
+ .gd-sidebar-container {
228
252
  --sidebar-fade-duration: 0s;
229
253
  --sidebar-fade-delay: 0s;
230
254
  --sidebar-slide-duration: 0s;
231
255
  }
232
256
  }
233
257
 
234
- .gd-resizable-sidebar {
235
- --sidebar-fade-duration: #{$sidebar-fade-length};
236
- --sidebar-fade-delay: #{$sidebar-fade-delay};
237
- --sidebar-slide-duration: #{variables.$sidebar-transition-length};
238
-
239
- display: flex;
240
- flex-direction: column;
241
- flex: 0 0 auto;
242
- transition: width var(--sidebar-slide-duration);
243
-
244
- // Lift the wrapper above sibling main-content during drag so the indicator
245
- // rail isn't covered by widgets/charts with their own stacking context.
246
- &--dragging,
247
- &:has(.gd-resizable-sidebar__handle:focus) {
248
- z-index: 9999;
249
- transition: none;
250
- }
251
-
252
- &__handle {
253
- opacity: 0;
254
- position: absolute;
255
- top: 0;
256
- bottom: 0;
257
- transform: translateX(calc(var(--drag-x, 0) - 50%));
258
- z-index: 2;
259
- display: flex;
260
- align-items: center;
261
- justify-content: center;
262
- width: 6px;
263
- background: transparent;
264
- border: 0;
265
- cursor: col-resize;
266
- // Prevent the browser from claiming the first touchmove for panning
267
- // before pointer capture engages on pointerdown.
268
- touch-action: none;
269
-
270
- &:focus {
271
- outline: none;
272
- }
273
-
274
- &:disabled {
275
- cursor: initial;
276
- }
277
-
278
- &--dragging {
279
- opacity: 1;
280
- }
281
-
282
- .gd-resizable-sidebar--resizable:hover &,
283
- .gd-resizable-sidebar--resizable:focus-within & {
284
- opacity: 1;
285
- }
286
- }
287
-
288
- &__handle-grip {
289
- display: flex;
290
- align-items: center;
291
- justify-content: center;
292
- gap: 10px;
293
- height: 25px;
294
- padding: 5px 3px;
295
- background: var(--gd-palette-complementary-0);
296
- border: 1px solid var(--gd-palette-complementary-5);
297
- border-radius: 2px;
298
-
299
- .gd-resizable-sidebar--dragging &,
300
- .gd-resizable-sidebar__handle:focus & {
301
- border: 2px solid kit-variables.$gd-color-highlight;
302
- border-radius: 3px;
303
- }
304
-
305
- .gd-resizable-sidebar--dragging &::after,
306
- .gd-resizable-sidebar__handle:focus &::after {
307
- content: "";
308
- position: absolute;
309
- top: 0;
310
- bottom: 0;
311
- left: 50%;
312
- transform: translateX(-50%);
313
- z-index: -1;
314
- width: 2px;
315
- background: kit-variables.$gd-color-highlight;
316
- box-shadow: 0 0 0 4px variables.$gd-palette-primary-base-t85;
317
- }
318
- }
319
- }
320
-
321
258
  .add-item-panel {
322
259
  padding: 0 7px;
323
260
  }
@@ -1,23 +0,0 @@
1
- import { type ReactElement, type ReactNode } from "react";
2
- /**
3
- * Internal presentational wrapper that drives the dashboard sidebar drag-to-resize interaction.
4
- *
5
- * Owns only the live drag state (drag width — used for the dashed indicator transform — and drag
6
- * phase). The committed width, min/max, and the editor-canvas constraint live in the shared
7
- * {@link useResizableSidebar} state, so the same value also feeds the content area's width via the
8
- * `--gd-dashboard-sidebar-width` custom property.
9
- *
10
- * Renders `.gd-sidebar-container` itself so the resize handle can be positioned absolutely inside
11
- * it — that element is sticky+100vh, so the handle (and the grip centered inside it) tracks the
12
- * visible viewport rather than the full dashboard-root height.
13
- *
14
- * Drag uses `setPointerCapture` on the handle button so pointer events keep flowing to it even
15
- * when the cursor leaves the 6 px hit area. No DOM overlay or window-level listener is needed.
16
- *
17
- * @internal
18
- */
19
- export declare function SidebarResizeChrome({ onContainerClick, children, }: {
20
- onContainerClick?: () => void;
21
- children: ReactNode;
22
- }): ReactElement;
23
- //# sourceMappingURL=SidebarResizeChrome.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SidebarResizeChrome.d.ts","sourceRoot":"","sources":["../../../../src/presentation/dashboard/DashboardSidebar/SidebarResizeChrome.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEH,KAAK,YAAY,EACjB,KAAK,SAAS,EAIjB,MAAM,OAAO,CAAC;AAkBf;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,EAChC,gBAAgB,EAChB,QAAQ,GACX,EAAE;IACC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,QAAQ,EAAE,SAAS,CAAC;CACvB,GAAG,YAAY,CAmHf"}