@womp/kookie-ui 0.31.0 → 0.33.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 (127) hide show
  1. package/components.css +101 -86
  2. package/dist/cjs/components/_internal/pane-chrome.js +1 -1
  3. package/dist/cjs/components/_internal/pane-chrome.js.map +2 -2
  4. package/dist/cjs/components/_internal/shell-bottom.d.ts +7 -2
  5. package/dist/cjs/components/_internal/shell-bottom.d.ts.map +1 -1
  6. package/dist/cjs/components/_internal/shell-bottom.js +1 -1
  7. package/dist/cjs/components/_internal/shell-bottom.js.map +3 -3
  8. package/dist/cjs/components/_internal/shell-inspector.d.ts +7 -2
  9. package/dist/cjs/components/_internal/shell-inspector.d.ts.map +1 -1
  10. package/dist/cjs/components/_internal/shell-inspector.js +1 -1
  11. package/dist/cjs/components/_internal/shell-inspector.js.map +3 -3
  12. package/dist/cjs/components/_internal/shell-pane.js +1 -1
  13. package/dist/cjs/components/_internal/shell-pane.js.map +2 -2
  14. package/dist/cjs/components/_internal/shell-sidebar.d.ts +7 -2
  15. package/dist/cjs/components/_internal/shell-sidebar.d.ts.map +1 -1
  16. package/dist/cjs/components/_internal/shell-sidebar.js +1 -1
  17. package/dist/cjs/components/_internal/shell-sidebar.js.map +3 -3
  18. package/dist/cjs/components/_internal/shell-store.d.ts +6 -6
  19. package/dist/cjs/components/_internal/shell-store.d.ts.map +1 -1
  20. package/dist/cjs/components/_internal/shell-store.js +1 -1
  21. package/dist/cjs/components/_internal/shell-store.js.map +3 -3
  22. package/dist/cjs/components/index.js +2 -2
  23. package/dist/cjs/components/index.js.map +3 -3
  24. package/dist/cjs/components/link.js +1 -1
  25. package/dist/cjs/components/link.js.map +3 -3
  26. package/dist/cjs/components/link.props.d.ts +0 -6
  27. package/dist/cjs/components/link.props.d.ts.map +1 -1
  28. package/dist/cjs/components/link.props.js +1 -1
  29. package/dist/cjs/components/link.props.js.map +3 -3
  30. package/dist/cjs/components/navigator.js +1 -1
  31. package/dist/cjs/components/navigator.js.map +2 -2
  32. package/dist/cjs/components/shell.context.js +1 -1
  33. package/dist/cjs/components/shell.context.js.map +2 -2
  34. package/dist/cjs/components/shell.d.ts +25 -7
  35. package/dist/cjs/components/shell.d.ts.map +1 -1
  36. package/dist/cjs/components/shell.hooks.js +1 -1
  37. package/dist/cjs/components/shell.hooks.js.map +2 -2
  38. package/dist/cjs/components/shell.js +1 -1
  39. package/dist/cjs/components/shell.js.map +3 -3
  40. package/dist/cjs/components/toolbar.js +1 -1
  41. package/dist/cjs/components/toolbar.js.map +2 -2
  42. package/dist/cjs/index.js +3 -3
  43. package/dist/cjs/index.js.map +3 -3
  44. package/dist/cjs/props/index.js +1 -1
  45. package/dist/cjs/props/index.js.map +3 -3
  46. package/dist/esm/chunk-3H33S3UA.js +3 -0
  47. package/dist/esm/{chunk-B7STVZPU.js.map → chunk-3H33S3UA.js.map} +3 -3
  48. package/dist/esm/chunk-5BXCPANF.js +3 -0
  49. package/dist/esm/{chunk-GHWEXMF6.js.map → chunk-5BXCPANF.js.map} +3 -3
  50. package/dist/esm/{chunk-ZG2XQUOH.js → chunk-B447PNRD.js} +2 -2
  51. package/dist/esm/{chunk-QDAM2I6O.js → chunk-BR6Z2CAE.js} +2 -2
  52. package/dist/esm/{chunk-4G3FJUER.js → chunk-INGT6DB6.js} +2 -2
  53. package/dist/esm/{chunk-4ZHBNYXM.js → chunk-J6B7UCZN.js} +2 -2
  54. package/dist/esm/chunk-KDJM4NQQ.js +3 -0
  55. package/dist/esm/chunk-KDJM4NQQ.js.map +7 -0
  56. package/dist/esm/{chunk-LTUW36HM.js → chunk-KGCGT4MJ.js} +2 -2
  57. package/dist/esm/chunk-NO2JCJWI.js +3 -0
  58. package/dist/esm/chunk-NO2JCJWI.js.map +7 -0
  59. package/dist/esm/{chunk-NFSW36RG.js → chunk-ODHCDJ3Y.js} +2 -2
  60. package/dist/esm/chunk-UMQOTGJC.js +3 -0
  61. package/dist/esm/chunk-UMQOTGJC.js.map +7 -0
  62. package/dist/esm/chunk-VKUAP54W.js +2 -0
  63. package/dist/esm/chunk-VKUAP54W.js.map +7 -0
  64. package/dist/esm/chunk-XD676L6S.js +3 -0
  65. package/dist/esm/chunk-XD676L6S.js.map +7 -0
  66. package/dist/esm/{chunk-6SGJWML7.js → chunk-XKYPJTRN.js} +2 -2
  67. package/dist/esm/components/_internal/pane-chrome.js +1 -1
  68. package/dist/esm/components/_internal/shell-bottom.d.ts +7 -2
  69. package/dist/esm/components/_internal/shell-bottom.d.ts.map +1 -1
  70. package/dist/esm/components/_internal/shell-bottom.js +1 -1
  71. package/dist/esm/components/_internal/shell-inspector.d.ts +7 -2
  72. package/dist/esm/components/_internal/shell-inspector.d.ts.map +1 -1
  73. package/dist/esm/components/_internal/shell-inspector.js +1 -1
  74. package/dist/esm/components/_internal/shell-pane.js +1 -1
  75. package/dist/esm/components/_internal/shell-sidebar.d.ts +7 -2
  76. package/dist/esm/components/_internal/shell-sidebar.d.ts.map +1 -1
  77. package/dist/esm/components/_internal/shell-sidebar.js +1 -1
  78. package/dist/esm/components/_internal/shell-store.d.ts +6 -6
  79. package/dist/esm/components/_internal/shell-store.d.ts.map +1 -1
  80. package/dist/esm/components/_internal/shell-store.js +1 -1
  81. package/dist/esm/components/index.js +1 -1
  82. package/dist/esm/components/link.js +1 -1
  83. package/dist/esm/components/link.props.d.ts +0 -6
  84. package/dist/esm/components/link.props.d.ts.map +1 -1
  85. package/dist/esm/components/link.props.js +1 -1
  86. package/dist/esm/components/navigator.js +1 -1
  87. package/dist/esm/components/shell.context.js +1 -1
  88. package/dist/esm/components/shell.d.ts +25 -7
  89. package/dist/esm/components/shell.d.ts.map +1 -1
  90. package/dist/esm/components/shell.hooks.js +1 -1
  91. package/dist/esm/components/shell.js +1 -1
  92. package/dist/esm/components/sidebar.js +1 -1
  93. package/dist/esm/components/toolbar.js +1 -1
  94. package/dist/esm/index.js +1 -1
  95. package/dist/esm/props/index.js +1 -1
  96. package/package.json +1 -1
  97. package/src/components/_internal/shell-bottom.tsx +11 -6
  98. package/src/components/_internal/shell-inspector.tsx +11 -6
  99. package/src/components/_internal/shell-sidebar.tsx +11 -6
  100. package/src/components/_internal/shell-store.tsx +13 -13
  101. package/src/components/link.css +16 -46
  102. package/src/components/link.props.tsx +0 -3
  103. package/src/components/shell.css +133 -47
  104. package/src/components/shell.tsx +50 -32
  105. package/src/styles/tokens/color.css +2 -0
  106. package/styles.css +102 -86
  107. package/tokens/base.css +1 -0
  108. package/tokens.css +1 -0
  109. package/dist/esm/chunk-4B3S2DM7.js +0 -3
  110. package/dist/esm/chunk-4B3S2DM7.js.map +0 -7
  111. package/dist/esm/chunk-AKMRPGNP.js +0 -3
  112. package/dist/esm/chunk-AKMRPGNP.js.map +0 -7
  113. package/dist/esm/chunk-B7STVZPU.js +0 -3
  114. package/dist/esm/chunk-EFXHBH3A.js +0 -2
  115. package/dist/esm/chunk-EFXHBH3A.js.map +0 -7
  116. package/dist/esm/chunk-GHWEXMF6.js +0 -3
  117. package/dist/esm/chunk-ZBSGH74F.js +0 -3
  118. package/dist/esm/chunk-ZBSGH74F.js.map +0 -7
  119. package/dist/esm/chunk-ZHXEEOGI.js +0 -3
  120. package/dist/esm/chunk-ZHXEEOGI.js.map +0 -7
  121. /package/dist/esm/{chunk-ZG2XQUOH.js.map → chunk-B447PNRD.js.map} +0 -0
  122. /package/dist/esm/{chunk-QDAM2I6O.js.map → chunk-BR6Z2CAE.js.map} +0 -0
  123. /package/dist/esm/{chunk-4G3FJUER.js.map → chunk-INGT6DB6.js.map} +0 -0
  124. /package/dist/esm/{chunk-4ZHBNYXM.js.map → chunk-J6B7UCZN.js.map} +0 -0
  125. /package/dist/esm/{chunk-LTUW36HM.js.map → chunk-KGCGT4MJ.js.map} +0 -0
  126. /package/dist/esm/{chunk-NFSW36RG.js.map → chunk-ODHCDJ3Y.js.map} +0 -0
  127. /package/dist/esm/{chunk-6SGJWML7.js.map → chunk-XKYPJTRN.js.map} +0 -0
@@ -36,16 +36,16 @@ import { usePane, paneAttributes, usePresentationTable } from './_internal/shell
36
36
  import { splitHandles, useInitialPaneSize, useResizablePane } from './_internal/shell-resizable.js';
37
37
  import {
38
38
  FIXED_TABLE,
39
- ShellInsetContext,
39
+ ShellFrameContext,
40
40
  ShellStoreContext,
41
41
  createShellStore,
42
42
  setShellPeek,
43
43
  subscribeShellStore,
44
- useInsetRegistration,
44
+ useFrameRegistration,
45
45
  usePaneEntry,
46
46
  useShellStore,
47
47
  warnOnce,
48
- type InsetPaneId,
48
+ type FramePaneId,
49
49
  } from './_internal/shell-store.js';
50
50
  import { navigationRest, detailRest, toPaneValue, startAnchoredGrowth, withoutRemovedPaneProps } from './_internal/shell-rest.js';
51
51
  import { useShell, useSidebarMode } from './shell.context.js';
@@ -145,20 +145,20 @@ const Root = React.forwardRef<HTMLDivElement, ShellRootProps>(({ className, chil
145
145
  const rootRef = React.useRef<HTMLDivElement | null>(null);
146
146
  const composedRef = useComposedRefs(ref, rootRef);
147
147
 
148
- // Inset: the Root paints the backdrop while any pane is inset.
149
- const [insetPanes, setInsetPanes] = React.useState<ReadonlySet<InsetPaneId>>(() => new Set());
150
- const registerInset = React.useCallback((id: InsetPaneId) => {
151
- setInsetPanes((prev) => (prev.has(id) ? prev : new Set(prev).add(id)));
148
+ // The panes pulled off the frame (`flush={false}`). Only the Rail's is read, for the offset below.
149
+ const [offFrame, setOffFrame] = React.useState<ReadonlySet<FramePaneId>>(() => new Set());
150
+ const registerOffFrame = React.useCallback((id: FramePaneId) => {
151
+ setOffFrame((prev) => (prev.has(id) ? prev : new Set(prev).add(id)));
152
152
  }, []);
153
- const unregisterInset = React.useCallback((id: InsetPaneId) => {
154
- setInsetPanes((prev) => {
153
+ const unregisterOffFrame = React.useCallback((id: FramePaneId) => {
154
+ setOffFrame((prev) => {
155
155
  if (!prev.has(id)) return prev;
156
156
  const next = new Set(prev);
157
157
  next.delete(id);
158
158
  return next;
159
159
  });
160
160
  }, []);
161
- const insetContext = React.useMemo(() => ({ registerInset, unregisterInset }), [registerInset, unregisterInset]);
161
+ const frameContext = React.useMemo(() => ({ registerOffFrame, unregisterOffFrame }), [registerOffFrame, unregisterOffFrame]);
162
162
 
163
163
  const closeOverlays = React.useCallback(() => {
164
164
  for (const entry of store.entries.values()) {
@@ -444,10 +444,10 @@ const Root = React.forwardRef<HTMLDivElement, ShellRootProps>(({ className, chil
444
444
  };
445
445
 
446
446
  // A floating Panel sits beside the Rail when the Rail is showing, and
447
- // beside its card when the Rail is inset.
447
+ // beside its card when the Rail is off the frame.
448
448
  const rail = store.entries.get('rail');
449
449
  const railShown = rail !== undefined && rail.value !== undefined && rail.value !== 'closed';
450
- const railOffset = railShown ? (insetPanes.has('rail') ? `calc(${rail.size}px + 2 * var(--shell-inset-gap))` : `${rail.size}px`) : undefined;
450
+ const railOffset = railShown ? (offFrame.has('rail') ? `calc(${rail.size}px + 2 * var(--shell-gap))` : `${rail.size}px`) : undefined;
451
451
 
452
452
  // `full` writes no inline height: the stylesheet states it as 100vh with a
453
453
  // 100dvh override where supported, and an inline value would beat both.
@@ -459,7 +459,7 @@ const Root = React.forwardRef<HTMLDivElement, ShellRootProps>(({ className, chil
459
459
  <ShellContentContext.Provider value={false}>
460
460
  <ShellWindowContext.Provider value={windowShell}>
461
461
  <ShellHeaderHeightContext.Provider value={setHeaderHeight}>
462
- <ShellInsetContext.Provider value={insetContext}>
462
+ <ShellFrameContext.Provider value={frameContext}>
463
463
  {/* A Shell inside a portalled surface's Theme starts with no band, like any other. */}
464
464
  <PaneBandSizeContext.Provider value={undefined}>
465
465
  {/* The Root is not a widget: it hears Escape bubbling up from the panes,
@@ -472,7 +472,6 @@ const Root = React.forwardRef<HTMLDivElement, ShellRootProps>(({ className, chil
472
472
  data-height={height === 'auto' && !contained ? 'auto' : undefined}
473
473
  data-contained={contained || undefined}
474
474
  data-window={windowShell || undefined}
475
- data-has-inset={insetPanes.size > 0 || undefined}
476
475
  data-overlay-live={liveCount > 0 || undefined}
477
476
  onKeyDown={handleKeyDown}
478
477
  onFocus={handleFocus}
@@ -490,7 +489,7 @@ const Root = React.forwardRef<HTMLDivElement, ShellRootProps>(({ className, chil
490
489
  <div className="kui-ShellScrim" aria-hidden onClick={closeOverlays} />
491
490
  </div>
492
491
  </PaneBandSizeContext.Provider>
493
- </ShellInsetContext.Provider>
492
+ </ShellFrameContext.Provider>
494
493
  </ShellHeaderHeightContext.Provider>
495
494
  </ShellWindowContext.Provider>
496
495
  </ShellContentContext.Provider>
@@ -504,9 +503,14 @@ Root.displayName = 'Shell.Root';
504
503
 
505
504
  interface ShellHeaderProps extends React.ComponentPropsWithoutRef<'header'> {
506
505
  height?: number;
506
+ /**
507
+ * Sets whether the header joins the app frame. The default is `true`: a hairline under it. Set
508
+ * `flush={false}` to make it a card off the frame.
509
+ */
510
+ flush?: boolean;
507
511
  }
508
512
 
509
- const Header = React.forwardRef<HTMLElement, ShellHeaderProps>(({ className, height = DEFAULT_HEADER_HEIGHT, style, ...props }, ref) => {
513
+ const Header = React.forwardRef<HTMLElement, ShellHeaderProps>(({ className, height = DEFAULT_HEADER_HEIGHT, flush = true, style, ...props }, ref) => {
510
514
  // Rows that stick beneath the header while the page scrolls need its height. The stylesheet
511
515
  // assumes the default, so only another height is told to the Root.
512
516
  const setHeaderHeight = React.useContext(ShellHeaderHeightContext);
@@ -520,6 +524,7 @@ const Header = React.forwardRef<HTMLElement, ShellHeaderProps>(({ className, hei
520
524
  {...props}
521
525
  ref={ref}
522
526
  className={classNames('kui-ShellHeader', className)}
527
+ data-flush={flush || undefined}
523
528
  style={
524
529
  {
525
530
  ...style,
@@ -541,7 +546,6 @@ interface LeftProps extends React.ComponentPropsWithoutRef<'div'> {
541
546
  collapsible?: boolean;
542
547
  onExpand?: () => void;
543
548
  onCollapse?: () => void;
544
- inset?: boolean;
545
549
  }
546
550
 
547
551
  /**
@@ -572,14 +576,19 @@ type RailProps = React.ComponentPropsWithoutRef<'div'> & {
572
576
  onExpand?: () => void;
573
577
  /** @deprecated Use `onOpenChange`. */
574
578
  onCollapse?: () => void;
575
- /** When true, adds margin and triggers the gray backdrop on the Shell. */
576
- inset?: boolean;
579
+ /**
580
+ * Sets whether this pane joins the app frame. The default is `true`: the pane sits against its
581
+ * neighbours with one hairline between them. Set `flush={false}` to pull it off the frame as a
582
+ * card. It then floats over the content if the content is flush, and otherwise sits on the
583
+ * Shell's background beside a card content.
584
+ */
585
+ flush?: boolean;
577
586
  } & (RailControlledProps | RailUncontrolledProps);
578
587
 
579
588
  const RAIL_PROP_NAMES = { controlled: 'open', default: 'defaultOpen' };
580
589
 
581
590
  const Rail = React.forwardRef<HTMLDivElement, RailProps>((props, ref) => {
582
- const { className, presentation, expandedSize = 64, collapsible: _collapsible, onExpand, onCollapse, children, style, open, defaultOpen, onOpenChange, inset, id, ...domProps } = props;
591
+ const { className, presentation, expandedSize = 64, collapsible: _collapsible, onExpand, onCollapse, children, style, open, defaultOpen, onOpenChange, flush = true, id, ...domProps } = props;
583
592
  const { table, attributes } = usePresentationTable(presentation, 'fixed');
584
593
  const pane = usePane({
585
594
  name: 'rail',
@@ -595,7 +604,7 @@ const Rail = React.forwardRef<HTMLDivElement, RailProps>((props, ref) => {
595
604
  onCollapse,
596
605
  size: expandedSize,
597
606
  });
598
- useInsetRegistration('rail', inset);
607
+ useFrameRegistration('rail', flush);
599
608
  const composedRef = useComposedRefs(ref, pane.setElement);
600
609
 
601
610
  return (
@@ -606,7 +615,7 @@ const Rail = React.forwardRef<HTMLDivElement, RailProps>((props, ref) => {
606
615
  ref={composedRef}
607
616
  className={classNames('kui-ShellPane', 'kui-ShellRail', className)}
608
617
  {...paneAttributes(pane, attributes)}
609
- data-inset={inset || undefined}
618
+ data-flush={flush || undefined}
610
619
  tabIndex={pane.overlaying ? -1 : domProps.tabIndex}
611
620
  style={{ ...style, '--rail-size': `${expandedSize}px` } as CSSPropertiesWithVars}
612
621
  >
@@ -644,8 +653,13 @@ type PanelPublicProps = PaneBaseProps &
644
653
  onSizeChange?: (size: number, meta: PanelSizeChangeMeta) => void;
645
654
  sizeUpdate?: 'throttle' | 'debounce';
646
655
  sizeUpdateMs?: number;
647
- /** When true, adds margin and triggers the gray backdrop on the Shell. */
648
- inset?: boolean;
656
+ /**
657
+ * Sets whether this pane joins the app frame. The default is `true`: the pane sits against its
658
+ * neighbours with one hairline between them. Set `flush={false}` to pull it off the frame as a
659
+ * card. It then floats over the content if the content is flush, and otherwise sits on the
660
+ * Shell's background beside a card content.
661
+ */
662
+ flush?: boolean;
649
663
  };
650
664
  type PanelComponent = React.ForwardRefExoticComponent<PanelPublicProps & React.RefAttributes<HTMLDivElement>> & {
651
665
  Handle: HandleComponent;
@@ -688,7 +702,7 @@ const Panel = React.forwardRef<HTMLDivElement, PanelPublicProps>((props, ref) =>
688
702
  onSizeChange,
689
703
  sizeUpdate,
690
704
  sizeUpdateMs = 50,
691
- inset,
705
+ flush = true,
692
706
  id,
693
707
  ...domProps
694
708
  } = props;
@@ -713,7 +727,7 @@ const Panel = React.forwardRef<HTMLDivElement, PanelPublicProps>((props, ref) =>
713
727
  onCollapse,
714
728
  size: expandedSize,
715
729
  });
716
- useInsetRegistration('panel', inset);
730
+ useFrameRegistration('panel', flush);
717
731
 
718
732
  React.useEffect(() => {
719
733
  if (snapPoints !== undefined || collapseThreshold !== undefined || paneId !== undefined || persistence !== undefined) {
@@ -774,7 +788,7 @@ const Panel = React.forwardRef<HTMLDivElement, PanelPublicProps>((props, ref) =>
774
788
  ref={composedRef}
775
789
  className={classNames('kui-ShellPane', 'kui-ShellPanel', className)}
776
790
  {...paneAttributes(pane, presentationAttributes)}
777
- data-inset={inset || undefined}
791
+ data-flush={flush || undefined}
778
792
  tabIndex={pane.overlaying ? -1 : domProps.tabIndex}
779
793
  style={
780
794
  {
@@ -799,18 +813,22 @@ Panel.Handle = PanelHandle;
799
813
  /* ── Content ───────────────────────────────────────────────────────────────── */
800
814
 
801
815
  interface ShellContentProps extends React.ComponentPropsWithoutRef<'main'> {
802
- /** When true, adds margin and triggers the gray backdrop on the Shell. */
803
- inset?: boolean;
816
+ /**
817
+ * Sets whether the work area joins the app frame. The default is `true`. Set `flush={false}`
818
+ * to make it a card on the Shell's background; the panes beside it then sit on that background
819
+ * too, and draw no hairline toward it.
820
+ */
821
+ flush?: boolean;
804
822
  }
805
823
 
806
824
  /**
807
825
  * The work area. It scrolls as it is; with a `Shell.Scroll` child it becomes a column and the
808
826
  * Scroll scrolls instead, so a `Shell.PaneHeader float` beside it stays pinned over the page.
809
827
  */
810
- const Content = React.forwardRef<HTMLElement, ShellContentProps>(({ className, inset, children, ...props }, ref) => {
811
- useInsetRegistration('content', inset);
828
+ const Content = React.forwardRef<HTMLElement, ShellContentProps>(({ className, flush = true, children, ...props }, ref) => {
829
+ useFrameRegistration('content', flush);
812
830
  return (
813
- <main {...props} ref={ref} className={classNames('kui-ShellContent', className)} data-inset={inset || undefined}>
831
+ <main {...props} ref={ref} className={classNames('kui-ShellContent', className)} data-flush={flush || undefined}>
814
832
  {/* Each pane holds its own page store, so a band's title can mirror the page beside it. */}
815
833
  <ShellContentContext.Provider value={true}>
816
834
  <PageScope>{children}</PageScope>
@@ -8,6 +8,8 @@
8
8
  --color-page: white;
9
9
  --color-overlay: var(--black-a6);
10
10
  --color-surface: white;
11
+ /* A rule between two regions, such as the hairline between two flush Shell panes. The same role and value as v2's. */
12
+ --color-border: var(--neutral-6, var(--gray-6));
11
13
  /* A background for an app page that holds raised surfaces. No component reads it. */
12
14
  --color-ground: var(--neutral-1, var(--gray-1));
13
15
 
package/styles.css CHANGED
@@ -3377,6 +3377,7 @@
3377
3377
  --color-page: white;
3378
3378
  --color-overlay: var(--black-a6);
3379
3379
  --color-surface: white;
3380
+ --color-border: var(--neutral-6, var(--gray-6));
3380
3381
  --color-ground: var(--neutral-1, var(--gray-1));
3381
3382
  --field-fill: var(--color-surface);
3382
3383
  --field-fill-hover: var(--neutral-2);
@@ -12558,19 +12559,19 @@
12558
12559
  }
12559
12560
  .kui-Link:where(:-moz-any-link,button) {
12560
12561
  cursor: var(--cursor-link);
12561
- text-decoration-line: none;
12562
+ text-decoration-line: underline;
12562
12563
  text-decoration-style: solid;
12563
12564
  text-decoration-thickness: min(2px, max(1px, 0.05em));
12564
- text-underline-offset: calc(0.025em + 2px);
12565
- text-decoration-color: var(--accent-a5);
12565
+ text-underline-offset: 0.2em;
12566
+ text-decoration-color: var(--accent-a6);
12566
12567
  }
12567
12568
  .kui-Link:where(:any-link,button) {
12568
12569
  cursor: var(--cursor-link);
12569
- text-decoration-line: none;
12570
+ text-decoration-line: underline;
12570
12571
  text-decoration-style: solid;
12571
12572
  text-decoration-thickness: min(2px, max(1px, 0.05em));
12572
- text-underline-offset: calc(0.025em + 2px);
12573
- text-decoration-color: var(--accent-a5);
12573
+ text-underline-offset: 0.2em;
12574
+ text-decoration-color: var(--accent-a6);
12574
12575
  }
12575
12576
  .kui-Link:where(:disabled,[data-disabled]) {
12576
12577
  cursor: var(--cursor-disabled);
@@ -12578,19 +12579,21 @@
12578
12579
  .kui-Link:where(:focus-visible) {
12579
12580
  border-radius: calc(0.07em * var(--radius-factor));
12580
12581
  outline-color: var(--focus-8);
12581
- outline-width: 2px;
12582
+ outline-width: var(--focus-ring-width);
12582
12583
  outline-style: solid;
12583
- outline-offset: 2px;
12584
+ outline-offset: var(--focus-ring-offset);
12585
+ -webkit-box-decoration-break: clone;
12586
+ box-decoration-break: clone;
12584
12587
  }
12585
12588
  :where([data-accent-color]:not(.kui-theme)) .kui-Link:where([data-accent-color='']) {
12586
12589
  color: var(--accent-ink);
12587
12590
  }
12588
- @supports (color: color-mix(in oklab, white, black)) {
12589
- .kui-Link:where(:-moz-any-link,button) {
12590
- text-decoration-color: color-mix(in oklab, var(--accent-a5), var(--neutral-a6));
12591
+ @media (hover: hover) {
12592
+ .kui-Link:where(:-moz-any-link,button):where(:hover) {
12593
+ text-decoration-color: currentcolor;
12591
12594
  }
12592
- .kui-Link:where(:any-link,button) {
12593
- text-decoration-color: color-mix(in oklab, var(--accent-a5), var(--neutral-a6));
12595
+ .kui-Link:where(:any-link,button):where(:hover) {
12596
+ text-decoration-color: currentcolor;
12594
12597
  }
12595
12598
  }
12596
12599
  @media (pointer: coarse) {
@@ -12603,44 +12606,6 @@
12603
12606
  outline-offset: -0.6em;
12604
12607
  }
12605
12608
  }
12606
- @media (hover: hover) {
12607
- .kui-Link:where(:-moz-any-link,button):where(.kui-underline-auto):where(:hover) {
12608
- text-decoration-line: underline;
12609
- }
12610
- .kui-Link:where(:any-link,button):where(.kui-underline-auto):where(:hover) {
12611
- text-decoration-line: underline;
12612
- }
12613
- }
12614
- :where([data-accent-color]:not(.kui-theme)) .kui-Link:where(:-moz-any-link,button):where(.kui-underline-auto):where([data-accent-color='']) {
12615
- text-decoration-line: underline;
12616
- text-decoration-color: var(--accent-a6);
12617
- }
12618
- :where([data-accent-color]:not(.kui-theme)) .kui-Link:where(:any-link,button):where(.kui-underline-auto):where([data-accent-color='']) {
12619
- text-decoration-line: underline;
12620
- text-decoration-color: var(--accent-a6);
12621
- }
12622
- @supports (color: color-mix(in oklab, white, black)) {
12623
- :where([data-accent-color]:not(.kui-theme)) .kui-Link:where(:-moz-any-link,button):where(.kui-underline-auto):where([data-accent-color='']) {
12624
- text-decoration-color: color-mix(in oklab, var(--accent-a6), var(--neutral-a6));
12625
- }
12626
- :where([data-accent-color]:not(.kui-theme)) .kui-Link:where(:any-link,button):where(.kui-underline-auto):where([data-accent-color='']) {
12627
- text-decoration-color: color-mix(in oklab, var(--accent-a6), var(--neutral-a6));
12628
- }
12629
- }
12630
- @media (hover: hover) {
12631
- .kui-Link:where(:-moz-any-link,button):where(.kui-underline-hover):where(:hover) {
12632
- text-decoration-line: underline;
12633
- }
12634
- .kui-Link:where(:any-link,button):where(.kui-underline-hover):where(:hover) {
12635
- text-decoration-line: underline;
12636
- }
12637
- }
12638
- .kui-Link:where(:-moz-any-link,button):where(.kui-underline-always) {
12639
- text-decoration-line: underline;
12640
- }
12641
- .kui-Link:where(:any-link,button):where(.kui-underline-always) {
12642
- text-decoration-line: underline;
12643
- }
12644
12609
  .kui-Link:where(:has(.kui-Code:not(.kui-variant-ghost):only-child)) {
12645
12610
  text-decoration-color: transparent;
12646
12611
  }
@@ -16965,7 +16930,7 @@
16965
16930
  }
16966
16931
  }
16967
16932
  .kui-ShellRoot {
16968
- --shell-inset-gap: var(--space-3);
16933
+ --shell-gap: var(--space-3);
16969
16934
  --shell-rail-offset: 0px;
16970
16935
  --kui-shell-page-top: 0px;
16971
16936
  display: grid;
@@ -17740,51 +17705,102 @@
17740
17705
  .kui-ShellRoot[data-height='auto'] > .kui-ShellPane[data-presentation='overlay'] {
17741
17706
  position: fixed;
17742
17707
  }
17743
- .kui-ShellRoot:has(> [data-inset])::before,
17744
- .kui-ShellRoot[data-has-inset]::before {
17745
- content: '';
17746
- grid-row: 2;
17747
- grid-column: 1 / -1;
17748
- background: var(--neutral-2);
17708
+ .kui-ShellHeader[data-flush],
17709
+ .kui-ShellPane[data-flush],
17710
+ .kui-ShellContent[data-flush] {
17711
+ border: 0 solid var(--color-border);
17712
+ border-radius: 0;
17713
+ }
17714
+ .kui-ShellHeader[data-flush] {
17715
+ border-block-end-width: 1px;
17716
+ }
17717
+ .kui-ShellRail[data-flush],
17718
+ .kui-ShellPanel[data-flush],
17719
+ .kui-ShellSidebar[data-flush] {
17720
+ border-inline-end-width: 1px;
17721
+ }
17722
+ .kui-ShellInspector[data-flush] {
17723
+ border-inline-start-width: 1px;
17724
+ }
17725
+ .kui-ShellBottom[data-flush] {
17726
+ border-block-start-width: 1px;
17727
+ }
17728
+ .kui-ShellRoot:has(> .kui-ShellContent:not([data-flush])) > .kui-ShellHeader[data-flush] {
17729
+ border-block-end-width: 0;
17749
17730
  }
17750
- .kui-ShellPane[data-inset],
17751
- .kui-ShellContent[data-inset] {
17752
- margin: var(--shell-inset-gap);
17731
+ .kui-ShellRoot:has(> .kui-ShellContent:not([data-flush])) > .kui-ShellSidebar[data-flush],
17732
+ .kui-ShellRoot:has(> .kui-ShellContent:not([data-flush])):not(:has(> .kui-ShellSidebar[data-presentation='fixed'][data-mode]:not([data-mode='collapsed']))) > .kui-ShellPanel[data-flush],
17733
+ .kui-ShellRoot:has(> .kui-ShellContent:not([data-flush])):not(:has(> .kui-ShellPanel[data-presentation='fixed'][data-mode]:not([data-mode='collapsed']), > .kui-ShellSidebar[data-presentation='fixed'][data-mode]:not([data-mode='collapsed']))) > .kui-ShellRail[data-flush] {
17734
+ border-inline-end-width: 0;
17735
+ }
17736
+ .kui-ShellRoot:has(> .kui-ShellContent:not([data-flush])) > .kui-ShellInspector[data-flush] {
17737
+ border-inline-start-width: 0;
17738
+ }
17739
+ .kui-ShellRoot:has(> .kui-ShellContent:not([data-flush])) > .kui-ShellBottom[data-flush] {
17740
+ border-block-start-width: 0;
17741
+ }
17742
+ .kui-ShellHeader:not([data-flush]),
17743
+ .kui-ShellPane:not([data-flush]),
17744
+ .kui-ShellContent:not([data-flush]) {
17745
+ margin: var(--shell-gap);
17753
17746
  border-radius: var(--radius-surface-1);
17754
- background: var(--color-page);
17747
+ background-color: var(--color-page);
17755
17748
  -webkit-box-shadow: var(--surface-chrome);
17756
17749
  box-shadow: var(--surface-chrome);
17757
17750
  }
17758
- .kui-ShellRoot:has(> .kui-ShellRail[data-inset][data-presentation='fixed'][data-mode]:not([data-mode='collapsed'])) > .kui-ShellPanel[data-inset][data-presentation='fixed'],
17759
- .kui-ShellRoot:has(> .kui-ShellPanel[data-inset][data-presentation='fixed'][data-mode]:not([data-mode='collapsed'])) > .kui-ShellSidebar[data-inset][data-presentation='fixed'],
17760
- .kui-ShellRoot:has(> .kui-ShellRail[data-inset][data-presentation='fixed'][data-mode]:not([data-mode='collapsed'])):not(
17761
- :has(> .kui-ShellPanel[data-presentation='fixed'][data-mode]:not([data-mode='collapsed']))
17762
- )
17763
- > .kui-ShellSidebar[data-inset][data-presentation='fixed'],
17764
- .kui-ShellRoot:has(> .kui-ShellSidebar[data-inset][data-presentation='fixed'][data-mode]:not([data-mode='collapsed'])) > .kui-ShellContent[data-inset],
17765
- .kui-ShellRoot:has(> .kui-ShellPanel[data-inset][data-presentation='fixed'][data-mode]:not([data-mode='collapsed'])):not(
17766
- :has(> .kui-ShellSidebar[data-presentation='fixed'][data-mode]:not([data-mode='collapsed']))
17767
- )
17768
- > .kui-ShellContent[data-inset],
17769
- .kui-ShellRoot:has(> .kui-ShellRail[data-inset][data-presentation='fixed'][data-mode]:not([data-mode='collapsed'])):not(
17770
- :has(> .kui-ShellPanel[data-presentation='fixed'][data-mode]:not([data-mode='collapsed']), > .kui-ShellSidebar[data-presentation='fixed'][data-mode]:not([data-mode='collapsed']))
17771
- )
17772
- > .kui-ShellContent[data-inset],
17773
- .kui-ShellRoot:has(> .kui-ShellContent[data-inset]) > .kui-ShellInspector[data-inset][data-presentation='fixed'] {
17751
+ .kui-ShellHeader:not([data-flush]) {
17752
+ z-index: 1;
17753
+ }
17754
+ .kui-ShellRoot:has(> .kui-ShellContent:not([data-flush])) {
17755
+ background-color: var(--neutral-2);
17756
+ }
17757
+ .kui-ShellRoot:has(> .kui-ShellRail:not([data-flush])[data-presentation='fixed'][data-mode]:not([data-mode='collapsed'])) > .kui-ShellPanel:not([data-flush])[data-presentation='fixed'],
17758
+ .kui-ShellRoot:has(> .kui-ShellPanel:not([data-flush])[data-presentation='fixed'][data-mode]:not([data-mode='collapsed'])) > .kui-ShellSidebar:not([data-flush])[data-presentation='fixed'],
17759
+ .kui-ShellRoot:has(> .kui-ShellRail:not([data-flush])[data-presentation='fixed'][data-mode]:not([data-mode='collapsed'])):not(:has(> .kui-ShellPanel[data-presentation='fixed'][data-mode]:not([data-mode='collapsed']))) > .kui-ShellSidebar:not([data-flush])[data-presentation='fixed'],
17760
+ .kui-ShellRoot:has(> .kui-ShellSidebar:not([data-flush])[data-presentation='fixed'][data-mode]:not([data-mode='collapsed'])) > .kui-ShellContent:not([data-flush]),
17761
+ .kui-ShellRoot:has(> .kui-ShellPanel:not([data-flush])[data-presentation='fixed'][data-mode]:not([data-mode='collapsed'])):not(:has(> .kui-ShellSidebar[data-presentation='fixed'][data-mode]:not([data-mode='collapsed']))) > .kui-ShellContent:not([data-flush]),
17762
+ .kui-ShellRoot:has(> .kui-ShellRail:not([data-flush])[data-presentation='fixed'][data-mode]:not([data-mode='collapsed'])):not(:has(> .kui-ShellPanel[data-presentation='fixed'][data-mode]:not([data-mode='collapsed']), > .kui-ShellSidebar[data-presentation='fixed'][data-mode]:not([data-mode='collapsed']))) > .kui-ShellContent:not([data-flush]),
17763
+ .kui-ShellRoot:has(> .kui-ShellContent:not([data-flush])) > .kui-ShellInspector:not([data-flush])[data-presentation='fixed'] {
17774
17764
  -webkit-margin-start: 0;
17775
17765
  margin-inline-start: 0;
17776
17766
  }
17777
- .kui-ShellRoot:has(
17778
- > .kui-ShellRail[data-inset][data-presentation='fixed'][data-mode]:not([data-mode='collapsed']),
17779
- > .kui-ShellPanel[data-inset][data-presentation='fixed'][data-mode]:not([data-mode='collapsed']),
17780
- > .kui-ShellSidebar[data-inset][data-presentation='fixed'][data-mode]:not([data-mode='collapsed']),
17781
- > .kui-ShellContent[data-inset],
17782
- > .kui-ShellInspector[data-inset][data-presentation='fixed'][data-mode]:not([data-mode='collapsed'])
17783
- )
17784
- > .kui-ShellBottom[data-inset] {
17767
+ .kui-ShellRoot:has(> .kui-ShellHeader:not([data-flush])) > :is(.kui-ShellPane:not(.kui-ShellBottom), .kui-ShellContent):not([data-flush]),
17768
+ .kui-ShellRoot:has(> :is(.kui-ShellRail, .kui-ShellPanel, .kui-ShellSidebar, .kui-ShellInspector):not([data-flush])[data-presentation='fixed'][data-mode]:not([data-mode='collapsed']), > .kui-ShellContent:not([data-flush])) > .kui-ShellBottom:not([data-flush]) {
17785
17769
  -webkit-margin-before: 0;
17786
17770
  margin-block-start: 0;
17787
17771
  }
17772
+ .kui-ShellRoot:has(> .kui-ShellSidebar[data-flush][data-presentation='fixed'][data-mode]:not([data-mode='collapsed'])) > .kui-ShellContent:not([data-flush]),
17773
+ .kui-ShellRoot:has(> .kui-ShellPanel[data-flush][data-presentation='fixed'][data-mode]:not([data-mode='collapsed'])):not(:has(> .kui-ShellSidebar[data-presentation='fixed'][data-mode]:not([data-mode='collapsed']))) > .kui-ShellContent:not([data-flush]),
17774
+ .kui-ShellRoot:has(> .kui-ShellRail[data-flush][data-presentation='fixed'][data-mode]:not([data-mode='collapsed'])):not(:has(> .kui-ShellPanel[data-presentation='fixed'][data-mode]:not([data-mode='collapsed']), > .kui-ShellSidebar[data-presentation='fixed'][data-mode]:not([data-mode='collapsed']))) > .kui-ShellContent:not([data-flush]) {
17775
+ -webkit-margin-start: 0;
17776
+ margin-inline-start: 0;
17777
+ }
17778
+ .kui-ShellRoot:has(> .kui-ShellInspector[data-flush][data-presentation='fixed'][data-mode]:not([data-mode='collapsed'])) > .kui-ShellContent:not([data-flush]) {
17779
+ -webkit-margin-end: 0;
17780
+ margin-inline-end: 0;
17781
+ }
17782
+ .kui-ShellRoot:has(> .kui-ShellBottom[data-flush][data-presentation='fixed'][data-mode]:not([data-mode='collapsed'])) > .kui-ShellContent:not([data-flush]) {
17783
+ -webkit-margin-after: 0;
17784
+ margin-block-end: 0;
17785
+ }
17786
+ .kui-ShellRoot:has(> .kui-ShellSidebar:not([data-flush])) > .kui-ShellContent[data-flush] {
17787
+ grid-column-start: sidebar-start;
17788
+ }
17789
+ .kui-ShellRoot:has(> .kui-ShellPanel:not([data-flush])):not(:has(> .kui-ShellSidebar[data-flush])) > .kui-ShellContent[data-flush] {
17790
+ grid-column-start: panel-start;
17791
+ }
17792
+ .kui-ShellRoot:has(> .kui-ShellRail:not([data-flush])):not(:has(> .kui-ShellPanel[data-flush], > .kui-ShellSidebar[data-flush])) > .kui-ShellContent[data-flush] {
17793
+ grid-column-start: rail-start;
17794
+ }
17795
+ .kui-ShellRoot:has(> .kui-ShellInspector:not([data-flush])) > .kui-ShellContent[data-flush] {
17796
+ grid-column-end: inspector-end;
17797
+ }
17798
+ .kui-ShellRoot:has(> .kui-ShellHeader:not([data-flush])) > .kui-ShellContent[data-flush] {
17799
+ grid-row-start: header-start;
17800
+ }
17801
+ .kui-ShellRoot:has(> .kui-ShellBottom:not([data-flush])) > .kui-ShellContent[data-flush] {
17802
+ grid-row-end: bottom-end;
17803
+ }
17788
17804
  @media (max-width: 767.98px) and (pointer: coarse) {
17789
17805
  .kui-ShellRoot[data-window] {
17790
17806
  height: auto;
package/tokens/base.css CHANGED
@@ -61,6 +61,7 @@
61
61
  --color-page: white;
62
62
  --color-overlay: var(--black-a6);
63
63
  --color-surface: white;
64
+ --color-border: var(--neutral-6, var(--gray-6));
64
65
  --color-ground: var(--neutral-1, var(--gray-1));
65
66
  --field-fill: var(--color-surface);
66
67
  --field-fill-hover: var(--neutral-2);
package/tokens.css CHANGED
@@ -3377,6 +3377,7 @@
3377
3377
  --color-page: white;
3378
3378
  --color-overlay: var(--black-a6);
3379
3379
  --color-surface: white;
3380
+ --color-border: var(--neutral-6, var(--gray-6));
3380
3381
  --color-ground: var(--neutral-1, var(--gray-1));
3381
3382
  --field-fill: var(--color-surface);
3382
3383
  --field-fill-hover: var(--neutral-2);
@@ -1,3 +0,0 @@
1
- "use client";
2
- import{b as H,d as U,g as D}from"./chunk-XUCR7L4G.js";import{a as V,c as m}from"./chunk-3QWGSRYC.js";import{a as k,b as I,c as N}from"./chunk-LTUW36HM.js";import{a as w,b as B,c as A}from"./chunk-QKCNGEX4.js";import{a as T}from"./chunk-WEBNIUEX.js";import{a as y}from"./chunk-G66WDIIV.js";import{b as M}from"./chunk-VWRPVM5K.js";import{f as E}from"./chunk-NFSW36RG.js";import{o as x}from"./chunk-GHWEXMF6.js";import*as e from"react";import Se from"classnames";import{useComposedRefs as ue}from"radix-ui/internal";var L=t=>t==="collapsed"?"closed":"open",ce=t=>t==="closed"?"collapsed":"expanded";function O(t){if(t===void 0)return;if(typeof t=="string")return L(t);let n={};for(let[r,i]of Object.entries(t))i!==void 0&&(n[r]=L(i));return n}var me={controlled:"state",default:"defaultState"},be={initial:"overlay",sm:"fixed"},_=e.forwardRef((t,n)=>{let{className:r,presentation:i=be,expandedSize:o=288,minSize:s=200,maxSize:d=400,resizable:b=!1,collapsible:$=!0,onExpand:W,onCollapse:j,onResize:q,onResizeStart:F,onResizeEnd:G,snapPoints:l,snapTolerance:K,collapseThreshold:p,paneId:S,persistence:u,children:J,style:Q,state:X,defaultState:Y,onStateChange:Z,size:f,defaultSize:P,onSizeChange:ee,sizeUpdate:ae,sizeUpdateMs:te=50,inset:g,id:ne,...c}=t,{table:h,attributes:ie}=N(i,"fixed"),a=k({name:"sidebar",label:"Sidebar",propNames:me,id:ne,controlled:O(X),defaultValue:O(Y),presentationTable:h,builtIn:H,onChange:(le,pe)=>Z?.(ce(le),{reason:pe}),onExpand:W,onCollapse:j,size:o});x("sidebar",g),e.useEffect(()=>{(l!==void 0||p!==void 0||S!==void 0||u!==void 0)&&void 0},[l,p,S,u]);let z=e.useRef(null),oe=ue(n,a.setElement,z),re=B({name:"sidebar",elementId:a.id,elementRef:z,cssVarName:"--sidebar-size",orientation:"vertical",edge:"end",growth:U,expandedSize:o,minSize:s,maxSize:d,resizable:b,collapsible:$,size:f,defaultSize:P,onSizeChange:ee,sizeUpdate:ae,sizeUpdateMs:te,onResize:q,onResizeStart:F,onResizeEnd:G,snapPoints:l,snapTolerance:K,collapseThreshold:p,paneId:S,persistence:u,overlaying:a.overlaying,overlayingNow:()=>h[y()]==="overlay",requestCollapse:()=>a.setValue("closed","toggle"),requestToggle:()=>a.toggle("toggle")}),{handles:v,content:se}=A(J,m),de=b&&a.value!=="closed"&&!a.overlaying?e.createElement(T.Provider,{value:re},v.length>0?v:e.createElement(V,null)):null,R=a.peeking?`var(--sidebar-size, ${o}px)`:void 0,C=w(f,P,s,d);return e.createElement("div",{...D(c),role:c.role??"navigation",id:a.id,ref:oe,className:Se("kui-ShellPane","kui-ShellSidebar",r),...I(a,ie),"data-inset":g||void 0,tabIndex:a.overlaying?-1:c.tabIndex,style:{...Q,"--sidebar-expanded-size":`${o}px`,...C?{"--sidebar-size":C}:{},"--sidebar-min-size":`${s}px`,"--sidebar-max-size":`${d}px`,...R?{"--peek-sidebar-width":R}:{}}},e.createElement("div",{className:"kui-ShellSidebarContent"},e.createElement(E,null,e.createElement(M,null,se))),de)});_.displayName="Shell.Sidebar";_.Handle=m;export{_ as a};
3
- //# sourceMappingURL=chunk-4B3S2DM7.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/_internal/shell-sidebar.tsx"],
4
- "sourcesContent": ["'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useComposedRefs } from 'radix-ui/internal';\nimport { PaneResizeContext } from './shell-resize.js';\nimport { PaneHandle, SidebarHandle } from './shell-handles.js';\nimport { usePane, paneAttributes, usePresentationTable } from './shell-pane.js';\nimport { splitHandles, useInitialPaneSize, useResizablePane, type SizeChangeMeta } from './shell-resizable.js';\nimport { useInsetRegistration, warnOnce, type PaneValue } from './shell-store.js';\nimport { navigationRest, startAnchoredGrowth, withoutRemovedPaneProps } from './shell-rest.js';\nimport { readBreakpoint } from '../../hooks/use-breakpoint.js';\nimport { PaneChromeScope } from './pane-chrome.js';\nimport { PageScope } from './page-scope.js';\nimport type { Breakpoint, CSSPropertiesWithVars, PaneBaseProps, Responsive, SidebarMode } from '../shell.types.js';\n\ntype SidebarStateChangeMeta = { reason: 'init' | 'toggle' | 'responsive' | 'dismiss' };\ntype SidebarControlledProps = { state: Responsive<SidebarMode>; onStateChange?: (state: SidebarMode, meta: SidebarStateChangeMeta) => void; defaultState?: never };\ntype SidebarUncontrolledProps = { defaultState?: SidebarMode | Partial<Record<Breakpoint, SidebarMode>>; onStateChange?: (state: SidebarMode, meta: SidebarStateChangeMeta) => void; state?: never };\ntype SidebarPublicProps = PaneBaseProps & {\n size?: number | string;\n defaultSize?: number | string;\n onSizeChange?: (size: number, meta: SizeChangeMeta) => void;\n sizeUpdate?: 'throttle' | 'debounce';\n sizeUpdateMs?: number;\n /** When true, adds margin and triggers the gray backdrop on the Shell. */\n inset?: boolean;\n} & (SidebarControlledProps | SidebarUncontrolledProps);\n\ntype SidebarComponent = React.ForwardRefExoticComponent<SidebarPublicProps & React.RefAttributes<HTMLDivElement>> & { Handle: typeof SidebarHandle };\n\nconst toValue = (mode: SidebarMode): PaneValue => (mode === 'collapsed' ? 'closed' : 'open');\nconst toMode = (value: PaneValue): SidebarMode => (value === 'closed' ? 'collapsed' : 'expanded');\n\nfunction modeToValue(state: Responsive<SidebarMode> | undefined): PaneValue | Partial<Record<Breakpoint, PaneValue>> | undefined {\n if (state === undefined) return undefined;\n if (typeof state === 'string') return toValue(state);\n const map: Partial<Record<Breakpoint, PaneValue>> = {};\n for (const [bp, mode] of Object.entries(state) as Array<[Breakpoint, SidebarMode | undefined]>) {\n if (mode !== undefined) map[bp] = toValue(mode);\n }\n return map;\n}\n\nconst SIDEBAR_PROP_NAMES = { controlled: 'state', default: 'defaultState' };\n\n/** Since 0.8.0 the Sidebar is in the frame from 768px up, the boundary kookie-ui-v2 uses everywhere. It was 1024px. */\nconst SIDEBAR_DEFAULT_PRESENTATION = { initial: 'overlay', sm: 'fixed' } as const;\n\n\nexport const Sidebar = React.forwardRef<HTMLDivElement, SidebarPublicProps>((props, ref) => {\n const {\n className,\n presentation = SIDEBAR_DEFAULT_PRESENTATION,\n expandedSize = 288,\n minSize = 200,\n maxSize = 400,\n resizable = false,\n collapsible = true,\n onExpand,\n onCollapse,\n onResize,\n onResizeStart,\n onResizeEnd,\n snapPoints,\n snapTolerance,\n collapseThreshold,\n paneId,\n persistence,\n children,\n style,\n state,\n defaultState,\n onStateChange,\n size,\n defaultSize,\n onSizeChange,\n sizeUpdate,\n sizeUpdateMs = 50,\n inset,\n id,\n ...domProps\n } = props;\n\n const { table, attributes } = usePresentationTable(presentation, 'fixed');\n const pane = usePane({\n name: 'sidebar',\n label: 'Sidebar',\n propNames: SIDEBAR_PROP_NAMES,\n id,\n controlled: modeToValue(state),\n defaultValue: modeToValue(defaultState),\n presentationTable: table,\n builtIn: navigationRest,\n onChange: (value, reason) => onStateChange?.(toMode(value), { reason }),\n onExpand,\n onCollapse,\n size: expandedSize,\n });\n useInsetRegistration('sidebar', inset);\n\n React.useEffect(() => {\n if (snapPoints !== undefined || collapseThreshold !== undefined || paneId !== undefined || persistence !== undefined) {\n warnOnce('Shell.Sidebar: `snapPoints`, `collapseThreshold`, `paneId` and `persistence` are deprecated and are removed in 1.0. Keep the size in your own state with `size`/`onSizeChange`.');\n }\n }, [snapPoints, collapseThreshold, paneId, persistence]);\n\n const elementRef = React.useRef<HTMLElement | null>(null);\n const composedRef = useComposedRefs(ref, pane.setElement, elementRef);\n\n const resize = useResizablePane({\n name: 'sidebar',\n elementId: pane.id,\n elementRef,\n cssVarName: '--sidebar-size',\n orientation: 'vertical',\n edge: 'end',\n growth: startAnchoredGrowth,\n expandedSize,\n minSize,\n maxSize,\n resizable,\n collapsible,\n size,\n defaultSize,\n onSizeChange,\n sizeUpdate,\n sizeUpdateMs,\n onResize,\n onResizeStart,\n onResizeEnd,\n snapPoints,\n snapTolerance,\n collapseThreshold,\n paneId,\n persistence,\n overlaying: pane.overlaying,\n overlayingNow: () => table[readBreakpoint()] === 'overlay',\n requestCollapse: () => pane.setValue('closed', 'toggle'),\n requestToggle: () => pane.toggle('toggle'),\n });\n\n const { handles, content } = splitHandles(children, SidebarHandle);\n const handle =\n resizable && pane.value !== 'closed' && !pane.overlaying ? (\n <PaneResizeContext.Provider value={resize}>{handles.length > 0 ? handles : <PaneHandle />}</PaneResizeContext.Provider>\n ) : null;\n\n // A peek previews the width the next toggle opens to.\n const peekWidth = pane.peeking ? `var(--sidebar-size, ${expandedSize}px)` : undefined;\n\n const initialSize = useInitialPaneSize(size, defaultSize, minSize, maxSize);\n return (\n <div\n {...withoutRemovedPaneProps(domProps)}\n role={domProps.role ?? 'navigation'}\n id={pane.id}\n ref={composedRef}\n className={classNames('kui-ShellPane', 'kui-ShellSidebar', className)}\n {...paneAttributes(pane, attributes)}\n data-inset={inset || undefined}\n tabIndex={pane.overlaying ? -1 : domProps.tabIndex}\n style={\n {\n ...style,\n '--sidebar-expanded-size': `${expandedSize}px`,\n ...(initialSize ? { '--sidebar-size': initialSize } : {}),\n '--sidebar-min-size': `${minSize}px`,\n '--sidebar-max-size': `${maxSize}px`,\n ...(peekWidth ? { '--peek-sidebar-width': peekWidth } : {}),\n } as CSSPropertiesWithVars\n }\n >\n <div className=\"kui-ShellSidebarContent\">\n <PaneChromeScope>\n <PageScope>{content}</PageScope>\n </PaneChromeScope>\n </div>\n {handle}\n </div>\n );\n}) as SidebarComponent;\n\nSidebar.displayName = 'Shell.Sidebar';\nSidebar.Handle = SidebarHandle;\n\nexport type { SidebarPublicProps };\n"],
5
- "mappings": "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",
6
- "names": ["React", "classNames", "useComposedRefs", "toValue", "mode", "toMode", "value", "modeToValue", "state", "map", "bp", "SIDEBAR_PROP_NAMES", "SIDEBAR_DEFAULT_PRESENTATION", "Sidebar", "props", "ref", "className", "presentation", "expandedSize", "minSize", "maxSize", "resizable", "collapsible", "onExpand", "onCollapse", "onResize", "onResizeStart", "onResizeEnd", "snapPoints", "snapTolerance", "collapseThreshold", "paneId", "persistence", "children", "style", "defaultState", "onStateChange", "size", "defaultSize", "onSizeChange", "sizeUpdate", "sizeUpdateMs", "inset", "id", "domProps", "table", "attributes", "usePresentationTable", "pane", "usePane", "navigationRest", "reason", "useInsetRegistration", "elementRef", "composedRef", "useComposedRefs", "resize", "useResizablePane", "startAnchoredGrowth", "readBreakpoint", "handles", "content", "splitHandles", "SidebarHandle", "handle", "PaneResizeContext", "PaneHandle", "peekWidth", "initialSize", "useInitialPaneSize", "withoutRemovedPaneProps", "classNames", "paneAttributes", "PaneChromeScope", "PageScope"]
7
- }
@@ -1,3 +0,0 @@
1
- "use client";
2
- import{a as c,c as M,e as w,g as H}from"./chunk-XUCR7L4G.js";import{a as v,d}from"./chunk-3QWGSRYC.js";import{a as y,b as x,c as O}from"./chunk-LTUW36HM.js";import{a as E,b as T,c as N}from"./chunk-QKCNGEX4.js";import{a as R}from"./chunk-WEBNIUEX.js";import{a as S}from"./chunk-G66WDIIV.js";import{b}from"./chunk-VWRPVM5K.js";import{o as C}from"./chunk-GHWEXMF6.js";import*as e from"react";import pe from"classnames";import{useComposedRefs as le}from"radix-ui/internal";var de={controlled:"open",default:"defaultOpen"},ce={initial:"overlay",sm:"fixed"},U=e.forwardRef((k,A)=>{let{className:B,presentation:V=ce,defaultOpen:L,open:_,onOpenChange:D,expandedSize:o=320,minSize:t=200,maxSize:s=500,resizable:m=!1,collapsible:$=!0,onExpand:q,onCollapse:F,onResize:W,onResizeStart:j,onResizeEnd:G,snapPoints:r,snapTolerance:K,collapseThreshold:a,paneId:i,persistence:p,children:J,style:Q,onSizeChange:X,sizeUpdate:Y,sizeUpdateMs:Z=50,size:u,defaultSize:P,inset:f,id:ee,...l}=k,{table:z,attributes:ne}=O(V,"fixed"),n=y({name:"inspector",label:"Inspector",propNames:de,id:ee,controlled:c(_),defaultValue:c(L),presentationTable:z,builtIn:M,onChange:(ae,ie)=>D?.(ae!=="closed",{reason:ie}),onExpand:q,onCollapse:F,size:o});C("inspector",f),e.useEffect(()=>{(r!==void 0||a!==void 0||i!==void 0||p!==void 0)&&void 0},[r,a,i,p]);let h=e.useRef(null),oe=le(A,n.setElement,h),te=T({name:"inspector",elementId:n.id,elementRef:h,cssVarName:"--inspector-size",orientation:"vertical",edge:"start",growth:w,expandedSize:o,minSize:t,maxSize:s,resizable:m,collapsible:$,size:u,defaultSize:P,onSizeChange:X,sizeUpdate:Y,sizeUpdateMs:Z,onResize:W,onResizeStart:j,onResizeEnd:G,snapPoints:r,snapTolerance:K,collapseThreshold:a,paneId:i,persistence:p,overlaying:n.overlaying,overlayingNow:()=>z[S()]==="overlay",requestCollapse:()=>n.setValue("closed","toggle"),requestToggle:()=>n.toggle("toggle")}),{handles:I,content:se}=N(J,d),re=m&&n.shown!==!1&&!n.overlaying?e.createElement(R.Provider,{value:te},I.length>0?I:e.createElement(v,null)):null,g=E(u,P,t,s);return e.createElement("div",{...H(l),role:l.role??"complementary",id:n.id,ref:oe,className:pe("kui-ShellPane","kui-ShellInspector",B),...x(n,ne),"data-inset":f||void 0,tabIndex:n.overlaying?-1:l.tabIndex,style:{...Q,"--inspector-expanded-size":`${o}px`,...g?{"--inspector-size":g}:{},"--inspector-min-size":`${t}px`,"--inspector-max-size":`${s}px`}},e.createElement("div",{className:"kui-ShellInspectorContent"},e.createElement(b,null,se)),re)});U.displayName="Shell.Inspector";U.Handle=d;export{U as a};
3
- //# sourceMappingURL=chunk-AKMRPGNP.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/_internal/shell-inspector.tsx"],
4
- "sourcesContent": ["'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useComposedRefs } from 'radix-ui/internal';\nimport { PaneResizeContext } from './shell-resize.js';\nimport { InspectorHandle, PaneHandle } from './shell-handles.js';\nimport { usePane, paneAttributes, usePresentationTable } from './shell-pane.js';\nimport { splitHandles, useInitialPaneSize, useResizablePane, type SizeChangeMeta } from './shell-resizable.js';\nimport { useInsetRegistration, warnOnce } from './shell-store.js';\nimport { detailRest, endAnchoredGrowth, toPaneValue, withoutRemovedPaneProps } from './shell-rest.js';\nimport { PageScope } from './page-scope.js';\nimport { readBreakpoint } from '../../hooks/use-breakpoint.js';\nimport type { Breakpoint, CSSPropertiesWithVars, PaneBaseProps } from '../shell.types.js';\n\ntype InspectorOpenChangeMeta = { reason: 'init' | 'toggle' | 'responsive' | 'dismiss' };\ntype InspectorControlledProps = { open: boolean | Partial<Record<Breakpoint, boolean>>; onOpenChange?: (open: boolean, meta: InspectorOpenChangeMeta) => void; defaultOpen?: never };\ntype InspectorUncontrolledProps = { defaultOpen?: boolean | Partial<Record<Breakpoint, boolean>>; onOpenChange?: (open: boolean, meta: InspectorOpenChangeMeta) => void; open?: never };\ntype InspectorSizeControlledProps = { size: number | string; defaultSize?: never };\ntype InspectorSizeUncontrolledProps = { defaultSize?: number | string; size?: never };\ntype InspectorPublicProps = PaneBaseProps &\n (InspectorControlledProps | InspectorUncontrolledProps) &\n (InspectorSizeControlledProps | InspectorSizeUncontrolledProps) & {\n onSizeChange?: (size: number, meta: SizeChangeMeta) => void;\n sizeUpdate?: 'throttle' | 'debounce';\n sizeUpdateMs?: number;\n /** When true, adds margin and triggers the gray backdrop on the Shell. */\n inset?: boolean;\n };\n\ntype InspectorComponent = React.ForwardRefExoticComponent<InspectorPublicProps & React.RefAttributes<HTMLDivElement>> & { Handle: typeof InspectorHandle };\n\nconst INSPECTOR_PROP_NAMES = { controlled: 'open', default: 'defaultOpen' };\n\n/** Since 0.8.0 the Inspector is in the frame from 768px up, the boundary kookie-ui-v2 uses everywhere. It was 1280px. */\nconst INSPECTOR_DEFAULT_PRESENTATION = { initial: 'overlay', sm: 'fixed' } as const;\n\nexport const Inspector = React.forwardRef<HTMLDivElement, InspectorPublicProps>((props, ref) => {\n const {\n className,\n presentation = INSPECTOR_DEFAULT_PRESENTATION,\n defaultOpen,\n open,\n onOpenChange,\n expandedSize = 320,\n minSize = 200,\n maxSize = 500,\n resizable = false,\n collapsible = true,\n onExpand,\n onCollapse,\n onResize,\n onResizeStart,\n onResizeEnd,\n snapPoints,\n snapTolerance,\n collapseThreshold,\n paneId,\n persistence,\n children,\n style,\n onSizeChange,\n sizeUpdate,\n sizeUpdateMs = 50,\n size,\n defaultSize,\n inset,\n id,\n ...domProps\n } = props;\n\n const { table, attributes } = usePresentationTable(presentation, 'fixed');\n const pane = usePane({\n name: 'inspector',\n label: 'Inspector',\n propNames: INSPECTOR_PROP_NAMES,\n id,\n controlled: toPaneValue(open),\n defaultValue: toPaneValue(defaultOpen),\n presentationTable: table,\n builtIn: detailRest,\n onChange: (value, reason) => onOpenChange?.(value !== 'closed', { reason }),\n onExpand,\n onCollapse,\n size: expandedSize,\n });\n useInsetRegistration('inspector', inset);\n\n React.useEffect(() => {\n if (snapPoints !== undefined || collapseThreshold !== undefined || paneId !== undefined || persistence !== undefined) {\n warnOnce('Shell.Inspector: `snapPoints`, `collapseThreshold`, `paneId` and `persistence` are deprecated and are removed in 1.0. Keep the size in your own state with `size`/`onSizeChange`.');\n }\n }, [snapPoints, collapseThreshold, paneId, persistence]);\n\n const elementRef = React.useRef<HTMLElement | null>(null);\n const composedRef = useComposedRefs(ref, pane.setElement, elementRef);\n\n const resize = useResizablePane({\n name: 'inspector',\n elementId: pane.id,\n elementRef,\n cssVarName: '--inspector-size',\n orientation: 'vertical',\n edge: 'start',\n growth: endAnchoredGrowth,\n expandedSize,\n minSize,\n maxSize,\n resizable,\n collapsible,\n size,\n defaultSize,\n onSizeChange,\n sizeUpdate,\n sizeUpdateMs,\n onResize,\n onResizeStart,\n onResizeEnd,\n snapPoints,\n snapTolerance,\n collapseThreshold,\n paneId,\n persistence,\n overlaying: pane.overlaying,\n overlayingNow: () => table[readBreakpoint()] === 'overlay',\n requestCollapse: () => pane.setValue('closed', 'toggle'),\n requestToggle: () => pane.toggle('toggle'),\n });\n\n const { handles, content } = splitHandles(children, InspectorHandle);\n const handle = resizable && pane.shown !== false && !pane.overlaying ? <PaneResizeContext.Provider value={resize}>{handles.length > 0 ? handles : <PaneHandle />}</PaneResizeContext.Provider> : null;\n\n const initialSize = useInitialPaneSize(size, defaultSize, minSize, maxSize);\n return (\n <div\n {...withoutRemovedPaneProps(domProps)}\n role={domProps.role ?? 'complementary'}\n id={pane.id}\n ref={composedRef}\n className={classNames('kui-ShellPane', 'kui-ShellInspector', className)}\n {...paneAttributes(pane, attributes)}\n data-inset={inset || undefined}\n tabIndex={pane.overlaying ? -1 : domProps.tabIndex}\n style={\n {\n ...style,\n '--inspector-expanded-size': `${expandedSize}px`,\n ...(initialSize ? { '--inspector-size': initialSize } : {}),\n '--inspector-min-size': `${minSize}px`,\n '--inspector-max-size': `${maxSize}px`,\n } as CSSPropertiesWithVars\n }\n >\n <div className=\"kui-ShellInspectorContent\">\n <PageScope>{content}</PageScope>\n </div>\n {handle}\n </div>\n );\n}) as InspectorComponent;\n\nInspector.displayName = 'Shell.Inspector';\nInspector.Handle = InspectorHandle;\n\nexport type { InspectorPublicProps };\n"],
5
- "mappings": "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",
6
- "names": ["React", "classNames", "useComposedRefs", "INSPECTOR_PROP_NAMES", "INSPECTOR_DEFAULT_PRESENTATION", "Inspector", "props", "ref", "className", "presentation", "defaultOpen", "open", "onOpenChange", "expandedSize", "minSize", "maxSize", "resizable", "collapsible", "onExpand", "onCollapse", "onResize", "onResizeStart", "onResizeEnd", "snapPoints", "snapTolerance", "collapseThreshold", "paneId", "persistence", "children", "style", "onSizeChange", "sizeUpdate", "sizeUpdateMs", "size", "defaultSize", "inset", "id", "domProps", "table", "attributes", "usePresentationTable", "pane", "usePane", "toPaneValue", "detailRest", "value", "reason", "useInsetRegistration", "elementRef", "composedRef", "useComposedRefs", "resize", "useResizablePane", "endAnchoredGrowth", "readBreakpoint", "handles", "content", "splitHandles", "InspectorHandle", "handle", "PaneResizeContext", "PaneHandle", "initialSize", "useInitialPaneSize", "withoutRemovedPaneProps", "classNames", "paneAttributes", "PageScope"]
7
- }
@@ -1,3 +0,0 @@
1
- "use client";
2
- import{a}from"./chunk-FICBVI4M.js";import{a as s}from"./chunk-BQC2P3SN.js";import{b as n,c as i,d as m}from"./chunk-UJ7JERJ5.js";import{d as p}from"./chunk-HBWBPBSA.js";import{c as t}from"./chunk-OKQAVYW4.js";import{a as r}from"./chunk-CLJ6SEGP.js";import*as e from"react";import L from"classnames";var y=["1","2","3","4","5","6","7","8","9"],D=["auto","always","hover","none"],f={...r,size:{type:"enum",className:"kui-r-size",values:y,responsive:!0},...m,...s,...i,...n,underline:{type:"enum",className:"kui-underline",values:D,default:"auto"},...p};var h=e.forwardRef((l,c)=>{let{children:o,className:P,color:u,asChild:d,...k}=t(l,f);return e.createElement(a,{...k,"data-accent-color":u,ref:c,asChild:!0,className:L("kui-reset","kui-Link",P)},d?o:e.createElement("a",null,o))});h.displayName="Link";export{h as a};
3
- //# sourceMappingURL=chunk-B7STVZPU.js.map
@@ -1,2 +0,0 @@
1
- import{a as t}from"./chunk-KEWNXANF.js";import{a as o}from"./chunk-SBRPXQWH.js";import{a as s}from"./chunk-SJXV4BWZ.js";import{a as p}from"./chunk-N6KH2EOU.js";import{d as r}from"./chunk-CUNKWFKA.js";import{a as e}from"./chunk-NZJGC6ZW.js";var i=["1","2","3","4","5","6","7","8","9"],n=["auto","always","hover","none"],D={...e,size:{type:"enum",className:"kui-r-size",values:i,responsive:!0},...p,...t,...s,...o,underline:{type:"enum",className:"kui-underline",values:n,default:"auto"},...r};export{D as a};
2
- //# sourceMappingURL=chunk-EFXHBH3A.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/link.props.tsx"],
4
- "sourcesContent": ["import { asChildPropDef } from '../props/as-child.prop.js';\nimport { accentColorPropDef } from '../props/color.prop.js';\nimport { leadingTrimPropDef } from '../props/leading-trim.prop.js';\nimport { textWrapPropDef } from '../props/text-wrap.prop.js';\nimport { truncatePropDef } from '../props/truncate.prop.js';\nimport { weightPropDef } from '../props/weight.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4', '5', '6', '7', '8', '9'] as const;\nconst underline = ['auto', 'always', 'hover', 'none'] as const;\n\nconst linkPropDefs = {\n ...asChildPropDef,\n size: {\n type: 'enum',\n className: 'kui-r-size',\n values: sizes,\n responsive: true,\n },\n ...weightPropDef,\n ...leadingTrimPropDef,\n ...truncatePropDef,\n ...textWrapPropDef,\n underline: { type: 'enum', className: 'kui-underline', values: underline, default: 'auto' },\n ...accentColorPropDef,\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n underline: PropDef<(typeof underline)[number]>;\n};\n\nexport { linkPropDefs };\n"],
5
- "mappings": "gPASA,IAAMA,EAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EACpDC,EAAY,CAAC,OAAQ,SAAU,QAAS,MAAM,EAE9CC,EAAe,CACnB,GAAGC,EACH,KAAM,CACJ,KAAM,OACN,UAAW,aACX,OAAQH,EACR,WAAY,EACd,EACA,GAAGI,EACH,GAAGC,EACH,GAAGC,EACH,GAAGC,EACH,UAAW,CAAE,KAAM,OAAQ,UAAW,gBAAiB,OAAQN,EAAW,QAAS,MAAO,EAC1F,GAAGO,CACL",
6
- "names": ["sizes", "underline", "linkPropDefs", "asChildPropDef", "weightPropDef", "leadingTrimPropDef", "truncatePropDef", "textWrapPropDef", "accentColorPropDef"]
7
- }
@@ -1,3 +0,0 @@
1
- "use client";
2
- import{b as s}from"./chunk-MAA6LEE2.js";import*as o from"react";import{useLayoutEffect as p}from"radix-ui/internal";function l(e){return typeof e=="object"&&e!==null}function d(e,n){let t={},r=null;for(let i of s){if(e!==void 0&&!l(e)){t[i]=e;continue}let a=l(e)?e[i]:void 0;a!==void 0&&(r={value:a}),t[i]=r?r.value:n(i)}return t}function f(e){let n=e.initial;return s.every(t=>e[t]===n)?n:void 0}function T(e,n){let t=f(n);if(t!==void 0)return{[`data-${e}`]:t};let r={};for(let i of s)r[`data-${e}-${i}`]=n[i];return r}function g(e){return typeof e=="object"&&e!==null?JSON.stringify(e):String(e)}var R=d("fixed",()=>"fixed");function y(){return{entries:new Map,listeners:new Set,version:0,peek:null}}function S(e){e.version+=1;for(let n of e.listeners)n()}function c(e,n){return e.listeners.add(n),()=>{e.listeners.delete(n)}}function m(e,n){e.peek!==n&&(e.peek=n,S(e))}var b=o.createContext(null);function I(e){let n=o.useContext(b);if(!n)throw new Error(`${e} must be used within <Shell.Root>`);return n}function k(e,n){let t=o.useCallback(i=>c(e,i),[e]),r=o.useCallback(()=>e.entries.get(n),[e,n]);return o.useSyncExternalStore(t,r,()=>{})}function v(e,n){let t=o.useCallback(r=>c(e,r),[e]);return o.useSyncExternalStore(t,()=>e.peek===n,()=>!1)}var x=o.createContext(null);function E(e,n){let t=o.useContext(x);if(!t)throw new Error("Shell panes must be used within <Shell.Root>");let{registerInset:r,unregisterInset:i}=t;p(()=>{if(n)return r(e),()=>i(e)},[e,n,r,i])}var u=new Set;function w(e){}export{d as a,f as b,T as c,g as d,R as e,y as f,S as g,c as h,m as i,b as j,I as k,k as l,v as m,x as n,E as o,w as p};
3
- //# sourceMappingURL=chunk-GHWEXMF6.js.map