@kouji-ui/components 0.9.1 → 0.9.3

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 (73) hide show
  1. package/fesm2022/kouji-ui-components.mjs +137 -65
  2. package/fesm2022/kouji-ui-components.mjs.map +1 -1
  3. package/package.json +1 -1
  4. package/src/accordion/accordion.css +68 -0
  5. package/src/action-sheet/action-sheet.css +79 -0
  6. package/src/alert/alert.css +133 -0
  7. package/src/avatar/avatar.css +93 -0
  8. package/src/badge/badge.css +59 -0
  9. package/src/breadcrumb/breadcrumb.css +145 -0
  10. package/src/button/button.css +295 -0
  11. package/src/button-group/button-group.css +114 -0
  12. package/src/calendar/calendar.css +129 -0
  13. package/src/card/card.css +120 -0
  14. package/src/carousel/carousel.css +181 -0
  15. package/src/cascade-select/cascade-select.css +120 -0
  16. package/src/chart/chart.css +26 -0
  17. package/src/chat/chat-ai.css +352 -0
  18. package/src/chat/chat.css +231 -0
  19. package/src/checkbox/checkbox.css +74 -0
  20. package/src/color-picker/color-picker.css +183 -0
  21. package/src/combobox/combobox.css +101 -0
  22. package/src/command-palette/command-palette.css +234 -0
  23. package/src/confirm-popup/confirm-popup.css +47 -0
  24. package/src/date-picker/date-picker.css +61 -0
  25. package/src/date-range-presets/date-range-presets.css +49 -0
  26. package/src/datetime-picker/datetime-picker.css +84 -0
  27. package/src/dialog/dialog.css +56 -0
  28. package/src/direction-toggle/direction-toggle.css +55 -0
  29. package/src/divider/divider.css +93 -0
  30. package/src/drawer/drawer.css +130 -0
  31. package/src/dropdown-menu/dropdown-menu.css +108 -0
  32. package/src/editor/editor.css +140 -0
  33. package/src/empty-state/empty-state.css +114 -0
  34. package/src/field/field.css +148 -0
  35. package/src/file-upload/file-upload.css +207 -0
  36. package/src/form/form.css +63 -0
  37. package/src/input/input.css +70 -0
  38. package/src/input-group/input-group.css +125 -0
  39. package/src/input-mask/input-mask.css +39 -0
  40. package/src/input-otp/input-otp.css +87 -0
  41. package/src/kbd/kbd.css +67 -0
  42. package/src/link/link.css +104 -0
  43. package/src/list/list.css +166 -0
  44. package/src/menubar/menubar.css +62 -0
  45. package/src/number-input/number-input.css +115 -0
  46. package/src/overflow/overflow.css +43 -0
  47. package/src/overlay/overlay.css +45 -0
  48. package/src/overlay-badge/overlay-badge.css +118 -0
  49. package/src/pagination/pagination.css +146 -0
  50. package/src/password-input/password-input.css +155 -0
  51. package/src/popover/popover.css +71 -0
  52. package/src/progress-bar/progress-bar.css +113 -0
  53. package/src/radio/radio.css +58 -0
  54. package/src/rich-text/rich-text-editor.css +351 -0
  55. package/src/select/select.css +91 -0
  56. package/src/sheet/sheet.css +121 -0
  57. package/src/skeleton/skeleton.css +111 -0
  58. package/src/skip-link/skip-link.css +58 -0
  59. package/src/slider/slider.css +172 -0
  60. package/src/speed-dial/speed-dial.css +137 -0
  61. package/src/spinner/spinner.css +161 -0
  62. package/src/stepper/stepper.css +147 -0
  63. package/src/table/table-filters/filters.css +53 -0
  64. package/src/table/table.css +509 -0
  65. package/src/tabs/tabs.css +162 -0
  66. package/src/tag/tag.css +183 -0
  67. package/src/textarea/textarea.css +117 -0
  68. package/src/time-picker/time-picker.css +126 -0
  69. package/src/toast/toast.css +115 -0
  70. package/src/toggle/toggle.css +123 -0
  71. package/src/tooltip/tooltip.css +61 -0
  72. package/src/tree-select/tree-select.css +220 -0
  73. package/types/kouji-ui-components.d.ts +17 -1
@@ -0,0 +1,123 @@
1
+ @layer kj.component {
2
+ .kj-toggle {
3
+ --kj-toggle-bg: var(--kj-bg-surface);
4
+ --kj-toggle-bg-pressed: var(--kj-bg-primary);
5
+ --kj-toggle-fg: var(--kj-fg-default);
6
+ --kj-toggle-fg-pressed: var(--kj-fg-on-primary);
7
+ --kj-toggle-radius: var(--kj-radius-field);
8
+ --kj-toggle-padding-x: var(--kj-space-md);
9
+ --kj-toggle-padding-y: var(--kj-space-sm);
10
+ --kj-toggle-font-size: var(--kj-text-sm);
11
+
12
+ display: inline-flex;
13
+ align-items: center;
14
+ gap: var(--kj-space-sm);
15
+ background: var(--kj-toggle-bg);
16
+ color: var(--kj-toggle-fg);
17
+ border: var(--kj-border) solid transparent;
18
+ border-radius: var(--kj-toggle-radius);
19
+ padding: var(--kj-toggle-padding-y) var(--kj-toggle-padding-x);
20
+ font: var(--kj-toggle-font-size) / 1.2 var(--kj-font-sans);
21
+ cursor: pointer;
22
+ transition: var(--kj-transition);
23
+ }
24
+
25
+ .kj-toggle[data-pressed] {
26
+ background: var(--kj-toggle-bg-pressed);
27
+ color: var(--kj-toggle-fg-pressed);
28
+ }
29
+
30
+ .kj-toggle[data-size="sm"] {
31
+ --kj-toggle-padding-x: var(--kj-space-sm);
32
+ --kj-toggle-padding-y: 0.25rem;
33
+ --kj-toggle-font-size: 0.8125rem;
34
+ }
35
+ .kj-toggle[data-size="lg"] {
36
+ --kj-toggle-padding-x: var(--kj-space-lg);
37
+ --kj-toggle-padding-y: 0.625rem;
38
+ --kj-toggle-font-size: 1rem;
39
+ }
40
+
41
+ .kj-toggle:hover { background: color-mix(in oklab, var(--kj-toggle-bg) 88%, black); }
42
+ .kj-toggle:focus-visible { outline: 2px solid var(--kj-bg-primary); outline-offset: 2px; }
43
+ .kj-toggle[aria-disabled="true"] { opacity: 0.45; cursor: not-allowed; pointer-events: none; }
44
+
45
+ /* ── Switch appearance — track + thumb sliding switch ────────────
46
+ Matches design-revamp/kouji-ui/project/app.css `.toggle` block
47
+ (lines 447–471): 44×24 rounded track, 18×18 thumb at top:2 left:2,
48
+ translateX(20px) on pressed. Tokenised throughout (no hex). */
49
+ .kj-toggle--switch {
50
+ --kj-switch-w: 44px;
51
+ --kj-switch-h: 24px;
52
+ --kj-switch-thumb: 18px;
53
+ --kj-switch-pad: 2px;
54
+
55
+ background: transparent;
56
+ border: 0;
57
+ padding: 0;
58
+ display: inline-flex;
59
+ align-items: center;
60
+ gap: 10px;
61
+ font-family: var(--kj-font-sans);
62
+ font-size: var(--kj-text-sm);
63
+ color: var(--kj-fg-default);
64
+ }
65
+ .kj-toggle--switch:hover { background: transparent; }
66
+ .kj-toggle--switch:focus-visible { outline: none; }
67
+ .kj-toggle--switch:focus-visible .kj-toggle__track {
68
+ outline: 2px solid var(--kj-bg-primary);
69
+ outline-offset: 2px;
70
+ }
71
+
72
+ /* Track + thumb corner geometry follows the theme. kouji (radius 0)
73
+ renders a square track + square thumb; sakura/dune (large radii)
74
+ render fully pill; everyone in between scales. Falls back to the
75
+ pill-shape (radius = track height) when --kj-radius-selector
76
+ resolves to 0 only on themes where that's the brand decision. */
77
+ .kj-toggle--switch {
78
+ --kj-switch-track-radius: var(--kj-radius-selector, var(--kj-switch-h));
79
+ --kj-switch-thumb-radius: calc(var(--kj-switch-track-radius) - var(--kj-switch-pad));
80
+ }
81
+
82
+ .kj-toggle__track {
83
+ width: var(--kj-switch-w);
84
+ height: var(--kj-switch-h);
85
+ border-radius: var(--kj-switch-track-radius);
86
+ background-color: var(--kj-bg-surface);
87
+ border: var(--kj-border) solid var(--kj-border-default);
88
+ position: relative;
89
+ flex-shrink: 0;
90
+ transition: background-color 0.25s cubic-bezier(.34, 1.56, .64, 1);
91
+ }
92
+
93
+ .kj-toggle__thumb {
94
+ position: absolute;
95
+ top: var(--kj-switch-pad);
96
+ left: var(--kj-switch-pad);
97
+ width: var(--kj-switch-thumb);
98
+ height: var(--kj-switch-thumb);
99
+ /* Mirror the track's radius so square themes stay square, soft themes
100
+ stay round. `max(0, ...)` keeps the result non-negative on kouji
101
+ (radius 0). */
102
+ border-radius: max(0px, var(--kj-switch-thumb-radius));
103
+ background-color: var(--kj-fg-default);
104
+ transition: transform 0.25s cubic-bezier(.34, 1.56, .64, 1),
105
+ background-color 0.25s cubic-bezier(.34, 1.56, .64, 1);
106
+ }
107
+
108
+ .kj-toggle--switch[aria-pressed="true"] .kj-toggle__track,
109
+ .kj-toggle--switch[data-pressed] .kj-toggle__track {
110
+ background-color: var(--kj-bg-primary);
111
+ border-color: var(--kj-bg-primary);
112
+ }
113
+ .kj-toggle--switch[aria-pressed="true"] .kj-toggle__thumb,
114
+ .kj-toggle--switch[data-pressed] .kj-toggle__thumb {
115
+ transform: translateX(calc(var(--kj-switch-w) - var(--kj-switch-h)));
116
+ background-color: var(--kj-fg-on-primary);
117
+ }
118
+
119
+ @media (prefers-reduced-motion: reduce) {
120
+ .kj-toggle__track,
121
+ .kj-toggle__thumb { transition: none; }
122
+ }
123
+ }
@@ -0,0 +1,61 @@
1
+ @layer kj.component {
2
+ /* The wrapper hosts use display: contents — they don't add a box. */
3
+
4
+ .kj-tooltip-content {
5
+ --kj-tooltip-bg: var(--kj-fg-default);
6
+ --kj-tooltip-fg: var(--kj-bg-body);
7
+ --kj-tooltip-border-color: transparent;
8
+ --kj-tooltip-radius: var(--kj-radius-selector);
9
+ --kj-tooltip-padding-x: var(--kj-space-md);
10
+ --kj-tooltip-padding-y: var(--kj-space-xs);
11
+ --kj-tooltip-font-size: 0.8125rem;
12
+ --kj-tooltip-shadow: var(--kj-shadow-md, 0 4px 12px rgb(0 0 0 / 0.18));
13
+ --kj-tooltip-arrow-size: 6px;
14
+
15
+ /* Layout — the directive applies position: fixed and writes top/left. */
16
+ display: inline-flex;
17
+ align-items: center;
18
+ gap: 0.375rem;
19
+ max-width: min(20rem, calc(100vw - 1rem));
20
+ background: var(--kj-tooltip-bg);
21
+ color: var(--kj-tooltip-fg);
22
+ border: var(--kj-border) solid var(--kj-tooltip-border-color);
23
+ border-radius: var(--kj-tooltip-radius);
24
+ padding: var(--kj-tooltip-padding-y) var(--kj-tooltip-padding-x);
25
+ font: var(--kj-tooltip-font-size) / 1.4 var(--kj-font-sans);
26
+ box-shadow: var(--kj-tooltip-shadow);
27
+ pointer-events: auto;
28
+ z-index: var(--kj-overlay-z, 1000);
29
+ word-wrap: break-word;
30
+ }
31
+
32
+ /* Closed: KjOverlayPanel sets `hidden` when state is closed — keep portaled panel out of layout.
33
+ Load this stylesheet globally when using KjTooltipTrigger + kj-tooltip-content from core
34
+ (see packages/core tooltip finance example; avoid duplicating `[hidden]` in app CSS). */
35
+ /* Must win over any app-level tooltip overrides (e.g. encapsulation + extra classes). */
36
+ .kj-tooltip-content[hidden] {
37
+ display: none !important;
38
+ }
39
+
40
+ /* Arrow positioning relative to the content's resolved data-side. */
41
+ .kj-tooltip-arrow {
42
+ position: absolute;
43
+ width: var(--kj-tooltip-arrow-size);
44
+ height: var(--kj-tooltip-arrow-size);
45
+ background: var(--kj-tooltip-bg);
46
+ transform: rotate(45deg);
47
+ }
48
+
49
+ .kj-tooltip-content[data-side="top"] .kj-tooltip-arrow { bottom: calc(var(--kj-tooltip-arrow-size) / -2); left: 50%; margin-left: calc(var(--kj-tooltip-arrow-size) / -2); }
50
+ .kj-tooltip-content[data-side="bottom"] .kj-tooltip-arrow { top: calc(var(--kj-tooltip-arrow-size) / -2); left: 50%; margin-left: calc(var(--kj-tooltip-arrow-size) / -2); }
51
+ .kj-tooltip-content[data-side="left"] .kj-tooltip-arrow { right: calc(var(--kj-tooltip-arrow-size) / -2); top: 50%; margin-top: calc(var(--kj-tooltip-arrow-size) / -2); }
52
+ .kj-tooltip-content[data-side="right"] .kj-tooltip-arrow { left: calc(var(--kj-tooltip-arrow-size) / -2); top: 50%; margin-top: calc(var(--kj-tooltip-arrow-size) / -2); }
53
+
54
+ @media (prefers-reduced-motion: no-preference) {
55
+ .kj-tooltip-content {
56
+ transition: opacity 120ms ease-out;
57
+ }
58
+ .kj-tooltip-content[data-state="closed"] { opacity: 0; }
59
+ .kj-tooltip-content[data-state="open"] { opacity: 1; }
60
+ }
61
+ }
@@ -0,0 +1,220 @@
1
+ @layer kj.component {
2
+ /* ── Root ──────────────────────────────────────────────────────────── */
3
+ .kj-tree-select {
4
+ position: relative;
5
+ display: inline-block;
6
+ min-width: 14rem;
7
+ }
8
+
9
+ /* ── Trigger ───────────────────────────────────────────────────────── */
10
+ .kj-tree-select-trigger {
11
+ width: 100%;
12
+ min-height: 2.75rem; /* WCAG 2.5.5 — 44px touch target */
13
+ display: inline-flex;
14
+ align-items: center;
15
+ justify-content: space-between;
16
+ gap: var(--kj-space-sm);
17
+ background: var(--kj-bg-body);
18
+ color: var(--kj-fg-default);
19
+ border: var(--kj-border) solid var(--kj-border-default);
20
+ border-radius: var(--kj-radius-field);
21
+ padding: var(--kj-space-sm) var(--kj-space-md);
22
+ font: 0.875rem var(--kj-font-sans);
23
+ cursor: pointer;
24
+ text-align: left;
25
+ }
26
+ .kj-tree-select-trigger:focus-visible {
27
+ outline: 2px solid var(--kj-bg-primary);
28
+ outline-offset: 2px;
29
+ }
30
+ .kj-tree-select[data-disabled] .kj-tree-select-trigger {
31
+ opacity: 0.45;
32
+ cursor: not-allowed;
33
+ pointer-events: none;
34
+ }
35
+
36
+ .kj-tree-select-trigger-label {
37
+ flex: 1;
38
+ overflow: hidden;
39
+ white-space: nowrap;
40
+ text-overflow: ellipsis;
41
+ }
42
+ /* Placeholder styling — when nothing is selected the label matches placeholder color */
43
+ .kj-tree-select[data-empty] .kj-tree-select-trigger-label,
44
+ .kj-tree-select:not([data-has-value]) .kj-tree-select-trigger-label {
45
+ color: color-mix(in oklab, var(--kj-fg-default) 55%, transparent);
46
+ }
47
+
48
+ .kj-tree-select-caret {
49
+ flex-shrink: 0;
50
+ color: color-mix(in oklab, var(--kj-fg-default) 60%, transparent);
51
+ font-size: 0.75rem;
52
+ transition: transform var(--kj-transition, 150ms ease);
53
+ }
54
+ .kj-tree-select[data-open] .kj-tree-select-caret {
55
+ transform: rotate(180deg);
56
+ }
57
+
58
+ /* ── Panel ─────────────────────────────────────────────────────────── */
59
+ .kj-tree-select-panel {
60
+ box-sizing: border-box;
61
+ min-width: 14rem;
62
+ width: max-content;
63
+ background: var(--kj-bg-elevated);
64
+ border: var(--kj-border) solid var(--kj-border-default);
65
+ border-radius: var(--kj-radius-field);
66
+ box-shadow: var(--kj-shadow-md, 0 8px 24px rgb(0 0 0 / 0.12));
67
+ padding: 4px;
68
+ max-height: 18rem;
69
+ overflow: auto;
70
+ z-index: var(--kj-overlay-z, 100);
71
+ }
72
+ .kj-tree-select-panel[hidden] {
73
+ display: none;
74
+ }
75
+
76
+ .kj-tree-select-empty {
77
+ padding: var(--kj-space-sm) var(--kj-space-md);
78
+ color: color-mix(in oklab, var(--kj-fg-default) 55%, transparent);
79
+ font: 0.875rem var(--kj-font-sans);
80
+ }
81
+
82
+ /* ── Node row ──────────────────────────────────────────────────────── */
83
+ .kj-tree-select-node {
84
+ display: flex;
85
+ align-items: center;
86
+ gap: var(--kj-space-xs);
87
+ border-radius: var(--kj-radius-selector);
88
+ cursor: pointer;
89
+ color: var(--kj-fg-default);
90
+ font: 0.875rem var(--kj-font-sans);
91
+ min-height: 2.25rem; /* WCAG 2.5.5 — 36px is acceptable within a scrollable list */
92
+ outline: none;
93
+ /* padding-inline-start is set via inline style per-level */
94
+ padding-block: var(--kj-space-xs);
95
+ padding-inline-end: var(--kj-space-md);
96
+ }
97
+ .kj-tree-select-node:hover {
98
+ background: var(--kj-bg-surface);
99
+ }
100
+ .kj-tree-select-node:focus-visible {
101
+ outline: 2px solid var(--kj-bg-primary);
102
+ outline-offset: -2px;
103
+ background: var(--kj-bg-surface);
104
+ }
105
+ .kj-tree-select-node[data-selected] {
106
+ background: color-mix(in oklab, var(--kj-bg-primary) 12%, transparent);
107
+ color: var(--kj-fg-primary);
108
+ }
109
+ .kj-tree-select-node[data-selected]:hover {
110
+ background: color-mix(in oklab, var(--kj-bg-primary) 18%, transparent);
111
+ }
112
+ .kj-tree-select-node[aria-disabled='true'] {
113
+ opacity: 0.45;
114
+ cursor: not-allowed;
115
+ pointer-events: none;
116
+ }
117
+
118
+ /* Collapsed children are hidden via [hidden] attribute */
119
+ .kj-tree-select-node[hidden] {
120
+ display: none;
121
+ }
122
+
123
+ /* ── Toggle button ─────────────────────────────────────────────────── */
124
+ .kj-tree-select-toggle {
125
+ flex-shrink: 0;
126
+ width: 1.25rem;
127
+ height: 1.25rem;
128
+ display: inline-flex;
129
+ align-items: center;
130
+ justify-content: center;
131
+ background: transparent;
132
+ border: 0;
133
+ padding: 0;
134
+ cursor: pointer;
135
+ color: color-mix(in oklab, var(--kj-fg-default) 60%, transparent);
136
+ border-radius: var(--kj-radius-selector);
137
+ }
138
+ .kj-tree-select-toggle:hover {
139
+ background: color-mix(in oklab, var(--kj-fg-default) 10%, transparent);
140
+ }
141
+
142
+ .kj-tree-select-toggle-icon {
143
+ display: inline-block;
144
+ width: 0;
145
+ height: 0;
146
+ border-style: solid;
147
+ /* Collapsed: right-pointing triangle */
148
+ border-width: 4px 0 4px 7px;
149
+ border-color: transparent transparent transparent currentColor;
150
+ transition: transform var(--kj-transition, 150ms ease);
151
+ }
152
+ .kj-tree-select-node[data-expanded='true'] .kj-tree-select-toggle-icon {
153
+ /* Expanded: downward triangle */
154
+ transform: rotate(90deg);
155
+ }
156
+
157
+ /* Indent spacer for leaf nodes (keeps labels aligned with branch labels) */
158
+ .kj-tree-select-indent {
159
+ flex-shrink: 0;
160
+ width: 1.25rem;
161
+ height: 1.25rem;
162
+ display: inline-block;
163
+ }
164
+
165
+ .kj-tree-select-label {
166
+ flex: 1;
167
+ overflow: hidden;
168
+ white-space: nowrap;
169
+ text-overflow: ellipsis;
170
+ }
171
+
172
+ /* ── Checkbox (multi mode — tri-state via aria-checked) ─────────────── */
173
+ .kj-tree-select-checkbox {
174
+ flex-shrink: 0;
175
+ width: 1rem;
176
+ height: 1rem;
177
+ border: var(--kj-border) solid var(--kj-border-default);
178
+ border-radius: var(--kj-radius-selector);
179
+ display: inline-flex;
180
+ align-items: center;
181
+ justify-content: center;
182
+ font-size: 0.75rem;
183
+ line-height: 1;
184
+ /* Visual breathing room between the checkbox and the label so the
185
+ glyph never butts up against the text. The container's `gap`
186
+ handles the toggle ↔ checkbox spacing; this rule owns checkbox ↔
187
+ label specifically. */
188
+ margin-inline-end: var(--kj-space-sm);
189
+ }
190
+ /* Checked (cascade: all leaf descendants selected, or this is a
191
+ selected leaf). */
192
+ .kj-tree-select-node[aria-checked='true'] .kj-tree-select-checkbox {
193
+ background: var(--kj-bg-primary);
194
+ border-color: var(--kj-bg-primary);
195
+ color: var(--kj-fg-on-primary);
196
+ }
197
+ .kj-tree-select-node[aria-checked='true'] .kj-tree-select-checkbox::before {
198
+ content: '✓';
199
+ }
200
+ /* Indeterminate (cascade: some — but not all — leaf descendants
201
+ selected). Renders a dash glyph and keeps the primary fill so
202
+ screen-reader users hearing `aria-checked="mixed"` see the same
203
+ state visually. */
204
+ .kj-tree-select-node[aria-checked='mixed'] .kj-tree-select-checkbox {
205
+ background: var(--kj-bg-primary);
206
+ border-color: var(--kj-bg-primary);
207
+ color: var(--kj-fg-on-primary);
208
+ }
209
+ .kj-tree-select-node[aria-checked='mixed'] .kj-tree-select-checkbox::before {
210
+ content: '−'; /* U+2212 minus, not a hyphen */
211
+ }
212
+ /* Row highlight for fully checked branches/leaves in cascade mode. */
213
+ .kj-tree-select-node[aria-checked='true'] {
214
+ background: color-mix(in oklab, var(--kj-bg-primary) 12%, transparent);
215
+ color: var(--kj-fg-primary);
216
+ }
217
+ .kj-tree-select-node[aria-checked='true']:hover {
218
+ background: color-mix(in oklab, var(--kj-bg-primary) 18%, transparent);
219
+ }
220
+ }
@@ -8657,7 +8657,7 @@ declare class KjTimePickerComponent {
8657
8657
  * @doc-related dialog,alert,spinner
8658
8658
  *
8659
8659
  * @doc-css-var
8660
- * --kj-toast-z-index — Stack level for the viewport. Default 1000; raise above app overlays.
8660
+ * --kj-toast-z-index — Stack level for the viewport. Default 2000 above the overlay stack (dialogs, palettes, popovers start at 1000), so toasts always show on top.
8661
8661
  * --kj-toast-gap — Vertical gap between stacked toasts in both collapsed and expanded states.
8662
8662
  *
8663
8663
  * @doc-category Library/Overlay
@@ -9097,13 +9097,29 @@ declare class KjCommandPaletteComponent {
9097
9097
  readonly kjAutoCloseOnActivate: _angular_core.InputSignalWithTransform<boolean, unknown>;
9098
9098
  protected readonly itemTpl: _angular_core.Signal<KjCommandPaletteItemTemplate<any> | undefined>;
9099
9099
  protected readonly customFooter: _angular_core.Signal<KjCommandPaletteFooter | undefined>;
9100
+ private readonly shell;
9101
+ private readonly dialog;
9102
+ private readonly host;
9100
9103
  private readonly destroyRef;
9101
9104
  private readonly platformId;
9102
9105
  /** The composed headless palette (host directive) — owns query + active state. */
9103
9106
  private readonly palette;
9107
+ private readonly stack;
9108
+ private readonly stackId;
9109
+ private stackHandle;
9110
+ private wrapper;
9104
9111
  constructor();
9105
9112
  /** Programmatically close the palette. */
9106
9113
  close(): void;
9114
+ /**
9115
+ * Escape from inside the dialog. Only closes when the palette is the
9116
+ * topmost overlay — an Escape meant for a select or popover opened from
9117
+ * inside the palette is routed to that overlay by `KjOverlayStack`, and
9118
+ * must not also dismiss the palette underneath it.
9119
+ */
9120
+ protected onEscape(): void;
9121
+ private portalIn;
9122
+ private portalOut;
9107
9123
  /** Programmatically open the palette. */
9108
9124
  open(): void;
9109
9125
  protected onActivate(): void;