@kushagradhawan/kookie-ui 0.1.71 → 0.1.72
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.
- package/README.md +4 -0
- package/components.css +63 -380
- package/dist/cjs/components/_internal/base-button.d.ts.map +1 -1
- package/dist/cjs/components/_internal/base-button.js +1 -1
- package/dist/cjs/components/_internal/base-button.js.map +3 -3
- package/dist/cjs/components/button.d.ts.map +1 -1
- package/dist/cjs/components/button.js +1 -1
- package/dist/cjs/components/button.js.map +3 -3
- package/dist/cjs/components/chatbar.d.ts.map +1 -1
- package/dist/cjs/components/chatbar.js.map +2 -2
- package/dist/cjs/components/icon-button.d.ts.map +1 -1
- package/dist/cjs/components/icon-button.js +2 -2
- package/dist/cjs/components/icon-button.js.map +3 -3
- package/dist/cjs/components/shell.d.ts.map +1 -1
- package/dist/cjs/components/shell.js +1 -1
- package/dist/cjs/components/shell.js.map +3 -3
- package/dist/cjs/components/toggle-button.d.ts.map +1 -1
- package/dist/cjs/components/toggle-button.js +1 -1
- package/dist/cjs/components/toggle-button.js.map +3 -3
- package/dist/cjs/components/toggle-icon-button.d.ts.map +1 -1
- package/dist/cjs/components/toggle-icon-button.js +1 -1
- package/dist/cjs/components/toggle-icon-button.js.map +3 -3
- package/dist/cjs/hooks/index.d.ts +2 -0
- package/dist/cjs/hooks/index.d.ts.map +1 -1
- package/dist/cjs/hooks/index.js +1 -1
- package/dist/cjs/hooks/index.js.map +3 -3
- package/dist/cjs/hooks/use-live-announcer.d.ts.map +1 -1
- package/dist/cjs/hooks/use-live-announcer.js +2 -2
- package/dist/cjs/hooks/use-live-announcer.js.map +3 -3
- package/dist/cjs/hooks/use-toggle-state.d.ts +37 -0
- package/dist/cjs/hooks/use-toggle-state.d.ts.map +1 -0
- package/dist/cjs/hooks/use-toggle-state.js +2 -0
- package/dist/cjs/hooks/use-toggle-state.js.map +7 -0
- package/dist/cjs/hooks/use-tooltip-wrapper.d.ts +29 -0
- package/dist/cjs/hooks/use-tooltip-wrapper.d.ts.map +1 -0
- package/dist/cjs/hooks/use-tooltip-wrapper.js +2 -0
- package/dist/cjs/hooks/use-tooltip-wrapper.js.map +7 -0
- package/dist/esm/components/_internal/base-button.d.ts.map +1 -1
- package/dist/esm/components/_internal/base-button.js +1 -1
- package/dist/esm/components/_internal/base-button.js.map +3 -3
- package/dist/esm/components/button.d.ts.map +1 -1
- package/dist/esm/components/button.js +1 -1
- package/dist/esm/components/button.js.map +3 -3
- package/dist/esm/components/chatbar.d.ts.map +1 -1
- package/dist/esm/components/chatbar.js.map +2 -2
- package/dist/esm/components/icon-button.d.ts.map +1 -1
- package/dist/esm/components/icon-button.js +2 -2
- package/dist/esm/components/icon-button.js.map +3 -3
- package/dist/esm/components/shell.d.ts.map +1 -1
- package/dist/esm/components/shell.js +1 -1
- package/dist/esm/components/shell.js.map +3 -3
- package/dist/esm/components/toggle-button.d.ts.map +1 -1
- package/dist/esm/components/toggle-button.js +1 -1
- package/dist/esm/components/toggle-button.js.map +3 -3
- package/dist/esm/components/toggle-icon-button.d.ts.map +1 -1
- package/dist/esm/components/toggle-icon-button.js +1 -1
- package/dist/esm/components/toggle-icon-button.js.map +3 -3
- package/dist/esm/hooks/index.d.ts +2 -0
- package/dist/esm/hooks/index.d.ts.map +1 -1
- package/dist/esm/hooks/index.js +1 -1
- package/dist/esm/hooks/index.js.map +3 -3
- package/dist/esm/hooks/use-live-announcer.d.ts.map +1 -1
- package/dist/esm/hooks/use-live-announcer.js +2 -2
- package/dist/esm/hooks/use-live-announcer.js.map +3 -3
- package/dist/esm/hooks/use-toggle-state.d.ts +37 -0
- package/dist/esm/hooks/use-toggle-state.d.ts.map +1 -0
- package/dist/esm/hooks/use-toggle-state.js +2 -0
- package/dist/esm/hooks/use-toggle-state.js.map +7 -0
- package/dist/esm/hooks/use-tooltip-wrapper.d.ts +29 -0
- package/dist/esm/hooks/use-tooltip-wrapper.d.ts.map +1 -0
- package/dist/esm/hooks/use-tooltip-wrapper.js +2 -0
- package/dist/esm/hooks/use-tooltip-wrapper.js.map +7 -0
- package/package.json +4 -4
- package/schemas/base-button.json +1 -1
- package/schemas/button.json +1 -1
- package/schemas/icon-button.json +1 -1
- package/schemas/index.json +6 -6
- package/schemas/toggle-button.json +1 -1
- package/schemas/toggle-icon-button.json +1 -1
- package/src/components/_internal/base-button.css +136 -614
- package/src/components/_internal/base-button.tsx +15 -13
- package/src/components/button.tsx +13 -42
- package/src/components/chatbar.tsx +1 -13
- package/src/components/icon-button.tsx +20 -44
- package/src/components/image.css +10 -8
- package/src/components/shell.tsx +13 -9
- package/src/components/toggle-button.tsx +30 -59
- package/src/components/toggle-icon-button.tsx +29 -51
- package/src/hooks/index.ts +2 -0
- package/src/hooks/use-live-announcer.ts +34 -7
- package/src/hooks/use-toggle-state.ts +72 -0
- package/src/hooks/use-tooltip-wrapper.ts +28 -0
- package/src/styles/tokens/color.css +11 -1
- package/styles.css +70 -381
- package/tokens/base.css +7 -1
- package/tokens.css +7 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var g=Object.create;var l=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var N=Object.getPrototypeOf,T=Object.prototype.hasOwnProperty;var x=(e,t)=>{for(var o in t)l(e,o,{get:t[o],enumerable:!0})},p=(e,t,o,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of w(t))!T.call(e,n)&&n!==o&&l(e,n,{get:()=>t[n],enumerable:!(a=E(t,n))||a.enumerable});return e};var b=(e,t,o)=>(o=e!=null?g(N(e)):{},p(t||!e||!e.__esModule?l(o,"default",{value:e,enumerable:!0}):o,e)),A=e=>p(l({},"__esModule",{value:!0}),e);var O={};x(O,{IconButton:()=>s});module.exports=A(O);var i=b(require("react")),u=b(require("classnames")),m=require("./_internal/base-button.js"),d=require("./tooltip.js"),B=require("../hooks/use-tooltip-wrapper.js");const s=i.forwardRef(({className:e,tooltip:t,tooltipSide:o="top",tooltipAlign:a="center",tooltipDelayDuration:n,tooltipDisableHoverableContent:y,...r},f)=>{const{tooltipId:I,hasTooltip:P,accessibilityProps:R}=(0,B.useTooltipWrapper)(t),h="aria-label"in r&&r["aria-label"],v="aria-labelledby"in r&&r["aria-labelledby"],C="children"in r&&r.children;!h&&!v&&!C&&console.error(`IconButton: Icon buttons must have an accessible name. Please provide either:
|
|
2
2
|
- aria-label prop with descriptive text
|
|
3
3
|
- aria-labelledby prop referencing a label element
|
|
4
|
-
- or visible text children`);const
|
|
4
|
+
- or visible text children`);const c=i.createElement(m.BaseButton,{...r,...R,ref:f,className:(0,u.default)("rt-IconButton",e)});return P?i.createElement(d.Tooltip,{content:t,side:o,align:a,delayDuration:n,disableHoverableContent:y,id:I},c):c});s.displayName="IconButton";
|
|
5
5
|
//# sourceMappingURL=icon-button.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/icon-button.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nimport classNames from 'classnames';\n\nimport { BaseButton } from './_internal/base-button.js';\nimport { Tooltip } from './tooltip.js';\nimport type { BaseButtonProps } from './_internal/base-button.js';\n\ntype IconButtonElement = React.ElementRef<typeof BaseButton>;\n\n/**\n * Required accessibility props for icon buttons\n * Icon buttons must have an accessible name to meet WCAG guidelines\n *\n * Three ways to provide accessibility:\n * 1. aria-label: Direct descriptive text\n * 2. aria-labelledby: Reference to a label element\n * 3. children: Visible text content (fallback)\n */\ntype AccessibilityProps =\n | { 'aria-label': string; 'aria-labelledby'?: never }\n | { 'aria-label'?: never; 'aria-labelledby': string }\n | { 'aria-label'?: never; 'aria-labelledby'?: never; children: React.ReactNode };\n\n/**\n * Tooltip configuration props that can be passed to IconButton\n * These props are forwarded to the underlying Tooltip component\n */\ninterface IconButtonTooltipProps {\n /** Content to display in the tooltip on hover/focus */\n tooltip?: React.ReactNode;\n /** Side of the button where the tooltip should appear */\n tooltipSide?: 'top' | 'right' | 'bottom' | 'left';\n /** Alignment of the tooltip relative to the button */\n tooltipAlign?: 'start' | 'center' | 'end';\n /** Delay before showing the tooltip (in milliseconds) */\n tooltipDelayDuration?: number;\n /** Whether to disable hoverable content behavior */\n tooltipDisableHoverableContent?: boolean;\n}\n\n/**\n * Core IconButton props excluding the 'as' prop for polymorphic behavior\n * Combines BaseButton props with accessibility requirements and tooltip functionality\n */\ntype IconButtonOwnProps = Omit<BaseButtonProps, 'as'> & AccessibilityProps & IconButtonTooltipProps;\n\n/**\n * Polymorphic IconButton props that support rendering as different HTML elements\n * @template C - The element type to render as (defaults to 'button')\n */\ntype IconButtonProps<C extends React.ElementType = 'button'> = IconButtonOwnProps & {\n /** Element type to render as (e.g., 'a', 'span', etc.) */\n as?: C;\n} & Omit<React.ComponentPropsWithoutRef<C>, keyof IconButtonOwnProps>;\n\n/**\n * IconButton component type that supports polymorphic rendering\n * @template C - The element type to render as\n */\ntype IconButtonComponent = <C extends React.ElementType = 'button'>(
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAuB,oBACvBC,EAAuB,yBAEvBC,EAA2B,sCAC3BC,EAAwB,
|
|
6
|
-
"names": ["icon_button_exports", "__export", "IconButton", "__toCommonJS", "React", "import_classnames", "import_base_button", "import_tooltip", "className", "tooltip", "tooltipSide", "tooltipAlign", "tooltipDelayDuration", "tooltipDisableHoverableContent", "props", "forwardedRef", "tooltipId", "
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nimport classNames from 'classnames';\n\nimport { BaseButton } from './_internal/base-button.js';\nimport { Tooltip } from './tooltip.js';\nimport { useTooltipWrapper } from '../hooks/use-tooltip-wrapper.js';\nimport type { BaseButtonProps } from './_internal/base-button.js';\n\ntype IconButtonElement = React.ElementRef<typeof BaseButton>;\n\n/**\n * Required accessibility props for icon buttons\n * Icon buttons must have an accessible name to meet WCAG guidelines\n *\n * Three ways to provide accessibility:\n * 1. aria-label: Direct descriptive text\n * 2. aria-labelledby: Reference to a label element\n * 3. children: Visible text content (fallback)\n */\ntype AccessibilityProps =\n | { 'aria-label': string; 'aria-labelledby'?: never }\n | { 'aria-label'?: never; 'aria-labelledby': string }\n | { 'aria-label'?: never; 'aria-labelledby'?: never; children: React.ReactNode };\n\n/**\n * Tooltip configuration props that can be passed to IconButton\n * These props are forwarded to the underlying Tooltip component\n */\ninterface IconButtonTooltipProps {\n /** Content to display in the tooltip on hover/focus */\n tooltip?: React.ReactNode;\n /** Side of the button where the tooltip should appear */\n tooltipSide?: 'top' | 'right' | 'bottom' | 'left';\n /** Alignment of the tooltip relative to the button */\n tooltipAlign?: 'start' | 'center' | 'end';\n /** Delay before showing the tooltip (in milliseconds) */\n tooltipDelayDuration?: number;\n /** Whether to disable hoverable content behavior */\n tooltipDisableHoverableContent?: boolean;\n}\n\n/**\n * Core IconButton props excluding the 'as' prop for polymorphic behavior\n * Combines BaseButton props with accessibility requirements and tooltip functionality\n */\ntype IconButtonOwnProps = Omit<BaseButtonProps, 'as'> & AccessibilityProps & IconButtonTooltipProps;\n\n/**\n * Polymorphic IconButton props that support rendering as different HTML elements\n * @template C - The element type to render as (defaults to 'button')\n */\ntype IconButtonProps<C extends React.ElementType = 'button'> = IconButtonOwnProps & {\n /** Element type to render as (e.g., 'a', 'span', etc.) */\n as?: C;\n} & Omit<React.ComponentPropsWithoutRef<C>, keyof IconButtonOwnProps>;\n\n/**\n * IconButton component type that supports polymorphic rendering\n * @template C - The element type to render as\n */\ntype IconButtonComponent = <C extends React.ElementType = 'button'>(props: IconButtonProps<C> & { ref?: React.ForwardedRef<IconButtonElement> }) => React.ReactElement | null;\n\n/**\n * IconButton component for compact, accessible icon-only interactions\n *\n * The IconButton component extends Button with specialized behavior for visual symbols.\n * It enforces accessibility requirements, provides automatic square sizing, and includes\n * built-in tooltip integration. Icon buttons are essential for space-efficient interfaces\n * while maintaining accessibility compliance.\n *\n * Key features:\n * - Enforced accessibility requirements (aria-label, aria-labelledby, or children)\n * - Automatic square aspect ratios for consistent visual alignment\n * - Built-in tooltip support for context and guidance\n * - Same variant and size system as Button for consistency\n * - Runtime validation for accessibility compliance\n *\n * @example\n * ```tsx\n * // Basic icon button with aria-label\n * <IconButton aria-label=\"Settings\">\n * <Settings />\n * </IconButton>\n *\n * // Icon button with tooltip\n * <IconButton aria-label=\"Save\" tooltip=\"Save your progress\">\n * <Save />\n * </IconButton>\n *\n * // Icon button with aria-labelledby\n * <IconButton aria-labelledby=\"settings-label\">\n * <Settings />\n * </IconButton>\n * <span id=\"settings-label\">Open settings panel</span>\n *\n * // Icon button with visible text (fallback)\n * <IconButton>\n * <Settings />\n * Settings\n * </IconButton>\n * ```\n */\nconst IconButton = React.forwardRef(\n (\n { className, tooltip, tooltipSide = 'top', tooltipAlign = 'center', tooltipDelayDuration, tooltipDisableHoverableContent, ...props }: IconButtonProps,\n forwardedRef: React.ForwardedRef<IconButtonElement>,\n ) => {\n // Use shared tooltip wrapper hook for accessibility props\n const { tooltipId, hasTooltip, accessibilityProps: tooltipAccessibilityProps } = useTooltipWrapper(tooltip);\n\n // Runtime accessibility validation to ensure WCAG compliance\n // This helps catch accessibility issues during development\n const hasAriaLabel = 'aria-label' in props && props['aria-label'];\n const hasAriaLabelledBy = 'aria-labelledby' in props && props['aria-labelledby'];\n const hasChildren = 'children' in props && props.children;\n\n // Validate accessible name - throw in development, log error in production\n if (!hasAriaLabel && !hasAriaLabelledBy && !hasChildren) {\n const errorMessage =\n 'IconButton: Icon buttons must have an accessible name. Please provide either:' +\n '\\n- aria-label prop with descriptive text' +\n '\\n- aria-labelledby prop referencing a label element' +\n '\\n- or visible text children';\n\n if (process.env.NODE_ENV === 'development') {\n throw new Error(errorMessage);\n } else {\n console.error(errorMessage);\n }\n }\n\n // Create the base icon button element with accessibility props\n const iconButton = <BaseButton {...props} {...tooltipAccessibilityProps} ref={forwardedRef} className={classNames('rt-IconButton', className)} />;\n\n // If no tooltip is provided, return the icon button as-is for better performance\n if (!hasTooltip) {\n return iconButton;\n }\n\n // Wrap with Tooltip when tooltip content is provided\n // This creates a compound component that handles both button and tooltip functionality\n return (\n <Tooltip content={tooltip} side={tooltipSide} align={tooltipAlign} delayDuration={tooltipDelayDuration} disableHoverableContent={tooltipDisableHoverableContent} id={tooltipId}>\n {iconButton}\n </Tooltip>\n );\n },\n) as IconButtonComponent & { displayName?: string };\n\nIconButton.displayName = 'IconButton';\n\nexport { IconButton };\nexport type { IconButtonProps };\n"],
|
|
5
|
+
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAuB,oBACvBC,EAAuB,yBAEvBC,EAA2B,sCAC3BC,EAAwB,wBACxBC,EAAkC,2CAiGlC,MAAMN,EAAaE,EAAM,WACvB,CACE,CAAE,UAAAK,EAAW,QAAAC,EAAS,YAAAC,EAAc,MAAO,aAAAC,EAAe,SAAU,qBAAAC,EAAsB,+BAAAC,EAAgC,GAAGC,CAAM,EACnIC,IACG,CAEH,KAAM,CAAE,UAAAC,EAAW,WAAAC,EAAY,mBAAoBC,CAA0B,KAAI,qBAAkBT,CAAO,EAIpGU,EAAe,eAAgBL,GAASA,EAAM,YAAY,EAC1DM,EAAoB,oBAAqBN,GAASA,EAAM,iBAAiB,EACzEO,EAAc,aAAcP,GAASA,EAAM,SAG7C,CAACK,GAAgB,CAACC,GAAqB,CAACC,GAUxC,QAAQ,MARR;AAAA;AAAA;AAAA,2BAQ0B,EAK9B,MAAMC,EAAanB,EAAA,cAAC,cAAY,GAAGW,EAAQ,GAAGI,EAA2B,IAAKH,EAAc,aAAW,EAAAQ,SAAW,gBAAiBf,CAAS,EAAG,EAG/I,OAAKS,EAOHd,EAAA,cAAC,WAAQ,QAASM,EAAS,KAAMC,EAAa,MAAOC,EAAc,cAAeC,EAAsB,wBAAyBC,EAAgC,GAAIG,GAClKM,CACH,EAROA,CAUX,CACF,EAEArB,EAAW,YAAc",
|
|
6
|
+
"names": ["icon_button_exports", "__export", "IconButton", "__toCommonJS", "React", "import_classnames", "import_base_button", "import_tooltip", "import_use_tooltip_wrapper", "className", "tooltip", "tooltipSide", "tooltipAlign", "tooltipDelayDuration", "tooltipDisableHoverableContent", "props", "forwardedRef", "tooltipId", "hasTooltip", "tooltipAccessibilityProps", "hasAriaLabel", "hasAriaLabelledBy", "hasChildren", "iconButton", "classNames"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/components/shell.tsx"],"names":[],"mappings":"AA2BA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,yBAAyB,EAA6B,MAAM,kBAAkB,CAAC;AAIxF,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,KAAK,EAAqB,sBAAsB,EAAE,QAAQ,EAAE,WAAW,EAAmC,UAAU,EAAc,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjL,OAAO,EAEL,QAAQ,EAUT,MAAM,oBAAoB,CAAC;AA2M5B,QAAA,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/components/shell.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";"use client";var Be=Object.create;var me=Object.defineProperty;var He=Object.getOwnPropertyDescriptor;var Ve=Object.getOwnPropertyNames;var Ie=Object.getPrototypeOf,Fe=Object.prototype.hasOwnProperty;var Ue=(n,a)=>{for(var d in a)me(n,d,{get:a[d],enumerable:!0})},xe=(n,a,d,y)=>{if(a&&typeof a=="object"||typeof a=="function")for(let u of Ve(a))!Fe.call(n,u)&&u!==d&&me(n,u,{get:()=>a[u],enumerable:!(y=He(a,u))||y.enumerable});return n};var Ee=(n,a,d)=>(d=n!=null?Be(Ie(n)):{},xe(a||!n||!n.__esModule?me(d,"default",{value:n,enumerable:!0}):d,n)),We=n=>xe(me({},"__esModule",{value:!0}),n);var je={};Ue(je,{Bottom:()=>ce.Bottom,Content:()=>pe,Header:()=>ye,Inspector:()=>ue.Inspector,Left:()=>ie,Panel:()=>D,Rail:()=>Q,Root:()=>Ce,Sidebar:()=>ne.Sidebar,Trigger:()=>ve,useResponsivePresentation:()=>oe.useResponsivePresentation,useShell:()=>c.useShell});module.exports=We(je);var e=Ee(require("react")),G=Ee(require("classnames")),Se=Ee(require("./sheet.js")),Re=require("./visually-hidden.js"),oe=require("./shell.hooks.js"),ge=require("./_internal/shell-resize.js"),te=require("./_internal/shell-handles.js"),ae=require("./_internal/shell-prop-helpers.js"),ne=require("./_internal/shell-sidebar.js"),ce=require("./_internal/shell-bottom.js"),ue=require("./_internal/shell-inspector.js"),Te=require("./shell.types.js"),c=require("./shell.context.js");function $e(){const[n,a]=e.useState("initial"),[d,y]=e.useState(!1);return e.useEffect(()=>{if(typeof window>"u")return;const x=Object.entries(Te._BREAKPOINTS).map(([f,r])=>[f,window.matchMedia(r)]),E=()=>{const f=x.filter(([,m])=>m.matches).map(([m])=>m),r=f[f.length-1]??"initial";a(r),y(!0)};E();const S=[];return x.forEach(([,f])=>{const r=f;typeof r.addEventListener=="function"&&typeof r.removeEventListener=="function"?(r.addEventListener("change",E),S.push(()=>r.removeEventListener?.("change",E))):typeof r.addListener=="function"&&typeof r.removeListener=="function"&&(r.addListener(E),S.push(()=>r.removeListener?.(E)))}),()=>{S.forEach(f=>{try{f()}catch{}})}},[]),{bp:n,ready:d}}const Me=Symbol("rtShellSlot");function Y(n,a){return n[Me]=a,n}function Xe(n,a){if(!e.isValidElement(n))return!1;const d=n.type;if(d===a)return!0;const y=a?.[Me];return!!(d?.[Me]&&y&&d[Me]===y)}Y(ne.Sidebar,"Shell.Sidebar"),Y(ue.Inspector,"Shell.Inspector"),Y(ce.Bottom,"Shell.Bottom");function qe(n,a){switch(a.type){case"SET_LEFT_MODE":return a.mode==="collapsed"?{...n,leftMode:"collapsed",panelMode:"collapsed"}:{...n,leftMode:a.mode};case"SET_PANEL_MODE":return a.mode==="expanded"&&n.leftMode!=="expanded"?{...n,leftMode:"expanded",panelMode:"expanded"}:{...n,panelMode:a.mode};case"SET_SIDEBAR_MODE":return{...n,sidebarMode:a.mode};case"SET_INSPECTOR_MODE":return{...n,inspectorMode:a.mode};case"SET_BOTTOM_MODE":return{...n,bottomMode:a.mode};case"TOGGLE_PANE":{switch(a.target){case"left":case"rail":return{...n,leftMode:n.leftMode==="expanded"?"collapsed":"expanded",panelMode:n.leftMode==="expanded"?"collapsed":n.panelMode};case"panel":return n.leftMode==="collapsed"?{...n,leftMode:"expanded",panelMode:"expanded"}:{...n,panelMode:n.panelMode==="expanded"?"collapsed":"expanded"};case"sidebar":{const d=n.sidebarMode==="collapsed"?"expanded":n.sidebarMode==="expanded"?"collapsed":"expanded";return{...n,sidebarMode:d}}case"inspector":return{...n,inspectorMode:n.inspectorMode==="expanded"?"collapsed":"expanded"};case"bottom":return{...n,bottomMode:n.bottomMode==="expanded"?"collapsed":"expanded"};default:return n}return n}case"EXPAND_PANE":{switch(a.target){case"left":case"rail":return{...n,leftMode:"expanded"};case"panel":return{...n,leftMode:"expanded",panelMode:"expanded"};case"sidebar":return{...n,sidebarMode:"expanded"};case"inspector":return{...n,inspectorMode:"expanded"};case"bottom":return{...n,bottomMode:"expanded"};default:return n}return n}case"COLLAPSE_PANE":{switch(a.target){case"left":case"rail":return{...n,leftMode:"collapsed",panelMode:"collapsed"};case"panel":return{...n,panelMode:"collapsed"};case"sidebar":return{...n,sidebarMode:"collapsed"};case"inspector":return{...n,inspectorMode:"collapsed"};case"bottom":return{...n,bottomMode:"collapsed"};default:return n}return n}}return n}const Ce=e.forwardRef(({className:n,children:a,height:d="full",...y},u)=>{const{bp:x,ready:E}=$e(),S=e.Children.toArray(a),f=S.some(t=>e.isValidElement(t)&&t.type?.displayName==="Shell.Panel"&&!!t.props?.defaultOpen),r=S.some(t=>e.isValidElement(t)&&t.type?.displayName==="Shell.Rail"&&!!t.props?.defaultOpen),m=S.some(t=>e.isValidElement(t)&&t.type?.displayName==="Shell.Inspector"&&!!t.props?.defaultOpen),O=S.some(t=>e.isValidElement(t)&&t.type?.displayName==="Shell.Inspector"&&typeof t.props?.open<"u"&&!!t.props?.open),[i,R]=e.useReducer(qe,{leftMode:f||r?"expanded":"collapsed",panelMode:f?"expanded":"collapsed",sidebarMode:"expanded",inspectorMode:m||O?"expanded":"collapsed",bottomMode:"collapsed"}),l=e.useCallback(t=>R({type:"SET_LEFT_MODE",mode:t}),[]),C=e.useCallback(t=>R({type:"SET_PANEL_MODE",mode:t}),[]),g=e.useCallback(t=>R({type:"SET_SIDEBAR_MODE",mode:t}),[]),L=e.useCallback(t=>R({type:"SET_INSPECTOR_MODE",mode:t}),[]),W=e.useCallback(t=>R({type:"SET_BOTTOM_MODE",mode:t}),[]),[w,I]=e.useState(!1),[A,F]=e.useState(!1),J=e.useRef(t=>t==="collapsed"?"thin":t==="thin"?"expanded":"collapsed"),j=e.useCallback(t=>{J.current=t},[]);e.useEffect(()=>{A&&w&&console.warn("Shell: Sidebar cannot coexist with Rail or Panel. Use either Rail+Panel OR Sidebar.")},[A,w]);const[v,B]=e.useState(void 0),z=e.useCallback(t=>B(t),[]),k=e.useRef(64),T=e.useRef(288),s=e.useCallback(t=>{k.current=t},[]),$=e.useCallback(t=>{T.current=t},[]),K=e.useMemo(()=>{const t=e.Children.toArray(a),V=(_,de)=>e.isValidElement(_)&&(_.type===de||_.type?.displayName===de.displayName);return t.some(_=>V(_,Q)||V(_,D))},[a]),X=e.useMemo(()=>{const t=e.Children.toArray(a),V=(_,de)=>e.isValidElement(_)&&(_.type===de||_.type?.displayName===de.displayName);return t.some(_=>V(_,ne.Sidebar))},[a]),P=e.useCallback(t=>{if(t==="sidebar"){const V=J.current(i.sidebarMode);g(V);return}R({type:"TOGGLE_PANE",target:t})},[i.sidebarMode,g]),b=e.useCallback(t=>{if(t==="sidebar")return g("expanded");R({type:"EXPAND_PANE",target:t})},[g]),H=e.useCallback(t=>{if(t==="sidebar")return g("collapsed");R({type:"COLLAPSE_PANE",target:t})},[g]),fe=e.useMemo(()=>({leftMode:i.leftMode,setLeftMode:l,panelMode:i.panelMode,setPanelMode:C,sidebarMode:i.sidebarMode,setSidebarMode:g,inspectorMode:i.inspectorMode,setInspectorMode:L,bottomMode:i.bottomMode,setBottomMode:W,hasLeft:w,setHasLeft:I,hasSidebar:A,setHasSidebar:F,currentBreakpoint:x,currentBreakpointReady:E,leftResolvedPresentation:v,togglePane:P,expandPane:b,collapsePane:H,setSidebarToggleComputer:j,onLeftPres:z,onRailDefaults:s,onPanelDefaults:$}),[i.leftMode,l,i.panelMode,C,i.sidebarMode,g,i.inspectorMode,L,i.bottomMode,W,w,A,x,E,v,P,b,H,j,z,s,$]),U=e.Children.toArray(a),N=(t,V)=>e.isValidElement(t)&&(t.type===V||t.type?.displayName===V.displayName),le=U.filter(t=>N(t,ye)),q=U.filter(t=>N(t,Q)),re=U.filter(t=>N(t,D)),Pe=U.filter(t=>N(t,ne.Sidebar)),o=U.filter(t=>N(t,pe)),p=U.filter(t=>N(t,ue.Inspector)),h=U.filter(t=>N(t,ce.Bottom)),M=q[0]?.props?.open;e.useEffect(()=>{if(typeof M>"u")return;l(!!M?"expanded":"collapsed")},[M,l]);const Z=e.useMemo(()=>d==="full"?{height:"100vh"}:d==="auto"?{height:"auto"}:typeof d=="string"?{height:d}:typeof d=="number"?{height:`${d}px`}:{},[d]),[ee,se]=e.useState(null),be=e.useCallback(t=>se(t),[]),he=e.useCallback(()=>se(null),[]),Oe=e.useMemo(()=>({currentBreakpoint:x,currentBreakpointReady:E,leftResolvedPresentation:v}),[x,E,v]),Le=e.useMemo(()=>({leftMode:i.leftMode,setLeftMode:l}),[i.leftMode,l]),ze=e.useMemo(()=>({panelMode:i.panelMode,setPanelMode:C}),[i.panelMode,C]),ke=e.useMemo(()=>({sidebarMode:i.sidebarMode,setSidebarMode:g}),[i.sidebarMode,g]),Ne=e.useMemo(()=>({inspectorMode:i.inspectorMode,setInspectorMode:L}),[i.inspectorMode,L]),_e=e.useMemo(()=>({bottomMode:i.bottomMode,setBottomMode:W}),[i.bottomMode,W]),De=e.useMemo(()=>({hasLeft:w,setHasLeft:I,hasSidebar:A,setHasSidebar:F}),[w,I,A,F]),we=e.useMemo(()=>({peekTarget:ee,setPeekTarget:se,peekPane:be,clearPeek:he}),[ee,se,be,he]),Ae=e.useMemo(()=>({togglePane:P,expandPane:b,collapsePane:H,setSidebarToggleComputer:j}),[P,b,H,j]);return e.createElement("div",{...y,ref:u,className:(0,G.default)("rt-ShellRoot",n),style:{...Z,...y.style}},e.createElement(c.ShellProvider,{value:{...fe,peekTarget:ee,setPeekTarget:se,peekPane:be,clearPeek:he}},e.createElement(c.PresentationContext.Provider,{value:Oe},e.createElement(c.LeftModeContext.Provider,{value:Le},e.createElement(c.PanelModeContext.Provider,{value:ze},e.createElement(c.SidebarModeContext.Provider,{value:ke},e.createElement(c.InspectorModeContext.Provider,{value:Ne},e.createElement(c.BottomModeContext.Provider,{value:_e},e.createElement(c.CompositionContext.Provider,{value:De},e.createElement(c.PeekContext.Provider,{value:we},e.createElement(c.ActionsContext.Provider,{value:Ae},le,e.createElement("div",{className:"rt-ShellBody","data-peek-target":ee??void 0,style:ee==="rail"||ee==="panel"?{"--peek-rail-width":`${k.current}px`}:void 0},K&&!X?(()=>{const t=q[0],V=t?{onOpenChange:t.props?.onOpenChange,open:t.props?.open,defaultOpen:t.props?.defaultOpen,presentation:t.props?.presentation,collapsible:t.props?.collapsible,onExpand:t.props?.onExpand,onCollapse:t.props?.onCollapse}:{defaultOpen:f?!0:void 0};return e.createElement(ie,{...V},q,re)})():Pe,o,p),h)))))))))))});Ce.displayName="Shell.Root";const ye=e.forwardRef(({className:n,height:a=64,style:d,...y},u)=>e.createElement("header",{...y,ref:u,className:(0,G.default)("rt-ShellHeader",n),style:{...d,"--shell-header-height":`${a}px`}}));ye.displayName="Shell.Header";const Ge=["open","defaultOpen","onOpenChange","mode","defaultMode","onModeChange"],ie=e.forwardRef((n,a)=>{const{className:d,presentation:y={initial:"fixed",sm:"fixed"},collapsible:u=!0,onExpand:x,onCollapse:E,children:S,style:f,...r}=n,m=r.open,O=r.defaultOpen,i=r.onOpenChange,R=(0,ae.omitPaneProps)(r,Ge),l=(0,c.useShell)(),C=(0,oe.useResponsivePresentation)(y),g=C==="overlay",L=C==="stacked",W=e.useRef(null);e.useEffect(()=>{l.onLeftPres?.(C)},[l,C]);const w=e.useCallback(v=>{W.current=v,typeof a=="function"?a(v):a&&(a.current=v)},[a]);e.useEffect(()=>(l.setHasLeft(!0),()=>l.setHasLeft(!1)),[l]);const I=e.useRef(null),A=e.useRef(!1),F=e.useMemo(()=>{if(!(typeof m>"u"))return m?"expanded":"collapsed"},[m]),J=e.useMemo(()=>(0,ae.mapResponsiveBooleanToPaneMode)(O),[O]);(0,oe.useResponsiveInitialState)({controlledValue:F,defaultValue:J,currentValue:l.leftMode,setValue:l.setLeftMode,breakpointReady:l.currentBreakpointReady,onInit:v=>i?.(v==="expanded",{reason:"init"})}),e.useEffect(()=>{typeof m<"u"||(I.current!==null&&I.current!==l.leftMode&&i?.(l.leftMode==="expanded",{reason:"toggle"}),I.current=l.leftMode)},[l,i,m]),e.useEffect(()=>{l.leftMode==="expanded"?x?.():E?.()},[l.leftMode,x,E]);const j=l.leftMode==="expanded";if(g){const v=l.leftMode==="expanded",B=e.Children.toArray(S),z=(b,H)=>e.isValidElement(b)&&b.type===H,k=B.find(b=>z(b,Q)),T=B.find(b=>z(b,D)),s=typeof k?.props?.expandedSize=="number"?k.props.expandedSize:64,$=typeof T?.props?.expandedSize=="number"?T.props.expandedSize:288,K=!!k,X=!!T,P=(K?s:0)+(l.panelMode==="expanded"&&X?$:0);return e.createElement(Se.Root,{open:v,onOpenChange:b=>l.setLeftMode(b?"expanded":"collapsed")},e.createElement(Se.Content,{side:"start",style:{padding:0},width:{initial:`${P}px`}},e.createElement(Re.VisuallyHidden,null,e.createElement(Se.Title,null,"Navigation")),e.createElement("div",{className:"rt-ShellLeft"},S)))}if(L){const v=l.leftMode==="expanded",B=e.Children.toArray(S),z=(b,H)=>e.isValidElement(b)&&b.type===H,k=B.find(b=>z(b,Q)),T=B.find(b=>z(b,D)),s=typeof k?.props?.expandedSize=="number"?k.props.expandedSize:64,$=typeof T?.props?.expandedSize=="number"?T.props.expandedSize:288,K=!!k,P=!!T&&(l.panelMode==="expanded"||l.peekTarget==="panel");return e.createElement("div",{...R,ref:w,className:(0,G.default)("rt-ShellLeft",d),"data-mode":l.leftMode,"data-peek":l.peekTarget==="left"||l.peekTarget==="rail"||l.peekTarget==="panel"||void 0,"data-presentation":C,style:{...f},"data-open":v||void 0},S)}return e.createElement("div",{...R,ref:w,className:(0,G.default)("rt-ShellLeft",d),"data-mode":l.leftMode,"data-peek":l.peekTarget==="left"||l.peekTarget==="rail"||l.peekTarget==="panel"||void 0,"data-presentation":C,style:{...f}},S)});ie.displayName="Shell.Left",Y(ie,"Shell.Left");const Q=e.forwardRef((n,a)=>{const{className:d,presentation:y,expandedSize:u=64,collapsible:x,onExpand:E,onCollapse:S,children:f,style:r,open:m,defaultOpen:O,onOpenChange:i,...R}=n,l=(0,c.useShell)(),C=e.useRef(null);e.useEffect(()=>{const L=typeof m<"u";if(C.current===null){C.current=L;return}C.current!==L&&(console.warn("Shell.Rail: Switching between controlled and uncontrolled `open` is not supported."),C.current=L)},[m]),e.useEffect(()=>{l.onRailDefaults?.(u)},[l,u]);const g=l.leftMode==="expanded";return e.createElement("div",{...R,ref:a,className:(0,G.default)("rt-ShellRail",d),"data-mode":l.leftMode,"data-peek":l.currentBreakpointReady&&l.leftResolvedPresentation!=="overlay"&&l.peekTarget==="rail"||void 0,style:{...r,"--rail-size":`${u}px`}},e.createElement("div",{className:"rt-ShellRailContent","data-visible":l.currentBreakpointReady&&(g||l.leftResolvedPresentation!=="overlay"&&l.peekTarget==="rail")||void 0},f))});Q.displayName="Shell.Rail",Y(Q,"Shell.Rail");const Qe=["className","children","defaultOpen","open","onOpenChange","size","defaultSize","onSizeChange","sizeUpdate","sizeUpdateMs","style"],D=Y(e.forwardRef((n,a)=>{const{className:d,defaultOpen:y,open:u,onOpenChange:x,size:E,defaultSize:S,expandedSize:f=288,minSize:r,maxSize:m,resizable:O,collapsible:i=!0,onExpand:R,onCollapse:l,onResize:C,onResizeStart:g,onResizeEnd:L,snapPoints:W,snapTolerance:w,collapseThreshold:I,paneId:A,persistence:F,children:J,style:j,onSizeChange:v,sizeUpdate:B,sizeUpdateMs:z=50}=n,k=(0,ae.extractPaneDomProps)(n,Qe),T=e.useMemo(()=>{if(!v)return()=>{};if(B==="debounce"){let o=null;return(h,M)=>{o&&clearTimeout(o),o=setTimeout(()=>{v?.(h,M)},z)}}if(B==="throttle"){let o=0;return(p,h)=>{const M=Date.now();M-o>=z&&(o=M,v?.(p,h))}}return(o,p)=>v?.(o,p)},[v,B,z]),s=(0,c.useShell)(),$=e.useRef(null),K=e.useRef(null),X=e.useRef(!1);e.useEffect(()=>{typeof u>"u"&&typeof y=="boolean"&&(y?(s.setLeftMode("expanded"),s.setPanelMode("expanded")):s.setPanelMode("collapsed"))},[]),e.useEffect(()=>{typeof u>"u"||(u?(s.leftMode!=="expanded"&&s.setLeftMode("expanded"),s.panelMode!=="expanded"&&s.setPanelMode("expanded")):s.panelMode!=="collapsed"&&s.setPanelMode("collapsed"))},[s,u]),e.useEffect(()=>{const o=typeof u<"u";D._wasControlled=D._wasControlled??o,D._wasControlled!==o&&(console.warn("Shell.Panel: Switching between controlled and uncontrolled `open` is not supported."),D._wasControlled=o)},[u]),e.useEffect(()=>{X.current||typeof u>"u"&&y&&s.panelMode==="expanded"&&(x?.(!0,{reason:"init"}),X.current=!0)},[]),e.useEffect(()=>{s.onPanelDefaults?.(f)},[s,f]);const P=e.useRef(null),b=e.useCallback(o=>{P.current=o,typeof a=="function"?a(o):a&&(a.current=o)},[a]),H=e.Children.toArray(J),fe=H.filter(o=>e.isValidElement(o)&&o.type===te.PanelHandle),U=H.filter(o=>!(e.isValidElement(o)&&o.type===te.PanelHandle)),N=s.leftResolvedPresentation==="overlay",le=e.useCallback(o=>{if(o==null)return;if(typeof o=="number"&&Number.isFinite(o))return o;const p=String(o).trim();if(!p)return;if(p.endsWith("px"))return Number.parseFloat(p);if(p.endsWith("rem")){const M=Number.parseFloat(getComputedStyle(document.documentElement).fontSize||"16")||16;return Number.parseFloat(p)*M}if(p.endsWith("%")){const M=Number.parseFloat(p),Z=document.documentElement.clientWidth||window.innerWidth||0;return M/100*Z}const h=Number.parseFloat(p);return Number.isFinite(h)?h:void 0},[]),q=e.useMemo(()=>{if(!A||F)return F;const o=`kookie-ui:shell:panel:${A}`;return{load:()=>{if(typeof window>"u")return;const h=window.localStorage.getItem(o);return h?Number(h):void 0},save:h=>{typeof window>"u"||window.localStorage.setItem(o,String(h))}}},[A,F]);e.useEffect(()=>{let o=!0;return(async()=>{if(!O||!q?.load||N)return;const p=await q.load();o&&typeof p=="number"&&P.current&&(P.current.style.setProperty("--panel-size",`${p}px`),C?.(p))})(),()=>{o=!1}},[O,q,C,N]),e.useEffect(()=>{P.current&&N&&P.current.style.setProperty("--panel-size",`${f}px`)},[N,f]),e.useEffect(()=>{if(P.current&&typeof E>"u"&&typeof S<"u"){const o=le(S);if(typeof o=="number"&&Number.isFinite(o)){const M=Math.min((typeof m=="number"?m:void 0)??o,Math.max((typeof r=="number"?r:void 0)??o,o));P.current.style.setProperty("--panel-size",`${M}px`),T(M,{reason:"init"})}}},[]),e.useEffect(()=>{if(!P.current||typeof E>"u")return;const o=le(E);if(typeof o=="number"&&Number.isFinite(o)){const M=Math.min((typeof m=="number"?m:void 0)??o,Math.max((typeof r=="number"?r:void 0)??o,o));P.current.style.setProperty("--panel-size",`${M}px`),T(M,{reason:"controlled"})}},[E,r,m,le,T]),e.useEffect(()=>{if(P.current&&s.leftResolvedPresentation!=="overlay"&&s.leftMode==="expanded"&&s.panelMode==="expanded"){const o=P.current.parentElement||null;try{o?.style.removeProperty("width")}catch{}}},[s.leftResolvedPresentation,s.leftMode,s.panelMode]);const re=s.leftMode==="expanded"&&s.panelMode==="expanded";e.useEffect(()=>{const o=$.current,p=K.current;if(o!==null&&o!==s.panelMode){const h=s.panelMode==="expanded";let M="toggle";p!==s.leftMode&&s.leftMode==="collapsed"&&!h&&(M="left"),x?.(h,{reason:M})}$.current=s.panelMode,K.current=s.leftMode},[s.panelMode,s.leftMode,x]);const Pe=O&&s.leftResolvedPresentation!=="overlay"&&re?e.createElement(ge.PaneResizeContext.Provider,{value:{containerRef:P,cssVarName:"--panel-size",minSize:typeof r=="number"?r:100,maxSize:typeof m=="number"?m:800,defaultSize:f,orientation:"vertical",edge:"end",computeNext:(o,p,h)=>{const M=getComputedStyle(P.current).direction==="rtl",Z=o-p;return h+(M?-Z:Z)},onResize:C,onResizeStart:o=>{const h=P.current?.parentElement;try{h?.style.removeProperty("width")}catch{}g?.(o)},onResizeEnd:o=>{L?.(o),T(o,{reason:"resize"}),q?.save?.(o)},target:"panel",collapsible:!!i,snapPoints:W,snapTolerance:w??8,collapseThreshold:I,requestCollapse:()=>s.setPanelMode("collapsed"),requestToggle:()=>s.togglePane("panel")}},fe.length>0?fe.map((o,p)=>e.cloneElement(o,{key:o.key??p})):e.createElement(te.PaneHandle,null)):null;return e.createElement("div",{...k,ref:b,className:(0,G.default)("rt-ShellPanel",d),"data-mode":s.panelMode,"data-visible":s.currentBreakpointReady&&(re||s.leftResolvedPresentation!=="overlay"&&s.peekTarget==="panel")||void 0,"data-peek":s.currentBreakpointReady&&s.leftResolvedPresentation!=="overlay"&&s.peekTarget==="panel"||void 0,style:{...j,"--panel-size":`${f}px`}},e.createElement("div",{className:"rt-ShellPanelContent","data-visible":re||void 0},U),Pe)}),"Shell.Panel");D.displayName="Shell.Panel",D.Handle=te.PanelHandle;const pe=e.forwardRef(({className:n,...a},d)=>e.createElement("main",{...a,ref:d,className:(0,G.default)("rt-ShellContent",n)}));pe.displayName="Shell.Content",Y(pe,"Shell.Content");const ve=e.forwardRef(({target:n,action:a="toggle",peekOnHover:d,onClick:y,onMouseEnter:u,onMouseLeave:x,children:E,...S},f)=>{const r=(0,c.useShell)(),m=e.useCallback(l=>{switch(y?.(l),r.peekTarget===n&&r.clearPeek(),a){case"toggle":r.togglePane(n);break;case"expand":r.expandPane(n);break;case"collapse":r.collapsePane(n);break}},[r,n,a,y]),O=(()=>{switch(n){case"left":case"rail":return r.leftMode==="collapsed";case"panel":return r.leftMode==="collapsed"||r.panelMode==="collapsed";case"sidebar":return r.sidebarMode==="collapsed";case"inspector":return r.inspectorMode==="collapsed";case"bottom":return r.bottomMode==="collapsed"}})(),i=e.useCallback(l=>{u?.(l),!(!d||!O)&&r.peekPane(n)},[u,d,O,r,n]),R=e.useCallback(l=>{x?.(l),d&&r.peekTarget===n&&r.clearPeek()},[x,d,r,n]);return e.createElement("button",{...S,ref:f,onClick:m,onMouseEnter:i,onMouseLeave:R,"data-shell-trigger":n,"data-shell-action":a},E)});ve.displayName="Shell.Trigger";
|
|
1
|
+
"use strict";"use client";var He=Object.create;var ye=Object.defineProperty;var Ve=Object.getOwnPropertyDescriptor;var Ie=Object.getOwnPropertyNames;var Fe=Object.getPrototypeOf,Ue=Object.prototype.hasOwnProperty;var We=(n,a)=>{for(var d in a)ye(n,d,{get:a[d],enumerable:!0})},xe=(n,a,d,y)=>{if(a&&typeof a=="object"||typeof a=="function")for(let u of Ie(a))!Ue.call(n,u)&&u!==d&&ye(n,u,{get:()=>a[u],enumerable:!(y=Ve(a,u))||y.enumerable});return n};var Ee=(n,a,d)=>(d=n!=null?He(Fe(n)):{},xe(a||!n||!n.__esModule?ye(d,"default",{value:n,enumerable:!0}):d,n)),$e=n=>xe(ye({},"__esModule",{value:!0}),n);var Ke={};We(Ke,{Bottom:()=>ue.Bottom,Content:()=>ce,Header:()=>he,Inspector:()=>fe.Inspector,Left:()=>pe,Panel:()=>D,Rail:()=>Q,Root:()=>Ce,Sidebar:()=>te.Sidebar,Trigger:()=>ve,useResponsivePresentation:()=>ae.useResponsivePresentation,useShell:()=>c.useShell});module.exports=$e(Ke);var e=Ee(require("react")),G=Ee(require("classnames")),Se=Ee(require("./sheet.js")),Re=require("./visually-hidden.js"),ae=require("./shell.hooks.js"),ge=require("./_internal/shell-resize.js"),oe=require("./_internal/shell-handles.js"),le=require("./_internal/shell-prop-helpers.js"),te=require("./_internal/shell-sidebar.js"),ue=require("./_internal/shell-bottom.js"),fe=require("./_internal/shell-inspector.js"),Te=require("./shell.types.js"),c=require("./shell.context.js");function qe(){const[n,a]=e.useState("initial"),[d,y]=e.useState(!1);return e.useEffect(()=>{if(typeof window>"u")return;const x=Object.entries(Te._BREAKPOINTS).map(([f,r])=>[f,window.matchMedia(r)]),E=()=>{const f=x.filter(([,m])=>m.matches).map(([m])=>m),r=f[f.length-1]??"initial";a(r),y(!0)};E();const S=[];return x.forEach(([,f])=>{const r=f;typeof r.addEventListener=="function"&&typeof r.removeEventListener=="function"?(r.addEventListener("change",E),S.push(()=>r.removeEventListener?.("change",E))):typeof r.addListener=="function"&&typeof r.removeListener=="function"&&(r.addListener(E),S.push(()=>r.removeListener?.(E)))}),()=>{S.forEach(f=>{try{f()}catch{}})}},[]),{bp:n,ready:d}}const Pe=Symbol("rtShellSlot");function J(n,a){return n[Pe]=a,n}function Ye(n,a){if(!e.isValidElement(n))return!1;const d=n.type;if(d===a)return!0;const y=a?.[Pe];return!!(d?.[Pe]&&y&&d[Pe]===y)}J(te.Sidebar,"Shell.Sidebar"),J(fe.Inspector,"Shell.Inspector"),J(ue.Bottom,"Shell.Bottom");function Ge(n,a){switch(a.type){case"SET_LEFT_MODE":return a.mode==="collapsed"?{...n,leftMode:"collapsed",panelMode:"collapsed"}:{...n,leftMode:a.mode};case"SET_PANEL_MODE":return a.mode==="expanded"&&n.leftMode!=="expanded"?{...n,leftMode:"expanded",panelMode:"expanded"}:{...n,panelMode:a.mode};case"SET_SIDEBAR_MODE":return{...n,sidebarMode:a.mode};case"SET_INSPECTOR_MODE":return{...n,inspectorMode:a.mode};case"SET_BOTTOM_MODE":return{...n,bottomMode:a.mode};case"TOGGLE_PANE":{switch(a.target){case"left":case"rail":return{...n,leftMode:n.leftMode==="expanded"?"collapsed":"expanded",panelMode:n.leftMode==="expanded"?"collapsed":n.panelMode};case"panel":return n.leftMode==="collapsed"?{...n,leftMode:"expanded",panelMode:"expanded"}:{...n,panelMode:n.panelMode==="expanded"?"collapsed":"expanded"};case"sidebar":{const d=n.sidebarMode==="collapsed"?"expanded":n.sidebarMode==="expanded"?"collapsed":"expanded";return{...n,sidebarMode:d}}case"inspector":return{...n,inspectorMode:n.inspectorMode==="expanded"?"collapsed":"expanded"};case"bottom":return{...n,bottomMode:n.bottomMode==="expanded"?"collapsed":"expanded"};default:return n}return n}case"EXPAND_PANE":{switch(a.target){case"left":case"rail":return{...n,leftMode:"expanded"};case"panel":return{...n,leftMode:"expanded",panelMode:"expanded"};case"sidebar":return{...n,sidebarMode:"expanded"};case"inspector":return{...n,inspectorMode:"expanded"};case"bottom":return{...n,bottomMode:"expanded"};default:return n}return n}case"COLLAPSE_PANE":{switch(a.target){case"left":case"rail":return{...n,leftMode:"collapsed",panelMode:"collapsed"};case"panel":return{...n,panelMode:"collapsed"};case"sidebar":return{...n,sidebarMode:"collapsed"};case"inspector":return{...n,inspectorMode:"collapsed"};case"bottom":return{...n,bottomMode:"collapsed"};default:return n}return n}}return n}const Ce=e.forwardRef(({className:n,children:a,height:d="full",...y},u)=>{const{bp:x,ready:E}=qe(),S=e.Children.toArray(a),f=S.some(t=>e.isValidElement(t)&&t.type?.displayName==="Shell.Panel"&&!!t.props?.defaultOpen),r=S.some(t=>e.isValidElement(t)&&t.type?.displayName==="Shell.Rail"&&!!t.props?.defaultOpen),m=S.some(t=>e.isValidElement(t)&&t.type?.displayName==="Shell.Inspector"&&!!t.props?.defaultOpen),O=S.some(t=>e.isValidElement(t)&&t.type?.displayName==="Shell.Inspector"&&typeof t.props?.open<"u"&&!!t.props?.open),[i,R]=e.useReducer(Ge,{leftMode:f||r?"expanded":"collapsed",panelMode:f?"expanded":"collapsed",sidebarMode:"expanded",inspectorMode:m||O?"expanded":"collapsed",bottomMode:"collapsed"}),l=e.useCallback(t=>R({type:"SET_LEFT_MODE",mode:t}),[]),C=e.useCallback(t=>R({type:"SET_PANEL_MODE",mode:t}),[]),g=e.useCallback(t=>R({type:"SET_SIDEBAR_MODE",mode:t}),[]),L=e.useCallback(t=>R({type:"SET_INSPECTOR_MODE",mode:t}),[]),W=e.useCallback(t=>R({type:"SET_BOTTOM_MODE",mode:t}),[]),[w,I]=e.useState(!1),[A,F]=e.useState(!1),Z=e.useRef(t=>t==="collapsed"?"thin":t==="thin"?"expanded":"collapsed"),j=e.useCallback(t=>{Z.current=t},[]);e.useEffect(()=>{A&&w&&console.warn("Shell: Sidebar cannot coexist with Rail or Panel. Use either Rail+Panel OR Sidebar.")},[A,w]);const[v,B]=e.useState(void 0),z=e.useCallback(t=>B(t),[]),k=e.useRef(64),T=e.useRef(288),s=e.useCallback(t=>{k.current=t},[]),$=e.useCallback(t=>{T.current=t},[]),K=e.useMemo(()=>{const t=e.Children.toArray(a),V=(_,ie)=>e.isValidElement(_)&&(_.type===ie||_.type?.displayName===ie.displayName);return t.some(_=>V(_,Q)||V(_,D))},[a]),X=e.useMemo(()=>{const t=e.Children.toArray(a),V=(_,ie)=>e.isValidElement(_)&&(_.type===ie||_.type?.displayName===ie.displayName);return t.some(_=>V(_,te.Sidebar))},[a]),P=e.useCallback(t=>{if(t==="sidebar"){const V=Z.current(i.sidebarMode);g(V);return}R({type:"TOGGLE_PANE",target:t})},[i.sidebarMode,g]),h=e.useCallback(t=>{if(t==="sidebar")return g("expanded");R({type:"EXPAND_PANE",target:t})},[g]),H=e.useCallback(t=>{if(t==="sidebar")return g("collapsed");R({type:"COLLAPSE_PANE",target:t})},[g]),re=e.useMemo(()=>({leftMode:i.leftMode,setLeftMode:l,panelMode:i.panelMode,setPanelMode:C,sidebarMode:i.sidebarMode,setSidebarMode:g,inspectorMode:i.inspectorMode,setInspectorMode:L,bottomMode:i.bottomMode,setBottomMode:W,hasLeft:w,setHasLeft:I,hasSidebar:A,setHasSidebar:F,currentBreakpoint:x,currentBreakpointReady:E,leftResolvedPresentation:v,togglePane:P,expandPane:h,collapsePane:H,setSidebarToggleComputer:j,onLeftPres:z,onRailDefaults:s,onPanelDefaults:$}),[i.leftMode,l,i.panelMode,C,i.sidebarMode,g,i.inspectorMode,L,i.bottomMode,W,w,A,x,E,v,P,h,H,j,z,s,$]),U=e.Children.toArray(a),N=(t,V)=>e.isValidElement(t)&&(t.type===V||t.type?.displayName===V.displayName),se=U.filter(t=>N(t,he)),q=U.filter(t=>N(t,Q)),de=U.filter(t=>N(t,D)),be=U.filter(t=>N(t,te.Sidebar)),o=U.filter(t=>N(t,ce)),p=U.filter(t=>N(t,fe.Inspector)),b=U.filter(t=>N(t,ue.Bottom)),M=q[0]?.props?.open;e.useEffect(()=>{if(typeof M>"u")return;l(!!M?"expanded":"collapsed")},[M,l]);const ee=e.useMemo(()=>d==="full"?{height:"100vh"}:d==="auto"?{height:"auto"}:typeof d=="string"?{height:d}:typeof d=="number"?{height:`${d}px`}:{},[d]),[Y,ne]=e.useState(null),me=e.useCallback(t=>ne(t),[]),Me=e.useCallback(()=>ne(null),[]),Oe=e.useMemo(()=>({currentBreakpoint:x,currentBreakpointReady:E,leftResolvedPresentation:v}),[x,E,v]),Le=e.useMemo(()=>({leftMode:i.leftMode,setLeftMode:l}),[i.leftMode,l]),ze=e.useMemo(()=>({panelMode:i.panelMode,setPanelMode:C}),[i.panelMode,C]),ke=e.useMemo(()=>({sidebarMode:i.sidebarMode,setSidebarMode:g}),[i.sidebarMode,g]),Ne=e.useMemo(()=>({inspectorMode:i.inspectorMode,setInspectorMode:L}),[i.inspectorMode,L]),_e=e.useMemo(()=>({bottomMode:i.bottomMode,setBottomMode:W}),[i.bottomMode,W]),De=e.useMemo(()=>({hasLeft:w,setHasLeft:I,hasSidebar:A,setHasSidebar:F}),[w,I,A,F]),we=e.useMemo(()=>({peekTarget:Y,setPeekTarget:ne,peekPane:me,clearPeek:Me}),[Y,ne,me,Me]),Ae=e.useMemo(()=>({togglePane:P,expandPane:h,collapsePane:H,setSidebarToggleComputer:j}),[P,h,H,j]),Be=e.useMemo(()=>({...re,peekTarget:Y,setPeekTarget:ne,peekPane:me,clearPeek:Me}),[re,Y,ne,me,Me]);return e.createElement("div",{...y,ref:u,className:(0,G.default)("rt-ShellRoot",n),style:{...ee,...y.style}},e.createElement(c.ShellProvider,{value:Be},e.createElement(c.PresentationContext.Provider,{value:Oe},e.createElement(c.LeftModeContext.Provider,{value:Le},e.createElement(c.PanelModeContext.Provider,{value:ze},e.createElement(c.SidebarModeContext.Provider,{value:ke},e.createElement(c.InspectorModeContext.Provider,{value:Ne},e.createElement(c.BottomModeContext.Provider,{value:_e},e.createElement(c.CompositionContext.Provider,{value:De},e.createElement(c.PeekContext.Provider,{value:we},e.createElement(c.ActionsContext.Provider,{value:Ae},se,e.createElement("div",{className:"rt-ShellBody","data-peek-target":Y??void 0,style:Y==="rail"||Y==="panel"?{"--peek-rail-width":`${k.current}px`}:void 0},K&&!X?(()=>{const t=q[0],V=t?{onOpenChange:t.props?.onOpenChange,open:t.props?.open,defaultOpen:t.props?.defaultOpen,presentation:t.props?.presentation,collapsible:t.props?.collapsible,onExpand:t.props?.onExpand,onCollapse:t.props?.onCollapse}:{defaultOpen:f?!0:void 0};return e.createElement(pe,{...V},q,de)})():be,o,p),b)))))))))))});Ce.displayName="Shell.Root";const he=e.forwardRef(({className:n,height:a=64,style:d,...y},u)=>e.createElement("header",{...y,ref:u,className:(0,G.default)("rt-ShellHeader",n),style:{...d,"--shell-header-height":`${a}px`}}));he.displayName="Shell.Header";const Qe=["open","defaultOpen","onOpenChange","mode","defaultMode","onModeChange"],pe=e.forwardRef((n,a)=>{const{className:d,presentation:y={initial:"fixed",sm:"fixed"},collapsible:u=!0,onExpand:x,onCollapse:E,children:S,style:f,...r}=n,m=r.open,O=r.defaultOpen,i=r.onOpenChange,R=(0,le.omitPaneProps)(r,Qe),l=(0,c.useShell)(),C=(0,ae.useResponsivePresentation)(y),g=C==="overlay",L=C==="stacked",W=e.useRef(null);e.useEffect(()=>{l.onLeftPres?.(C)},[l,C]);const w=e.useCallback(v=>{W.current=v,typeof a=="function"?a(v):a&&(a.current=v)},[a]);e.useEffect(()=>(l.setHasLeft(!0),()=>l.setHasLeft(!1)),[l]);const I=e.useRef(null),A=e.useRef(!1),F=e.useMemo(()=>{if(!(typeof m>"u"))return m?"expanded":"collapsed"},[m]),Z=e.useMemo(()=>(0,le.mapResponsiveBooleanToPaneMode)(O),[O]);(0,ae.useResponsiveInitialState)({controlledValue:F,defaultValue:Z,currentValue:l.leftMode,setValue:l.setLeftMode,breakpointReady:l.currentBreakpointReady,onInit:v=>i?.(v==="expanded",{reason:"init"})}),e.useEffect(()=>{typeof m<"u"||(I.current!==null&&I.current!==l.leftMode&&i?.(l.leftMode==="expanded",{reason:"toggle"}),I.current=l.leftMode)},[l,i,m]),e.useEffect(()=>{l.leftMode==="expanded"?x?.():E?.()},[l.leftMode,x,E]);const j=l.leftMode==="expanded";if(g){const v=l.leftMode==="expanded",B=e.Children.toArray(S),z=(h,H)=>e.isValidElement(h)&&h.type===H,k=B.find(h=>z(h,Q)),T=B.find(h=>z(h,D)),s=typeof k?.props?.expandedSize=="number"?k.props.expandedSize:64,$=typeof T?.props?.expandedSize=="number"?T.props.expandedSize:288,K=!!k,X=!!T,P=(K?s:0)+(l.panelMode==="expanded"&&X?$:0);return e.createElement(Se.Root,{open:v,onOpenChange:h=>l.setLeftMode(h?"expanded":"collapsed")},e.createElement(Se.Content,{side:"start",style:{padding:0},width:{initial:`${P}px`}},e.createElement(Re.VisuallyHidden,null,e.createElement(Se.Title,null,"Navigation")),e.createElement("div",{className:"rt-ShellLeft"},S)))}if(L){const v=l.leftMode==="expanded",B=e.Children.toArray(S),z=(h,H)=>e.isValidElement(h)&&h.type===H,k=B.find(h=>z(h,Q)),T=B.find(h=>z(h,D)),s=typeof k?.props?.expandedSize=="number"?k.props.expandedSize:64,$=typeof T?.props?.expandedSize=="number"?T.props.expandedSize:288,K=!!k,P=!!T&&(l.panelMode==="expanded"||l.peekTarget==="panel");return e.createElement("div",{...R,ref:w,className:(0,G.default)("rt-ShellLeft",d),"data-mode":l.leftMode,"data-peek":l.peekTarget==="left"||l.peekTarget==="rail"||l.peekTarget==="panel"||void 0,"data-presentation":C,style:{...f},"data-open":v||void 0},S)}return e.createElement("div",{...R,ref:w,className:(0,G.default)("rt-ShellLeft",d),"data-mode":l.leftMode,"data-peek":l.peekTarget==="left"||l.peekTarget==="rail"||l.peekTarget==="panel"||void 0,"data-presentation":C,style:{...f}},S)});pe.displayName="Shell.Left",J(pe,"Shell.Left");const Q=e.forwardRef((n,a)=>{const{className:d,presentation:y,expandedSize:u=64,collapsible:x,onExpand:E,onCollapse:S,children:f,style:r,open:m,defaultOpen:O,onOpenChange:i,...R}=n,l=(0,c.useShell)(),C=e.useRef(null);e.useEffect(()=>{const L=typeof m<"u";if(C.current===null){C.current=L;return}C.current!==L&&(console.warn("Shell.Rail: Switching between controlled and uncontrolled `open` is not supported."),C.current=L)},[m]),e.useEffect(()=>{l.onRailDefaults?.(u)},[l,u]);const g=l.leftMode==="expanded";return e.createElement("div",{...R,ref:a,className:(0,G.default)("rt-ShellRail",d),"data-mode":l.leftMode,"data-peek":l.currentBreakpointReady&&l.leftResolvedPresentation!=="overlay"&&l.peekTarget==="rail"||void 0,style:{...r,"--rail-size":`${u}px`}},e.createElement("div",{className:"rt-ShellRailContent","data-visible":l.currentBreakpointReady&&(g||l.leftResolvedPresentation!=="overlay"&&l.peekTarget==="rail")||void 0},f))});Q.displayName="Shell.Rail",J(Q,"Shell.Rail");const je=["className","children","defaultOpen","open","onOpenChange","size","defaultSize","onSizeChange","sizeUpdate","sizeUpdateMs","style"],D=J(e.forwardRef((n,a)=>{const{className:d,defaultOpen:y,open:u,onOpenChange:x,size:E,defaultSize:S,expandedSize:f=288,minSize:r,maxSize:m,resizable:O,collapsible:i=!0,onExpand:R,onCollapse:l,onResize:C,onResizeStart:g,onResizeEnd:L,snapPoints:W,snapTolerance:w,collapseThreshold:I,paneId:A,persistence:F,children:Z,style:j,onSizeChange:v,sizeUpdate:B,sizeUpdateMs:z=50}=n,k=(0,le.extractPaneDomProps)(n,je),T=e.useMemo(()=>{if(!v)return()=>{};if(B==="debounce"){let o=null;return(b,M)=>{o&&clearTimeout(o),o=setTimeout(()=>{v?.(b,M)},z)}}if(B==="throttle"){let o=0;return(p,b)=>{const M=Date.now();M-o>=z&&(o=M,v?.(p,b))}}return(o,p)=>v?.(o,p)},[v,B,z]),s=(0,c.useShell)(),$=e.useRef(null),K=e.useRef(null),X=e.useRef(!1);e.useEffect(()=>{typeof u>"u"&&typeof y=="boolean"&&(y?(s.setLeftMode("expanded"),s.setPanelMode("expanded")):s.setPanelMode("collapsed"))},[]),e.useEffect(()=>{typeof u>"u"||(u?(s.leftMode!=="expanded"&&s.setLeftMode("expanded"),s.panelMode!=="expanded"&&s.setPanelMode("expanded")):s.panelMode!=="collapsed"&&s.setPanelMode("collapsed"))},[s,u]),e.useEffect(()=>{const o=typeof u<"u";D._wasControlled=D._wasControlled??o,D._wasControlled!==o&&(console.warn("Shell.Panel: Switching between controlled and uncontrolled `open` is not supported."),D._wasControlled=o)},[u]),e.useEffect(()=>{X.current||typeof u>"u"&&y&&s.panelMode==="expanded"&&(x?.(!0,{reason:"init"}),X.current=!0)},[]),e.useEffect(()=>{s.onPanelDefaults?.(f)},[s,f]);const P=e.useRef(null),h=e.useCallback(o=>{P.current=o,typeof a=="function"?a(o):a&&(a.current=o)},[a]),H=e.Children.toArray(Z),re=H.filter(o=>e.isValidElement(o)&&o.type===oe.PanelHandle),U=H.filter(o=>!(e.isValidElement(o)&&o.type===oe.PanelHandle)),N=s.leftResolvedPresentation==="overlay",se=e.useCallback(o=>{if(o==null)return;if(typeof o=="number"&&Number.isFinite(o))return o;const p=String(o).trim();if(!p)return;if(p.endsWith("px"))return Number.parseFloat(p);if(p.endsWith("rem")){const M=Number.parseFloat(getComputedStyle(document.documentElement).fontSize||"16")||16;return Number.parseFloat(p)*M}if(p.endsWith("%")){const M=Number.parseFloat(p),ee=document.documentElement.clientWidth||window.innerWidth||0;return M/100*ee}const b=Number.parseFloat(p);return Number.isFinite(b)?b:void 0},[]),q=e.useMemo(()=>{if(!A||F)return F;const o=`kookie-ui:shell:panel:${A}`;return{load:()=>{if(typeof window>"u")return;const b=window.localStorage.getItem(o);return b?Number(b):void 0},save:b=>{typeof window>"u"||window.localStorage.setItem(o,String(b))}}},[A,F]);e.useEffect(()=>{let o=!0;return(async()=>{if(!O||!q?.load||N)return;const p=await q.load();o&&typeof p=="number"&&P.current&&(P.current.style.setProperty("--panel-size",`${p}px`),C?.(p))})(),()=>{o=!1}},[O,q,C,N]),e.useEffect(()=>{P.current&&N&&P.current.style.setProperty("--panel-size",`${f}px`)},[N,f]),e.useEffect(()=>{if(P.current&&typeof E>"u"&&typeof S<"u"){const o=se(S);if(typeof o=="number"&&Number.isFinite(o)){const M=Math.min((typeof m=="number"?m:void 0)??o,Math.max((typeof r=="number"?r:void 0)??o,o));P.current.style.setProperty("--panel-size",`${M}px`),T(M,{reason:"init"})}}},[]),e.useEffect(()=>{if(!P.current||typeof E>"u")return;const o=se(E);if(typeof o=="number"&&Number.isFinite(o)){const M=Math.min((typeof m=="number"?m:void 0)??o,Math.max((typeof r=="number"?r:void 0)??o,o));P.current.style.setProperty("--panel-size",`${M}px`),T(M,{reason:"controlled"})}},[E,r,m,se,T]),e.useEffect(()=>{if(P.current&&s.leftResolvedPresentation!=="overlay"&&s.leftMode==="expanded"&&s.panelMode==="expanded"){const o=P.current.parentElement||null;try{o?.style.removeProperty("width")}catch{}}},[s.leftResolvedPresentation,s.leftMode,s.panelMode]);const de=s.leftMode==="expanded"&&s.panelMode==="expanded";e.useEffect(()=>{const o=$.current,p=K.current;if(o!==null&&o!==s.panelMode){const b=s.panelMode==="expanded";let M="toggle";p!==s.leftMode&&s.leftMode==="collapsed"&&!b&&(M="left"),x?.(b,{reason:M})}$.current=s.panelMode,K.current=s.leftMode},[s.panelMode,s.leftMode,x]);const be=O&&s.leftResolvedPresentation!=="overlay"&&de?e.createElement(ge.PaneResizeContext.Provider,{value:{containerRef:P,cssVarName:"--panel-size",minSize:typeof r=="number"?r:100,maxSize:typeof m=="number"?m:800,defaultSize:f,orientation:"vertical",edge:"end",computeNext:(o,p,b)=>{const M=getComputedStyle(P.current).direction==="rtl",ee=o-p;return b+(M?-ee:ee)},onResize:C,onResizeStart:o=>{const b=P.current?.parentElement;try{b?.style.removeProperty("width")}catch{}g?.(o)},onResizeEnd:o=>{L?.(o),T(o,{reason:"resize"}),q?.save?.(o)},target:"panel",collapsible:!!i,snapPoints:W,snapTolerance:w??8,collapseThreshold:I,requestCollapse:()=>s.setPanelMode("collapsed"),requestToggle:()=>s.togglePane("panel")}},re.length>0?re.map((o,p)=>e.cloneElement(o,{key:o.key??p})):e.createElement(oe.PaneHandle,null)):null;return e.createElement("div",{...k,ref:h,className:(0,G.default)("rt-ShellPanel",d),"data-mode":s.panelMode,"data-visible":s.currentBreakpointReady&&(de||s.leftResolvedPresentation!=="overlay"&&s.peekTarget==="panel")||void 0,"data-peek":s.currentBreakpointReady&&s.leftResolvedPresentation!=="overlay"&&s.peekTarget==="panel"||void 0,style:{...j,"--panel-size":`${f}px`}},e.createElement("div",{className:"rt-ShellPanelContent","data-visible":de||void 0},U),be)}),"Shell.Panel");D.displayName="Shell.Panel",D.Handle=oe.PanelHandle;const ce=e.forwardRef(({className:n,...a},d)=>e.createElement("main",{...a,ref:d,className:(0,G.default)("rt-ShellContent",n)}));ce.displayName="Shell.Content",J(ce,"Shell.Content");const ve=e.forwardRef(({target:n,action:a="toggle",peekOnHover:d,onClick:y,onMouseEnter:u,onMouseLeave:x,children:E,...S},f)=>{const r=(0,c.useShell)(),m=e.useCallback(l=>{switch(y?.(l),r.peekTarget===n&&r.clearPeek(),a){case"toggle":r.togglePane(n);break;case"expand":r.expandPane(n);break;case"collapse":r.collapsePane(n);break}},[r,n,a,y]),O=(()=>{switch(n){case"left":case"rail":return r.leftMode==="collapsed";case"panel":return r.leftMode==="collapsed"||r.panelMode==="collapsed";case"sidebar":return r.sidebarMode==="collapsed";case"inspector":return r.inspectorMode==="collapsed";case"bottom":return r.bottomMode==="collapsed"}})(),i=e.useCallback(l=>{u?.(l),!(!d||!O)&&r.peekPane(n)},[u,d,O,r,n]),R=e.useCallback(l=>{x?.(l),d&&r.peekTarget===n&&r.clearPeek()},[x,d,r,n]);return e.createElement("button",{...S,ref:f,onClick:m,onMouseEnter:i,onMouseLeave:R,"data-shell-trigger":n,"data-shell-action":a},E)});ve.displayName="Shell.Trigger";
|
|
2
2
|
//# sourceMappingURL=shell.js.map
|