@kushagradhawan/kookie-ui 0.1.124 → 0.1.126

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 (64) hide show
  1. package/components.css +93 -0
  2. package/dist/cjs/components/_internal/base-menu.props.d.ts +52 -1
  3. package/dist/cjs/components/_internal/base-menu.props.d.ts.map +1 -1
  4. package/dist/cjs/components/_internal/base-menu.props.js +1 -1
  5. package/dist/cjs/components/_internal/base-menu.props.js.map +3 -3
  6. package/dist/cjs/components/_internal/dropdown-menu-drill-down.d.ts +60 -0
  7. package/dist/cjs/components/_internal/dropdown-menu-drill-down.d.ts.map +1 -0
  8. package/dist/cjs/components/_internal/dropdown-menu-drill-down.js +2 -0
  9. package/dist/cjs/components/_internal/dropdown-menu-drill-down.js.map +7 -0
  10. package/dist/cjs/components/combobox.d.ts.map +1 -1
  11. package/dist/cjs/components/combobox.js +1 -1
  12. package/dist/cjs/components/combobox.js.map +3 -3
  13. package/dist/cjs/components/dropdown-menu.d.ts +28 -7
  14. package/dist/cjs/components/dropdown-menu.d.ts.map +1 -1
  15. package/dist/cjs/components/dropdown-menu.js +1 -1
  16. package/dist/cjs/components/dropdown-menu.js.map +3 -3
  17. package/dist/cjs/components/dropdown-menu.props.d.ts +1 -1
  18. package/dist/cjs/components/dropdown-menu.props.d.ts.map +1 -1
  19. package/dist/cjs/components/dropdown-menu.props.js +1 -1
  20. package/dist/cjs/components/dropdown-menu.props.js.map +2 -2
  21. package/dist/cjs/components/icons.d.ts +2 -1
  22. package/dist/cjs/components/icons.d.ts.map +1 -1
  23. package/dist/cjs/components/icons.js +1 -1
  24. package/dist/cjs/components/icons.js.map +3 -3
  25. package/dist/cjs/components/schemas/shell.schema.d.ts +2 -2
  26. package/dist/esm/components/_internal/base-menu.props.d.ts +52 -1
  27. package/dist/esm/components/_internal/base-menu.props.d.ts.map +1 -1
  28. package/dist/esm/components/_internal/base-menu.props.js +1 -1
  29. package/dist/esm/components/_internal/base-menu.props.js.map +3 -3
  30. package/dist/esm/components/_internal/dropdown-menu-drill-down.d.ts +60 -0
  31. package/dist/esm/components/_internal/dropdown-menu-drill-down.d.ts.map +1 -0
  32. package/dist/esm/components/_internal/dropdown-menu-drill-down.js +2 -0
  33. package/dist/esm/components/_internal/dropdown-menu-drill-down.js.map +7 -0
  34. package/dist/esm/components/combobox.d.ts.map +1 -1
  35. package/dist/esm/components/combobox.js +1 -1
  36. package/dist/esm/components/combobox.js.map +3 -3
  37. package/dist/esm/components/dropdown-menu.d.ts +28 -7
  38. package/dist/esm/components/dropdown-menu.d.ts.map +1 -1
  39. package/dist/esm/components/dropdown-menu.js +1 -1
  40. package/dist/esm/components/dropdown-menu.js.map +3 -3
  41. package/dist/esm/components/dropdown-menu.props.d.ts +1 -1
  42. package/dist/esm/components/dropdown-menu.props.d.ts.map +1 -1
  43. package/dist/esm/components/dropdown-menu.props.js +1 -1
  44. package/dist/esm/components/dropdown-menu.props.js.map +3 -3
  45. package/dist/esm/components/icons.d.ts +2 -1
  46. package/dist/esm/components/icons.d.ts.map +1 -1
  47. package/dist/esm/components/icons.js +1 -1
  48. package/dist/esm/components/icons.js.map +3 -3
  49. package/dist/esm/components/schemas/shell.schema.d.ts +2 -2
  50. package/package.json +1 -1
  51. package/schemas/base-button.json +1 -1
  52. package/schemas/button.json +1 -1
  53. package/schemas/icon-button.json +1 -1
  54. package/schemas/index.json +6 -6
  55. package/schemas/toggle-button.json +1 -1
  56. package/schemas/toggle-icon-button.json +1 -1
  57. package/src/components/_internal/base-menu.props.ts +31 -1
  58. package/src/components/_internal/dropdown-menu-drill-down.tsx +242 -0
  59. package/src/components/combobox.tsx +176 -80
  60. package/src/components/dropdown-menu.css +119 -0
  61. package/src/components/dropdown-menu.props.tsx +2 -0
  62. package/src/components/dropdown-menu.tsx +217 -27
  63. package/src/components/icons.tsx +14 -1
  64. package/styles.css +93 -0
@@ -7,19 +7,28 @@ import { DropdownMenu as DropdownMenuPrimitive, Slot } from 'radix-ui';
7
7
  import { ScrollArea } from './scroll-area.js';
8
8
  import {
9
9
  dropdownMenuContentPropDefs,
10
+ dropdownMenuSubContentPropDefs,
10
11
  dropdownMenuItemPropDefs,
11
12
  dropdownMenuCheckboxItemPropDefs,
12
13
  dropdownMenuRadioItemPropDefs,
13
14
  } from './dropdown-menu.props.js';
14
15
  import { Theme, useThemeContext } from './theme.js';
15
- import { ChevronDownIcon, ThickCheckIcon, ThickChevronRightIcon, ThickDotIcon } from './icons.js';
16
+ import { ChevronDownIcon, ThickCheckIcon, ThickChevronLeftIcon, ThickChevronRightIcon, ThickDotIcon } from './icons.js';
16
17
  import { extractProps } from '../helpers/extract-props.js';
18
+ import {
19
+ DrillDownProvider,
20
+ SubContext,
21
+ useDrillDown,
22
+ useDrillDownOptional,
23
+ useSubContext,
24
+ } from './_internal/dropdown-menu-drill-down.js';
25
+ import type { SubmenuBehavior } from './_internal/dropdown-menu-drill-down.js';
17
26
  import { requireReactElement } from '../helpers/require-react-element.js';
18
27
  import { Kbd } from './kbd.js';
19
28
 
20
29
  import type { IconProps } from './icons.js';
21
30
  import type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';
22
- import type { GetPropDefTypes } from '../props/prop-def.js';
31
+ import type { GetPropDefTypes, Responsive } from '../props/prop-def.js';
23
32
 
24
33
  interface DropdownMenuRootProps
25
34
  extends React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Root> {}
@@ -40,14 +49,52 @@ const DropdownMenuTrigger = React.forwardRef<DropdownMenuTriggerElement, Dropdow
40
49
  );
41
50
  DropdownMenuTrigger.displayName = 'DropdownMenu.Trigger';
42
51
 
43
- type DropdownMenuContentOwnProps = GetPropDefTypes<typeof dropdownMenuContentPropDefs>;
44
- type DropdownMenuContentContextValue = DropdownMenuContentOwnProps;
52
+ /**
53
+ * Internal component that wraps root menu items and handles visibility in drill-down mode.
54
+ * In drill-down mode, this hides when a submenu is active.
55
+ */
56
+ function DrillDownRoot({ children }: { children: React.ReactNode }) {
57
+ const drillDown = useDrillDownOptional();
58
+
59
+ // In cascade mode or when no drill-down context, always show
60
+ if (!drillDown || drillDown.behavior === 'cascade') {
61
+ return <>{children}</>;
62
+ }
63
+
64
+ // In drill-down mode, hide root when a submenu is active
65
+ return (
66
+ <div
67
+ className="rt-DropdownMenuDrillDownRoot"
68
+ data-drill-down-active={drillDown.isRoot ? undefined : true}
69
+ >
70
+ {children}
71
+ </div>
72
+ );
73
+ }
74
+
75
+ type DropdownMenuContentOwnProps = GetPropDefTypes<typeof dropdownMenuContentPropDefs> & {
76
+ /**
77
+ * Controls how submenus behave.
78
+ * - `cascade`: Default cascading behavior where submenus open to the side (portal-based)
79
+ * - `drill-down`: Mobile-friendly behavior where submenus replace the content inline
80
+ * Supports responsive values: `{ initial: 'drill-down', md: 'cascade' }`
81
+ */
82
+ submenuBehavior?: Responsive<SubmenuBehavior>;
83
+ };
84
+ type DropdownMenuContentContextValue = Omit<DropdownMenuContentOwnProps, 'submenuBehavior'>;
45
85
  const DropdownMenuContentContext = React.createContext<DropdownMenuContentContextValue>({});
46
86
  type DropdownMenuContentElement = React.ElementRef<typeof DropdownMenuPrimitive.Content>;
47
87
  interface DropdownMenuContentProps
48
88
  extends ComponentPropsWithout<typeof DropdownMenuPrimitive.Content, RemovedProps>,
49
89
  DropdownMenuContentContextValue {
50
90
  container?: React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Portal>['container'];
91
+ /**
92
+ * Controls how submenus behave.
93
+ * - `cascade`: Default cascading behavior where submenus open to the side (portal-based)
94
+ * - `drill-down`: Mobile-friendly behavior where submenus replace the content inline
95
+ * Supports responsive values: `{ initial: 'drill-down', md: 'cascade' }`
96
+ */
97
+ submenuBehavior?: Responsive<SubmenuBehavior>;
51
98
  }
52
99
  const DropdownMenuContent = React.forwardRef<DropdownMenuContentElement, DropdownMenuContentProps>(
53
100
  (props, forwardedRef) => {
@@ -80,6 +127,7 @@ const DropdownMenuContent = React.forwardRef<DropdownMenuContentElement, Dropdow
80
127
  variant = dropdownMenuContentPropDefs.variant.default,
81
128
  highContrast = dropdownMenuContentPropDefs.highContrast.default,
82
129
  material = memoizedThemeContext.material,
130
+ submenuBehavior,
83
131
  } = props;
84
132
  const {
85
133
  className,
@@ -89,6 +137,7 @@ const DropdownMenuContent = React.forwardRef<DropdownMenuContentElement, Dropdow
89
137
  forceMount,
90
138
  material: _,
91
139
  panelBackground: __,
140
+ submenuBehavior: ___,
92
141
  ...contentProps
93
142
  } = extractProps(props, dropdownMenuContentPropDefs);
94
143
 
@@ -125,7 +174,9 @@ const DropdownMenuContent = React.forwardRef<DropdownMenuContentElement, Dropdow
125
174
  [size, variant, resolvedColor, highContrast, material],
126
175
  )}
127
176
  >
128
- {children}
177
+ <DrillDownProvider submenuBehavior={submenuBehavior}>
178
+ <DrillDownRoot>{children}</DrillDownRoot>
179
+ </DrillDownProvider>
129
180
  </DropdownMenuContentContext.Provider>
130
181
  </div>
131
182
  </ScrollArea>
@@ -298,11 +349,46 @@ const DropdownMenuCheckboxItem = React.forwardRef<
298
349
  });
299
350
  DropdownMenuCheckboxItem.displayName = 'DropdownMenu.CheckboxItem';
300
351
 
352
+ // Generate unique submenu IDs using React 18's useId for SSR safety
353
+ function useSubId() {
354
+ return React.useId();
355
+ }
356
+
301
357
  interface DropdownMenuSubProps
302
- extends React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Sub> {}
303
- const DropdownMenuSub: React.FC<DropdownMenuSubProps> = (props) => (
304
- <DropdownMenuPrimitive.Sub {...props} />
305
- );
358
+ extends React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Sub> {
359
+ /**
360
+ * Label displayed in the back button when using drill-down mode.
361
+ * If not provided, defaults to "Back".
362
+ */
363
+ label?: React.ReactNode;
364
+ }
365
+ const DropdownMenuSub: React.FC<DropdownMenuSubProps> = ({ label = 'Back', ...props }) => {
366
+ const drillDown = useDrillDownOptional();
367
+ const subId = useSubId();
368
+
369
+ // Create context value for SubContent and SubTrigger
370
+ const subContextValue = React.useMemo(
371
+ () => ({ id: subId, label }),
372
+ [subId, label]
373
+ );
374
+
375
+ // In drill-down mode, we don't use Radix's Sub component
376
+ // We just provide the SubContext and render children
377
+ if (drillDown?.behavior === 'drill-down') {
378
+ return (
379
+ <SubContext.Provider value={subContextValue}>
380
+ {props.children}
381
+ </SubContext.Provider>
382
+ );
383
+ }
384
+
385
+ // In cascade mode, use Radix's Sub component normally
386
+ return (
387
+ <SubContext.Provider value={subContextValue}>
388
+ <DropdownMenuPrimitive.Sub {...props} />
389
+ </SubContext.Provider>
390
+ );
391
+ };
306
392
  DropdownMenuSub.displayName = 'DropdownMenu.Sub';
307
393
 
308
394
  type DropdownMenuSubTriggerElement = React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>;
@@ -312,10 +398,53 @@ const DropdownMenuSubTrigger = React.forwardRef<
312
398
  DropdownMenuSubTriggerElement,
313
399
  DropdownMenuSubTriggerProps
314
400
  >((props, forwardedRef) => {
315
- const { className, children, ...subTriggerProps } = props;
401
+ const { className, children, onClick, ...subTriggerProps } = props;
402
+ const drillDown = useDrillDownOptional();
403
+ const subContext = useSubContext();
404
+
405
+ // In drill-down mode, render a button that navigates to the submenu
406
+ if (drillDown?.behavior === 'drill-down' && subContext) {
407
+ const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {
408
+ e.preventDefault();
409
+ drillDown.push(subContext.id);
410
+ (onClick as React.MouseEventHandler<HTMLDivElement> | undefined)?.(e);
411
+ };
412
+
413
+ return (
414
+ <div
415
+ role="menuitem"
416
+ tabIndex={0}
417
+ ref={forwardedRef as React.Ref<HTMLDivElement>}
418
+ onClick={handleClick}
419
+ onKeyDown={(e) => {
420
+ if (e.key === 'Enter' || e.key === ' ') {
421
+ e.preventDefault();
422
+ drillDown.push(subContext.id);
423
+ }
424
+ }}
425
+ className={classNames(
426
+ 'rt-reset',
427
+ 'rt-BaseMenuItem',
428
+ 'rt-BaseMenuSubTrigger',
429
+ 'rt-DropdownMenuItem',
430
+ 'rt-DropdownMenuSubTrigger',
431
+ 'rt-DropdownMenuDrillDownSubTrigger',
432
+ className,
433
+ )}
434
+ >
435
+ {children}
436
+ <div className="rt-BaseMenuShortcut rt-DropdownMenuShortcut">
437
+ <ThickChevronRightIcon className="rt-BaseMenuSubTriggerIcon rt-DropdownMenuSubtriggerIcon" />
438
+ </div>
439
+ </div>
440
+ );
441
+ }
442
+
443
+ // In cascade mode, use Radix's SubTrigger
316
444
  return (
317
445
  <DropdownMenuPrimitive.SubTrigger
318
446
  {...subTriggerProps}
447
+ onClick={onClick as React.MouseEventHandler<HTMLDivElement> | undefined}
319
448
  asChild={false}
320
449
  ref={forwardedRef}
321
450
  className={classNames(
@@ -335,6 +464,56 @@ const DropdownMenuSubTrigger = React.forwardRef<
335
464
  });
336
465
  DropdownMenuSubTrigger.displayName = 'DropdownMenu.SubTrigger';
337
466
 
467
+ // Separator is defined here (before SubContent) because it's used in drill-down mode
468
+ type DropdownMenuSeparatorElement = React.ElementRef<typeof DropdownMenuPrimitive.Separator>;
469
+ interface DropdownMenuSeparatorProps
470
+ extends ComponentPropsWithout<typeof DropdownMenuPrimitive.Separator, RemovedProps> {}
471
+ const DropdownMenuSeparator = React.forwardRef<
472
+ DropdownMenuSeparatorElement,
473
+ DropdownMenuSeparatorProps
474
+ >(({ className, ...props }, forwardedRef) => (
475
+ <DropdownMenuPrimitive.Separator
476
+ {...props}
477
+ asChild={false}
478
+ ref={forwardedRef}
479
+ className={classNames('rt-BaseMenuSeparator', 'rt-DropdownMenuSeparator', className)}
480
+ />
481
+ ));
482
+ DropdownMenuSeparator.displayName = 'DropdownMenu.Separator';
483
+
484
+ /**
485
+ * Internal component for the drill-down back button.
486
+ */
487
+ function DrillDownBackItem({ label }: { label: React.ReactNode }) {
488
+ const drillDown = useDrillDown();
489
+
490
+ return (
491
+ <div
492
+ role="menuitem"
493
+ tabIndex={0}
494
+ onClick={(e) => {
495
+ e.preventDefault();
496
+ drillDown.pop();
497
+ }}
498
+ onKeyDown={(e) => {
499
+ if (e.key === 'Enter' || e.key === ' ') {
500
+ e.preventDefault();
501
+ drillDown.pop();
502
+ }
503
+ }}
504
+ className={classNames(
505
+ 'rt-reset',
506
+ 'rt-BaseMenuItem',
507
+ 'rt-DropdownMenuItem',
508
+ 'rt-DropdownMenuDrillDownBackItem',
509
+ )}
510
+ >
511
+ <ThickChevronLeftIcon className="rt-DropdownMenuDrillDownBackIcon" />
512
+ <span className="rt-DropdownMenuDrillDownBackLabel">{label}</span>
513
+ </div>
514
+ );
515
+ }
516
+
338
517
  type DropdownMenuSubContentElement = React.ElementRef<typeof DropdownMenuPrimitive.SubContent>;
339
518
  interface DropdownMenuSubContentProps
340
519
  extends ComponentPropsWithout<typeof DropdownMenuPrimitive.SubContent, RemovedProps>,
@@ -351,6 +530,8 @@ const DropdownMenuSubContent = React.forwardRef<
351
530
  () => contextValue,
352
531
  [contextValue],
353
532
  );
533
+ const drillDown = useDrillDownOptional();
534
+ const subContext = useSubContext();
354
535
 
355
536
  const {
356
537
  className,
@@ -362,8 +543,32 @@ const DropdownMenuSubContent = React.forwardRef<
362
543
  ...subContentProps
363
544
  } = extractProps(
364
545
  { size, variant, color, highContrast, material, ...props },
365
- dropdownMenuContentPropDefs,
546
+ dropdownMenuSubContentPropDefs,
366
547
  );
548
+
549
+ // In drill-down mode, render inline instead of in a portal
550
+ if (drillDown?.behavior === 'drill-down' && subContext) {
551
+ const isActive = drillDown.isActive(subContext.id);
552
+
553
+ return (
554
+ <div
555
+ ref={forwardedRef as React.Ref<HTMLDivElement>}
556
+ role="menu"
557
+ aria-label={typeof subContext.label === 'string' ? subContext.label : undefined}
558
+ data-drill-down-active={isActive ? true : undefined}
559
+ className={classNames(
560
+ 'rt-DropdownMenuDrillDownPanel',
561
+ className,
562
+ )}
563
+ >
564
+ <DrillDownBackItem label={subContext.label} />
565
+ <DropdownMenuSeparator />
566
+ {children}
567
+ </div>
568
+ );
569
+ }
570
+
571
+ // In cascade mode, use Portal and Radix's SubContent
367
572
  return (
368
573
  <DropdownMenuPrimitive.Portal container={container} forceMount={forceMount}>
369
574
  <Theme asChild>
@@ -399,22 +604,6 @@ const DropdownMenuSubContent = React.forwardRef<
399
604
  });
400
605
  DropdownMenuSubContent.displayName = 'DropdownMenu.SubContent';
401
606
 
402
- type DropdownMenuSeparatorElement = React.ElementRef<typeof DropdownMenuPrimitive.Separator>;
403
- interface DropdownMenuSeparatorProps
404
- extends ComponentPropsWithout<typeof DropdownMenuPrimitive.Separator, RemovedProps> {}
405
- const DropdownMenuSeparator = React.forwardRef<
406
- DropdownMenuSeparatorElement,
407
- DropdownMenuSeparatorProps
408
- >(({ className, ...props }, forwardedRef) => (
409
- <DropdownMenuPrimitive.Separator
410
- {...props}
411
- asChild={false}
412
- ref={forwardedRef}
413
- className={classNames('rt-BaseMenuSeparator', 'rt-DropdownMenuSeparator', className)}
414
- />
415
- ));
416
- DropdownMenuSeparator.displayName = 'DropdownMenu.Separator';
417
-
418
607
  type DropdownMenuTriggerIconElement = React.ElementRef<'svg'>;
419
608
  interface DropdownMenuTriggerIconProps extends IconProps {}
420
609
  const DropdownMenuTriggerIcon = React.forwardRef<
@@ -457,4 +646,5 @@ export type {
457
646
  DropdownMenuSubTriggerProps as SubTriggerProps,
458
647
  DropdownMenuSubContentProps as SubContentProps,
459
648
  DropdownMenuSeparatorProps as SeparatorProps,
649
+ SubmenuBehavior,
460
650
  };
@@ -54,6 +54,19 @@ const ThickChevronRightIcon = React.forwardRef<IconElement, IconProps>((props, f
54
54
  });
55
55
  ThickChevronRightIcon.displayName = 'ThickChevronRightIcon';
56
56
 
57
+ const ThickChevronLeftIcon = React.forwardRef<IconElement, IconProps>((props, forwardedRef) => {
58
+ return (
59
+ <svg width="9" height="9" viewBox="0 0 9 9" fill="currentcolor" xmlns="http://www.w3.org/2000/svg" {...props} ref={forwardedRef}>
60
+ <path
61
+ fillRule="evenodd"
62
+ clipRule="evenodd"
63
+ d="M5.76174 0.201711C5.45892 -0.0809141 4.98433 -0.0645489 4.70171 0.238264L1.20171 3.98826C0.932757 4.27642 0.932757 4.72359 1.20171 5.01174L4.70171 8.76174C4.98433 9.06455 5.45892 9.08092 5.76174 8.79829C6.06455 8.51567 6.08091 8.04108 5.79829 7.73826L2.77591 4.5L5.79829 1.26174C6.08091 0.958928 6.06455 0.484337 5.76174 0.201711Z"
64
+ />
65
+ </svg>
66
+ );
67
+ });
68
+ ThickChevronLeftIcon.displayName = 'ThickChevronLeftIcon';
69
+
57
70
  const ThickDotIcon = React.forwardRef<IconElement, IconProps>((props, forwardedRef) => {
58
71
  return (
59
72
  <svg width="9" height="9" viewBox="0 0 9 9" fill="currentcolor" xmlns="http://www.w3.org/2000/svg" {...props} ref={forwardedRef}>
@@ -63,7 +76,7 @@ const ThickDotIcon = React.forwardRef<IconElement, IconProps>((props, forwardedR
63
76
  });
64
77
  ThickDotIcon.displayName = 'ThickDotIcon';
65
78
 
66
- export { ChevronDownIcon, ThickCheckIcon, ThickChevronRightIcon, ThickDividerHorizontalIcon, ThickDotIcon };
79
+ export { ChevronDownIcon, ThickCheckIcon, ThickChevronLeftIcon, ThickChevronRightIcon, ThickDividerHorizontalIcon, ThickDotIcon };
67
80
  export type { IconProps };
68
81
 
69
82
  // Additional minimal icons
package/styles.css CHANGED
@@ -13680,6 +13680,99 @@
13680
13680
  height: var(--trigger-icon-size-4);
13681
13681
  }
13682
13682
  }
13683
+ .rt-DropdownMenuDrillDownRoot{
13684
+ display: contents;
13685
+ }
13686
+ .rt-DropdownMenuDrillDownRoot:where([data-drill-down-active]) > *{
13687
+ display: none !important;
13688
+ }
13689
+ .rt-DropdownMenuDrillDownRoot:where([data-drill-down-active]) > :where(.rt-DropdownMenuDrillDownPanel){
13690
+ display: contents !important;
13691
+ }
13692
+ .rt-DropdownMenuDrillDownPanel{
13693
+ display: contents;
13694
+ }
13695
+ .rt-DropdownMenuDrillDownPanel:where(:not([data-drill-down-active])) > *{
13696
+ display: none !important;
13697
+ }
13698
+ .rt-DropdownMenuDrillDownPanel:where(:not([data-drill-down-active])) > :where(.rt-DropdownMenuDrillDownPanel){
13699
+ display: contents !important;
13700
+ }
13701
+ .rt-DropdownMenuDrillDownBackItem{
13702
+ display: flex;
13703
+ align-items: center;
13704
+ gap: var(--space-2);
13705
+ min-height: var(--base-menu-item-height);
13706
+ padding-top: var(--base-menu-item-padding-y);
13707
+ padding-bottom: var(--base-menu-item-padding-y);
13708
+ padding-inline-start: var(--base-menu-item-padding-left);
13709
+ padding-inline-end: var(--base-menu-item-padding-right);
13710
+ box-sizing: border-box;
13711
+ outline: none;
13712
+ cursor: var(--cursor-menu-item);
13713
+ -webkit-user-select: none;
13714
+ -moz-user-select: none;
13715
+ user-select: none;
13716
+ transition: var(--transition-menu);
13717
+ font-weight: 500;
13718
+ }
13719
+ .rt-DropdownMenuDrillDownBackItem:where(:focus-visible){
13720
+ outline: 2px solid var(--focus-8);
13721
+ outline-offset: -2px;
13722
+ }
13723
+ @media (prefers-reduced-motion: reduce) {
13724
+ .rt-DropdownMenuDrillDownBackItem{
13725
+ transition: none;
13726
+ }
13727
+ }
13728
+ .rt-DropdownMenuDrillDownBackIcon{
13729
+ width: var(--indicator-icon-size-2);
13730
+ height: var(--indicator-icon-size-2);
13731
+ flex-shrink: 0;
13732
+ color: var(--gray-12);
13733
+ }
13734
+ .rt-DropdownMenuDrillDownBackLabel{
13735
+ color: var(--gray-12);
13736
+ }
13737
+ .rt-BaseMenuContent:where(.rt-variant-solid) :where(.rt-DropdownMenuDrillDownBackItem:hover),
13738
+ .rt-BaseMenuContent:where(.rt-variant-solid) :where(.rt-DropdownMenuDrillDownBackItem:focus-visible),
13739
+ .rt-BaseMenuContent:where(.rt-variant-solid) :where(.rt-DropdownMenuDrillDownSubTrigger:hover),
13740
+ .rt-BaseMenuContent:where(.rt-variant-solid) :where(.rt-DropdownMenuDrillDownSubTrigger:focus-visible){
13741
+ background-color: var(--accent-9);
13742
+ color: var(--accent-contrast);
13743
+ }
13744
+ .rt-BaseMenuContent:where(.rt-variant-solid) :where(.rt-DropdownMenuDrillDownBackItem:hover) :where(.rt-DropdownMenuDrillDownBackIcon),
13745
+ .rt-BaseMenuContent:where(.rt-variant-solid) :where(.rt-DropdownMenuDrillDownBackItem:focus-visible) :where(.rt-DropdownMenuDrillDownBackIcon),
13746
+ .rt-BaseMenuContent:where(.rt-variant-solid) :where(.rt-DropdownMenuDrillDownSubTrigger:hover) :where(.rt-DropdownMenuDrillDownBackIcon),
13747
+ .rt-BaseMenuContent:where(.rt-variant-solid) :where(.rt-DropdownMenuDrillDownSubTrigger:focus-visible) :where(.rt-DropdownMenuDrillDownBackIcon),
13748
+ .rt-BaseMenuContent:where(.rt-variant-solid) :where(.rt-DropdownMenuDrillDownBackItem:hover) :where(.rt-DropdownMenuDrillDownBackLabel),
13749
+ .rt-BaseMenuContent:where(.rt-variant-solid) :where(.rt-DropdownMenuDrillDownBackItem:focus-visible) :where(.rt-DropdownMenuDrillDownBackLabel),
13750
+ .rt-BaseMenuContent:where(.rt-variant-solid) :where(.rt-DropdownMenuDrillDownSubTrigger:hover) :where(.rt-DropdownMenuDrillDownBackLabel),
13751
+ .rt-BaseMenuContent:where(.rt-variant-solid) :where(.rt-DropdownMenuDrillDownSubTrigger:focus-visible) :where(.rt-DropdownMenuDrillDownBackLabel),
13752
+ .rt-BaseMenuContent:where(.rt-variant-solid) :where(.rt-DropdownMenuDrillDownBackItem:hover) :where(.rt-BaseMenuSubTriggerIcon),
13753
+ .rt-BaseMenuContent:where(.rt-variant-solid) :where(.rt-DropdownMenuDrillDownBackItem:focus-visible) :where(.rt-BaseMenuSubTriggerIcon),
13754
+ .rt-BaseMenuContent:where(.rt-variant-solid) :where(.rt-DropdownMenuDrillDownSubTrigger:hover) :where(.rt-BaseMenuSubTriggerIcon),
13755
+ .rt-BaseMenuContent:where(.rt-variant-solid) :where(.rt-DropdownMenuDrillDownSubTrigger:focus-visible) :where(.rt-BaseMenuSubTriggerIcon){
13756
+ color: var(--accent-contrast);
13757
+ }
13758
+ .rt-BaseMenuContent:where(.rt-variant-soft) :where(.rt-DropdownMenuDrillDownBackItem:hover),
13759
+ .rt-BaseMenuContent:where(.rt-variant-soft) :where(.rt-DropdownMenuDrillDownBackItem:focus-visible),
13760
+ .rt-BaseMenuContent:where(.rt-variant-soft) :where(.rt-DropdownMenuDrillDownSubTrigger:hover),
13761
+ .rt-BaseMenuContent:where(.rt-variant-soft) :where(.rt-DropdownMenuDrillDownSubTrigger:focus-visible){
13762
+ background-color: var(--accent-4);
13763
+ }
13764
+ :where([data-panel-background='translucent']) .rt-BaseMenuContent:where(.rt-variant-soft) :where(.rt-DropdownMenuDrillDownBackItem:hover),
13765
+ :where([data-panel-background='translucent']) .rt-BaseMenuContent:where(.rt-variant-soft) :where(.rt-DropdownMenuDrillDownBackItem:focus-visible),
13766
+ :where([data-panel-background='translucent']) .rt-BaseMenuContent:where(.rt-variant-soft) :where(.rt-DropdownMenuDrillDownSubTrigger:hover),
13767
+ :where([data-panel-background='translucent']) .rt-BaseMenuContent:where(.rt-variant-soft) :where(.rt-DropdownMenuDrillDownSubTrigger:focus-visible){
13768
+ background-color: var(--accent-a4);
13769
+ }
13770
+ @media (forced-colors: active) {
13771
+ .rt-DropdownMenuDrillDownBackItem:where(:focus-visible){
13772
+ outline: 2px solid Highlight;
13773
+ outline-offset: 2px;
13774
+ }
13775
+ }
13683
13776
  :where([data-panel-background='translucent'], [data-material='translucent']) .rt-TextFieldRoot{
13684
13777
  -webkit-backdrop-filter: var(--backdrop-filter-components);
13685
13778
  backdrop-filter: var(--backdrop-filter-components);