@kushagradhawan/kookie-ui 0.1.49 → 0.1.51

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 (103) hide show
  1. package/components.css +880 -243
  2. package/dist/cjs/components/_internal/shell-bottom.d.ts +31 -5
  3. package/dist/cjs/components/_internal/shell-bottom.d.ts.map +1 -1
  4. package/dist/cjs/components/_internal/shell-bottom.js +1 -1
  5. package/dist/cjs/components/_internal/shell-bottom.js.map +3 -3
  6. package/dist/cjs/components/_internal/shell-handles.d.ts.map +1 -1
  7. package/dist/cjs/components/_internal/shell-handles.js +1 -1
  8. package/dist/cjs/components/_internal/shell-handles.js.map +3 -3
  9. package/dist/cjs/components/_internal/shell-inspector.d.ts +23 -5
  10. package/dist/cjs/components/_internal/shell-inspector.d.ts.map +1 -1
  11. package/dist/cjs/components/_internal/shell-inspector.js +1 -1
  12. package/dist/cjs/components/_internal/shell-inspector.js.map +3 -3
  13. package/dist/cjs/components/_internal/shell-sidebar.d.ts +24 -6
  14. package/dist/cjs/components/_internal/shell-sidebar.d.ts.map +1 -1
  15. package/dist/cjs/components/_internal/shell-sidebar.js +1 -1
  16. package/dist/cjs/components/_internal/shell-sidebar.js.map +3 -3
  17. package/dist/cjs/components/chatbar.d.ts +9 -2
  18. package/dist/cjs/components/chatbar.d.ts.map +1 -1
  19. package/dist/cjs/components/chatbar.js +1 -1
  20. package/dist/cjs/components/chatbar.js.map +3 -3
  21. package/dist/cjs/components/shell.context.d.ts +88 -0
  22. package/dist/cjs/components/shell.context.d.ts.map +1 -1
  23. package/dist/cjs/components/shell.context.js +1 -1
  24. package/dist/cjs/components/shell.context.js.map +3 -3
  25. package/dist/cjs/components/shell.d.ts +51 -13
  26. package/dist/cjs/components/shell.d.ts.map +1 -1
  27. package/dist/cjs/components/shell.hooks.d.ts +7 -1
  28. package/dist/cjs/components/shell.hooks.d.ts.map +1 -1
  29. package/dist/cjs/components/shell.hooks.js +1 -1
  30. package/dist/cjs/components/shell.hooks.js.map +3 -3
  31. package/dist/cjs/components/shell.js +1 -1
  32. package/dist/cjs/components/shell.js.map +3 -3
  33. package/dist/cjs/components/shell.types.d.ts +1 -0
  34. package/dist/cjs/components/shell.types.d.ts.map +1 -1
  35. package/dist/cjs/components/shell.types.js +1 -1
  36. package/dist/cjs/components/shell.types.js.map +2 -2
  37. package/dist/cjs/components/sidebar.d.ts +7 -1
  38. package/dist/cjs/components/sidebar.d.ts.map +1 -1
  39. package/dist/cjs/components/sidebar.js +1 -1
  40. package/dist/cjs/components/sidebar.js.map +3 -3
  41. package/dist/esm/components/_internal/shell-bottom.d.ts +31 -5
  42. package/dist/esm/components/_internal/shell-bottom.d.ts.map +1 -1
  43. package/dist/esm/components/_internal/shell-bottom.js +1 -1
  44. package/dist/esm/components/_internal/shell-bottom.js.map +3 -3
  45. package/dist/esm/components/_internal/shell-handles.d.ts.map +1 -1
  46. package/dist/esm/components/_internal/shell-handles.js +1 -1
  47. package/dist/esm/components/_internal/shell-handles.js.map +3 -3
  48. package/dist/esm/components/_internal/shell-inspector.d.ts +23 -5
  49. package/dist/esm/components/_internal/shell-inspector.d.ts.map +1 -1
  50. package/dist/esm/components/_internal/shell-inspector.js +1 -1
  51. package/dist/esm/components/_internal/shell-inspector.js.map +3 -3
  52. package/dist/esm/components/_internal/shell-sidebar.d.ts +24 -6
  53. package/dist/esm/components/_internal/shell-sidebar.d.ts.map +1 -1
  54. package/dist/esm/components/_internal/shell-sidebar.js +1 -1
  55. package/dist/esm/components/_internal/shell-sidebar.js.map +3 -3
  56. package/dist/esm/components/chatbar.d.ts +9 -2
  57. package/dist/esm/components/chatbar.d.ts.map +1 -1
  58. package/dist/esm/components/chatbar.js +1 -1
  59. package/dist/esm/components/chatbar.js.map +3 -3
  60. package/dist/esm/components/shell.context.d.ts +88 -0
  61. package/dist/esm/components/shell.context.d.ts.map +1 -1
  62. package/dist/esm/components/shell.context.js +1 -1
  63. package/dist/esm/components/shell.context.js.map +3 -3
  64. package/dist/esm/components/shell.d.ts +51 -13
  65. package/dist/esm/components/shell.d.ts.map +1 -1
  66. package/dist/esm/components/shell.hooks.d.ts +7 -1
  67. package/dist/esm/components/shell.hooks.d.ts.map +1 -1
  68. package/dist/esm/components/shell.hooks.js +1 -1
  69. package/dist/esm/components/shell.hooks.js.map +3 -3
  70. package/dist/esm/components/shell.js +1 -1
  71. package/dist/esm/components/shell.js.map +3 -3
  72. package/dist/esm/components/shell.types.d.ts +1 -0
  73. package/dist/esm/components/shell.types.d.ts.map +1 -1
  74. package/dist/esm/components/shell.types.js.map +2 -2
  75. package/dist/esm/components/sidebar.d.ts +7 -1
  76. package/dist/esm/components/sidebar.d.ts.map +1 -1
  77. package/dist/esm/components/sidebar.js +1 -1
  78. package/dist/esm/components/sidebar.js.map +3 -3
  79. package/package.json +14 -3
  80. package/schemas/base-button.json +1 -1
  81. package/schemas/button.json +1 -1
  82. package/schemas/icon-button.json +1 -1
  83. package/schemas/index.json +6 -6
  84. package/schemas/toggle-button.json +1 -1
  85. package/schemas/toggle-icon-button.json +1 -1
  86. package/src/components/_internal/base-menu.css +17 -18
  87. package/src/components/_internal/base-sidebar-menu.css +23 -21
  88. package/src/components/_internal/base-sidebar.css +20 -0
  89. package/src/components/_internal/shell-bottom.tsx +176 -49
  90. package/src/components/_internal/shell-handles.tsx +29 -4
  91. package/src/components/_internal/shell-inspector.tsx +175 -43
  92. package/src/components/_internal/shell-sidebar.tsx +176 -69
  93. package/src/components/chatbar.css +240 -21
  94. package/src/components/chatbar.tsx +246 -290
  95. package/src/components/sheet.css +8 -16
  96. package/src/components/shell.context.tsx +79 -0
  97. package/src/components/shell.css +28 -2
  98. package/src/components/shell.hooks.ts +35 -0
  99. package/src/components/shell.tsx +574 -214
  100. package/src/components/shell.types.ts +2 -0
  101. package/src/components/sidebar.css +233 -33
  102. package/src/components/sidebar.tsx +247 -213
  103. package/styles.css +841 -204
@@ -9,6 +9,8 @@ export type ResponsiveMode = PaneMode | Partial<Record<'initial' | 'xs' | 'sm' |
9
9
 
10
10
  export type ResponsiveSidebarMode = SidebarMode | Partial<Record<'initial' | 'xs' | 'sm' | 'md' | 'lg' | 'xl', SidebarMode>>;
11
11
 
12
+ export type Responsive<T> = T | Partial<Record<'initial' | 'xs' | 'sm' | 'md' | 'lg' | 'xl', T>>;
13
+
12
14
  export type PaneSizePersistence = {
13
15
  load?: () => number | Promise<number | undefined> | undefined;
14
16
  save?: (size: number) => void | Promise<void>;
@@ -19,55 +19,252 @@
19
19
  */
20
20
 
21
21
  /* Rail Layout Styling */
22
- :where(.rt-SidebarContainer.rt-layout-rail .rt-SidebarContent),
23
- .rt-ShellSidebarRail :where(.rt-SidebarContent),
24
- :where(.rt-ShellSidebar[data-state='rail'] .rt-SidebarContent) {
22
+ :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent) {
25
23
  padding: var(--space-2);
26
24
  }
27
25
 
28
- :where(.rt-SidebarContainer.rt-layout-rail .rt-SidebarMenuButton),
29
- .rt-ShellSidebarRail :where(.rt-SidebarMenuButton),
30
- :where(.rt-ShellSidebar[data-state='rail'] .rt-SidebarMenuButton) {
31
- justify-content: center;
26
+ :where(.rt-SidebarContainer[data-presentation='thin'] .rt-BaseMenuViewport) {
27
+ padding: var(--space-2) !important;
28
+ }
29
+
30
+ /* Enforce vertical stack and compact typography for all buttons in thin mode */
31
+ :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent) :where(.rt-SidebarMenuButton, .rt-SidebarMenuSubTrigger) {
32
+ justify-content: center !important;
33
+ align-items: center !important;
34
+ flex-direction: column !important;
35
+ gap: var(--space-1) !important;
36
+ text-align: center !important;
37
+ font-size: var(--font-size-0) !important;
38
+ line-height: var(--line-height-0) !important;
39
+ padding-top: var(--space-2) !important;
40
+ padding-bottom: var(--space-2) !important;
41
+ padding-inline-start: var(--space-1) !important;
42
+ padding-inline-end: var(--space-1) !important;
43
+ }
44
+
45
+ /* Consolidated thin mode size blocks */
46
+ :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent.rt-r-size-1) {
47
+ /* Horizontal padding tokens to free space for text */
48
+ --base-menu-item-padding-left: var(--space-1) !important;
49
+ --base-menu-item-padding-right: var(--space-1) !important;
50
+ /* Unify vertical padding via tokens (used by BaseMenuItem) */
51
+ --base-menu-item-padding-y: var(--space-2) !important;
52
+
53
+ /* Override BaseMenu left padding resets */
54
+ &:where(:not(:has(.rt-BaseMenuCheckboxItem, .rt-BaseMenuRadioItem))) {
55
+ --base-menu-item-padding-left: var(--space-1) !important;
56
+ }
57
+ &:where(:has(.rt-BaseMenuCheckboxItem, .rt-BaseMenuRadioItem)) {
58
+ --base-menu-item-padding-left: var(--space-1) !important;
59
+ }
60
+
61
+ /* Button and subtrigger layout */
62
+ :where(.rt-SidebarMenuButton, .rt-SidebarMenuSubTrigger) {
63
+ justify-content: center;
64
+ align-items: center;
65
+ flex-direction: column;
66
+ gap: var(--space-1);
67
+ text-align: center;
68
+ font-size: var(--font-size-0);
69
+ line-height: var(--line-height-0);
70
+ white-space: nowrap;
71
+ overflow: hidden;
72
+ text-overflow: ellipsis;
73
+ max-width: 100%;
74
+ min-width: 0;
75
+ }
76
+
77
+ /* Icon sizing */
78
+ /* stylelint-disable-next-line selector-max-type */
79
+ :where(.rt-SidebarMenuButton, .rt-SidebarMenuSubTrigger) :where(svg) {
80
+ width: var(--content-icon-size-3);
81
+ height: var(--content-icon-size-3);
82
+ }
83
+ }
84
+
85
+ :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent.rt-r-size-2) {
86
+ --base-menu-item-padding-left: var(--space-1) !important;
87
+ --base-menu-item-padding-right: var(--space-1) !important;
88
+ --base-menu-item-padding-y: var(--space-2) !important;
89
+
90
+ &:where(:not(:has(.rt-BaseMenuCheckboxItem, .rt-BaseMenuRadioItem))) {
91
+ --base-menu-item-padding-left: var(--space-1) !important;
92
+ }
93
+ &:where(:has(.rt-BaseMenuCheckboxItem, .rt-BaseMenuRadioItem)) {
94
+ --base-menu-item-padding-left: var(--space-1) !important;
95
+ }
96
+
97
+ :where(.rt-SidebarMenuButton, .rt-SidebarMenuSubTrigger) {
98
+ justify-content: center;
99
+ align-items: center;
100
+ flex-direction: column;
101
+ gap: var(--space-1);
102
+ text-align: center;
103
+ font-size: var(--font-size-0);
104
+ line-height: var(--line-height-0);
105
+ white-space: nowrap;
106
+ overflow: hidden;
107
+ text-overflow: ellipsis;
108
+ max-width: 100%;
109
+ min-width: 0;
110
+ }
111
+
112
+ /* stylelint-disable-next-line selector-max-type */
113
+ :where(.rt-SidebarMenuButton, .rt-SidebarMenuSubTrigger) :where(svg) {
114
+ width: var(--content-icon-size-4);
115
+ height: var(--content-icon-size-4);
116
+ }
117
+ }
118
+
119
+ :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarContent.rt-r-size-3) {
120
+ --base-menu-item-padding-left: var(--space-1) !important;
121
+ --base-menu-item-padding-right: var(--space-1) !important;
122
+ --base-menu-item-padding-y: var(--space-2) !important;
123
+
124
+ &:where(:not(:has(.rt-BaseMenuCheckboxItem, .rt-BaseMenuRadioItem))) {
125
+ --base-menu-item-padding-left: var(--space-1) !important;
126
+ }
127
+ &:where(:has(.rt-BaseMenuCheckboxItem, .rt-BaseMenuRadioItem)) {
128
+ --base-menu-item-padding-left: var(--space-1) !important;
129
+ }
130
+
131
+ :where(.rt-SidebarMenuButton, .rt-SidebarMenuSubTrigger) {
132
+ justify-content: center;
133
+ align-items: center;
134
+ flex-direction: column;
135
+ gap: var(--space-1);
136
+ text-align: center;
137
+ font-size: var(--font-size-0);
138
+ line-height: var(--line-height-0);
139
+ white-space: nowrap;
140
+ overflow: hidden;
141
+ text-overflow: ellipsis;
142
+ max-width: 100%;
143
+ min-width: 0;
144
+ }
145
+
146
+ /* stylelint-disable-next-line selector-max-type */
147
+ :where(.rt-SidebarMenuButton, .rt-SidebarMenuSubTrigger) :where(svg) {
148
+ width: var(--content-icon-size-5);
149
+ height: var(--content-icon-size-5);
150
+ }
151
+ }
152
+
153
+ /* Ellipsis on root child content when using asChild (e.g., Next.js Link) */
154
+ :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuButton > *) {
155
+ display: flex;
156
+ flex-direction: column;
32
157
  align-items: center;
158
+ white-space: nowrap;
159
+ overflow: hidden;
160
+ text-overflow: ellipsis;
161
+ width: 100%;
162
+ min-width: 0;
163
+ }
164
+
165
+ /* Ensure submenu trigger asChild containers also stack vertically */
166
+ :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuSubTrigger > *) {
167
+ display: flex;
33
168
  flex-direction: column;
34
- gap: var(--space-1);
35
- padding: var(--space-2) var(--space-1);
169
+ align-items: center;
170
+ width: 100%;
171
+ min-width: 0;
172
+ }
173
+
174
+ /* stylelint-disable-next-line selector-max-type */
175
+ :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuButton > * > svg) {
176
+ flex-shrink: 0;
36
177
  }
37
178
 
38
- :where(.rt-SidebarContainer.rt-layout-rail .rt-SidebarMenuBadge),
39
- :where(.rt-SidebarContainer.rt-layout-rail .rt-SidebarMenuShortcut),
40
- .rt-ShellSidebarRail :where(.rt-SidebarMenuBadge),
41
- .rt-ShellSidebarRail :where(.rt-SidebarMenuShortcut),
42
- :where(.rt-ShellSidebar[data-state='rail'] .rt-SidebarMenuBadge),
43
- :where(.rt-ShellSidebar[data-state='rail'] .rt-SidebarMenuShortcut) {
44
- display: none;
179
+ /* Ensure submenu anchors also truncate */
180
+ :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuSubContent .rt-SidebarMenuButton > *) {
181
+ display: flex;
182
+ flex-direction: column;
183
+ align-items: center;
184
+ white-space: nowrap;
185
+ overflow: hidden;
186
+ text-overflow: ellipsis;
187
+ width: 100%;
188
+ min-width: 0;
189
+ }
190
+
191
+ /* Ensure icons remain visible at their token sizes in thin mode */
192
+ /* stylelint-disable-next-line selector-max-type */
193
+ :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuButton) :where(svg) {
194
+ /* svg size is already controlled by tokens; this ensures layout stability */
195
+ display: block;
45
196
  }
46
197
 
47
- :where(.rt-SidebarContainer.rt-layout-rail .rt-SidebarGroupLabel),
48
- .rt-ShellSidebarRail :where(.rt-SidebarGroupLabel),
49
- :where(.rt-ShellSidebar[data-state='rail'] .rt-SidebarGroupLabel) {
198
+ /* Truncate labels inside an explicit label span */
199
+ :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuButton .rt-SidebarMenuLabel) {
50
200
  display: block;
201
+ max-width: 100%;
202
+ min-width: 0;
203
+ overflow: hidden;
204
+ text-overflow: ellipsis;
205
+ white-space: nowrap;
51
206
  text-align: center;
207
+ color: var(--accent-11);
52
208
  font-size: var(--font-size-0);
53
209
  line-height: var(--line-height-0);
54
- color: var(--gray-a9);
55
- font-weight: var(--font-weight-medium);
210
+ }
211
+
212
+ :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuBadge),
213
+ :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuShortcut),
214
+ :where(.rt-SidebarContainer[data-presentation='thin'] .rt-Badge),
215
+ :where(.rt-SidebarContainer[data-presentation='thin'] .rt-Kbd) {
216
+ display: none !important;
217
+ }
218
+
219
+ :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarGroupLabel) {
220
+ display: none !important;
56
221
  }
57
222
 
58
223
  /* Hide submenu chevrons and flatten sublists in rail */
59
- :where(.rt-SidebarContainer.rt-layout-rail .rt-SidebarMenuSubTriggerIcon),
60
- .rt-ShellSidebarRail :where(.rt-SidebarMenuSubTriggerIcon),
61
- :where(.rt-ShellSidebar[data-state='rail'] .rt-SidebarMenuSubTriggerIcon) {
62
- display: none;
224
+ :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuSubTriggerIcon),
225
+ :where(.rt-SidebarContainer[data-presentation='thin'] .rt-BaseMenuSubTriggerIcon) {
226
+ display: none !important;
227
+ }
228
+
229
+ :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuSubList),
230
+ :where(.rt-SidebarContainer[data-presentation='thin'] .rt-BaseMenuSubList) {
231
+ padding-left: 0 !important;
232
+ margin-left: 0 !important;
233
+ border-left: 0 !important;
234
+ border-top: 0 !important;
235
+ border-bottom: 0 !important;
236
+ margin-top: 0 !important;
237
+ margin-bottom: 0 !important;
238
+ }
239
+
240
+ /* Also remove any decorative rule on the submenu list in thin mode */
241
+ :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuSubList::before),
242
+ :where(.rt-SidebarContainer[data-presentation='thin'] .rt-BaseMenuSubList::before) {
243
+ content: none !important;
244
+ display: none !important;
245
+ }
246
+
247
+ /* Ensure the Accordion content wrapper doesn't add indentation */
248
+ :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuSubContent) {
249
+ padding-left: 0 !important;
250
+ margin-left: 0 !important;
251
+ border-left: 0 !important;
252
+ border-top: 1px solid var(--gray-a6) !important;
253
+ border-bottom: 1px solid var(--gray-a6) !important;
254
+ margin-top: var(--space-2) !important;
255
+ margin-bottom: var(--space-2) !important;
256
+ /* background-color: var(--accent-3); */
63
257
  }
64
258
 
65
- :where(.rt-SidebarContainer.rt-layout-rail .rt-SidebarMenuSubList),
66
- .rt-ShellSidebarRail :where(.rt-SidebarMenuSubList),
67
- :where(.rt-ShellSidebar[data-state='rail'] .rt-SidebarMenuSubList) {
68
- padding-left: 0;
69
- border-left: none;
70
- margin-left: 0;
259
+ /* Remove vertical connector in thin mode */
260
+ /* (intentionally no ::before) */
261
+
262
+ /* Ensure submenu buttons also truncate */
263
+ :where(.rt-SidebarContainer[data-presentation='thin'] .rt-SidebarMenuSubContent .rt-SidebarMenuButton) {
264
+ white-space: nowrap;
265
+ overflow: hidden;
266
+ text-overflow: ellipsis;
267
+ max-width: 100%;
71
268
  }
72
269
 
73
270
  /* Panel Layout Styling (default) - inherits existing styles */
@@ -347,7 +544,7 @@
347
544
  line-height: var(--line-height-1);
348
545
  letter-spacing: var(--letter-spacing-1);
349
546
  border-radius: var(--radius-1);
350
- font-weight: var(--font-weight-medium);
547
+ font-weight: var(--font-weight-regular);
351
548
 
352
549
  /* stylelint-disable-next-line selector-max-type */
353
550
  & :where(svg) {
@@ -373,7 +570,7 @@
373
570
  line-height: var(--line-height-2);
374
571
  letter-spacing: var(--letter-spacing-2);
375
572
  border-radius: var(--radius-2);
376
- font-weight: var(--font-weight-medium);
573
+ font-weight: var(--font-weight-regular);
377
574
 
378
575
  /* stylelint-disable-next-line selector-max-type */
379
576
  & :where(svg) {
@@ -482,6 +679,7 @@
482
679
  & :where(.rt-SidebarMenuButton[data-active]) {
483
680
  background-color: var(--accent-9);
484
681
  color: var(--accent-contrast);
682
+ font-weight: var(--font-weight-medium);
485
683
 
486
684
  /* Force all text elements to inherit active color */
487
685
  & :where(.rt-Text) {
@@ -547,6 +745,7 @@
547
745
  & :where(.rt-SidebarMenuButton[data-active]) {
548
746
  background-color: var(--accent-12);
549
747
  color: var(--accent-1);
748
+ font-weight: var(--font-weight-medium);
550
749
 
551
750
  & :where(.rt-Text) {
552
751
  color: inherit !important;
@@ -667,6 +866,7 @@
667
866
  /* Base state: solid accent for solid panels */
668
867
  background-color: var(--accent-3);
669
868
  color: var(--accent-12);
869
+ font-weight: var(--font-weight-medium);
670
870
 
671
871
  /* Theme-level translucent override */
672
872
  :where([data-panel-background='translucent']) & {