@amboss/design-system 4.19.1 → 4.19.2-canary.1
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/build/cjs/components/CheckboxCard/CheckboxCard.d.ts +1 -1
- package/build/cjs/components/Content/ContentCheckbox/ContentCheckbox.d.ts +1 -1
- package/build/cjs/components/Content/ContentCitation/ContentCitation.d.ts +3 -3
- package/build/cjs/components/Content/ContentFontResizer/FontSizeOffsetContext.d.ts +1 -1
- package/build/cjs/components/Content/ContentText/ContentText.d.ts +1 -1
- package/build/cjs/components/Content/DosageButton/DosageButton.d.ts +1 -1
- package/build/cjs/components/DataTable/DataTable.d.ts +2 -3
- package/build/cjs/components/DataTable/TableCell.d.ts +1 -1
- package/build/cjs/components/DataTable/internal/tablePrimitives.d.ts +3 -3
- package/build/cjs/components/EntityList/styled-components.d.ts +8 -8
- package/build/cjs/components/Form/Checkbox/Checkbox.d.ts +2 -2
- package/build/cjs/components/Form/Combobox/StyledSelectComponents.d.ts +4 -4
- package/build/cjs/components/Form/DatePicker/DatePicker.d.ts +1 -1
- package/build/cjs/components/Form/MaskedInput/MaskedInput.d.ts +1 -1
- package/build/cjs/components/Form/Radio/Radio.d.ts +2 -2
- package/build/cjs/components/Form/RangeInput/RangeInput.d.ts +1 -1
- package/build/cjs/components/Form/Textarea/Textarea.d.ts +2 -2
- package/build/cjs/components/Form/Toggle/Toggle.d.ts +3 -3
- package/build/cjs/components/Form/ToggleButton/ToggleButton.d.ts +1 -1
- package/build/cjs/components/Grid/Grid.d.ts +1 -1
- package/build/cjs/components/Internal/LayoutFloat/LayoutFloat.d.ts +1 -13
- package/build/cjs/components/Internal/LayoutFloat/useLayoutFloatDrag.d.ts +1 -1
- package/build/cjs/components/Internal/Sandwich/useSandwichContext.d.ts +1 -1
- package/build/cjs/components/Kbd/Kbd.js +1 -1
- package/build/cjs/components/Layout/-types.d.ts +49 -10
- package/build/cjs/components/Layout/BottomBar/BottomBarItem/LayoutBottomBarItem.d.ts +3 -2
- package/build/cjs/components/Layout/BottomBar/LayoutBottomBar.js +1 -1
- package/build/cjs/components/Layout/BottomBar/StyledLayoutBottomBar.d.ts +1 -1
- package/build/cjs/components/Layout/BottomBar/StyledLayoutBottomBarSection.d.ts +3 -2
- package/build/cjs/components/Layout/BottomBar/StyledLayoutBottomBarSection.js +1 -1
- package/build/cjs/components/Layout/BottomBar/getBottomBarLayout.js +1 -1
- package/build/cjs/components/Layout/Content/Content.js +1 -1
- package/build/cjs/components/Layout/Layout.js +1 -1
- package/build/cjs/components/Layout/LeftPanel/LeftBarToggle.js +1 -1
- package/build/cjs/components/Layout/LeftPanel/LeftPanel.js +1 -1
- package/build/cjs/components/Layout/LeftPanel/LeftPanelDocked.js +1 -1
- package/build/cjs/components/Layout/LeftPanel/LeftPanelHeader.js +1 -1
- package/build/cjs/components/Layout/LeftPanel/useLeftBarContext.d.ts +1 -1
- package/build/cjs/components/Layout/LeftPanel/useLeftPanelCollapseContext.d.ts +1 -1
- package/build/cjs/components/Layout/RightPanel/RightPanel.js +1 -1
- package/build/cjs/components/Layout/RightPanel/RightPanelDocked.d.ts +1 -1
- package/build/cjs/components/Layout/RightPanel/RightPanelDocked.js +1 -1
- package/build/cjs/components/Layout/Split/LayoutSplitColumns.d.ts +18 -0
- package/build/cjs/components/Layout/Split/LayoutSplitColumns.js +1 -0
- package/build/cjs/components/Layout/Split/MobileSplitView/StyledMobileSplitSlideLayer.d.ts +1 -1
- package/build/cjs/components/Layout/Split/MobileSplitView/useMobileSplitStack.d.ts +1 -1
- package/build/cjs/components/Layout/Split/Split.d.ts +1 -2
- package/build/cjs/components/Layout/Split/Split.js +1 -1
- package/build/cjs/components/Layout/Split/SplitDocked.d.ts +1 -1
- package/build/cjs/components/Layout/Split/SplitDocked.js +1 -1
- package/build/cjs/components/Layout/Split/SplitHeader.js +1 -1
- package/build/cjs/components/Layout/context.d.ts +2 -2
- package/build/cjs/components/Layout/reducer.js +1 -1
- package/build/cjs/components/Layout/registry.d.ts +8 -6
- package/build/cjs/components/Layout/registry.js +1 -1
- package/build/cjs/components/Layout/useLayout.js +1 -1
- package/build/cjs/components/Layout/useLayoutRules.js +1 -1
- package/build/cjs/components/Layout/useLeftPanelId.d.ts +1 -1
- package/build/cjs/components/Layout/usePanelAnimations.d.ts +1 -1
- package/build/cjs/components/Layout/usePanelDockedSlide.js +1 -1
- package/build/cjs/components/NavBar/NavBar.d.ts +18 -14
- package/build/cjs/components/NavBar/NavBarContext.d.ts +1 -1
- package/build/cjs/components/NavBar/NavBarDropdownTriggerButton.d.ts +1 -1
- package/build/cjs/components/Patterns/Dialog/DialogContext.d.ts +1 -1
- package/build/cjs/components/Patterns/EmptyState/EmptyState.d.ts +2 -2
- package/build/cjs/components/Patterns/Modal/Modal.d.ts +2 -4
- package/build/cjs/components/Patterns/Popover/PopoverContext.d.ts +1 -1
- package/build/cjs/components/PromptInput/PromptInput.d.ts +1 -1
- package/build/cjs/components/RadioCard/RadioCard.d.ts +1 -1
- package/build/cjs/components/SearchResult/SearchResult.d.ts +1 -3
- package/build/cjs/components/SubThemeProvider/SubThemeContext.d.ts +1 -1
- package/build/cjs/components/Tooltip/FloatingPositionedContext.d.ts +1 -1
- package/build/cjs/components/Utilities/ContainerQuery/ContainerQueryContext.d.ts +1 -1
- package/build/cjs/components/Utilities/ScreenReaderText/ScreenReaderText.d.ts +1 -1
- package/build/cjs/shared/components/SelectableButton.d.ts +1 -1
- package/build/cjs/web-tokens/_sizes.json +55 -55
- package/build/esm/components/CheckboxCard/CheckboxCard.d.ts +1 -1
- package/build/esm/components/Content/ContentCheckbox/ContentCheckbox.d.ts +1 -1
- package/build/esm/components/Content/ContentCitation/ContentCitation.d.ts +3 -3
- package/build/esm/components/Content/ContentFontResizer/FontSizeOffsetContext.d.ts +1 -1
- package/build/esm/components/Content/ContentText/ContentText.d.ts +1 -1
- package/build/esm/components/Content/DosageButton/DosageButton.d.ts +1 -1
- package/build/esm/components/DataTable/DataTable.d.ts +2 -3
- package/build/esm/components/DataTable/TableCell.d.ts +1 -1
- package/build/esm/components/DataTable/internal/tablePrimitives.d.ts +3 -3
- package/build/esm/components/EntityList/styled-components.d.ts +8 -8
- package/build/esm/components/Form/Checkbox/Checkbox.d.ts +2 -2
- package/build/esm/components/Form/Combobox/StyledSelectComponents.d.ts +4 -4
- package/build/esm/components/Form/DatePicker/DatePicker.d.ts +1 -1
- package/build/esm/components/Form/MaskedInput/MaskedInput.d.ts +1 -1
- package/build/esm/components/Form/Radio/Radio.d.ts +2 -2
- package/build/esm/components/Form/RangeInput/RangeInput.d.ts +1 -1
- package/build/esm/components/Form/Textarea/Textarea.d.ts +2 -2
- package/build/esm/components/Form/Toggle/Toggle.d.ts +3 -3
- package/build/esm/components/Form/ToggleButton/ToggleButton.d.ts +1 -1
- package/build/esm/components/Grid/Grid.d.ts +1 -1
- package/build/esm/components/Internal/LayoutFloat/LayoutFloat.d.ts +1 -13
- package/build/esm/components/Internal/LayoutFloat/useLayoutFloatDrag.d.ts +1 -1
- package/build/esm/components/Internal/Sandwich/useSandwichContext.d.ts +1 -1
- package/build/esm/components/Kbd/Kbd.js +1 -1
- package/build/esm/components/Layout/-types.d.ts +49 -10
- package/build/esm/components/Layout/BottomBar/BottomBarItem/LayoutBottomBarItem.d.ts +3 -2
- package/build/esm/components/Layout/BottomBar/LayoutBottomBar.js +1 -1
- package/build/esm/components/Layout/BottomBar/StyledLayoutBottomBar.d.ts +1 -1
- package/build/esm/components/Layout/BottomBar/StyledLayoutBottomBarSection.d.ts +3 -2
- package/build/esm/components/Layout/BottomBar/StyledLayoutBottomBarSection.js +1 -1
- package/build/esm/components/Layout/BottomBar/getBottomBarLayout.js +1 -1
- package/build/esm/components/Layout/Content/Content.js +1 -1
- package/build/esm/components/Layout/Layout.js +1 -1
- package/build/esm/components/Layout/LeftPanel/LeftBarToggle.js +1 -1
- package/build/esm/components/Layout/LeftPanel/LeftPanel.js +1 -1
- package/build/esm/components/Layout/LeftPanel/LeftPanelDocked.js +1 -1
- package/build/esm/components/Layout/LeftPanel/LeftPanelHeader.js +1 -1
- package/build/esm/components/Layout/LeftPanel/useLeftBarContext.d.ts +1 -1
- package/build/esm/components/Layout/LeftPanel/useLeftPanelCollapseContext.d.ts +1 -1
- package/build/esm/components/Layout/RightPanel/RightPanel.js +1 -1
- package/build/esm/components/Layout/RightPanel/RightPanelDocked.d.ts +1 -1
- package/build/esm/components/Layout/RightPanel/RightPanelDocked.js +1 -1
- package/build/esm/components/Layout/Split/LayoutSplitColumns.d.ts +18 -0
- package/build/esm/components/Layout/Split/LayoutSplitColumns.js +1 -0
- package/build/esm/components/Layout/Split/MobileSplitView/StyledMobileSplitSlideLayer.d.ts +1 -1
- package/build/esm/components/Layout/Split/MobileSplitView/useMobileSplitStack.d.ts +1 -1
- package/build/esm/components/Layout/Split/Split.d.ts +1 -2
- package/build/esm/components/Layout/Split/Split.js +1 -1
- package/build/esm/components/Layout/Split/SplitDocked.d.ts +1 -1
- package/build/esm/components/Layout/Split/SplitDocked.js +1 -1
- package/build/esm/components/Layout/Split/SplitHeader.js +1 -1
- package/build/esm/components/Layout/context.d.ts +2 -2
- package/build/esm/components/Layout/reducer.js +1 -1
- package/build/esm/components/Layout/registry.d.ts +8 -6
- package/build/esm/components/Layout/registry.js +1 -1
- package/build/esm/components/Layout/useLayout.js +1 -1
- package/build/esm/components/Layout/useLayoutRules.js +1 -1
- package/build/esm/components/Layout/useLeftPanelId.d.ts +1 -1
- package/build/esm/components/Layout/usePanelAnimations.d.ts +1 -1
- package/build/esm/components/Layout/usePanelDockedSlide.js +1 -1
- package/build/esm/components/NavBar/NavBar.d.ts +18 -14
- package/build/esm/components/NavBar/NavBarContext.d.ts +1 -1
- package/build/esm/components/NavBar/NavBarDropdownTriggerButton.d.ts +1 -1
- package/build/esm/components/Patterns/Dialog/DialogContext.d.ts +1 -1
- package/build/esm/components/Patterns/EmptyState/EmptyState.d.ts +2 -2
- package/build/esm/components/Patterns/Modal/Modal.d.ts +2 -4
- package/build/esm/components/Patterns/Popover/PopoverContext.d.ts +1 -1
- package/build/esm/components/PromptInput/PromptInput.d.ts +1 -1
- package/build/esm/components/RadioCard/RadioCard.d.ts +1 -1
- package/build/esm/components/SearchResult/SearchResult.d.ts +1 -3
- package/build/esm/components/SubThemeProvider/SubThemeContext.d.ts +1 -1
- package/build/esm/components/Tooltip/FloatingPositionedContext.d.ts +1 -1
- package/build/esm/components/Utilities/ContainerQuery/ContainerQueryContext.d.ts +1 -1
- package/build/esm/components/Utilities/ScreenReaderText/ScreenReaderText.d.ts +1 -1
- package/build/esm/shared/components/SelectableButton.d.ts +1 -1
- package/build/esm/web-tokens/_sizes.json +55 -55
- package/build/scss/_variables.scss +1 -14
- package/package.json +1 -1
|
@@ -3,7 +3,7 @@ import type { ForwardedScrollProps, RightPanelVariant } from "../-types";
|
|
|
3
3
|
export type RightPanelDockedProps = ForwardedScrollProps & {
|
|
4
4
|
children: React.ReactNode;
|
|
5
5
|
isVisible: boolean;
|
|
6
|
-
/** Docked column vs. floating window, without page insets
|
|
6
|
+
/** Docked column vs. floating window, without page insets. */
|
|
7
7
|
variant: RightPanelVariant;
|
|
8
8
|
"aria-label": string;
|
|
9
9
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import React from"react";import styled from"@emotion/styled";import{RIGHT_PANEL_BOTTOM_BAR_INSET,Slot,SUBNAV_OFFSET_VAR}from"../-constants";import{useLayoutPortal}from"../registry";import{PanelContainer}from"../PanelContainer";let StyledRightPanelSlot=styled("div",{target:"
|
|
1
|
+
import React from"react";import styled from"@emotion/styled";import{RIGHT_PANEL_BOTTOM_BAR_INSET,Slot,SUBNAV_OFFSET_VAR}from"../-constants";import{useLayoutPortal}from"../registry";import{PanelContainer}from"../PanelContainer";let StyledRightPanelSlot=styled("div",{target:"ejaw8en0",label:"StyledRightPanelSlot"})(({theme,isFloating})=>({position:"absolute",left:0,right:0,bottom:isFloating?0:RIGHT_PANEL_BOTTOM_BAR_INSET,top:isFloating?0:`var(${SUBNAV_OFFSET_VAR}, 0px)`,overflow:"hidden",transition:isFloating?"none":`top ${theme.variables.animation.navSlide.open.duration} ${theme.variables.animation.navSlide.open.timingFunction}`}));export const RightPanelDocked=({children,isVisible,variant,"aria-label":ariaLabel,scrollContainerRef,onScroll})=>useLayoutPortal(Slot.rightPanel,isVisible?React.createElement(StyledRightPanelSlot,{isFloating:"float"===variant},React.createElement(PanelContainer,{"aria-label":ariaLabel,scrollContainerRef:scrollContainerRef,onScroll:onScroll},children)):null);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { PanelDeclarations } from "../registry";
|
|
3
|
+
import type { SplitState } from "../-types";
|
|
4
|
+
type LayoutSplitColumnsProps = {
|
|
5
|
+
/** Whether the desktop split shares the content area. */
|
|
6
|
+
isSplitOpen: boolean;
|
|
7
|
+
/** Public marker declarations supply initial sizes and minima. */
|
|
8
|
+
declared: PanelDeclarations;
|
|
9
|
+
/** Requested width is kept independently from temporarily constrained geometry. */
|
|
10
|
+
splitState: SplitState;
|
|
11
|
+
/** Stable portal carriers preserve state and focus when widths change. */
|
|
12
|
+
contentHostRef: (element: HTMLElement | null) => void;
|
|
13
|
+
splitHostRef: (element: HTMLElement | null) => void;
|
|
14
|
+
"data-e2e-test-id"?: string;
|
|
15
|
+
};
|
|
16
|
+
/** Shared desktop geometry. The outer panel row still owns neighboring panels. */
|
|
17
|
+
export declare function LayoutSplitColumns({ isSplitOpen, declared, splitState, contentHostRef, splitHostRef, "data-e2e-test-id": dataE2eTestId, }: LayoutSplitColumnsProps): React.ReactElement;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import React,{useEffect,useId,useLayoutEffect,useRef,useState}from"react";import{Global}from"@emotion/react";import styled from"@emotion/styled";import{useMove}from"@react-aria/interactions";import{useWindow}from"../../../shared/useWindow";import{PAGE_BOTTOM_BAR_INSET}from"../-constants";import{useLayoutStore}from"../context";let RESIZING_CURSOR_STYLES={"*, *::before, *::after":{cursor:"col-resize !important"}},StyledColumns=styled("div",{target:"esbaf730",label:"StyledColumns"})(({theme,isSplitOpen})=>({position:"relative",display:"flex",height:`calc(100% - ${PAGE_BOTTOM_BAR_INSET})`,width:"100%",overflow:isSplitOpen?"hidden":void 0,...isSplitOpen&&{gap:theme.variables.size.spacing.xxs,maxWidth:theme.variables.layout.split.maxWidth.default,marginInline:"auto"}})),StyledContentHost=styled("div",{target:"esbaf731",label:"StyledContentHost"})(({columnWidth,overlapOffset})=>({position:"relative",height:"100%",width:columnWidth??"100%",minWidth:0,flexShrink:0,marginInlineEnd:overlapOffset})),StyledSplitHost=styled("div",{target:"esbaf732",label:"StyledSplitHost"})(({columnWidth,isOverlapping})=>({position:isOverlapping?"absolute":"relative",...isOverlapping&&{right:0,top:0},height:"100%",width:columnWidth,maxWidth:"100%",flexShrink:0})),StyledSeparator=styled("div",{target:"esbaf733",label:"StyledSeparator"})(({theme,position,isOverlapping,canResize})=>({position:"absolute",top:0,bottom:0,left:position,width:theme.variables.size.spacing.xxs,"&::after":{content:'""',position:"absolute",top:0,bottom:0,right:0,width:isOverlapping?1:"100%",backgroundColor:theme.values.color.canvas,pointerEvents:"none"},cursor:canResize?"col-resize":"default",touchAction:"none",userSelect:"none","&:focus":{outline:"none","&::after":{left:"50%",right:"auto",width:0,outlineWidth:1,outlineStyle:"solid",outlineColor:"Highlight",outlineOffset:0,"@media (-webkit-min-device-pixel-ratio:0)":{outlineColor:"-webkit-focus-ring-color"}}}})),resolveSplitSize=size=>{if(void 0===size)return{fraction:.5,pixels:0};if("number"==typeof size)return{fraction:0,pixels:Number.isFinite(size)?size:0};let parsed=Number.parseFloat(size);return Number.isFinite(parsed)?size.endsWith("px")?{fraction:0,pixels:parsed}:{fraction:parsed/100,pixels:0}:{fraction:.5,pixels:0}};export function LayoutSplitColumns({isSplitOpen,declared,splitState,contentHostRef,splitHostRef,"data-e2e-test-id":dataE2eTestId}){let{dispatch}=useLayoutStore(),currentWindow=useWindow(),splitId=useId(),columnRef=useRef(null),separatorRef=useRef(null),[dimensions,setDimensions]=useState({width:0,gap:0}),[resizeReference,setResizeReference]=useState(null),{width:available,gap}=dimensions;useLayoutEffect(()=>{let column=columnRef.current;if(!column||!currentWindow)return;let measureColumns=()=>{let{width}=column.getBoundingClientRect(),separator=separatorRef.current,measuredGap=separator?.getBoundingClientRect().width??0;setDimensions(previous=>previous.width===width&&previous.gap===measuredGap?previous:{width,gap:measuredGap})};if(measureColumns(),"undefined"==typeof ResizeObserver)return;let observer=new ResizeObserver(measureColumns);return observer.observe(column),separatorRef.current&&observer.observe(separatorRef.current),()=>observer.disconnect()},[currentWindow,isSplitOpen]);let contentMinimumSize=resolveSplitSize(declared.content?.minSize??0),splitMinimumSize=Math.max(0,Number(declared.splitview?.minSize??0)),contentMinimum=Math.min(available,Math.max(0,available*contentMinimumSize.fraction+contentMinimumSize.pixels)),splitMinimum=Math.min(available,splitMinimumSize),allowsOverlap="overlap"===splitState.resizeBehavior,maximumSize=resolveSplitSize(declared.splitview?.maxSize??"90%"),splitMaximum=Math.max(0,Math.min(available,available*maximumSize.fraction+maximumSize.pixels)),maximum=allowsOverlap?splitMaximum:Math.min(splitMaximum,Math.max(0,available-contentMinimum-gap)),minimum=Math.min(splitMinimum,maximum),initialSize=resolveSplitSize(splitState.size??declared.splitview?.defaultSize),{fraction,pixels}=resizeReference&&splitState.size===resizeReference.size?{fraction:.5,pixels:resizeReference.size-resizeReference.available/2}:{fraction:initialSize.fraction,pixels:initialSize.pixels-gap*initialSize.fraction},splitWidth=Math.min(maximum,Math.max(minimum,available*fraction+pixels)),remaining=Math.max(0,available-splitWidth-gap),contentMinimumWidth=`max(0px, calc(${100*contentMinimumSize.fraction}% + ${contentMinimumSize.pixels}px))`,splitMaximumWidth=`max(0px, min(100%, calc(${100*maximumSize.fraction}% + ${maximumSize.pixels}px)))`,maximumWidth=allowsOverlap?splitMaximumWidth:`min(${splitMaximumWidth}, max(0px, calc(100% - ${contentMinimumWidth} - ${gap}px)))`,splitColumnWidth=`min(${maximumWidth}, max(${splitMinimumSize}px, calc(${100*fraction}% + ${pixels}px)))`,remainingWidth=`max(0px, calc(100% - ${splitColumnWidth} - ${gap}px))`,contentWidth=allowsOverlap?`min(100%, max(${contentMinimumWidth}, ${remainingWidth}))`:remainingWidth,isOverlapping=isSplitOpen&&allowsOverlap&&remaining<contentMinimum,canResize=declared.splitview?.resizable??splitState.resizable??!1,dragWidth=useRef(splitWidth),[isPointerResizing,setIsPointerResizing]=useState(!1);useEffect(()=>{if(isSplitOpen&&canResize||setIsPointerResizing(!1),!isPointerResizing||!currentWindow)return;let stopResizeCursor=()=>setIsPointerResizing(!1);return currentWindow.addEventListener("blur",stopResizeCursor),()=>currentWindow.removeEventListener("blur",stopResizeCursor)},[isPointerResizing,isSplitOpen,canResize,currentWindow]),useLayoutEffect(()=>{dispatch({type:"setSplitOverlap",overlapping:isOverlapping})},[dispatch,isOverlapping,splitState.isOverlapping]);let resizeSplit=width=>{let nextWidth=Math.min(maximum,Math.max(minimum,width));setResizeReference({size:nextWidth,available}),dispatch({type:"resize",slot:"splitview",size:nextWidth})},{moveProps}=useMove({onMoveStart:()=>{dragWidth.current=splitWidth,separatorRef.current?.focus(),setIsPointerResizing(!0)},onMove:event=>{dragWidth.current-=event.deltaX,resizeSplit(dragWidth.current)},onMoveEnd:()=>setIsPointerResizing(!1)});return React.createElement(StyledColumns,{ref:columnRef,isSplitOpen:isSplitOpen,"data-e2e-test-id":dataE2eTestId},isPointerResizing&&isSplitOpen&&canResize&&React.createElement(Global,{styles:[RESIZING_CURSOR_STYLES]}),React.createElement(StyledContentHost,{ref:contentHostRef,columnWidth:isSplitOpen?contentWidth:void 0,overlapOffset:isSplitOpen?`min(0px, calc(${remainingWidth} - ${contentWidth}))`:void 0}),isSplitOpen&&React.createElement(React.Fragment,null,React.createElement(StyledSplitHost,{ref:splitHostRef,id:splitId,columnWidth:splitColumnWidth,isOverlapping:isOverlapping}),React.createElement(StyledSeparator,{...canResize?moveProps:{},ref:separatorRef,position:remainingWidth,isOverlapping:isOverlapping,canResize:canResize,role:"separator","aria-orientation":"vertical","aria-controls":splitId,"aria-label":declared.splitview?.resizeHandleLabel,"aria-valuemin":minimum,"aria-valuemax":maximum,"aria-valuenow":splitWidth,"aria-disabled":!canResize||minimum===maximum,tabIndex:-1,onKeyDown:void 0})))}
|
|
@@ -18,5 +18,5 @@ export declare const StyledMobileSplitSlideLayer: import("@emotion/styled").Styl
|
|
|
18
18
|
} & {
|
|
19
19
|
offset: MobileSplitViewOffset;
|
|
20
20
|
layer: MobileSplitLayer;
|
|
21
|
-
},
|
|
21
|
+
}, React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
22
22
|
export {};
|
|
@@ -16,5 +16,5 @@ export type MobileSplitStackValue = {
|
|
|
16
16
|
* front isn't stored here - it derives from the `splitview` slot's visibility
|
|
17
17
|
* (see {@link useMobileSplitView}).
|
|
18
18
|
*/
|
|
19
|
-
export declare const MobileSplitStackContext:
|
|
19
|
+
export declare const MobileSplitStackContext: React.Context<MobileSplitStackValue | null>;
|
|
20
20
|
export declare const useMobileSplitStack: () => MobileSplitStackValue;
|
|
@@ -2,8 +2,7 @@ import React from "react";
|
|
|
2
2
|
import type { SplitProps } from "../-types";
|
|
3
3
|
/**
|
|
4
4
|
* Split view panel. Picks its presentation by breakpoint: an in-flow column
|
|
5
|
-
* beside `Layout.Content` on desktop ({@link SplitDocked}
|
|
6
|
-
* width) or a full-area {@link MobileSplitView} on mobile - both driven by the
|
|
5
|
+
* beside `Layout.Content` on desktop ({@link SplitDocked}) or a full-area {@link MobileSplitView} on mobile - both driven by the
|
|
7
6
|
* same `splitview` slot visibility, so open/close behaves identically either way.
|
|
8
7
|
*/
|
|
9
8
|
export declare const Split: React.FC<SplitProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import React from"react";import{useBreakpoints}from"../../../shared/useBreakpoints";import{
|
|
1
|
+
import React from"react";import{useBreakpoints}from"../../../shared/useBreakpoints";import{useVisibleChange}from"../registry";import{useLayoutSelector}from"../context";import{MobileSplitView}from"./MobileSplitView/MobileSplitView";import{SplitDocked}from"./SplitDocked";export const Split=({children,defaultSize,minWidth,maxWidth,resizable,slotProps,background="primary","aria-label":ariaLabel,onVisibleChange,scrollContainerRef,onScroll,"data-e2e-test-id":dataE2eTestId})=>{let{isMobile}=useBreakpoints();return useVisibleChange(useLayoutSelector(state=>state.splitview.visible),onVisibleChange),isMobile?React.createElement(MobileSplitView,{background:background,"aria-label":ariaLabel,scrollContainerRef:scrollContainerRef,onScroll:onScroll,"data-e2e-test-id":dataE2eTestId},children):React.createElement(SplitDocked,{defaultSize:defaultSize,minWidth:minWidth,maxWidth:maxWidth,resizable:resizable,slotProps:slotProps,background:background,"aria-label":ariaLabel,scrollContainerRef:scrollContainerRef,onScroll:onScroll,"data-e2e-test-id":dataE2eTestId},children)};
|
|
@@ -2,7 +2,7 @@ import React from "react";
|
|
|
2
2
|
import type { SplitProps } from "../-types";
|
|
3
3
|
/**
|
|
4
4
|
* Desktop split view. Declares the `splitview` slot and portals its content
|
|
5
|
-
* while visible
|
|
5
|
+
* while visible inside the shared Content/Split area. Content
|
|
6
6
|
* tracks the `--ds-layout-subnav-offset` var, so an expanded subnav never
|
|
7
7
|
* covers the panel's top edge. `Layout.SplitHeader` / `Layout.SplitFooter`
|
|
8
8
|
* children stick to the panel edges; the remaining content scrolls.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import React from"react";import styled from"@emotion/styled";import{Slot,SUBNAV_OFFSET_VAR}from"../-constants";import{useDeclarePanel,useLayoutPortal}from"../registry";import{
|
|
1
|
+
import React from"react";import styled from"@emotion/styled";import{Slot,SUBNAV_OFFSET_VAR}from"../-constants";import{useDeclarePanel,useLayoutPortal}from"../registry";import{useLayoutSelector}from"../context";import{PanelContainer}from"../PanelContainer";let StyledSplitSlot=styled("div",{target:"e16xyoeh0",label:"StyledSplitSlot"})(({theme})=>({position:"absolute",right:0,left:0,bottom:0,top:`var(${SUBNAV_OFFSET_VAR}, 0px)`,overflow:"hidden",transition:`top ${theme.variables.animation.navSlide.open.duration} ${theme.variables.animation.navSlide.open.timingFunction}`}));export const SplitDocked=({children,defaultSize,minWidth,maxWidth,resizable,slotProps,background,"aria-label":ariaLabel,scrollContainerRef,onScroll,"data-e2e-test-id":dataE2eTestId})=>{let isVisible=useLayoutSelector(state=>state.splitview.visible);return useDeclarePanel(Slot.splitview,{defaultSize,minSize:minWidth,maxSize:maxWidth,resizable,resizeHandleLabel:slotProps?.resizeHandle?.["aria-label"]??ariaLabel}),useLayoutPortal(Slot.splitview,isVisible?React.createElement(StyledSplitSlot,null,React.createElement(PanelContainer,{background:background,"aria-label":ariaLabel,scrollContainerRef:scrollContainerRef,onScroll:onScroll,"data-e2e-test-id":dataE2eTestId},children)):null)};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import React from"react";import{Slot}from"../-constants";import{
|
|
1
|
+
import React from"react";import{Slot}from"../-constants";import{useLayoutStore}from"../context";import{Sandwich}from"../../Internal/Sandwich/Sandwich";import{PanelHeader}from"../../Internal/PanelHeader/PanelHeader";import{PanelHeaderCloseButton}from"../../Internal/PanelHeader/PanelHeaderCloseButton";export function SplitHeader({leftSlot,rightSlot,title,slotProps,showSeparator,"data-e2e-test-id":dataE2eTestId}){let{dispatch}=useLayoutStore(),closeButtonSlotProps=slotProps?.closeButton,headerRightSlot=React.createElement(React.Fragment,null,rightSlot,closeButtonSlotProps&&React.createElement(PanelHeaderCloseButton,{"aria-label":closeButtonSlotProps["aria-label"],onClick:()=>dispatch({type:"setVisible",slot:Slot.splitview,visible:!1})}));return React.createElement(Sandwich.Header,{showSeparator:showSeparator,"data-e2e-test-id":dataE2eTestId},React.createElement(PanelHeader,{leftSlot:leftSlot,title:title,rightSlot:headerRightSlot}))}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { LayoutState, LayoutStorage, LayoutStore } from "./-types";
|
|
2
|
-
export declare const LayoutStoreProvider:
|
|
2
|
+
export declare const LayoutStoreProvider: React.Provider<LayoutStore | null>;
|
|
3
3
|
/** Get the store from context, or throw if used outside the provider. */
|
|
4
4
|
export declare function useLayoutStore(): LayoutStore;
|
|
5
5
|
/**
|
|
@@ -11,7 +11,7 @@ export type LayoutPersistence = {
|
|
|
11
11
|
persistenceKey?: string;
|
|
12
12
|
storage?: LayoutStorage;
|
|
13
13
|
};
|
|
14
|
-
export declare const LayoutPersistenceProvider:
|
|
14
|
+
export declare const LayoutPersistenceProvider: React.Provider<LayoutPersistence>;
|
|
15
15
|
/** Persistence config from the nearest `Layout.Provider` (empty if none). */
|
|
16
16
|
export declare function useLayoutPersistence(): LayoutPersistence;
|
|
17
17
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function sidePanelFields(config={}){return{kind:"sidePanel",visible:config.defaultVisible??!0,collapsible:config.collapsible??!0,resizable:config.resizable??!0,size:config.defaultSize}}function panelState(config={}){return{kind:"panel",visible:config.defaultVisible??!0,size:config.defaultSize}}export function createInitialState(config={}){return{leftPanel:{...sidePanelFields({...config.leftPanel,resizable:!1}),variant:config.leftPanel?.variant},rightPanel:{...sidePanelFields({defaultVisible:!1,...config.rightPanel}),variant:config.rightPanel?.variant},content:panelState(config.content),splitview:panelState({defaultVisible:!1,...config.splitview})}}export const layoutReducer=(state,action,initial)=>{switch(action.type){case"setVisible":{let slot=state[action.slot];if(slot.visible===action.visible)return state;return{...state,[action.slot]:{...slot,visible:action.visible}}}case"setVariant":{let panel=state[action.panel];if(panel.variant===action.variant)return state;return{...state,[action.panel]:{...panel,variant:action.variant}}}case"resize":{let slot=state[action.slot];if(slot.size===action.size)return state;return{...state,[action.slot]:{...slot,size:action.size}}}case"reset":if(!initial)return state;if(!action.slot)return initial;if(state[action.slot]===initial[action.slot])return state;return{...state,[action.slot]:initial[action.slot]};default:return state}};
|
|
1
|
+
function sidePanelFields(config={}){return{kind:"sidePanel",visible:config.defaultVisible??!0,collapsible:config.collapsible??!0,resizable:config.resizable??!0,size:config.defaultSize}}function panelState(config={}){return{kind:"panel",visible:config.defaultVisible??!0,size:config.defaultSize}}export function createInitialState(config={}){return{leftPanel:{...sidePanelFields({...config.leftPanel,resizable:!1}),variant:config.leftPanel?.variant},rightPanel:{...sidePanelFields({defaultVisible:!1,...config.rightPanel}),variant:config.rightPanel?.variant},content:panelState(config.content),splitview:{...panelState({defaultVisible:!1,...config.splitview}),resizable:config.splitview?.resizable??!1}}}export const layoutReducer=(state,action,initial)=>{switch(action.type){case"setVisible":{let slot=state[action.slot];if(slot.visible===action.visible)return state;return{...state,[action.slot]:{...slot,visible:action.visible}}}case"setVariant":{let panel=state[action.panel];if(panel.variant===action.variant)return state;return{...state,[action.panel]:{...panel,variant:action.variant}}}case"setSplitResizeBehavior":if((state.splitview.resizeBehavior??"clamp")===action.behavior)return state;return{...state,splitview:{...state.splitview,resizeBehavior:action.behavior}};case"setSplitOverlap":if(!!state.splitview.isOverlapping===action.overlapping)return state;return{...state,splitview:{...state.splitview,isOverlapping:action.overlapping}};case"resize":{let slot=state[action.slot];if(slot.size===action.size)return state;return{...state,[action.slot]:{...slot,size:action.size}}}case"reset":if(!initial)return state;if(!action.slot)return initial;if(state[action.slot]===initial[action.slot])return state;return{...state,[action.slot]:initial[action.slot]};default:return state}};
|
|
@@ -5,7 +5,7 @@ export type PortalTargets = Partial<Record<SlotKey, HTMLElement | null>>;
|
|
|
5
5
|
type LayoutPortalTargets = PortalTargets & {
|
|
6
6
|
root?: HTMLElement | null;
|
|
7
7
|
};
|
|
8
|
-
export declare const LayoutPortalContext:
|
|
8
|
+
export declare const LayoutPortalContext: React.Context<LayoutPortalTargets>;
|
|
9
9
|
/**
|
|
10
10
|
* Portal `children` into the host DOM node registered for `slot`. Returns the
|
|
11
11
|
* portal (or `null` if the host isn't mounted yet). Call unconditionally -
|
|
@@ -20,6 +20,8 @@ export declare function useLayoutPortal(slot: SlotKey | "root", children: ReactN
|
|
|
20
20
|
*/
|
|
21
21
|
export type PanelReg = {
|
|
22
22
|
defaultSize?: Size;
|
|
23
|
+
/** Accessible name for an independently resizable Split separator. */
|
|
24
|
+
resizeHandleLabel?: string;
|
|
23
25
|
minSize?: Size;
|
|
24
26
|
maxSize?: Size;
|
|
25
27
|
collapsible?: boolean;
|
|
@@ -38,11 +40,11 @@ export type PanelRegistry = {
|
|
|
38
40
|
register: (slot: SlotKey, reg: PanelReg) => void;
|
|
39
41
|
unregister: (slot: SlotKey) => void;
|
|
40
42
|
};
|
|
41
|
-
export declare const PanelRegistryContext:
|
|
43
|
+
export declare const PanelRegistryContext: React.Context<PanelRegistry | null>;
|
|
42
44
|
/** Register this slot as a panel for the marker's lifetime. */
|
|
43
45
|
export declare function useDeclarePanel(slot: SlotKey, reg: PanelReg): void;
|
|
44
46
|
export type PanelDeclarations = Partial<Record<SlotKey, PanelReg>>;
|
|
45
|
-
export declare const PanelDeclarationsContext:
|
|
47
|
+
export declare const PanelDeclarationsContext: React.Context<Partial<Record<"content" | "leftPanel" | "rightPanel" | "splitview", PanelReg>>>;
|
|
46
48
|
/**
|
|
47
49
|
* The ids of the columns in the resizable row, in order, joined with commas.
|
|
48
50
|
* Changes when a column joins or leaves the row, and only then. A column that
|
|
@@ -51,7 +53,7 @@ export declare const PanelDeclarationsContext: import("react").Context<Partial<R
|
|
|
51
53
|
* had the last time the same set of columns was on screen - re-checks its rest
|
|
52
54
|
* against it.
|
|
53
55
|
*/
|
|
54
|
-
export declare const PanelRowContext:
|
|
56
|
+
export declare const PanelRowContext: React.Context<string>;
|
|
55
57
|
/** The row's current column set, as a stable key. Empty outside a Layout. */
|
|
56
58
|
export declare const usePanelRow: () => string;
|
|
57
59
|
/**
|
|
@@ -63,7 +65,7 @@ export declare const usePanelRow: () => string;
|
|
|
63
65
|
export type PanelPresence = {
|
|
64
66
|
setPresent: (slot: SlotKey, isPresent: boolean) => void;
|
|
65
67
|
};
|
|
66
|
-
export declare const PanelPresenceContext:
|
|
68
|
+
export declare const PanelPresenceContext: React.Context<PanelPresence | null>;
|
|
67
69
|
/** Report this slot's live presence so the Layout keeps its column mounted
|
|
68
70
|
* through the exit animation. No-op outside a Layout. */
|
|
69
71
|
export declare function usePanelPresence(slot: SlotKey, isPresent: boolean): void;
|
|
@@ -85,7 +87,7 @@ export type PanelAnimationControl = {
|
|
|
85
87
|
/** Mute the Group's resize/collapse/persist callbacks for a slot mid-slide. */
|
|
86
88
|
setResizeSuppressed: (slot: SlotKey, suppressed: boolean) => void;
|
|
87
89
|
};
|
|
88
|
-
export declare const PanelAnimationContext:
|
|
90
|
+
export declare const PanelAnimationContext: React.Context<PanelAnimationControl | null>;
|
|
89
91
|
/** Access the Layout's panel-animation control. Null outside a Layout. */
|
|
90
92
|
export declare function usePanelAnimationControl(): PanelAnimationControl | null;
|
|
91
93
|
/** Run `onChange(value)` when `value` transitions (not on initial mount). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createContext,useContext,useEffect,useLayoutEffect,useRef}from"react";import{createPortal}from"react-dom";export const LayoutPortalContext=createContext({});export function useLayoutPortal(slot,children){let slotNode=useContext(LayoutPortalContext)[slot]??null;return slotNode?createPortal(children,slotNode):null}export const PanelRegistryContext=createContext(null);export function useDeclarePanel(slot,reg){let registry=useContext(PanelRegistryContext),{defaultSize,minSize,maxSize,collapsible,resizable,lockWidthOnWindowResize,variant}=reg;useLayoutEffect(()=>{if(registry)return registry.register(slot,{defaultSize,minSize,maxSize,collapsible,resizable,lockWidthOnWindowResize,variant}),()=>registry.unregister(slot)},[registry,slot,defaultSize,minSize,maxSize,collapsible,resizable,lockWidthOnWindowResize,variant])}export const PanelDeclarationsContext=createContext({});export const PanelRowContext=createContext("");export const usePanelRow=()=>useContext(PanelRowContext);export const PanelPresenceContext=createContext(null);export function usePanelPresence(slot,isPresent){let presence=useContext(PanelPresenceContext);useLayoutEffect(()=>{if(presence)return presence.setPresent(slot,isPresent),()=>presence.setPresent(slot,!1)},[presence,slot,isPresent])}export const PanelAnimationContext=createContext(null);export function usePanelAnimationControl(){return useContext(PanelAnimationContext)}export function useRunCallbackOnValueChange(value,onChange){let prev=useRef(value);useEffect(()=>{prev.current!==value&&(prev.current=value,onChange?.(value))},[value,onChange])}export function useVisibleChange(visible,onChange){useRunCallbackOnValueChange(visible,onChange)}
|
|
1
|
+
import{createContext,useContext,useEffect,useLayoutEffect,useRef}from"react";import{createPortal}from"react-dom";export const LayoutPortalContext=createContext({});export function useLayoutPortal(slot,children){let slotNode=useContext(LayoutPortalContext)[slot]??null;return slotNode?createPortal(children,slotNode):null}export const PanelRegistryContext=createContext(null);export function useDeclarePanel(slot,reg){let registry=useContext(PanelRegistryContext),{defaultSize,resizeHandleLabel,minSize,maxSize,collapsible,resizable,lockWidthOnWindowResize,variant}=reg;useLayoutEffect(()=>{if(registry)return registry.register(slot,{defaultSize,resizeHandleLabel,minSize,maxSize,collapsible,resizable,lockWidthOnWindowResize,variant}),()=>registry.unregister(slot)},[registry,slot,defaultSize,resizeHandleLabel,minSize,maxSize,collapsible,resizable,lockWidthOnWindowResize,variant])}export const PanelDeclarationsContext=createContext({});export const PanelRowContext=createContext("");export const usePanelRow=()=>useContext(PanelRowContext);export const PanelPresenceContext=createContext(null);export function usePanelPresence(slot,isPresent){let presence=useContext(PanelPresenceContext);useLayoutEffect(()=>{if(presence)return presence.setPresent(slot,isPresent),()=>presence.setPresent(slot,!1)},[presence,slot,isPresent])}export const PanelAnimationContext=createContext(null);export function usePanelAnimationControl(){return useContext(PanelAnimationContext)}export function useRunCallbackOnValueChange(value,onChange){let prev=useRef(value);useEffect(()=>{prev.current!==value&&(prev.current=value,onChange?.(value))},[value,onChange])}export function useVisibleChange(visible,onChange){useRunCallbackOnValueChange(visible,onChange)}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useContext}from"react";import{useLayoutSelector,useLayoutStore}from"./context";import{usePanelAnimations}from"./usePanelAnimations";import{useBreakpoints}from"../../shared/useBreakpoints";import{MobileSplitStackContext}from"./Split/MobileSplitView/useMobileSplitStack";import{PanelDeclarationsContext}from"./registry";import{DEFAULT_LEFT_PANEL_VARIANT}from"./-constants";let selectAll=state=>state;function panelHandleActions({slot,visible,dispatch}){return{isVisible:visible,show:()=>dispatch({type:"setVisible",slot,visible:!0}),hide:()=>dispatch({type:"setVisible",slot,visible:!1}),reset:()=>dispatch({type:"reset",slot})}}export function useLayout(){let store=useLayoutStore(),state=useLayoutSelector(selectAll),declared=useContext(PanelDeclarationsContext),{dispatch}=store,{isMobile}=useBreakpoints(),animations=usePanelAnimations(),mobileStack=useContext(MobileSplitStackContext),presentationFor=slot=>state[slot].visible&&("splitview"===slot&&isMobile?mobileStack?.isSplitPresent:declared[slot])?"content"===slot?isMobile&&mobileStack?.isSplitPresent&&state.splitview.visible?"hidden":"column":"splitview"===slot?"column":"leftPanel"===slot?(state.leftPanel.variant??DEFAULT_LEFT_PANEL_VARIANT)==="sidebar"?"column":"overlay":isMobile||(state.rightPanel.variant??declared.rightPanel?.variant)==="float"?"overlay":"column":"hidden";return{state,leftPanel:{presentation:presentationFor("leftPanel"),animation:animations.leftPanel??null,state:{...state.leftPanel,variant:state.leftPanel.variant??DEFAULT_LEFT_PANEL_VARIANT},setVariant:variant=>dispatch({type:"setVariant",panel:"leftPanel",variant}),...panelHandleActions({slot:"leftPanel",visible:state.leftPanel.visible,dispatch})},rightPanel:{presentation:presentationFor("rightPanel"),animation:animations.rightPanel??null,state:{...state.rightPanel,variant:state.rightPanel.variant??declared.rightPanel?.variant??"sidebar"},setVariant:variant=>dispatch({type:"setVariant",panel:"rightPanel",variant}),...panelHandleActions({slot:"rightPanel",visible:state.rightPanel.visible,dispatch})},content:{presentation:presentationFor("content"),animation:animations.content??null,state:state.content,...panelHandleActions({slot:"content",visible:state.content.visible,dispatch})},splitview:{presentation:presentationFor("splitview"),animation:animations.splitview??null,state:state.splitview,...panelHandleActions({slot:"splitview",visible:state.splitview.visible,dispatch})}}}
|
|
1
|
+
import{useContext}from"react";import{useLayoutSelector,useLayoutStore}from"./context";import{usePanelAnimations}from"./usePanelAnimations";import{useBreakpoints}from"../../shared/useBreakpoints";import{MobileSplitStackContext}from"./Split/MobileSplitView/useMobileSplitStack";import{PanelDeclarationsContext}from"./registry";import{DEFAULT_LEFT_PANEL_VARIANT}from"./-constants";let selectAll=state=>state;function panelHandleActions({slot,visible,dispatch}){return{isVisible:visible,show:()=>dispatch({type:"setVisible",slot,visible:!0}),hide:()=>dispatch({type:"setVisible",slot,visible:!1}),reset:()=>dispatch({type:"reset",slot})}}export function useLayout(){let store=useLayoutStore(),state=useLayoutSelector(selectAll),declared=useContext(PanelDeclarationsContext),{dispatch}=store,{isMobile}=useBreakpoints(),animations=usePanelAnimations(),mobileStack=useContext(MobileSplitStackContext),presentationFor=slot=>state[slot].visible&&("splitview"===slot&&isMobile?mobileStack?.isSplitPresent:declared[slot])?"content"===slot?isMobile&&mobileStack?.isSplitPresent&&state.splitview.visible?"hidden":"column":"splitview"===slot?!isMobile&&state.splitview.isOverlapping?"overlay":"column":"leftPanel"===slot?(state.leftPanel.variant??DEFAULT_LEFT_PANEL_VARIANT)==="sidebar"?"column":"overlay":isMobile||(state.rightPanel.variant??declared.rightPanel?.variant)==="float"?"overlay":"column":"hidden";return{state,leftPanel:{presentation:presentationFor("leftPanel"),animation:animations.leftPanel??null,state:{...state.leftPanel,variant:state.leftPanel.variant??DEFAULT_LEFT_PANEL_VARIANT},setVariant:variant=>dispatch({type:"setVariant",panel:"leftPanel",variant}),...panelHandleActions({slot:"leftPanel",visible:state.leftPanel.visible,dispatch})},rightPanel:{presentation:presentationFor("rightPanel"),animation:animations.rightPanel??null,state:{...state.rightPanel,variant:state.rightPanel.variant??declared.rightPanel?.variant??"sidebar"},setVariant:variant=>dispatch({type:"setVariant",panel:"rightPanel",variant}),...panelHandleActions({slot:"rightPanel",visible:state.rightPanel.visible,dispatch})},content:{presentation:presentationFor("content"),animation:animations.content??null,state:state.content,...panelHandleActions({slot:"content",visible:state.content.visible,dispatch})},splitview:{presentation:presentationFor("splitview"),animation:animations.splitview??null,state:state.splitview,setResizeBehavior:behavior=>dispatch({type:"setSplitResizeBehavior",behavior}),...panelHandleActions({slot:"splitview",visible:state.splitview.visible,dispatch})}}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useEffect,useRef}from"react";import{useBreakpoints}from"../../shared/useBreakpoints";import{DEFAULT_LEFT_PANEL_VARIANT,PANEL_ORDER,Slot,TOGGLABLE_SLOTS}from"./-constants";let DEFAULT_PRIORITY={[Slot.rightPanel]:1,[Slot.splitview]:2,[Slot.leftPanel]:3},maxDockedFor=(maxDockedPanels,breakpoints)=>{let{xs,m=xs,l=m}=maxDockedPanels;return breakpoints.isMobile?xs:breakpoints.isTablet?m:l},isDockedPanel=({state,declared,slot})=>!!declared[slot]&&!!state[slot].visible&&(slot===Slot.rightPanel?"float"!==state.rightPanel.variant:slot
|
|
1
|
+
import{useEffect,useRef}from"react";import{useBreakpoints}from"../../shared/useBreakpoints";import{DEFAULT_LEFT_PANEL_VARIANT,PANEL_ORDER,Slot,TOGGLABLE_SLOTS}from"./-constants";let DEFAULT_PRIORITY={[Slot.rightPanel]:1,[Slot.splitview]:2,[Slot.leftPanel]:3},maxDockedFor=(maxDockedPanels,breakpoints)=>{let{xs,m=xs,l=m}=maxDockedPanels;return breakpoints.isMobile?xs:breakpoints.isTablet?m:l},isDockedPanel=({state,declared,slot})=>!!declared[slot]&&!!state[slot].visible&&(slot===Slot.rightPanel?"float"!==state.rightPanel.variant:slot===Slot.leftPanel?(state.leftPanel.variant??DEFAULT_LEFT_PANEL_VARIANT)===DEFAULT_LEFT_PANEL_VARIANT:!state.splitview.isOverlapping),resolveLowPrioSlots=({rules,state,declared,breakpoints})=>{let freeSlots=Math.max(0,maxDockedFor(rules.maxDockedPanels,breakpoints)-1),priorityFor=slot=>rules[slot]?.priority??DEFAULT_PRIORITY[slot],outranks=(slot,other)=>{let byPriority=priorityFor(slot)-priorityFor(other);return 0!==byPriority?byPriority<0:PANEL_ORDER.indexOf(slot)<PANEL_ORDER.indexOf(other)},countStrongerDocked=slot=>TOGGLABLE_SLOTS.filter(other=>other!==slot&&isDockedPanel({state,declared,slot:other})&&outranks(other,slot)).length;return TOGGLABLE_SLOTS.filter(slot=>countStrongerDocked(slot)>=freeSlots)};export function useLayoutRules({layout,declared,rules,additionalData}){let layoutRef=useRef(layout);layoutRef.current=layout;let{isMobile,isTablet,isDesktop}=useBreakpoints(),{state}=layout;useEffect(()=>{if(!rules)return;let lowPrioSlots=resolveLowPrioSlots({rules,state,declared,breakpoints:{isMobile,isTablet,isDesktop}});TOGGLABLE_SLOTS.forEach(slot=>{let condition=rules[slot]?.condition;condition&&condition({...additionalData,isLowPrio:lowPrioSlots.includes(slot),isMobile,isTablet,isDesktop,layout:layoutRef.current})})},[rules,additionalData,state,declared,isMobile,isTablet,isDesktop])}
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* control living OUTSIDE the panel - the nav left bar's open button - point
|
|
3
3
|
* `aria-controls` at it without the two components knowing each other. Empty
|
|
4
4
|
* outside a `Layout`, where there is no panel to reference. */
|
|
5
|
-
export declare const LeftPanelIdContext:
|
|
5
|
+
export declare const LeftPanelIdContext: React.Context<string>;
|
|
6
6
|
export declare const useLeftPanelId: () => string;
|
|
@@ -5,7 +5,7 @@ type PanelAnimationsStore = {
|
|
|
5
5
|
subscribe: (listener: () => void) => () => void;
|
|
6
6
|
set: (slot: SlotKey, animation: PanelAnimation | null) => void;
|
|
7
7
|
};
|
|
8
|
-
export declare const PanelAnimationsProvider:
|
|
8
|
+
export declare const PanelAnimationsProvider: React.Provider<PanelAnimationsStore | null>;
|
|
9
9
|
export declare const usePanelAnimationsStore: () => PanelAnimationsStore | null;
|
|
10
10
|
export declare const createPanelAnimationsStore: () => PanelAnimationsStore;
|
|
11
11
|
export declare const usePanelAnimations: () => Animations;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useLayoutEffect,useMemo,useRef,useState}from"react";import{flushSync}from"react-dom";import{useTheme}from"@emotion/react";import{useWindow}from"../../shared/useWindow";import{parseDurationMs}from"../../shared/parseDurationMs";import{prefersReducedMotion}from"../../shared/prefersReducedMotion";import{useDeclarePanel,usePanelAnimationControl,usePanelPresence,usePanelRow}from"./registry";import{usePanelAnimationsStore}from"./usePanelAnimations";import{
|
|
1
|
+
import{useLayoutEffect,useMemo,useRef,useState}from"react";import{flushSync}from"react-dom";import{useTheme}from"@emotion/react";import{useWindow}from"../../shared/useWindow";import{parseDurationMs}from"../../shared/parseDurationMs";import{prefersReducedMotion}from"../../shared/prefersReducedMotion";import{useDeclarePanel,usePanelAnimationControl,usePanelPresence,usePanelRow}from"./registry";import{usePanelAnimationsStore}from"./usePanelAnimations";import{useLayoutSelector}from"./context";let resolveSizePx=(size,groupWidthPx)=>{if("number"==typeof size)return size;if("string"!=typeof size)return null;let parsed=parseFloat(size);return Number.isFinite(parsed)?size.trim().endsWith("px")?parsed:null!=groupWidthPx?parsed/100*groupWidthPx:null:null},groupColumnsOf=element=>{let columns=element.closest("[data-group]")?.querySelectorAll("[data-panel]");return columns?Array.from(columns):[element]},isHandleReady=handle=>{try{return handle.isCollapsed(),!0}catch{return!1}},mountDefaultSizeFor=({collapsedSize,defaultSize,isVisible,isSlidingIn})=>void 0!==collapsedSize?isVisible?defaultSize:collapsedSize:isSlidingIn?0:defaultSize,minSizeFor=({collapsedSize,isVisible,minSize,phase})=>void 0===collapsedSize?minSize:isVisible&&"idle"===phase?minSize??collapsedSize:collapsedSize;export const getMaxSize=({collapsedSize,isVisible,maxSize,openSize,phase})=>void 0===collapsedSize?maxSize:isVisible||"idle"!==phase?maxSize??openSize:collapsedSize;export function usePanelDockedSlide({slot,defaultSize,minSize,maxSize,collapsible,resizable,lockWidthOnWindowResize,collapsedSize}){let state=useLayoutSelector(layoutState=>layoutState[slot]),isVisible=state.visible,theme=useTheme(),window=useWindow(),animation=usePanelAnimationControl(),rowKey=usePanelRow(),reducedMotion=prefersReducedMotion(window),hasCollapsedRest=void 0!==collapsedSize,isCollapsible=collapsible&&!hasCollapsedRest,[isMounted,setIsMounted]=useState(isVisible),[phase,setPhase]=useState("idle"),[fixedWidth,setFixedWidth]=useState(null),animations=usePanelAnimationsStore(),panelSlideAnimation=useMemo(()=>{let timing=hasCollapsedRest?theme.variables.animation.navSlide.collapse:theme.variables.animation.navSlide.open;return{property:"flex-grow",duration:reducedMotion?0:parseDurationMs(timing.duration),easing:timing.timingFunction}},[theme,hasCollapsedRest,reducedMotion]);useLayoutEffect(()=>{animations?.set(slot,"idle"===phase||reducedMotion||!collapsible&&!hasCollapsedRest?null:panelSlideAnimation)},[animations,slot,phase,panelSlideAnimation,reducedMotion,collapsible,hasCollapsedRest]),useLayoutEffect(()=>()=>animations?.set(slot,null),[animations,slot]);let[prevVisible,setPrevVisible]=useState(isVisible),declaredMountSize=useRef(hasCollapsedRest&&!isVisible?collapsedSize:state.size??defaultSize),chosenOpenSize=useRef(state.size??defaultSize),needsRestCorrection=useRef(!1);isVisible!==prevVisible&&(chosenOpenSize.current=state.size??defaultSize,needsRestCorrection.current=!0,hasCollapsedRest&&setFixedWidth(resolveSizePx(state.size??defaultSize,null)),setPrevVisible(isVisible),setPhase(isVisible?"entering":"exiting"),isVisible&&setIsMounted(!0),animation?.setResizeSuppressed(slot,!0));let openSize=hasCollapsedRest?state.size??defaultSize:defaultSize;useDeclarePanel(slot,{defaultSize:hasCollapsedRest?declaredMountSize.current:mountDefaultSizeFor({defaultSize:openSize,isVisible,isSlidingIn:"entering"===phase&&collapsible&&!reducedMotion}),minSize:minSizeFor({collapsedSize,isVisible,minSize,phase}),maxSize:getMaxSize({collapsedSize,isVisible,maxSize,openSize,phase}),collapsible:isCollapsible,resizable:(!hasCollapsedRest||!!isVisible&&"idle"===phase)&&resizable,lockWidthOnWindowResize}),usePanelPresence(slot,hasCollapsedRest||isMounted),useLayoutEffect(()=>{if(!hasCollapsedRest||"idle"!==phase||!needsRestCorrection.current)return;let restSize=isVisible?chosenOpenSize.current:collapsedSize,cancelled=!1;return animation?.setResizeSuppressed(slot,!0),Promise.resolve().then(()=>{if(cancelled)return;let handle=animation?.getHandle(slot);try{handle&&isHandleReady(handle)&&void 0!==restSize&&flushSync(()=>handle.resize(restSize))}finally{needsRestCorrection.current=!1,animation?.setResizeSuppressed(slot,!1)}}),()=>{cancelled=!0,animation?.setResizeSuppressed(slot,!1)}},[phase,hasCollapsedRest,isVisible,collapsedSize,animation,slot]);let latestRest=useRef({isVisible,openSize,phase});return latestRest.current={isVisible,openSize,phase},useLayoutEffect(()=>{if(!hasCollapsedRest)return;let frame=0,cancelled=!1,resizeToRest=attempt=>{if(cancelled)return;let handle=animation?.getHandle(slot)??null;if(handle&&isHandleReady(handle)){let rest=latestRest.current;if("idle"!==rest.phase)return;let restSize=rest.isVisible?rest.openSize??minSize:collapsedSize;try{void 0!==restSize&&handle.resize(restSize)}catch{}return}animation&&!(attempt>=30)&&(frame=window.requestAnimationFrame(()=>resizeToRest(attempt+1)))};return Promise.resolve().then(()=>resizeToRest(0)),()=>{cancelled=!0,window.cancelAnimationFrame(frame)}},[rowKey]),useLayoutEffect(()=>{if("idle"===phase)return;let cancelled=!1,frame=0,settleTimer=0,animatedColumns=[];animation?.setResizeSuppressed(slot,!0);let durationMs=panelSlideAnimation.duration,setColumnTransitions=enabled=>{animatedColumns.forEach(column=>{enabled?column.style.setProperty("transition",`${panelSlideAnimation.property} ${panelSlideAnimation.duration}ms ${panelSlideAnimation.easing}`):column.style.removeProperty("transition")})},targetSize=state.size??defaultSize??minSize,openColumn=(handle,targetPx)=>{handle.isCollapsed()&&handle.expand(),handle.resize(targetPx??targetSize??minSize??"20%")},settle=handle=>{if(setColumnTransitions(!1),animation?.setResizeSuppressed(slot,!1),"entering"===phase&&handle&&!hasCollapsedRest)try{handle.getSize().inPixels<1&&openColumn(handle,null)}catch{}setFixedWidth(null),"exiting"!==phase||hasCollapsedRest||setIsMounted(!1),setPhase("idle")},runSlide=(handle,element)=>{animatedColumns=groupColumnsOf(element);let groupWidthPx=element.closest("[data-group]")?.getBoundingClientRect().width??null,targetPx=resolveSizePx(targetSize,groupWidthPx),collapsedPx=resolveSizePx(collapsedSize,groupWidthPx);setFixedWidth("entering"===phase||hasCollapsedRest?targetPx:handle.getSize().inPixels),reducedMotion||setColumnTransitions(!0),element.getBoundingClientRect();try{"entering"===phase?openColumn(handle,targetPx):hasCollapsedRest?handle.resize(collapsedPx??collapsedSize):handle.collapse()}catch{settle(handle);return}settleTimer=window.setTimeout(()=>settle(handle),reducedMotion?0:durationMs+80)},waitForColumn=attempt=>{if(cancelled)return;if(0===attempt&&hasCollapsedRest)return void Promise.resolve().then(()=>waitForColumn(attempt+1));let handle=animation?.getHandle(slot)??null,element=animation?.getElement(slot)??null;if(handle&&element&&isHandleReady(handle)){if(hasCollapsedRest){let startSize="entering"===phase?collapsedSize:chosenOpenSize.current;void 0!==startSize&&flushSync(()=>handle.resize(startSize))}runSlide(handle,element);return}if("exiting"===phase||!animation||attempt>=30)return void settle(handle);frame=window.requestAnimationFrame(()=>waitForColumn(attempt+1))};return collapsible||hasCollapsedRest?waitForColumn(0):settle(animation?.getHandle(slot)??null),()=>{cancelled=!0,window.cancelAnimationFrame(frame),window.clearTimeout(settleTimer),setColumnTransitions(!1),animation?.setResizeSuppressed(slot,!1)}},[phase,slot,collapsible,hasCollapsedRest,reducedMotion,animation,window,theme,panelSlideAnimation]),{isMounted:hasCollapsedRest||isMounted,fixedWidth}}
|
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { NavBarSubMenuContainer } from "./NavBarSubMenuContainer";
|
|
3
|
-
import { NavBarDropdownTriggerButton } from "./NavBarDropdownTriggerButton";
|
|
4
|
-
import { NavBarSearchInput } from "./NavBarSearchInput";
|
|
5
2
|
import { NavBarOverlayBar } from "./NavBarOverlayBar";
|
|
6
|
-
import { PrimaryNavContainer, PrimaryNav } from "./NavBarPrimaryNav";
|
|
7
|
-
import { PrimaryNavLinkItem } from "./NavBarPrimaryNavLinkItem";
|
|
8
|
-
import { SecondaryNav } from "./NavBarSecondaryNav";
|
|
9
3
|
import { NavBarName } from "./types";
|
|
10
4
|
type NavBarProps = React.PropsWithChildren<{
|
|
11
5
|
subTheme: NavBarName;
|
|
@@ -13,13 +7,23 @@ type NavBarProps = React.PropsWithChildren<{
|
|
|
13
7
|
}>;
|
|
14
8
|
export declare function NavBar({ children, subTheme, isCompact, }: NavBarProps): React.ReactElement;
|
|
15
9
|
export declare namespace NavBar {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
10
|
+
var PrimaryNavContainer: typeof import("./NavBarPrimaryNav").PrimaryNavContainer;
|
|
11
|
+
var PrimaryNav: typeof import("./NavBarPrimaryNav").PrimaryNav;
|
|
12
|
+
var PrimaryNavItem: React.ForwardRefExoticComponent<{
|
|
13
|
+
label: string;
|
|
14
|
+
isActive?: boolean;
|
|
15
|
+
as?: React.ElementType;
|
|
16
|
+
to?: string;
|
|
17
|
+
} & Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, "children"> & React.RefAttributes<HTMLAnchorElement>>;
|
|
18
|
+
var SubMenuContainer: React.ForwardRefExoticComponent<{
|
|
19
|
+
"data-e2e-test-id"?: string;
|
|
20
|
+
children: React.ReactNode;
|
|
21
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
22
|
+
var OverlayBar: typeof NavBarOverlayBar;
|
|
23
|
+
var SecondaryNav: typeof import("./NavBarSecondaryNav").SecondaryNav;
|
|
24
|
+
var DropdownTriggerButton: React.ForwardRefExoticComponent<Pick<import("../..").ButtonProps, "onFocus" | "onBlur" | "onClick" | "disabled"> & {
|
|
25
|
+
children?: React.ReactNode | undefined;
|
|
26
|
+
} & React.RefAttributes<HTMLButtonElement>>;
|
|
27
|
+
var SearchInput: React.ForwardRefExoticComponent<import("./NavBarSearchInput").NavBarSearchInputProps & React.RefAttributes<HTMLButtonElement>>;
|
|
24
28
|
}
|
|
25
29
|
export {};
|
|
@@ -6,6 +6,6 @@ type NavBarContextValue = {
|
|
|
6
6
|
primaryNavRef: RefObject<HTMLElement>;
|
|
7
7
|
secondaryNavRef: RefObject<HTMLElement>;
|
|
8
8
|
};
|
|
9
|
-
export declare const NavBarContext:
|
|
9
|
+
export declare const NavBarContext: React.Context<NavBarContextValue>;
|
|
10
10
|
export declare function useNavBarContext(): NavBarContextValue;
|
|
11
11
|
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import type { ButtonProps } from "../Button/Button";
|
|
3
|
-
export declare const NavBarDropdownTriggerButton: React.ForwardRefExoticComponent<Pick<ButtonProps, "
|
|
3
|
+
export declare const NavBarDropdownTriggerButton: React.ForwardRefExoticComponent<Pick<ButtonProps, "onFocus" | "onBlur" | "onClick" | "disabled"> & {
|
|
4
4
|
children?: React.ReactNode | undefined;
|
|
5
5
|
} & React.RefAttributes<HTMLButtonElement>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const DialogContext:
|
|
1
|
+
export declare const DialogContext: React.Context<boolean>;
|
|
@@ -21,8 +21,8 @@ export type EmptyStateProps = {
|
|
|
21
21
|
};
|
|
22
22
|
export declare function EmptyState({ title, titleAs, description, variant, icon, children, "data-e2e-test-id": dataE2eTestId, ...ariaAttributes }: EmptyStateProps): React.ReactElement;
|
|
23
23
|
export declare namespace EmptyState {
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
var ButtonGroup: typeof EmptyStateButtonGroup;
|
|
25
|
+
var Link: typeof EmptyStateLink;
|
|
26
26
|
}
|
|
27
27
|
declare function EmptyStateButtonGroup<C extends React.ElementType = "button">({ ...rest }: Omit<ButtonGroupProps<C>, "buttonSize">): React.ReactElement;
|
|
28
28
|
type EmptyStateLinkProps<C extends React.ElementType> = Omit<PolymorphicComponentPropsWithRef<C, LinkProps>, "size" | "color" | "weight" | "ref"> & {
|
|
@@ -102,11 +102,9 @@ type ImageProps = {
|
|
|
102
102
|
ImageComponent: React.ElementType<any>;
|
|
103
103
|
};
|
|
104
104
|
export type ModalProps = BaseProps & ConditionalRoleProps & LabelProps & ImageProps & Pick<PortalProps, "portalContainer">;
|
|
105
|
-
declare const ModalStack: ({ children, ...rest }: Omit<StackProps, "space">) => React.JSX.Element;
|
|
106
|
-
declare const ModalText: ({ children, ...rest }: Omit<TextProps, "size" | "variant">) => React.JSX.Element;
|
|
107
105
|
export declare function Modal({ header, subHeader, labelHeader, children, imageUrl, ImageComponent, secondaryButton, cancelButtonLabel, isDismissible, isFullScreen, isMaxWidthLimit, actionButton, role, onAction, size, privateProps: { skipPortal, height, zeroPadding, tabbableOptions }, portalContainer, closeButtonAriaLabel, "data-e2e-test-id": dataE2eTestId, imageAlt, initialFocus, ...ariaAttributes }: ModalProps): React.ReactElement;
|
|
108
106
|
export declare namespace Modal {
|
|
109
|
-
|
|
110
|
-
|
|
107
|
+
var Stack: ({ children, ...rest }: Omit<StackProps, "space">) => React.JSX.Element;
|
|
108
|
+
var Text: ({ children, ...rest }: Omit<TextProps, "size" | "variant">) => React.JSX.Element;
|
|
111
109
|
}
|
|
112
110
|
export {};
|
|
@@ -70,5 +70,5 @@ export declare const PromptInput: React.ForwardRefExoticComponent<{
|
|
|
70
70
|
onEnterKey: () => void;
|
|
71
71
|
/** Renders an icon to the left inside the textarea */
|
|
72
72
|
leftIcon?: IconName;
|
|
73
|
-
} & Omit<PromptTextAreaProps, "
|
|
73
|
+
} & Omit<PromptTextAreaProps, "size" | "selectedListItem" | "isAutocompleteListOpen" | "hasAutocomplete" | "hasLeftIcon"> & Pick<AutocompleteListProps, "portalContainer" | "autocompleteListItems" | "autocompleteListFooter"> & React.RefAttributes<HTMLTextAreaElement>>;
|
|
74
74
|
export {};
|
|
@@ -13,4 +13,4 @@ export declare const RadioCard: React.ForwardRefExoticComponent<{
|
|
|
13
13
|
renderContent?: (params: {
|
|
14
14
|
isSelected: boolean;
|
|
15
15
|
}) => React.ReactNode;
|
|
16
|
-
} & Omit<RadioProps, "errorMessages" | "
|
|
16
|
+
} & Omit<RadioProps, "errorMessages" | "hint" | "hideLabel"> & React.RefAttributes<HTMLInputElement>>;
|
|
@@ -33,9 +33,7 @@ export type SearchResultProps = {
|
|
|
33
33
|
/** The test id for the result's primary target. */
|
|
34
34
|
"data-e2e-test-id"?: string;
|
|
35
35
|
};
|
|
36
|
-
declare const defaultProps: Partial<SearchResultProps>;
|
|
37
36
|
export declare function SearchResult({ title, subtitle, icon, details, body, secondaryTargets, link, labels, "data-e2e-test-id": dataE2eTestId, ...ariaAttributes }: SearchResultProps): React.ReactElement;
|
|
38
37
|
export declare namespace SearchResult {
|
|
39
|
-
|
|
38
|
+
var defaultProps: Partial<SearchResultProps>;
|
|
40
39
|
}
|
|
41
|
-
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const SubThemeContext:
|
|
1
|
+
export declare const SubThemeContext: React.Context<import("./SubThemeProvider").SubThemeName | null | undefined>;
|
|
@@ -5,4 +5,4 @@
|
|
|
5
5
|
* trap scans for focusable elements only once, on activation, and elements
|
|
6
6
|
* under a `visibility: hidden` ancestor never count as focusable.
|
|
7
7
|
*/
|
|
8
|
-
export declare const FloatingPositionedContext:
|
|
8
|
+
export declare const FloatingPositionedContext: React.Context<boolean>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { ContainerQueryBreakpoints } from "../../../shared/mediaQueries";
|
|
2
|
-
export declare const ContainerQueryContext:
|
|
2
|
+
export declare const ContainerQueryContext: React.Context<ContainerQueryBreakpoints | undefined>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export declare const ScreenReaderText: import("@emotion/styled").StyledComponent<{
|
|
2
2
|
theme?: import("@emotion/react").Theme;
|
|
3
3
|
as?: React.ElementType;
|
|
4
|
-
},
|
|
4
|
+
}, React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
@@ -15,4 +15,4 @@ export declare const SelectableButton: import("@emotion/styled").StyledComponent
|
|
|
15
15
|
as?: React.ElementType;
|
|
16
16
|
} & {
|
|
17
17
|
isActive?: boolean;
|
|
18
|
-
},
|
|
18
|
+
}, React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, {}>;
|