@jolly-pixel/ui 1.0.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/LICENSE +44 -44
  2. package/NOTICE +9 -0
  3. package/README.md +194 -194
  4. package/dist/containers/Dialog.js +11 -11
  5. package/dist/containers/Dialog.styles.js +48 -48
  6. package/dist/containers/Dock.js +11 -11
  7. package/dist/containers/Dock.styles.js +351 -351
  8. package/dist/containers/DockLayout.js +4 -4
  9. package/dist/containers/Floating.js +23 -23
  10. package/dist/containers/Floating.styles.js +116 -116
  11. package/dist/containers/Folder.js +28 -28
  12. package/dist/containers/Folder.styles.js +221 -221
  13. package/dist/containers/Pane.js +50 -50
  14. package/dist/containers/Pane.styles.js +186 -186
  15. package/dist/containers/Rail.js +18 -18
  16. package/dist/containers/Tab.js +10 -10
  17. package/dist/containers/Tabs.js +26 -26
  18. package/dist/containers/Tabs.styles.js +93 -93
  19. package/dist/containers/Toolbar.js +25 -25
  20. package/dist/containers/resize.js +5 -5
  21. package/dist/controls/Button.js +9 -9
  22. package/dist/controls/Button.styles.js +79 -79
  23. package/dist/controls/ButtonGroup.js +28 -28
  24. package/dist/controls/ButtonGroup.styles.js +98 -98
  25. package/dist/controls/Checkbox.js +14 -14
  26. package/dist/controls/Checkbox.styles.js +111 -111
  27. package/dist/controls/Color.js +51 -51
  28. package/dist/controls/Color.styles.js +83 -83
  29. package/dist/controls/ColorPicker.js +104 -104
  30. package/dist/controls/ColorPicker.styles.js +296 -296
  31. package/dist/controls/Control.js +33 -33
  32. package/dist/controls/Control.styles.js +102 -102
  33. package/dist/controls/Controls.js +11 -11
  34. package/dist/controls/Controls.styles.js +98 -98
  35. package/dist/controls/Flags.js +18 -18
  36. package/dist/controls/Flags.styles.js +59 -59
  37. package/dist/controls/Number.js +21 -21
  38. package/dist/controls/Number.styles.js +44 -44
  39. package/dist/controls/PropertyRow.js +13 -13
  40. package/dist/controls/PropertyRow.styles.js +105 -105
  41. package/dist/controls/Range.js +24 -24
  42. package/dist/controls/Range.styles.js +25 -25
  43. package/dist/controls/Select.js +23 -23
  44. package/dist/controls/Select.styles.js +47 -47
  45. package/dist/controls/Separator.js +11 -11
  46. package/dist/controls/Separator.styles.js +45 -45
  47. package/dist/controls/Slider.js +36 -36
  48. package/dist/controls/Slider.styles.js +161 -161
  49. package/dist/controls/Text.js +17 -17
  50. package/dist/data/Tree.d.ts +0 -14
  51. package/dist/data/Tree.d.ts.map +1 -1
  52. package/dist/data/Tree.js +90 -120
  53. package/dist/data/Tree.js.map +1 -1
  54. package/dist/data/Tree.styles.d.ts.map +1 -1
  55. package/dist/data/Tree.styles.js +220 -237
  56. package/dist/data/Tree.styles.js.map +1 -1
  57. package/dist/data/dropZone.d.ts +0 -10
  58. package/dist/data/dropZone.d.ts.map +1 -1
  59. package/dist/data/dropZone.js +0 -10
  60. package/dist/data/dropZone.js.map +1 -1
  61. package/dist/data/resolveRename.d.ts +0 -3
  62. package/dist/data/resolveRename.d.ts.map +1 -1
  63. package/dist/data/resolveRename.js +0 -3
  64. package/dist/data/resolveRename.js.map +1 -1
  65. package/dist/data/resolveReparent.d.ts +0 -7
  66. package/dist/data/resolveReparent.d.ts.map +1 -1
  67. package/dist/data/resolveReparent.js +0 -6
  68. package/dist/data/resolveReparent.js.map +1 -1
  69. package/dist/data/rowDragSession.d.ts +0 -8
  70. package/dist/data/rowDragSession.d.ts.map +1 -1
  71. package/dist/data/rowDragSession.js +0 -6
  72. package/dist/data/rowDragSession.js.map +1 -1
  73. package/dist/data/treeNodes.d.ts +0 -6
  74. package/dist/data/treeNodes.d.ts.map +1 -1
  75. package/dist/data/treeNodes.js +2 -7
  76. package/dist/data/treeNodes.js.map +1 -1
  77. package/dist/feedback/JollyPixelLogo.js +84 -84
  78. package/dist/feedback/Loading.js +29 -29
  79. package/dist/feedback/Loading.styles.js +230 -230
  80. package/dist/feedback/Log.js +8 -8
  81. package/dist/feedback/Log.styles.js +61 -61
  82. package/dist/feedback/Progress.js +17 -17
  83. package/dist/feedback/Progress.styles.js +146 -146
  84. package/dist/field/JollyField.js +51 -51
  85. package/dist/field/JollyField.styles.js +429 -429
  86. package/dist/icon/Icon.js +24 -24
  87. package/dist/icon/builtins.js +126 -126
  88. package/dist/interaction/drag/DragSession.js +6 -6
  89. package/dist/interaction/scrub/ScrubController.js +6 -6
  90. package/dist/math/AxisController.js +22 -22
  91. package/dist/math/Point2d.js +12 -12
  92. package/dist/math/Point2d.styles.js +49 -49
  93. package/dist/math/Quaternion.js +4 -4
  94. package/dist/math/Transform.js +40 -40
  95. package/dist/math/Transform.styles.js +17 -17
  96. package/dist/math/VectorField.js +4 -4
  97. package/dist/math/VectorField.styles.js +102 -102
  98. package/dist/monitors/Graph.js +8 -8
  99. package/dist/monitors/Graph.styles.js +42 -42
  100. package/dist/monitors/Monitor.js +5 -5
  101. package/dist/monitors/Monitor.styles.js +31 -31
  102. package/dist/peer/Presence.js +33 -33
  103. package/dist/peer/Presence.styles.js +82 -82
  104. package/dist/stats/Stats.js +6 -6
  105. package/dist/stats/Stats.styles.js +54 -54
  106. package/dist/theme/components/DensityControl.js +16 -16
  107. package/dist/theme/components/ThemeControl.js +16 -16
  108. package/dist/theme/components/ThemePreferences.js +18 -18
  109. package/dist/theme/font.js +9 -9
  110. package/dist/theme/styles/hiddenStyles.js +4 -4
  111. package/dist/theme/styles/mixins.js +16 -16
  112. package/dist/theme/styles/themeStyles.js +4 -4
  113. package/dist/theme/tokens/density.js +19 -19
  114. package/dist/theme/tokens/ramps.js +40 -40
  115. package/dist/theme/tokens/scales.js +56 -56
  116. package/dist/theme/tokens/semantic.js +184 -184
  117. package/package.json +6 -5
@@ -3,226 +3,226 @@ import { css } from "lit";
3
3
  // Import Internal Dependencies
4
4
  import { kFallback } from "../theme/styles/fallbacks.js";
5
5
  import { fillTransition, truncate } from "../theme/styles/mixins.js";
6
- export const folderStyles = css `
7
- :host {
8
- display: flex;
9
- flex: 0 0 auto;
10
- flex-direction: column;
11
- gap: var(--jolly-row-gap, 4px);
12
- min-width: 0;
13
- margin-block-end: var(--jolly-folder-gap, 2px);
14
- color: var(--jolly-text, ${kFallback.text});
15
- font: inherit;
16
- }
17
-
18
- .header {
19
- position: relative;
20
- display: flex;
21
- align-items: center;
22
- gap: var(--jolly-space-1, 4px);
23
- min-height: var(--jolly-row-height, 20px);
24
- overflow: hidden;
25
- padding-inline: var(--jolly-space-1, 4px);
26
- border: 0;
27
- border-radius: var(--jolly-radius-sm, 2px);
28
- background: var(
29
- --jolly-folder-header-bg,
30
- ${kFallback.folderHeaderBg}
31
- );
32
- color: inherit;
33
- font: inherit;
34
- ${fillTransition}
35
- }
36
-
37
- .header::after {
38
- position: absolute;
39
- z-index: 0;
40
- inset-block: 0;
41
- inset-inline-end: 0;
42
- width: 46%;
43
- background: conic-gradient(
44
- from 90deg,
45
- currentColor 25%,
46
- transparent 0 50%,
47
- currentColor 0 75%,
48
- transparent 0
49
- )
50
- 0 / 8px 8px;
51
- color: var(--jolly-accent-text, ${kFallback.focusRing});
52
- content: "";
53
- opacity: 0.08;
54
- pointer-events: none;
55
- -webkit-mask-image: linear-gradient(to right, transparent, black 55%);
56
- mask-image: linear-gradient(to right, transparent, black 55%);
57
- transition: opacity var(--jolly-duration-fast, 100ms)
58
- var(--jolly-easing, ease);
59
- }
60
-
61
- .header:hover,
62
- .header:focus-within {
63
- background: var(
64
- --jolly-folder-header-bg-hover,
65
- ${kFallback.folderHeaderBgHover}
66
- );
67
- }
68
-
69
- .header:hover::after,
70
- .header:focus-within::after {
71
- opacity: 0.14;
72
- }
73
-
74
- .toggle,
75
- .title {
76
- position: relative;
77
- z-index: 1;
78
- display: flex;
79
- align-items: center;
80
- flex: 1 1 auto;
81
- align-self: stretch;
82
- min-width: 0;
83
- gap: var(--jolly-space-1, 4px);
84
- padding: 0;
85
- border: 0;
86
- background: transparent;
87
- color: inherit;
88
- font: inherit;
89
- text-align: start;
90
- }
91
-
92
- .toggle {
93
- cursor: pointer;
94
- }
95
-
96
- .toggle .label,
97
- .title .label {
98
- min-width: 0;
99
- ${truncate}
100
- }
101
-
102
- ::slotted([slot="actions"]) {
103
- position: relative;
104
- z-index: 1;
105
- flex: 0 0 auto;
106
- margin-block: var(--jolly-space-1, 4px);
107
- }
108
-
109
- ::slotted(jolly-button[slot="actions"]) {
110
- --jolly-text: var(
111
- --jolly-folder-action-fg,
112
- ${kFallback.folderActionFg}
113
- );
114
- --jolly-control-bg: var(
115
- --jolly-folder-action-bg,
116
- ${kFallback.folderActionBg}
117
- );
118
- --jolly-control-bg-hover: var(--jolly-folder-action-bg-hover);
119
- --jolly-control-bg-focus: var(--jolly-folder-action-bg-focus);
120
- --jolly-control-bg-active: var(--jolly-folder-action-bg-active);
121
- }
122
-
123
- /*
124
- * The danger variant paints itself from its own tokens, so it has to be
125
- * inverted on its own: a filled red ground, the glyph in the action
126
- * foreground.
127
- */
128
- ::slotted(jolly-button[slot="actions"][variant="danger"]) {
129
- --jolly-danger: var(
130
- --jolly-folder-action-danger-fg,
131
- ${kFallback.folderActionDangerFg}
132
- );
133
- --jolly-invalid-bg: var(
134
- --jolly-folder-action-danger-bg,
135
- ${kFallback.folderActionDangerBg}
136
- );
137
- --jolly-invalid-bg-hover: var(--jolly-folder-action-danger-bg-hover);
138
- --jolly-invalid-bg-focus: var(--jolly-folder-action-danger-bg-focus);
139
- }
140
-
141
- /*
142
- * The gutter holds the chevron's place in a folder that has none, so a
143
- * header that cannot collapse still lines its label up with its neighbours.
144
- */
145
- .toggle .chevron,
146
- .title .gutter {
147
- flex: 0 0 auto;
148
- width: 10px;
149
- height: 10px;
150
- }
151
-
152
- .toggle .chevron {
153
- color: var(--jolly-text-muted, ${kFallback.text});
154
- transform-origin: center;
155
- transition: transform var(--jolly-duration-fast, 100ms) var(--jolly-easing, ease);
156
- }
157
-
158
- :host([open]) .toggle .chevron {
159
- transform: rotate(90deg);
160
- }
161
-
162
- .grip {
163
- position: relative;
164
- z-index: 1;
165
- display: none;
166
- width: var(--jolly-control-height, 20px);
167
- height: var(--jolly-control-height, 20px);
168
- padding: 0;
169
- border: 0;
170
- background: transparent;
171
- color: var(--jolly-text-muted, ${kFallback.text});
172
- cursor: grab;
173
- }
174
-
175
- .grip jolly-icon {
176
- width: 12px;
177
- height: 12px;
178
- }
179
-
180
- :host([reorderable]) .grip {
181
- display: inline-grid;
182
- place-items: center;
183
- }
184
-
185
- .grip {
186
- touch-action: none;
187
- }
188
-
189
- :host([dragging]) {
190
- opacity: 0.4;
191
- }
192
-
193
- button:focus-visible {
194
- outline: none;
195
- background: var(--jolly-control-bg-focus);
196
- }
197
-
198
- .content {
199
- display: none;
200
- flex-direction: column;
201
- gap: var(--jolly-row-gap, 4px);
202
- padding-inline-start: var(
203
- --jolly-folder-indent,
204
- var(--jolly-space-1, 4px)
205
- );
206
- }
207
-
208
- :host([flush]) .content {
209
- padding-inline-start: 0;
210
- }
211
-
212
- /*
213
- * The content takes any height the host is given, so a folder stretched by
214
- * its owner hands that height down to a filling child.
215
- */
216
- :host([open]) .content {
217
- display: flex;
218
- flex: 1 1 auto;
219
- min-height: 0;
220
- }
221
-
222
- @media (forced-colors: active) {
223
- .header::after {
224
- display: none;
225
- }
226
- }
6
+ export const folderStyles = css `
7
+ :host {
8
+ display: flex;
9
+ flex: 0 0 auto;
10
+ flex-direction: column;
11
+ gap: var(--jolly-row-gap, 4px);
12
+ min-width: 0;
13
+ margin-block-end: var(--jolly-folder-gap, 2px);
14
+ color: var(--jolly-text, ${kFallback.text});
15
+ font: inherit;
16
+ }
17
+
18
+ .header {
19
+ position: relative;
20
+ display: flex;
21
+ align-items: center;
22
+ gap: var(--jolly-space-1, 4px);
23
+ min-height: var(--jolly-row-height, 20px);
24
+ overflow: hidden;
25
+ padding-inline: var(--jolly-space-1, 4px);
26
+ border: 0;
27
+ border-radius: var(--jolly-radius-sm, 2px);
28
+ background: var(
29
+ --jolly-folder-header-bg,
30
+ ${kFallback.folderHeaderBg}
31
+ );
32
+ color: inherit;
33
+ font: inherit;
34
+ ${fillTransition}
35
+ }
36
+
37
+ .header::after {
38
+ position: absolute;
39
+ z-index: 0;
40
+ inset-block: 0;
41
+ inset-inline-end: 0;
42
+ width: 46%;
43
+ background: conic-gradient(
44
+ from 90deg,
45
+ currentColor 25%,
46
+ transparent 0 50%,
47
+ currentColor 0 75%,
48
+ transparent 0
49
+ )
50
+ 0 / 8px 8px;
51
+ color: var(--jolly-accent-text, ${kFallback.focusRing});
52
+ content: "";
53
+ opacity: 0.08;
54
+ pointer-events: none;
55
+ -webkit-mask-image: linear-gradient(to right, transparent, black 55%);
56
+ mask-image: linear-gradient(to right, transparent, black 55%);
57
+ transition: opacity var(--jolly-duration-fast, 100ms)
58
+ var(--jolly-easing, ease);
59
+ }
60
+
61
+ .header:hover,
62
+ .header:focus-within {
63
+ background: var(
64
+ --jolly-folder-header-bg-hover,
65
+ ${kFallback.folderHeaderBgHover}
66
+ );
67
+ }
68
+
69
+ .header:hover::after,
70
+ .header:focus-within::after {
71
+ opacity: 0.14;
72
+ }
73
+
74
+ .toggle,
75
+ .title {
76
+ position: relative;
77
+ z-index: 1;
78
+ display: flex;
79
+ align-items: center;
80
+ flex: 1 1 auto;
81
+ align-self: stretch;
82
+ min-width: 0;
83
+ gap: var(--jolly-space-1, 4px);
84
+ padding: 0;
85
+ border: 0;
86
+ background: transparent;
87
+ color: inherit;
88
+ font: inherit;
89
+ text-align: start;
90
+ }
91
+
92
+ .toggle {
93
+ cursor: pointer;
94
+ }
95
+
96
+ .toggle .label,
97
+ .title .label {
98
+ min-width: 0;
99
+ ${truncate}
100
+ }
101
+
102
+ ::slotted([slot="actions"]) {
103
+ position: relative;
104
+ z-index: 1;
105
+ flex: 0 0 auto;
106
+ margin-block: var(--jolly-space-1, 4px);
107
+ }
108
+
109
+ ::slotted(jolly-button[slot="actions"]) {
110
+ --jolly-text: var(
111
+ --jolly-folder-action-fg,
112
+ ${kFallback.folderActionFg}
113
+ );
114
+ --jolly-control-bg: var(
115
+ --jolly-folder-action-bg,
116
+ ${kFallback.folderActionBg}
117
+ );
118
+ --jolly-control-bg-hover: var(--jolly-folder-action-bg-hover);
119
+ --jolly-control-bg-focus: var(--jolly-folder-action-bg-focus);
120
+ --jolly-control-bg-active: var(--jolly-folder-action-bg-active);
121
+ }
122
+
123
+ /*
124
+ * The danger variant paints itself from its own tokens, so it has to be
125
+ * inverted on its own: a filled red ground, the glyph in the action
126
+ * foreground.
127
+ */
128
+ ::slotted(jolly-button[slot="actions"][variant="danger"]) {
129
+ --jolly-danger: var(
130
+ --jolly-folder-action-danger-fg,
131
+ ${kFallback.folderActionDangerFg}
132
+ );
133
+ --jolly-invalid-bg: var(
134
+ --jolly-folder-action-danger-bg,
135
+ ${kFallback.folderActionDangerBg}
136
+ );
137
+ --jolly-invalid-bg-hover: var(--jolly-folder-action-danger-bg-hover);
138
+ --jolly-invalid-bg-focus: var(--jolly-folder-action-danger-bg-focus);
139
+ }
140
+
141
+ /*
142
+ * The gutter holds the chevron's place in a folder that has none, so a
143
+ * header that cannot collapse still lines its label up with its neighbours.
144
+ */
145
+ .toggle .chevron,
146
+ .title .gutter {
147
+ flex: 0 0 auto;
148
+ width: 10px;
149
+ height: 10px;
150
+ }
151
+
152
+ .toggle .chevron {
153
+ color: var(--jolly-text-muted, ${kFallback.text});
154
+ transform-origin: center;
155
+ transition: transform var(--jolly-duration-fast, 100ms) var(--jolly-easing, ease);
156
+ }
157
+
158
+ :host([open]) .toggle .chevron {
159
+ transform: rotate(90deg);
160
+ }
161
+
162
+ .grip {
163
+ position: relative;
164
+ z-index: 1;
165
+ display: none;
166
+ width: var(--jolly-control-height, 20px);
167
+ height: var(--jolly-control-height, 20px);
168
+ padding: 0;
169
+ border: 0;
170
+ background: transparent;
171
+ color: var(--jolly-text-muted, ${kFallback.text});
172
+ cursor: grab;
173
+ }
174
+
175
+ .grip jolly-icon {
176
+ width: 12px;
177
+ height: 12px;
178
+ }
179
+
180
+ :host([reorderable]) .grip {
181
+ display: inline-grid;
182
+ place-items: center;
183
+ }
184
+
185
+ .grip {
186
+ touch-action: none;
187
+ }
188
+
189
+ :host([dragging]) {
190
+ opacity: 0.4;
191
+ }
192
+
193
+ button:focus-visible {
194
+ outline: none;
195
+ background: var(--jolly-control-bg-focus);
196
+ }
197
+
198
+ .content {
199
+ display: none;
200
+ flex-direction: column;
201
+ gap: var(--jolly-row-gap, 4px);
202
+ padding-inline-start: var(
203
+ --jolly-folder-indent,
204
+ var(--jolly-space-1, 4px)
205
+ );
206
+ }
207
+
208
+ :host([flush]) .content {
209
+ padding-inline-start: 0;
210
+ }
211
+
212
+ /*
213
+ * The content takes any height the host is given, so a folder stretched by
214
+ * its owner hands that height down to a filling child.
215
+ */
216
+ :host([open]) .content {
217
+ display: flex;
218
+ flex: 1 1 auto;
219
+ min-height: 0;
220
+ }
221
+
222
+ @media (forced-colors: active) {
223
+ .header::after {
224
+ display: none;
225
+ }
226
+ }
227
227
  `;
228
228
  //# sourceMappingURL=Folder.styles.js.map
@@ -113,62 +113,62 @@ let PaneElement = class PaneElement extends LitElement {
113
113
  this._hasActions ||
114
114
  this.collapsible ||
115
115
  this.movable;
116
- return html `
116
+ return html `
117
117
  ${showHeader
118
- ? html `
119
- <header
120
- class="header"
121
- part="header"
122
- @pointerdown=${this.#onHeaderPointerDown}
123
- >
118
+ ? html `
119
+ <header
120
+ class="header"
121
+ part="header"
122
+ @pointerdown=${this.#onHeaderPointerDown}
123
+ >
124
124
  ${this.collapsible
125
- ? html `
126
- <button
127
- class="fold"
128
- type="button"
129
- aria-expanded=${String(!this.collapsed)}
130
- aria-label=${`Fold ${this.heading || "pane"}`}
131
- @click=${this.#toggleCollapsed}
132
- ><jolly-icon
133
- class="chevron"
134
- name="chevron"
135
- aria-hidden="true"
136
- ></jolly-icon></button>
125
+ ? html `
126
+ <button
127
+ class="fold"
128
+ type="button"
129
+ aria-expanded=${String(!this.collapsed)}
130
+ aria-label=${`Fold ${this.heading || "pane"}`}
131
+ @click=${this.#toggleCollapsed}
132
+ ><jolly-icon
133
+ class="chevron"
134
+ name="chevron"
135
+ aria-hidden="true"
136
+ ></jolly-icon></button>
137
137
  `
138
- : nothing}
139
- <span class="title" part="title">${this.heading}</span>
140
- <span class="actions" part="actions">
141
- <slot name="actions" @slotchange=${this.#onActionsChange}></slot>
142
- </span>
138
+ : nothing}
139
+ <span class="title" part="title">${this.heading}</span>
140
+ <span class="actions" part="actions">
141
+ <slot name="actions" @slotchange=${this.#onActionsChange}></slot>
142
+ </span>
143
143
  ${this.movable
144
- ? html `
145
- <button
146
- class="grip"
147
- type="button"
148
- aria-label=${`Move ${this.heading || "pane"}`}
149
- aria-pressed=${String(this._grabbed)}
150
- @pointerdown=${this.#onGripPointerDown}
151
- @keydown=${this.#onGripKeyDown}
152
- ><jolly-icon name="drag" aria-hidden="true"></jolly-icon></button>
144
+ ? html `
145
+ <button
146
+ class="grip"
147
+ type="button"
148
+ aria-label=${`Move ${this.heading || "pane"}`}
149
+ aria-pressed=${String(this._grabbed)}
150
+ @pointerdown=${this.#onGripPointerDown}
151
+ @keydown=${this.#onGripKeyDown}
152
+ ><jolly-icon name="drag" aria-hidden="true"></jolly-icon></button>
153
153
  `
154
- : nothing}
155
- </header>
154
+ : nothing}
155
+ </header>
156
156
  `
157
- : html `
158
- <slot
159
- name="actions"
160
- hidden
161
- @slotchange=${this.#onActionsChange}
162
- ></slot>
163
- `}
164
- <div class="content" part="content">
165
- <slot
166
- @slotchange=${this.#folders.onContentChange}
167
- @jolly-folder-reorder=${this.#folders.onReorderCommand}
168
- @jolly-folder-drag=${this.#folders.onFolderDrag}
169
- ></slot>
170
- </div>
171
- <span class="live-region" aria-live="polite">${this._announcement}</span>
157
+ : html `
158
+ <slot
159
+ name="actions"
160
+ hidden
161
+ @slotchange=${this.#onActionsChange}
162
+ ></slot>
163
+ `}
164
+ <div class="content" part="content">
165
+ <slot
166
+ @slotchange=${this.#folders.onContentChange}
167
+ @jolly-folder-reorder=${this.#folders.onReorderCommand}
168
+ @jolly-folder-drag=${this.#folders.onFolderDrag}
169
+ ></slot>
170
+ </div>
171
+ <span class="live-region" aria-live="polite">${this._announcement}</span>
172
172
  `;
173
173
  }
174
174
  /**