@amboss/design-system 4.5.1 → 4.6.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.
Files changed (119) hide show
  1. package/build/cjs/components/BulkActionsToolbar/BulkActionsToolbar.js +1 -1
  2. package/build/cjs/components/DataTable/DataTable.d.ts +18 -8
  3. package/build/cjs/components/DataTable/DataTable.js +1 -1
  4. package/build/cjs/components/DataTable/DataTableToolbar/DataTableToolbar.d.ts +97 -0
  5. package/build/cjs/components/DataTable/DataTableToolbar/DataTableToolbar.js +1 -0
  6. package/build/cjs/components/DataTable/TableCell.js +1 -1
  7. package/build/cjs/components/DataTable/TableColumnGroups.d.ts +15 -0
  8. package/build/cjs/components/DataTable/TableColumnGroups.js +1 -0
  9. package/build/cjs/components/DataTable/header/DataTableHeaderLabel.d.ts +28 -0
  10. package/build/cjs/components/DataTable/header/DataTableHeaderLabel.js +1 -0
  11. package/build/cjs/components/DataTable/header/TableHeader.js +1 -1
  12. package/build/cjs/components/DataTable/index.d.ts +1 -1
  13. package/build/cjs/components/DataTable/internal/buildColumnSegments.d.ts +18 -0
  14. package/build/cjs/components/DataTable/internal/buildColumnSegments.js +1 -0
  15. package/build/cjs/components/DataTable/internal/buildInternalColumns.d.ts +2 -2
  16. package/build/cjs/components/DataTable/internal/buildInternalColumns.js +1 -1
  17. package/build/cjs/components/DataTable/internal/getColumnSticky.js +1 -1
  18. package/build/cjs/components/DataTable/internal/types.d.ts +7 -2
  19. package/build/cjs/components/DataTable/isDataTableColumnGroup.d.ts +2 -0
  20. package/build/cjs/components/DataTable/isDataTableColumnGroup.js +1 -0
  21. package/build/cjs/components/DataTable/types.d.ts +52 -8
  22. package/build/cjs/components/DataTable/useDataTableSort.d.ts +4 -4
  23. package/build/cjs/components/DataTable/useDataTableSort.js +1 -1
  24. package/build/cjs/components/FilterToolbar/FilterToolbar.d.ts +103 -0
  25. package/build/cjs/components/FilterToolbar/FilterToolbar.js +1 -0
  26. package/build/cjs/components/InlineMessage/InlineMessage.d.ts +4 -1
  27. package/build/cjs/components/InlineMessage/InlineMessage.js +1 -1
  28. package/build/cjs/components/Internal/Panel/Panel.d.ts +22 -1
  29. package/build/cjs/components/Internal/Panel/Panel.js +1 -1
  30. package/build/cjs/components/Internal/ToolbarItemCount/ToolbarItemCount.d.ts +16 -0
  31. package/build/cjs/components/Internal/ToolbarItemCount/ToolbarItemCount.js +1 -0
  32. package/build/cjs/components/Kbd/Kbd.d.ts +118 -0
  33. package/build/cjs/components/Kbd/Kbd.js +1 -0
  34. package/build/cjs/components/KbdGroup/KbdGroup.d.ts +7 -0
  35. package/build/cjs/components/KbdGroup/KbdGroup.js +1 -0
  36. package/build/cjs/components/Layout/-types.d.ts +6 -1
  37. package/build/cjs/components/Layout/Layout.js +1 -1
  38. package/build/cjs/components/Layout/LeftPanel/LeftPanelDocked.js +1 -1
  39. package/build/cjs/components/Layout/RightPanel/RightPanel.js +1 -1
  40. package/build/cjs/components/Layout/registry.d.ts +4 -0
  41. package/build/cjs/components/Layout/registry.js +1 -1
  42. package/build/cjs/components/Layout/usePanelDockedSlide.d.ts +4 -1
  43. package/build/cjs/components/Layout/usePanelDockedSlide.js +1 -1
  44. package/build/cjs/components/Tooltip/BaseTooltip.js +1 -1
  45. package/build/cjs/components/Tooltip/Tooltip.d.ts +3 -1
  46. package/build/cjs/components/Tooltip/Tooltip.js +1 -1
  47. package/build/cjs/index.d.ts +1 -0
  48. package/build/cjs/index.js +1 -1
  49. package/build/cjs/shared/mediaQueries.d.ts +2 -2
  50. package/build/cjs/shared/useIsMacOs.d.ts +1 -0
  51. package/build/cjs/shared/useIsMacOs.js +1 -0
  52. package/build/cjs/types/index.d.ts +2 -0
  53. package/build/cjs/types/index.js +1 -1
  54. package/build/cjs/web-tokens/_colors.json +26 -0
  55. package/build/cjs/web-tokens/_sizes.json +10 -0
  56. package/build/cjs/web-tokens/visualConfig.d.ts +25 -0
  57. package/build/cjs/web-tokens/visualConfig.js +1 -1
  58. package/build/esm/components/BulkActionsToolbar/BulkActionsToolbar.js +1 -1
  59. package/build/esm/components/DataTable/DataTable.d.ts +18 -8
  60. package/build/esm/components/DataTable/DataTable.js +1 -1
  61. package/build/esm/components/DataTable/DataTableToolbar/DataTableToolbar.d.ts +97 -0
  62. package/build/esm/components/DataTable/DataTableToolbar/DataTableToolbar.js +1 -0
  63. package/build/esm/components/DataTable/TableCell.js +1 -1
  64. package/build/esm/components/DataTable/TableColumnGroups.d.ts +15 -0
  65. package/build/esm/components/DataTable/TableColumnGroups.js +1 -0
  66. package/build/esm/components/DataTable/header/DataTableHeaderLabel.d.ts +28 -0
  67. package/build/esm/components/DataTable/header/DataTableHeaderLabel.js +1 -0
  68. package/build/esm/components/DataTable/header/TableHeader.js +1 -1
  69. package/build/esm/components/DataTable/index.d.ts +1 -1
  70. package/build/esm/components/DataTable/internal/buildColumnSegments.d.ts +18 -0
  71. package/build/esm/components/DataTable/internal/buildColumnSegments.js +1 -0
  72. package/build/esm/components/DataTable/internal/buildInternalColumns.d.ts +2 -2
  73. package/build/esm/components/DataTable/internal/buildInternalColumns.js +1 -1
  74. package/build/esm/components/DataTable/internal/getColumnSticky.js +1 -1
  75. package/build/esm/components/DataTable/internal/types.d.ts +7 -2
  76. package/build/esm/components/DataTable/isDataTableColumnGroup.d.ts +2 -0
  77. package/build/esm/components/DataTable/isDataTableColumnGroup.js +1 -0
  78. package/build/esm/components/DataTable/types.d.ts +52 -8
  79. package/build/esm/components/DataTable/useDataTableSort.d.ts +4 -4
  80. package/build/esm/components/DataTable/useDataTableSort.js +1 -1
  81. package/build/esm/components/FilterToolbar/FilterToolbar.d.ts +103 -0
  82. package/build/esm/components/FilterToolbar/FilterToolbar.js +1 -0
  83. package/build/esm/components/InlineMessage/InlineMessage.d.ts +4 -1
  84. package/build/esm/components/InlineMessage/InlineMessage.js +1 -1
  85. package/build/esm/components/Internal/Panel/Panel.d.ts +22 -1
  86. package/build/esm/components/Internal/Panel/Panel.js +1 -1
  87. package/build/esm/components/Internal/ToolbarItemCount/ToolbarItemCount.d.ts +16 -0
  88. package/build/esm/components/Internal/ToolbarItemCount/ToolbarItemCount.js +1 -0
  89. package/build/esm/components/Kbd/Kbd.d.ts +118 -0
  90. package/build/esm/components/Kbd/Kbd.js +1 -0
  91. package/build/esm/components/KbdGroup/KbdGroup.d.ts +7 -0
  92. package/build/esm/components/KbdGroup/KbdGroup.js +1 -0
  93. package/build/esm/components/Layout/-types.d.ts +6 -1
  94. package/build/esm/components/Layout/Layout.js +1 -1
  95. package/build/esm/components/Layout/LeftPanel/LeftPanelDocked.js +1 -1
  96. package/build/esm/components/Layout/RightPanel/RightPanel.js +1 -1
  97. package/build/esm/components/Layout/registry.d.ts +4 -0
  98. package/build/esm/components/Layout/registry.js +1 -1
  99. package/build/esm/components/Layout/usePanelDockedSlide.d.ts +4 -1
  100. package/build/esm/components/Layout/usePanelDockedSlide.js +1 -1
  101. package/build/esm/components/Tooltip/BaseTooltip.js +1 -1
  102. package/build/esm/components/Tooltip/Tooltip.d.ts +3 -1
  103. package/build/esm/components/Tooltip/Tooltip.js +1 -1
  104. package/build/esm/index.d.ts +1 -0
  105. package/build/esm/index.js +1 -1
  106. package/build/esm/shared/mediaQueries.d.ts +2 -2
  107. package/build/esm/shared/useIsMacOs.d.ts +1 -0
  108. package/build/esm/shared/useIsMacOs.js +1 -0
  109. package/build/esm/types/index.d.ts +2 -0
  110. package/build/esm/types/index.js +1 -1
  111. package/build/esm/web-tokens/_colors.json +26 -0
  112. package/build/esm/web-tokens/_sizes.json +10 -0
  113. package/build/esm/web-tokens/visualConfig.d.ts +25 -0
  114. package/build/esm/web-tokens/visualConfig.js +1 -1
  115. package/build/scss/_dark.scss +3 -0
  116. package/build/scss/_light.scss +3 -0
  117. package/build/scss/_variables.scss +4 -0
  118. package/build/scss/subthemes/_inverted.scss +6 -0
  119. package/package.json +1 -1
@@ -0,0 +1,16 @@
1
+ import type { ReactElement, ReactNode } from "react";
2
+ type ToolbarItemCountProps = {
3
+ /** The count itself, e.g. `"50 items"`. */
4
+ children: ReactNode;
5
+ /** Published on the text, so a toolbar's `aria-labelledby`/`aria-describedby` can point at it. */
6
+ id?: string;
7
+ "data-e2e-test-id"?: string;
8
+ };
9
+ /**
10
+ * The live region shown by `BulkActionsToolbar` and `FilterToolbar`, so a
11
+ * count change announces without moving focus. `DataTableToolbar` moves it
12
+ * between the two rows as `isSelectable` changes, so one definition covers
13
+ * both instead of two copies drifting apart.
14
+ */
15
+ export declare function ToolbarItemCount({ children, id, "data-e2e-test-id": dataE2eTestId, ...rest }: ToolbarItemCountProps): ReactElement;
16
+ export {};
@@ -0,0 +1 @@
1
+ import React from"react";import{Text}from"../../Typography/Text/Text";export function ToolbarItemCount({children,id,"data-e2e-test-id":dataE2eTestId,...rest}){return React.createElement("div",{...rest,role:"status","aria-atomic":"true","data-e2e-test-id":dataE2eTestId},React.createElement(Text,{size:"s",color:"secondary",weight:"bold",id:id},children))}
@@ -0,0 +1,118 @@
1
+ import React from "react";
2
+ /** Every name both key maps must define, so neither can drift from the other. */
3
+ export type KeyName = "cmd" | "meta" | "ctrl" | "alt" | "shift" | "enter" | "esc" | "backspace" | "tab" | "up" | "down" | "left" | "right" | "updown";
4
+ export declare const MAC_OS_KEYS: {
5
+ cmd: {
6
+ label: string;
7
+ spokenLabel: string;
8
+ };
9
+ meta: {
10
+ label: string;
11
+ spokenLabel: string;
12
+ };
13
+ ctrl: {
14
+ label: string;
15
+ spokenLabel: string;
16
+ };
17
+ alt: {
18
+ label: string;
19
+ spokenLabel: string;
20
+ };
21
+ shift: {
22
+ label: string;
23
+ spokenLabel: string;
24
+ };
25
+ enter: {
26
+ label: string;
27
+ spokenLabel: string;
28
+ };
29
+ esc: {
30
+ label: string;
31
+ };
32
+ backspace: {
33
+ label: string;
34
+ spokenLabel: string;
35
+ };
36
+ tab: {
37
+ label: string;
38
+ spokenLabel: string;
39
+ };
40
+ up: {
41
+ label: string;
42
+ spokenLabel: string;
43
+ };
44
+ down: {
45
+ label: string;
46
+ spokenLabel: string;
47
+ };
48
+ left: {
49
+ label: string;
50
+ spokenLabel: string;
51
+ };
52
+ right: {
53
+ label: string;
54
+ spokenLabel: string;
55
+ };
56
+ updown: {
57
+ label: string;
58
+ spokenLabel: string;
59
+ };
60
+ };
61
+ export declare const WINDOWS_KEYS: {
62
+ cmd: {
63
+ label: string;
64
+ };
65
+ meta: {
66
+ label: string;
67
+ };
68
+ ctrl: {
69
+ label: string;
70
+ };
71
+ alt: {
72
+ label: string;
73
+ };
74
+ shift: {
75
+ label: string;
76
+ };
77
+ enter: {
78
+ label: string;
79
+ };
80
+ esc: {
81
+ label: string;
82
+ };
83
+ backspace: {
84
+ label: string;
85
+ };
86
+ tab: {
87
+ label: string;
88
+ };
89
+ up: {
90
+ label: string;
91
+ spokenLabel: string;
92
+ };
93
+ down: {
94
+ label: string;
95
+ spokenLabel: string;
96
+ };
97
+ left: {
98
+ label: string;
99
+ spokenLabel: string;
100
+ };
101
+ right: {
102
+ label: string;
103
+ spokenLabel: string;
104
+ };
105
+ updown: {
106
+ label: string;
107
+ spokenLabel: string;
108
+ };
109
+ };
110
+ export type KbdPlatform = "macOs" | "windows";
111
+ export type KbdProps = {
112
+ /** Semantic key name(s) to display, e.g. `"A"` or `["shift", "cmd"]`. Recognised names (`cmd`, `ctrl`, `alt`, `shift`, `enter`, `esc`, `backspace`, `tab`, `up`, `down`, `left`, `right`, `updown`) render the symbol for the detected platform; any other value is rendered as written, with a single character uppercased. */
113
+ keys: string | string[];
114
+ /** Pins the rendered symbols to one platform instead of detecting the user's. Use for tests, stories, and shortcuts that only exist on one platform. */
115
+ platform?: KbdPlatform;
116
+ "data-e2e-test-id"?: string;
117
+ };
118
+ export declare function Kbd({ keys, platform, "data-e2e-test-id": dataE2eTestId, }: KbdProps): React.ReactElement;
@@ -0,0 +1 @@
1
+ import React from"react";import styled from"@emotion/styled";import{useIsMacOs}from"../../shared/useIsMacOs";import{ScreenReaderText}from"../Utilities/ScreenReaderText/ScreenReaderText";export const MAC_OS_KEYS={cmd:{label:"⌘",spokenLabel:"Command"},meta:{label:"⌘",spokenLabel:"Command"},ctrl:{label:"⌃",spokenLabel:"Control"},alt:{label:"⌥",spokenLabel:"Option"},shift:{label:"⇧",spokenLabel:"Shift"},enter:{label:"↩",spokenLabel:"Enter"},esc:{label:"Esc"},backspace:{label:"⌫",spokenLabel:"Backspace"},tab:{label:"⇥",spokenLabel:"Tab"},up:{label:"↑",spokenLabel:"Up arrow"},down:{label:"↓",spokenLabel:"Down arrow"},left:{label:"←",spokenLabel:"Left arrow"},right:{label:"→",spokenLabel:"Right arrow"},updown:{label:"⇅",spokenLabel:"Up and down arrows"}};export const WINDOWS_KEYS={cmd:{label:"Ctrl"},meta:{label:"Ctrl"},ctrl:{label:"Ctrl"},alt:{label:"Alt"},shift:{label:"Shift"},enter:{label:"Enter"},esc:{label:"Esc"},backspace:{label:"Backspace"},tab:{label:"Tab"},up:{label:"↑",spokenLabel:"Up arrow"},down:{label:"↓",spokenLabel:"Down arrow"},left:{label:"←",spokenLabel:"Left arrow"},right:{label:"→",spokenLabel:"Right arrow"},updown:{label:"⇅",spokenLabel:"Up and down arrows"}};let StyledKbd=styled("kbd",{target:"e1v9oi190",label:"StyledKbd"})(({theme})=>({display:"inline-flex",alignItems:"center",justifyContent:"center",boxSizing:"border-box",minWidth:theme.variables.size.dimension.kbd.minWidth,padding:theme.variables.size.spacing.xxxs,border:`1px solid ${theme.values.color.kbd.border.default}`,borderRadius:theme.variables.size.borderRadius.xs,backgroundColor:theme.values.color.kbd.background.default,color:theme.values.color.kbd.foreground.default,fontFamily:theme.variables.fontFamily.lato,fontSize:theme.variables.size.font.xxs,fontWeight:theme.variables.weight.normal,lineHeight:1,whiteSpace:"nowrap",cursor:"default",userSelect:"none"})),StyledKbdKeys=styled("span",{target:"e1v9oi191",label:"StyledKbdKeys"})(({theme,hasSeparators})=>({display:"inline-flex",gap:hasSeparators?theme.variables.size.spacing.xxs:theme.variables.size.spacing.zero})),toDisplayLabel=key=>1===key.length?key.toUpperCase():key,toKeyDisplay=(key,isMacOs)=>{let trimmedKey=key.trim();return(isMacOs?MAC_OS_KEYS:WINDOWS_KEYS)[trimmedKey.toLowerCase()]??{label:toDisplayLabel(trimmedKey)}};export function Kbd({keys,platform,"data-e2e-test-id":dataE2eTestId}){let detectedIsMacOs=useIsMacOs(),isMacOs=platform?"macOs"===platform:detectedIsMacOs,keyDisplays=(Array.isArray(keys)?keys:[keys]).map(key=>toKeyDisplay(key,isMacOs)),spokenKeys=keyDisplays.map(({label,spokenLabel})=>spokenLabel??label).join(" ");return React.createElement(StyledKbd,{"data-e2e-test-id":dataE2eTestId,"data-ds-id":"Kbd"},React.createElement(StyledKbdKeys,{"aria-hidden":"true",hasSeparators:!isMacOs&&keyDisplays.length>1},keyDisplays.map(({label},index)=>React.createElement(React.Fragment,{key:`${label}-${index}`},index>0&&!isMacOs&&React.createElement("span",null,"+"),React.createElement("span",null,label)))),React.createElement(ScreenReaderText,{as:"span"},spokenKeys))}
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ export type KbdGroupProps = {
3
+ /** The `Kbd` elements making up the sequence, in the order they are pressed. */
4
+ children: React.ReactNode;
5
+ "data-e2e-test-id"?: string;
6
+ };
7
+ export declare function KbdGroup({ children, "data-e2e-test-id": dataE2eTestId, }: KbdGroupProps): React.ReactElement;
@@ -0,0 +1 @@
1
+ import React from"react";import styled from"@emotion/styled";let StyledKbdGroup=styled("span",{target:"e1mlf86z0",label:"StyledKbdGroup"})(({theme})=>({display:"inline-flex",alignItems:"flex-start",gap:theme.variables.size.spacing.xxs}));export function KbdGroup({children,"data-e2e-test-id":dataE2eTestId}){return React.createElement(StyledKbdGroup,{"data-e2e-test-id":dataE2eTestId,"data-ds-id":"KbdGroup"},children)}
@@ -289,7 +289,12 @@ export type SidePanelProps = ForwardedScrollProps & {
289
289
  /** Accessible name; when set, the panel renders as a `region` landmark. */
290
290
  "aria-label"?: string;
291
291
  collapsible?: boolean;
292
- /** Number = pixels, unitless string = percent (e.g. `"30%"`). */
292
+ /** Number = pixels, unitless string = percent (e.g. `"30%"`).
293
+ *
294
+ * Either unit sets the column's starting width only: a docked side panel
295
+ * then keeps that width when the window resizes, and `Layout.Content` grows
296
+ * and shrinks around it. Drag-resizing is a separate story - see
297
+ * `resizable`. */
293
298
  defaultSize?: Size;
294
299
  minSize?: Size;
295
300
  maxSize?: Size;
@@ -1 +1 @@
1
- import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import styled from"@emotion/styled";import{Panel}from"../Internal/Panel/Panel";import{LayoutFloat}from"../Internal/LayoutFloat/LayoutFloat";import{useBreakpoints}from"../../shared/useBreakpoints";import{PAGE_BOTTOM_BAR_INSET,PANEL_ORDER,PANEL_WIDTH_VAR,Slot}from"./-constants";import{useLayoutPanelsEnabled,useLayoutPersistence,useLayoutReservedSlots,useLayoutStore}from"./context";import{MobileSplitStackContext}from"./Split/MobileSplitView/useMobileSplitStack";import{useMobileSplitViewEnabled}from"./Split/MobileSplitView/useMobileSplitView";import{LayoutProvider}from"./LayoutProvider";import{Content}from"./Content/Content";import{RightPanel}from"./RightPanel/RightPanel";import{RightPanelHeader}from"./RightPanel/RightPanelHeader";import{RightPanelFooter}from"./RightPanel/RightPanelFooter";import{LeftPanel}from"./LeftPanel/LeftPanel";import{LeftPanelHeader}from"./LeftPanel/LeftPanelHeader";import{LeftPanelFooter}from"./LeftPanel/LeftPanelFooter";import{Split}from"./Split/Split";import{SplitHeader}from"./Split/SplitHeader";import{SplitFooter}from"./Split/SplitFooter";import{LayoutPortalContext,PanelRegistryContext,PanelDeclarationsContext,PanelPresenceContext,PanelAnimationContext}from"./registry";import{useFloatablePortalTargets}from"./useFloatablePortalTargets";import{LayoutFloatDragProvider}from"../Internal/LayoutFloat/LayoutFloatDragProvider";import{useLayoutVar}from"./LayoutCssVars";import{useLayout}from"./useLayout";import{useLayoutRules}from"./useLayoutRules";import{DEFAULT_LAYOUT_RULES}from"./rules";let resizableFromState=slotState=>"sidePanel"===slotState.kind?slotState.resizable:void 0,useGlobalCssVariables=slotHosts=>{let leftPanelWidthCssVar=useLayoutVar(PANEL_WIDTH_VAR.leftPanel),contentWidthCssVar=useLayoutVar(PANEL_WIDTH_VAR.content),rightPanelWidthCssVar=useLayoutVar(PANEL_WIDTH_VAR.rightPanel);useEffect(()=>{let targets=[[Slot.leftPanel,leftPanelWidthCssVar],[Slot.content,contentWidthCssVar],[Slot.rightPanel,rightPanelWidthCssVar]],observers=[];return targets.forEach(([slot,handle])=>{let node=slotHosts[slot]??null;if(!node)return void handle.set("0px");let publishNodeWidth=()=>handle.set(`${node.getBoundingClientRect().width}px`);if(publishNodeWidth(),"undefined"==typeof ResizeObserver)return;let observer=new ResizeObserver(publishNodeWidth);observer.observe(node),observers.push(observer)}),()=>observers.forEach(observer=>observer.disconnect())},[leftPanelWidthCssVar,contentWidthCssVar,rightPanelWidthCssVar,slotHosts])},StyledLayout=styled("div",{target:"e19d8fc30",label:"StyledLayout"})({position:"relative",height:"100%",width:"100%"}),StyledPanelHost=styled("div",{target:"e19d8fc31",label:"StyledPanelHost"})({position:"relative",height:"100%",width:"100%"});export const PANEL_HOST_DS_ID="PanelHost";let StyledContentColumn=styled("div",{shouldForwardProp:prop=>"isSplitOpen"!==prop,target:"e19d8fc32",label:"StyledContentColumn"})(({isSplitOpen,theme})=>({display:"flex",height:`calc(100% - ${PAGE_BOTTOM_BAR_INSET})`,width:"100%",...isSplitOpen&&{maxWidth:theme.variables.layout.split.maxWidth.default,marginInline:"auto",gap:theme.variables.size.spacing.xxs}})),StyledContentColumnHalf=styled("div",{target:"e19d8fc33",label:"StyledContentColumnHalf"})({position:"relative",height:"100%",flex:"1 1 0",minWidth:0}),StyledMobileSplitStackHost=styled("div",{target:"e19d8fc34",label:"StyledMobileSplitStackHost"})({position:"absolute",top:0,left:0,right:0,bottom:PAGE_BOTTOM_BAR_INSET,overflow:"hidden",pointerEvents:"none"}),isPanelPresent=({slot,declared,present,isShown})=>!!declared[slot]&&(isShown(slot)||present[slot]),defaultSizeFor=(slot,declared,layoutState)=>{if(slot===Slot.content)return;let declaredSize=declared[slot]?.defaultSize;return void 0!==declaredSize?declaredSize:declared[slot]?.resizable!==!1?layoutState[slot].size:void 0},childFor=(slot,contentColumn,slotHostRefs)=>slot===Slot.content?contentColumn:React.createElement(StyledPanelHost,{"data-ds-id":"PanelHost",ref:slotHostRefs[slot]});export const Layout=function({children,persistenceKey,storage,rules=DEFAULT_LAYOUT_RULES,additionalRulesData}){let[declared,setDeclared]=useState({}),layout=useLayout(),{state:layoutState,...panelCallbacks}=layout;useLayoutRules({layout,declared,rules,additionalData:additionalRulesData});let{dispatch}=useLayoutStore(),persistence=useLayoutPersistence(),resolvedKey=persistenceKey??persistence.persistenceKey,resolvedStorage=storage??persistence.storage,{isMobile}=useBreakpoints(),showMobileSplitStack=useMobileSplitViewEnabled(),[mobileSplitStackHost,setMobileSplitStackHost]=useState(null),[splitCount,setSplitCount]=useState(0),registerSplit=useCallback(()=>(setSplitCount(count=>count+1),()=>setSplitCount(count=>count-1)),[]),mobileSplitStack=useMemo(()=>({host:mobileSplitStackHost,isSplitPresent:splitCount>0,registerSplit}),[mobileSplitStackHost,splitCount,registerSplit]),panelsEnabled=useLayoutPanelsEnabled(),rightPanelVariant=layoutState[Slot.rightPanel].variant??declared[Slot.rightPanel]?.variant??"sidebar",isRightPanelFloating=!0===panelsEnabled&&!isMobile&&"float"===rightPanelVariant,isShown=slot=>layoutState[slot].visible&&!(slot===Slot.rightPanel&&(isRightPanelFloating||isMobile)),[present,setPresent]=useState({}),presence=useMemo(()=>({setPresent:(slot,isPresent)=>setPresent(prev=>prev[slot]===isPresent?prev:{...prev,[slot]:isPresent})}),[]),panelHandles=useRef({}),panelElements=useRef({}),resizeSuppressed=useRef({}),animationControl=useMemo(()=>({setHandle:(slot,handle)=>{panelHandles.current[slot]=handle},getHandle:slot=>panelHandles.current[slot]??null,setElement:(slot,element)=>{panelElements.current[slot]=element},getElement:slot=>panelElements.current[slot]??null,setResizeSuppressed:(slot,suppressed)=>{resizeSuppressed.current[slot]=suppressed}}),[]),panelRefCallbacks=useMemo(()=>{let handleCallbacks=new Map,elementCallbacks=new Map;return{handleFor:id=>{let callback=handleCallbacks.get(id);return callback||(callback=handle=>animationControl.setHandle(id,handle),handleCallbacks.set(id,callback)),callback},elementFor:id=>{let callback=elementCallbacks.get(id);return callback||(callback=element=>animationControl.setElement(id,element),elementCallbacks.set(id,callback)),callback}}},[animationControl]),shouldSuppressLayoutCallback=useCallback(()=>Object.values(resizeSuppressed.current).some(Boolean),[]),registry=useMemo(()=>({register:(slot,reg)=>setDeclared(prev=>({...prev,[slot]:reg})),unregister:slot=>setDeclared(prev=>{if(!(slot in prev))return prev;let next={...prev};return delete next[slot],next})}),[]),{portalTargets,slotHosts,slotHostRefs,floatHostRef}=useFloatablePortalTargets({slots:PANEL_ORDER,floatableSlot:Slot.rightPanel,isFloating:isRightPanelFloating});useGlobalCssVariables(slotHosts);let rowSlots=PANEL_ORDER.filter(slot=>slot!==Slot.splitview),declaredSlots=rowSlots.filter(slot=>declared[slot]),reservedSlots=useLayoutReservedSlots(),hostedSlotCount=rowSlots.filter(slot=>declared[slot]||reservedSlots.includes(slot)).length,soloSlot=declaredSlots[0],isSplitOpen=isPanelPresent({slot:Slot.splitview,declared,present,isShown})&&isPanelPresent({slot:Slot.content,declared,present,isShown}),contentColumn=React.createElement(StyledContentColumn,{isSplitOpen:isSplitOpen},React.createElement(StyledContentColumnHalf,{ref:slotHostRefs[Slot.content]}),isSplitOpen&&React.createElement(StyledContentColumnHalf,{ref:slotHostRefs[Slot.splitview]})),panelItems=rowSlots.filter(slot=>isPanelPresent({slot,declared,present,isShown})).map(slot=>({id:slot,child:childFor(slot,contentColumn,slotHostRefs),defaultSize:defaultSizeFor(slot,declared,layoutState),minSize:declared[slot]?.minSize??layoutState[slot].minSize,maxSize:declared[slot]?.maxSize??layoutState[slot].maxSize,collapsible:slot!==Slot.content&&(declared[slot]?.collapsible??!0),resizable:declared[slot]?.resizable??resizableFromState(layoutState[slot])})),soloHost=soloSlot&&isShown(soloSlot)?childFor(soloSlot,contentColumn,slotHostRefs):null,panelGroup=panelItems.length>0?React.createElement(Panel,{key:resolvedKey,panels:panelItems,persistenceKey:resolvedKey,storage:resolvedStorage,onResize:(id,size)=>dispatch({type:"resize",slot:id,size}),onCollapse:id=>panelCallbacks[id].hide(),panelHandleFor:panelRefCallbacks.handleFor,panelElementFor:panelRefCallbacks.elementFor,shouldSuppressLayoutCallback:shouldSuppressLayoutCallback}):null;return React.createElement(PanelRegistryContext.Provider,{value:registry},React.createElement(PanelDeclarationsContext.Provider,{value:declared},React.createElement(PanelPresenceContext.Provider,{value:presence},React.createElement(PanelAnimationContext.Provider,{value:animationControl},React.createElement(LayoutPortalContext.Provider,{value:portalTargets},React.createElement(LayoutFloatDragProvider,null,React.createElement(MobileSplitStackContext.Provider,{value:mobileSplitStack},React.createElement(StyledLayout,{"data-ds-id":"Layout"},hostedSlotCount<=1?soloHost:panelGroup,isRightPanelFloating&&layoutState[Slot.rightPanel].visible&&React.createElement(LayoutFloat,{hostRef:floatHostRef}),children,showMobileSplitStack&&React.createElement(StyledMobileSplitStackHost,{ref:setMobileSplitStackHost})))))))))};Layout.Provider=LayoutProvider,Layout.LeftPanel=LeftPanel,Layout.LeftPanelHeader=LeftPanelHeader,Layout.LeftPanelFooter=LeftPanelFooter,Layout.RightPanel=RightPanel,Layout.RightPanelHeader=RightPanelHeader,Layout.RightPanelFooter=RightPanelFooter,Layout.Content=Content,Layout.Split=Split,Layout.SplitHeader=SplitHeader,Layout.SplitFooter=SplitFooter;
1
+ import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import styled from"@emotion/styled";import{Panel}from"../Internal/Panel/Panel";import{LayoutFloat}from"../Internal/LayoutFloat/LayoutFloat";import{useBreakpoints}from"../../shared/useBreakpoints";import{PAGE_BOTTOM_BAR_INSET,PANEL_ORDER,PANEL_WIDTH_VAR,Slot}from"./-constants";import{useLayoutPanelsEnabled,useLayoutPersistence,useLayoutReservedSlots,useLayoutStore}from"./context";import{MobileSplitStackContext}from"./Split/MobileSplitView/useMobileSplitStack";import{useMobileSplitViewEnabled}from"./Split/MobileSplitView/useMobileSplitView";import{LayoutProvider}from"./LayoutProvider";import{Content}from"./Content/Content";import{RightPanel}from"./RightPanel/RightPanel";import{RightPanelHeader}from"./RightPanel/RightPanelHeader";import{RightPanelFooter}from"./RightPanel/RightPanelFooter";import{LeftPanel}from"./LeftPanel/LeftPanel";import{LeftPanelHeader}from"./LeftPanel/LeftPanelHeader";import{LeftPanelFooter}from"./LeftPanel/LeftPanelFooter";import{Split}from"./Split/Split";import{SplitHeader}from"./Split/SplitHeader";import{SplitFooter}from"./Split/SplitFooter";import{LayoutPortalContext,PanelRegistryContext,PanelDeclarationsContext,PanelPresenceContext,PanelAnimationContext}from"./registry";import{useFloatablePortalTargets}from"./useFloatablePortalTargets";import{LayoutFloatDragProvider}from"../Internal/LayoutFloat/LayoutFloatDragProvider";import{useLayoutVar}from"./LayoutCssVars";import{useLayout}from"./useLayout";import{useLayoutRules}from"./useLayoutRules";import{DEFAULT_LAYOUT_RULES}from"./rules";let resizableFromState=slotState=>"sidePanel"===slotState.kind?slotState.resizable:void 0,useGlobalCssVariables=slotHosts=>{let leftPanelWidthCssVar=useLayoutVar(PANEL_WIDTH_VAR.leftPanel),contentWidthCssVar=useLayoutVar(PANEL_WIDTH_VAR.content),rightPanelWidthCssVar=useLayoutVar(PANEL_WIDTH_VAR.rightPanel);useEffect(()=>{let targets=[[Slot.leftPanel,leftPanelWidthCssVar],[Slot.content,contentWidthCssVar],[Slot.rightPanel,rightPanelWidthCssVar]],observers=[];return targets.forEach(([slot,handle])=>{let node=slotHosts[slot]??null;if(!node)return void handle.set("0px");let publishNodeWidth=()=>handle.set(`${node.getBoundingClientRect().width}px`);if(publishNodeWidth(),"undefined"==typeof ResizeObserver)return;let observer=new ResizeObserver(publishNodeWidth);observer.observe(node),observers.push(observer)}),()=>observers.forEach(observer=>observer.disconnect())},[leftPanelWidthCssVar,contentWidthCssVar,rightPanelWidthCssVar,slotHosts])},StyledLayout=styled("div",{target:"ec2opau0",label:"StyledLayout"})({position:"relative",height:"100%",width:"100%"}),StyledPanelHost=styled("div",{target:"ec2opau1",label:"StyledPanelHost"})({position:"relative",height:"100%",width:"100%"});export const PANEL_HOST_DS_ID="PanelHost";let StyledContentColumn=styled("div",{shouldForwardProp:prop=>"isSplitOpen"!==prop,target:"ec2opau2",label:"StyledContentColumn"})(({isSplitOpen,theme})=>({display:"flex",height:`calc(100% - ${PAGE_BOTTOM_BAR_INSET})`,width:"100%",...isSplitOpen&&{maxWidth:theme.variables.layout.split.maxWidth.default,marginInline:"auto",gap:theme.variables.size.spacing.xxs}})),StyledContentColumnHalf=styled("div",{target:"ec2opau3",label:"StyledContentColumnHalf"})({position:"relative",height:"100%",flex:"1 1 0",minWidth:0}),StyledMobileSplitStackHost=styled("div",{target:"ec2opau4",label:"StyledMobileSplitStackHost"})({position:"absolute",top:0,left:0,right:0,bottom:PAGE_BOTTOM_BAR_INSET,overflow:"hidden",pointerEvents:"none"}),isPanelPresent=({slot,declared,present,isShown})=>!!declared[slot]&&(isShown(slot)||present[slot]),defaultSizeFor=({slot,panel,panelState})=>slot===Slot.content?void 0:panel?.defaultSize!==void 0?panel.defaultSize:panel?.resizable!==!1?panelState.size:void 0,childFor=(slot,contentColumn,slotHostRefs)=>slot===Slot.content?contentColumn:React.createElement(StyledPanelHost,{"data-ds-id":"PanelHost",ref:slotHostRefs[slot]});export const Layout=function({children,persistenceKey,storage,rules=DEFAULT_LAYOUT_RULES,additionalRulesData}){let[declared,setDeclared]=useState({}),layout=useLayout(),{state:layoutState,...panelCallbacks}=layout;useLayoutRules({layout,declared,rules,additionalData:additionalRulesData});let{dispatch}=useLayoutStore(),persistence=useLayoutPersistence(),resolvedKey=persistenceKey??persistence.persistenceKey,resolvedStorage=storage??persistence.storage,{isMobile}=useBreakpoints(),showMobileSplitStack=useMobileSplitViewEnabled(),[mobileSplitStackHost,setMobileSplitStackHost]=useState(null),[splitCount,setSplitCount]=useState(0),registerSplit=useCallback(()=>(setSplitCount(count=>count+1),()=>setSplitCount(count=>count-1)),[]),mobileSplitStack=useMemo(()=>({host:mobileSplitStackHost,isSplitPresent:splitCount>0,registerSplit}),[mobileSplitStackHost,splitCount,registerSplit]),panelsEnabled=useLayoutPanelsEnabled(),rightPanelVariant=layoutState[Slot.rightPanel].variant??declared[Slot.rightPanel]?.variant??"sidebar",isRightPanelFloating=!0===panelsEnabled&&!isMobile&&"float"===rightPanelVariant,isShown=slot=>layoutState[slot].visible&&!(slot===Slot.rightPanel&&(isRightPanelFloating||isMobile)),[present,setPresent]=useState({}),presence=useMemo(()=>({setPresent:(slot,isPresent)=>setPresent(prev=>prev[slot]===isPresent?prev:{...prev,[slot]:isPresent})}),[]),panelHandles=useRef({}),panelElements=useRef({}),resizeSuppressed=useRef({}),animationControl=useMemo(()=>({setHandle:(slot,handle)=>{panelHandles.current[slot]=handle},getHandle:slot=>panelHandles.current[slot]??null,setElement:(slot,element)=>{panelElements.current[slot]=element},getElement:slot=>panelElements.current[slot]??null,setResizeSuppressed:(slot,suppressed)=>{resizeSuppressed.current[slot]=suppressed}}),[]),panelRefCallbacks=useMemo(()=>{let handleCallbacks=new Map,elementCallbacks=new Map;return{handleFor:id=>{let callback=handleCallbacks.get(id);return callback||(callback=handle=>animationControl.setHandle(id,handle),handleCallbacks.set(id,callback)),callback},elementFor:id=>{let callback=elementCallbacks.get(id);return callback||(callback=element=>animationControl.setElement(id,element),elementCallbacks.set(id,callback)),callback}}},[animationControl]),shouldSuppressLayoutCallback=useCallback(()=>Object.values(resizeSuppressed.current).some(Boolean),[]),registry=useMemo(()=>({register:(slot,reg)=>setDeclared(prev=>({...prev,[slot]:reg})),unregister:slot=>setDeclared(prev=>{if(!(slot in prev))return prev;let next={...prev};return delete next[slot],next})}),[]),{portalTargets,slotHosts,slotHostRefs,floatHostRef}=useFloatablePortalTargets({slots:PANEL_ORDER,floatableSlot:Slot.rightPanel,isFloating:isRightPanelFloating});useGlobalCssVariables(slotHosts);let rowSlots=PANEL_ORDER.filter(slot=>slot!==Slot.splitview),declaredSlots=rowSlots.filter(slot=>declared[slot]),reservedSlots=useLayoutReservedSlots(),hostedSlotCount=rowSlots.filter(slot=>declared[slot]||reservedSlots.includes(slot)).length,soloSlot=declaredSlots[0],isSplitOpen=isPanelPresent({slot:Slot.splitview,declared,present,isShown})&&isPanelPresent({slot:Slot.content,declared,present,isShown}),contentColumn=React.createElement(StyledContentColumn,{isSplitOpen:isSplitOpen},React.createElement(StyledContentColumnHalf,{ref:slotHostRefs[Slot.content]}),isSplitOpen&&React.createElement(StyledContentColumnHalf,{ref:slotHostRefs[Slot.splitview]})),panelItems=rowSlots.filter(slot=>isPanelPresent({slot,declared,present,isShown})).map(slot=>{let panel=declared[slot],panelState=layoutState[slot];return{id:slot,child:childFor(slot,contentColumn,slotHostRefs),defaultSize:defaultSizeFor({slot,panel,panelState}),minSize:panel?.minSize??panelState.minSize,maxSize:panel?.maxSize??panelState.maxSize,collapsible:slot!==Slot.content&&(panel?.collapsible??!0),lockWidthOnWindowResize:panel?.lockWidthOnWindowResize,resizable:panel?.resizable??resizableFromState(panelState)}}),soloHost=soloSlot&&isShown(soloSlot)?childFor(soloSlot,contentColumn,slotHostRefs):null,panelGroup=panelItems.length>0?React.createElement(Panel,{key:resolvedKey,panels:panelItems,persistenceKey:resolvedKey,storage:resolvedStorage,onResize:(id,size)=>dispatch({type:"resize",slot:id,size}),onCollapse:id=>panelCallbacks[id].hide(),panelHandleFor:panelRefCallbacks.handleFor,panelElementFor:panelRefCallbacks.elementFor,shouldSuppressLayoutCallback:shouldSuppressLayoutCallback}):null;return React.createElement(PanelRegistryContext.Provider,{value:registry},React.createElement(PanelDeclarationsContext.Provider,{value:declared},React.createElement(PanelPresenceContext.Provider,{value:presence},React.createElement(PanelAnimationContext.Provider,{value:animationControl},React.createElement(LayoutPortalContext.Provider,{value:portalTargets},React.createElement(LayoutFloatDragProvider,null,React.createElement(MobileSplitStackContext.Provider,{value:mobileSplitStack},React.createElement(StyledLayout,{"data-ds-id":"Layout"},hostedSlotCount<=1?soloHost:panelGroup,isRightPanelFloating&&layoutState[Slot.rightPanel].visible&&React.createElement(LayoutFloat,{hostRef:floatHostRef}),children,showMobileSplitStack&&React.createElement(StyledMobileSplitStackHost,{ref:setMobileSplitStackHost})))))))))};Layout.Provider=LayoutProvider,Layout.LeftPanel=LeftPanel,Layout.LeftPanelHeader=LeftPanelHeader,Layout.LeftPanelFooter=LeftPanelFooter,Layout.RightPanel=RightPanel,Layout.RightPanelHeader=RightPanelHeader,Layout.RightPanelFooter=RightPanelFooter,Layout.Content=Content,Layout.Split=Split,Layout.SplitHeader=SplitHeader,Layout.SplitFooter=SplitFooter;
@@ -1 +1 @@
1
- import React from"react";import{Slot}from"../-constants";import{useLayoutPortal}from"../registry";import{usePanelDockedSlide}from"../usePanelDockedSlide";import{PanelSlideBody}from"../PanelSlideBody";import{PanelContainer}from"../PanelContainer";export const LeftPanelDocked=({children,"aria-label":ariaLabel,defaultSize,minSize,maxSize,collapsible=!0,resizable,scrollContainerRef,onScroll})=>{let{isMounted,pinnedWidth}=usePanelDockedSlide({slot:Slot.leftPanel,defaultSize,minSize,maxSize,collapsible,resizable});return useLayoutPortal(Slot.leftPanel,isMounted?React.createElement(PanelSlideBody,{anchor:"right",pinnedWidth:pinnedWidth},React.createElement(PanelContainer,{showBorderRight:!0,"aria-label":ariaLabel,scrollContainerRef:scrollContainerRef,onScroll:onScroll},children)):null)};
1
+ import React from"react";import{Slot}from"../-constants";import{useLayoutPortal}from"../registry";import{usePanelDockedSlide}from"../usePanelDockedSlide";import{PanelSlideBody}from"../PanelSlideBody";import{PanelContainer}from"../PanelContainer";export const LeftPanelDocked=({children,"aria-label":ariaLabel,defaultSize,minSize,maxSize,collapsible=!0,resizable,scrollContainerRef,onScroll})=>{let{isMounted,pinnedWidth}=usePanelDockedSlide({slot:Slot.leftPanel,defaultSize,minSize,maxSize,collapsible,resizable,lockWidthOnWindowResize:!0});return useLayoutPortal(Slot.leftPanel,isMounted?React.createElement(PanelSlideBody,{anchor:"right",pinnedWidth:pinnedWidth},React.createElement(PanelContainer,{showBorderRight:!0,"aria-label":ariaLabel,scrollContainerRef:scrollContainerRef,onScroll:onScroll},children)):null)};
@@ -1 +1 @@
1
- import React from"react";import{Slot}from"../-constants";import{useDeclarePanel,useRunCallbackOnValueChange}from"../registry";import{useLayout}from"../useLayout";import{useCanRenderPanel}from"../context";import{useBreakpoints}from"../../../shared/useBreakpoints";import{RightPanelDocked}from"./RightPanelDocked";import{RightPanelSheet}from"./RightPanelSheet";export const RightPanel=({children,defaultSize=378,minSize=328,maxSize="30%",collapsible=!1,resizable,variant="sidebar",onVisibleChange,onVariantChange,"aria-label":ariaLabel,scrollContainerRef,onScroll})=>{let{state:layoutState,[Slot.rightPanel]:panel}=useLayout(),{isVisible,hide}=panel,{isMobile}=useBreakpoints(),canRender=useCanRenderPanel();useDeclarePanel(Slot.rightPanel,{defaultSize,minSize,maxSize,collapsible,resizable,variant});let resolvedVariant=layoutState[Slot.rightPanel].variant??variant;return(useRunCallbackOnValueChange(isVisible,onVisibleChange),useRunCallbackOnValueChange(resolvedVariant,onVariantChange),canRender)?isMobile?React.createElement(RightPanelSheet,{isVisible:isVisible,hide:hide,"aria-label":ariaLabel,scrollContainerRef:scrollContainerRef,onScroll:onScroll},children):React.createElement(RightPanelDocked,{isVisible:isVisible,variant:resolvedVariant,"aria-label":ariaLabel,scrollContainerRef:scrollContainerRef,onScroll:onScroll},children):null};
1
+ import React from"react";import{Slot}from"../-constants";import{useDeclarePanel,useRunCallbackOnValueChange}from"../registry";import{useLayout}from"../useLayout";import{useCanRenderPanel}from"../context";import{useBreakpoints}from"../../../shared/useBreakpoints";import{RightPanelDocked}from"./RightPanelDocked";import{RightPanelSheet}from"./RightPanelSheet";export const RightPanel=({children,defaultSize=378,minSize=328,maxSize="30%",collapsible=!1,resizable,variant="sidebar",onVisibleChange,onVariantChange,"aria-label":ariaLabel,scrollContainerRef,onScroll})=>{let{state:layoutState,[Slot.rightPanel]:panel}=useLayout(),{isVisible,hide}=panel,{isMobile}=useBreakpoints(),canRender=useCanRenderPanel();useDeclarePanel(Slot.rightPanel,{defaultSize,minSize,maxSize,collapsible,resizable,lockWidthOnWindowResize:!0,variant});let resolvedVariant=layoutState[Slot.rightPanel].variant??variant;return(useRunCallbackOnValueChange(isVisible,onVisibleChange),useRunCallbackOnValueChange(resolvedVariant,onVariantChange),canRender)?isMobile?React.createElement(RightPanelSheet,{isVisible:isVisible,hide:hide,"aria-label":ariaLabel,scrollContainerRef:scrollContainerRef,onScroll:onScroll},children):React.createElement(RightPanelDocked,{isVisible:isVisible,variant:resolvedVariant,"aria-label":ariaLabel,scrollContainerRef:scrollContainerRef,onScroll:onScroll},children):null};
@@ -23,6 +23,10 @@ export type PanelReg = {
23
23
  /** When `false`, the panel is fixed at `defaultSize` and can't be drag-resized
24
24
  * (directly or via a neighbour). Defaults to resizable. */
25
25
  resizable?: boolean;
26
+ /** Lock this column's width when the window resizes, leaving the change to
27
+ * the columns without it. Declared by the docked side panels, which are
28
+ * sized for their own contents; `content` omits it and absorbs. */
29
+ lockWidthOnWindowResize?: boolean;
26
30
  /** Initial presentation from `RightPanel`'s `variant` prop. Read as the
27
31
  * fallback wherever the store's variant is still unset. */
28
32
  variant?: RightPanelVariant;
@@ -1 +1 @@
1
- import{createContext,useContext,useEffect,useLayoutEffect,useRef}from"react";import{createPortal}from"react-dom";import{Slot}from"./-constants";import{useLayoutPanelsEnabled}from"./context";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),declarationEnabled=!0===useLayoutPanelsEnabled()||slot===Slot.content,{defaultSize,minSize,maxSize,collapsible,resizable,variant}=reg;useLayoutEffect(()=>{if(registry&&declarationEnabled)return registry.register(slot,{defaultSize,minSize,maxSize,collapsible,resizable,variant}),()=>registry.unregister(slot)},[registry,declarationEnabled,slot,defaultSize,minSize,maxSize,collapsible,resizable,variant])}export const PanelDeclarationsContext=createContext({});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";import{Slot}from"./-constants";import{useLayoutPanelsEnabled}from"./context";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),declarationEnabled=!0===useLayoutPanelsEnabled()||slot===Slot.content,{defaultSize,minSize,maxSize,collapsible,resizable,lockWidthOnWindowResize,variant}=reg;useLayoutEffect(()=>{if(registry&&declarationEnabled)return registry.register(slot,{defaultSize,minSize,maxSize,collapsible,resizable,lockWidthOnWindowResize,variant}),()=>registry.unregister(slot)},[registry,declarationEnabled,slot,defaultSize,minSize,maxSize,collapsible,resizable,lockWidthOnWindowResize,variant])}export const PanelDeclarationsContext=createContext({});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)}
@@ -11,6 +11,9 @@ export type PanelDockedSlideOptions = {
11
11
  * charge. Doesn't affect the slide - the open/close resize goes through the
12
12
  * imperative handle, which a fixed column still honours. */
13
13
  resizable?: boolean;
14
+ /** Forwarded to the declaration: lock the column's width when the window
15
+ * resizes. Doesn't affect the slide, which resizes the column outright. */
16
+ lockWidthOnWindowResize?: boolean;
14
17
  };
15
18
  export type PanelDockedSlide = {
16
19
  /** Whether the panel's content should render at all (entering, open, or
@@ -29,4 +32,4 @@ export type PanelDockedSlide = {
29
32
  * reduced motion is requested. The mobile modal-drawer lifecycle lives in
30
33
  * {@link useExitAnimation} and the Drawer's styled components.
31
34
  */
32
- export declare function usePanelDockedSlide({ slot, defaultSize, minSize, maxSize, collapsible, resizable, }: PanelDockedSlideOptions): PanelDockedSlide;
35
+ export declare function usePanelDockedSlide({ slot, defaultSize, minSize, maxSize, collapsible, resizable, lockWidthOnWindowResize, }: PanelDockedSlideOptions): PanelDockedSlide;
@@ -1 +1 @@
1
- import{useLayoutEffect,useState}from"react";import{useTheme}from"@emotion/react";import{useWindow}from"../../shared/useWindow";import{prefersReducedMotion}from"../../shared/prefersReducedMotion";import{useDeclarePanel,usePanelAnimationControl,usePanelPresence}from"./registry";import{useLayout}from"./useLayout";let parseDurationMs=duration=>{let trimmed=duration.trim();return trimmed.endsWith("ms")?parseFloat(trimmed):trimmed.endsWith("s")?1e3*parseFloat(trimmed):parseFloat(trimmed)||0},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}};export function usePanelDockedSlide({slot,defaultSize,minSize,maxSize,collapsible,resizable}){let{isVisible,state}=useLayout()[slot],theme=useTheme(),window=useWindow(),animation=usePanelAnimationControl(),reducedMotion=prefersReducedMotion(window),[isMounted,setIsMounted]=useState(isVisible),[phase,setPhase]=useState("idle"),[pinnedWidth,setPinnedWidth]=useState(null),[prevVisible,setPrevVisible]=useState(isVisible);return isVisible!==prevVisible&&(setPrevVisible(isVisible),setPhase(isVisible?"entering":"exiting"),isVisible&&setIsMounted(!0)),useDeclarePanel(slot,{defaultSize:"entering"===phase&&collapsible&&!reducedMotion?0:defaultSize,minSize,maxSize,collapsible,resizable}),usePanelPresence(slot,isMounted),useLayoutEffect(()=>{if("idle"===phase)return;let cancelled=!1,frame=0,settleTimer=0,animatedColumns=[];animation?.setResizeSuppressed(slot,!0);let{duration,timingFunction}=theme.variables.animation.navSlide.open,durationMs=parseDurationMs(duration),setColumnTransitions=enabled=>{animatedColumns.forEach(column=>{enabled?column.style.setProperty("transition",`flex-grow ${duration} ${timingFunction}`):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)try{handle.getSize().inPixels<1&&openColumn(handle,null)}catch{}setPinnedWidth(null),"exiting"===phase&&setIsMounted(!1),setPhase("idle")},runSlide=(handle,element)=>{animatedColumns=groupColumnsOf(element);let targetPx=resolveSizePx(targetSize,element.closest("[data-group]")?.getBoundingClientRect().width??null);setPinnedWidth("entering"===phase?targetPx:handle.getSize().inPixels),setColumnTransitions(!0),element.getBoundingClientRect();try{"entering"===phase?openColumn(handle,targetPx):handle.collapse()}catch{settle(handle);return}settleTimer=window.setTimeout(()=>settle(handle),durationMs+80)},waitForColumn=attempt=>{if(cancelled)return;let handle=animation?.getHandle(slot)??null,element=animation?.getElement(slot)??null;return handle&&element&&isHandleReady(handle)?void runSlide(handle,element):"exiting"===phase||!animation||attempt>=30?void settle(handle):void(frame=window.requestAnimationFrame(()=>waitForColumn(attempt+1)))};return!collapsible||reducedMotion?settle(animation?.getHandle(slot)??null):waitForColumn(0),()=>{cancelled=!0,window.cancelAnimationFrame(frame),window.clearTimeout(settleTimer),setColumnTransitions(!1),animation?.setResizeSuppressed(slot,!1)}},[phase,slot,collapsible,animation,window,theme]),{isMounted,pinnedWidth}}
1
+ import{useLayoutEffect,useState}from"react";import{useTheme}from"@emotion/react";import{useWindow}from"../../shared/useWindow";import{prefersReducedMotion}from"../../shared/prefersReducedMotion";import{useDeclarePanel,usePanelAnimationControl,usePanelPresence}from"./registry";import{useLayout}from"./useLayout";let parseDurationMs=duration=>{let trimmed=duration.trim();return trimmed.endsWith("ms")?parseFloat(trimmed):trimmed.endsWith("s")?1e3*parseFloat(trimmed):parseFloat(trimmed)||0},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}};export function usePanelDockedSlide({slot,defaultSize,minSize,maxSize,collapsible,resizable,lockWidthOnWindowResize}){let{isVisible,state}=useLayout()[slot],theme=useTheme(),window=useWindow(),animation=usePanelAnimationControl(),reducedMotion=prefersReducedMotion(window),[isMounted,setIsMounted]=useState(isVisible),[phase,setPhase]=useState("idle"),[pinnedWidth,setPinnedWidth]=useState(null),[prevVisible,setPrevVisible]=useState(isVisible);return isVisible!==prevVisible&&(setPrevVisible(isVisible),setPhase(isVisible?"entering":"exiting"),isVisible&&setIsMounted(!0)),useDeclarePanel(slot,{defaultSize:"entering"===phase&&collapsible&&!reducedMotion?0:defaultSize,minSize,maxSize,collapsible,resizable,lockWidthOnWindowResize}),usePanelPresence(slot,isMounted),useLayoutEffect(()=>{if("idle"===phase)return;let cancelled=!1,frame=0,settleTimer=0,animatedColumns=[];animation?.setResizeSuppressed(slot,!0);let{duration,timingFunction}=theme.variables.animation.navSlide.open,durationMs=parseDurationMs(duration),setColumnTransitions=enabled=>{animatedColumns.forEach(column=>{enabled?column.style.setProperty("transition",`flex-grow ${duration} ${timingFunction}`):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)try{handle.getSize().inPixels<1&&openColumn(handle,null)}catch{}setPinnedWidth(null),"exiting"===phase&&setIsMounted(!1),setPhase("idle")},runSlide=(handle,element)=>{animatedColumns=groupColumnsOf(element);let targetPx=resolveSizePx(targetSize,element.closest("[data-group]")?.getBoundingClientRect().width??null);setPinnedWidth("entering"===phase?targetPx:handle.getSize().inPixels),setColumnTransitions(!0),element.getBoundingClientRect();try{"entering"===phase?openColumn(handle,targetPx):handle.collapse()}catch{settle(handle);return}settleTimer=window.setTimeout(()=>settle(handle),durationMs+80)},waitForColumn=attempt=>{if(cancelled)return;let handle=animation?.getHandle(slot)??null,element=animation?.getElement(slot)??null;return handle&&element&&isHandleReady(handle)?void runSlide(handle,element):"exiting"===phase||!animation||attempt>=30?void settle(handle):void(frame=window.requestAnimationFrame(()=>waitForColumn(attempt+1)))};return!collapsible||reducedMotion?settle(animation?.getHandle(slot)??null):waitForColumn(0),()=>{cancelled=!0,window.cancelAnimationFrame(frame),window.clearTimeout(settleTimer),setColumnTransitions(!1),animation?.setResizeSuppressed(slot,!1)}},[phase,slot,collapsible,animation,window,theme]),{isMounted,pinnedWidth}}
@@ -1 +1 @@
1
- import{useFocusVisible}from"@react-aria/interactions";import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{TooltipContent}from"./TooltipContent";export function BaseTooltip({placement="auto",content,children,externalTriggerRef,portalContainer,contentPadding,maxWidth,subTheme,"data-e2e-test-id":dataE2eTestId,onVisibilityChange,privateProps,...ariaAttributes}){let tooltipId=useMemo(()=>`DSTooltip_${Math.floor(Date.now()*Math.random())}`,[]),{isFocusVisible}=useFocusVisible(),[isVisible,setVisible]=useState(!1),triggeredByEvent=useRef(null),isTooltipHovered=useRef(!1),isTriggerHovered=useRef(!1),hideTooltipTimeoutId=useRef(null),showTooltipTimeoutId=useRef(null),internalTriggerRef=useRef(null),triggerRef=externalTriggerRef||internalTriggerRef,toggleVisibility=useCallback(status=>{setVisible(status),onVisibilityChange&&onVisibilityChange(status)},[onVisibilityChange]),handleTriggerPointerEnter=useCallback(()=>{isTriggerHovered.current=!0,isTooltipHovered.current||(clearTimeout(showTooltipTimeoutId.current),showTooltipTimeoutId.current=setTimeout(()=>{isTriggerHovered.current&&(triggeredByEvent.current="hover",toggleVisibility(!0))},200))},[toggleVisibility]),handleTriggerPointerLeave=useCallback(()=>{isTriggerHovered.current=!1,clearTimeout(hideTooltipTimeoutId.current),hideTooltipTimeoutId.current=setTimeout(()=>{isTooltipHovered.current||"hover"!==triggeredByEvent.current||isTriggerHovered.current||toggleVisibility(!1)},200)},[toggleVisibility]),handleTriggerFocus=useCallback(()=>{isFocusVisible&&(triggeredByEvent.current="focus",toggleVisibility(!0))},[isFocusVisible,toggleVisibility]),handleTriggerBlur=useCallback(()=>{"focus"===triggeredByEvent.current&&toggleVisibility(!1)},[toggleVisibility]),handleTriggerClick=useCallback(()=>{toggleVisibility(!1)},[toggleVisibility]),handleTriggerKeyDown=useCallback(evt=>{"Escape"===evt.key&&toggleVisibility(!1)},[toggleVisibility]);useEffect(()=>()=>{clearTimeout(showTooltipTimeoutId.current),clearTimeout(hideTooltipTimeoutId.current)},[]),useEffect(()=>{let trigger;if(externalTriggerRef?.current&&!children){let triggerTabIndex=(trigger=externalTriggerRef.current).getAttribute("tabindex");trigger.setAttribute("tabindex",triggerTabIndex??"0"),trigger.addEventListener("pointerenter",handleTriggerPointerEnter),trigger.addEventListener("pointerleave",handleTriggerPointerLeave),trigger.addEventListener("focus",handleTriggerFocus),trigger.addEventListener("blur",handleTriggerBlur),trigger.addEventListener("click",handleTriggerClick),trigger.addEventListener("keydown",handleTriggerKeyDown)}return()=>{trigger&&(trigger.removeEventListener("pointerenter",handleTriggerPointerEnter),trigger.removeEventListener("pointerleave",handleTriggerPointerLeave),trigger.removeEventListener("focus",handleTriggerFocus),trigger.removeEventListener("blur",handleTriggerBlur),trigger.removeEventListener("click",handleTriggerClick),trigger.removeEventListener("keydown",handleTriggerKeyDown))}},[externalTriggerRef,children,handleTriggerPointerEnter,handleTriggerPointerLeave,handleTriggerFocus,handleTriggerBlur,handleTriggerClick,handleTriggerKeyDown]),useEffect(()=>{if(externalTriggerRef?.current&&!children){let trigger=externalTriggerRef.current;isVisible?trigger.setAttribute("aria-describedby",tooltipId):trigger.removeAttribute("aria-describedby")}},[externalTriggerRef,children,tooltipId,isVisible]);let triggerElm=children?React.cloneElement(children,{ref:triggerRef,...ariaAttributes,...isVisible&&{"aria-describedby":tooltipId},tabIndex:children.props.tabIndex??0,onPointerEnter:handleTriggerPointerEnter,onPointerLeave:handleTriggerPointerLeave,onFocus:evt=>{handleTriggerFocus(),children.props.onFocus&&children.props.onFocus(evt)},onBlur:evt=>{handleTriggerBlur(),children.props.onBlur&&children.props.onBlur(evt)},onClick:evt=>{handleTriggerClick(),children.props.onClick&&children.props.onClick(evt)},onKeyDown:handleTriggerKeyDown}):null,tooltipElm=React.createElement(TooltipContent,{dataDSId:"Tooltip",content:content,placement:placement,portalContainer:portalContainer,dataE2eTestId:dataE2eTestId,isVisible:isVisible,tooltipId:tooltipId,triggerRef:triggerRef,"aria-hidden":!0,role:"tooltip",contentPadding:contentPadding,maxWidth:maxWidth,subTheme:subTheme,onTooltipPointerEnter:()=>{isTooltipHovered.current=!0},onTooltipPointerLeave:()=>{isTooltipHovered.current=!1,"hover"===triggeredByEvent.current&&toggleVisibility(!1)},privateProps:privateProps});return React.createElement(React.Fragment,null,triggerElm,tooltipElm)}
1
+ import{useFocusVisible}from"@react-aria/interactions";import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{TooltipContent}from"./TooltipContent";export function BaseTooltip({placement="auto",content,children,externalTriggerRef,portalContainer,contentPadding,maxWidth,subTheme,"data-e2e-test-id":dataE2eTestId,onVisibilityChange,privateProps,...ariaAttributes}){let tooltipId=useMemo(()=>`DSTooltip_${Math.floor(Date.now()*Math.random())}`,[]),{isFocusVisible}=useFocusVisible(),[isVisible,setVisible]=useState(!1),triggeredByEvent=useRef(null),isTooltipHovered=useRef(!1),isTriggerHovered=useRef(!1),hideTooltipTimeoutId=useRef(null),showTooltipTimeoutId=useRef(null),internalTriggerRef=useRef(null),triggerRef=externalTriggerRef||internalTriggerRef,toggleVisibility=useCallback(status=>{setVisible(status),onVisibilityChange&&onVisibilityChange(status)},[onVisibilityChange]),handleTriggerPointerEnter=useCallback(()=>{isTriggerHovered.current=!0,isTooltipHovered.current||(clearTimeout(showTooltipTimeoutId.current),showTooltipTimeoutId.current=setTimeout(()=>{isTriggerHovered.current&&(triggeredByEvent.current="hover",toggleVisibility(!0))},200))},[toggleVisibility]),handleTriggerPointerLeave=useCallback(()=>{isTriggerHovered.current=!1,clearTimeout(hideTooltipTimeoutId.current),hideTooltipTimeoutId.current=setTimeout(()=>{isTooltipHovered.current||"hover"!==triggeredByEvent.current||isTriggerHovered.current||toggleVisibility(!1)},200)},[toggleVisibility]),handleTriggerFocus=useCallback(()=>{isFocusVisible&&(triggeredByEvent.current="focus",toggleVisibility(!0))},[isFocusVisible,toggleVisibility]),handleTriggerBlur=useCallback(()=>{"focus"===triggeredByEvent.current&&toggleVisibility(!1)},[toggleVisibility]),handleTriggerClick=useCallback(()=>{toggleVisibility(!1)},[toggleVisibility]),handleTriggerKeyDown=useCallback(evt=>{"Escape"===evt.key&&toggleVisibility(!1)},[toggleVisibility]);useEffect(()=>()=>{clearTimeout(showTooltipTimeoutId.current),clearTimeout(hideTooltipTimeoutId.current)},[]),useEffect(()=>{let trigger;if(externalTriggerRef?.current&&!children){let triggerTabIndex=(trigger=externalTriggerRef.current).getAttribute("tabindex");trigger.setAttribute("tabindex",triggerTabIndex??"0"),trigger.addEventListener("pointerenter",handleTriggerPointerEnter),trigger.addEventListener("pointerleave",handleTriggerPointerLeave),trigger.addEventListener("focus",handleTriggerFocus),trigger.addEventListener("blur",handleTriggerBlur),trigger.addEventListener("click",handleTriggerClick),trigger.addEventListener("keydown",handleTriggerKeyDown)}return()=>{trigger&&(trigger.removeEventListener("pointerenter",handleTriggerPointerEnter),trigger.removeEventListener("pointerleave",handleTriggerPointerLeave),trigger.removeEventListener("focus",handleTriggerFocus),trigger.removeEventListener("blur",handleTriggerBlur),trigger.removeEventListener("click",handleTriggerClick),trigger.removeEventListener("keydown",handleTriggerKeyDown))}},[externalTriggerRef,children,handleTriggerPointerEnter,handleTriggerPointerLeave,handleTriggerFocus,handleTriggerBlur,handleTriggerClick,handleTriggerKeyDown]),useEffect(()=>{if(externalTriggerRef?.current&&!children){let trigger=externalTriggerRef.current;isVisible?trigger.setAttribute("aria-describedby",tooltipId):trigger.removeAttribute("aria-describedby")}},[externalTriggerRef,children,tooltipId,isVisible]);let triggerElm=children?React.cloneElement(children,{ref:triggerRef,...ariaAttributes,...isVisible&&{"aria-describedby":tooltipId},tabIndex:children.props.tabIndex??0,onPointerEnter:handleTriggerPointerEnter,onPointerLeave:handleTriggerPointerLeave,onFocus:evt=>{handleTriggerFocus(),children.props.onFocus&&children.props.onFocus(evt)},onBlur:evt=>{handleTriggerBlur(),children.props.onBlur&&children.props.onBlur(evt)},onClick:evt=>{handleTriggerClick(),children.props.onClick&&children.props.onClick(evt)},onKeyDown:handleTriggerKeyDown}):null,tooltipElm=React.createElement(TooltipContent,{dataDSId:"Tooltip",content:content,placement:placement,portalContainer:portalContainer,dataE2eTestId:dataE2eTestId,isVisible:isVisible,tooltipId:tooltipId,triggerRef:triggerRef,role:"tooltip",contentPadding:contentPadding,maxWidth:maxWidth,subTheme:subTheme,onTooltipPointerEnter:()=>{isTooltipHovered.current=!0},onTooltipPointerLeave:()=>{isTooltipHovered.current=!1,"hover"===triggeredByEvent.current&&toggleVisibility(!1)},privateProps:privateProps});return React.createElement(React.Fragment,null,triggerElm,tooltipElm)}
@@ -3,5 +3,7 @@ import type { BaseTooltipProps } from "./BaseTooltip";
3
3
  import type { TooltipConditionalProps } from "./types";
4
4
  export type TooltipProps = Omit<BaseTooltipProps, "content" | "contentPadding" | "maxWidth" | "subTheme"> & {
5
5
  content: string;
6
+ /** The keyboard shortcut that triggers the same action, shown in a second column beside the content. Pass a `Kbd` for keys pressed together or a `KbdGroup` for a sequence. Hidden below the `m` breakpoint, which has no keyboard. */
7
+ shortcut?: React.ReactElement;
6
8
  } & TooltipConditionalProps;
7
- export declare function Tooltip({ content, ...rest }: TooltipProps): React.ReactElement;
9
+ export declare function Tooltip({ content, shortcut, ...rest }: TooltipProps): React.ReactElement;
@@ -1 +1 @@
1
- import React from"react";import{Text}from"../Typography/Text/Text";import{BaseTooltip}from"./BaseTooltip";export function Tooltip({content,...rest}){let contentElm=React.createElement(Text,{size:"s"},content);return React.createElement(BaseTooltip,{content:contentElm,subTheme:"inverted",...rest})}
1
+ import React from"react";import styled from"@emotion/styled";import{Text}from"../Typography/Text/Text";import{mqValue}from"../../shared/mediaQueries";import{BaseTooltip}from"./BaseTooltip";let StyledTooltipRow=styled("div",{target:"erivg040",label:"StyledTooltipRow"})(({theme})=>({display:"flex",alignItems:"flex-start",gap:theme.variables.size.spacing.xxs})),StyledKbdColumn=styled("div",{target:"erivg041",label:"StyledKbdColumn"})(({theme})=>({flexShrink:0,paddingTop:theme.variables.size.spacing.xxxs,...mqValue({display:["none","flex"]})})),CustomText=styled(Text,{target:"erivg042",label:"CustomText"})({flex:"1 0 0",minWidth:0});export function Tooltip({content,shortcut,...rest}){let contentElm=shortcut?React.createElement(StyledTooltipRow,null,React.createElement(CustomText,{size:"s"},content),React.createElement(StyledKbdColumn,null,shortcut)):React.createElement(Text,{size:"s"},content);return React.createElement(BaseTooltip,{content:contentElm,subTheme:"inverted",...rest})}
@@ -42,6 +42,7 @@ export * from "./components/Content/DosageButton";
42
42
  export * from "./components/Content/ReferenceButton";
43
43
  export * from "./components/CountButton/CountButton";
44
44
  export * from "./components/DataTable";
45
+ export * from "./components/DataTable/DataTableToolbar/DataTableToolbar";
45
46
  export * from "./components/Divider/Divider";
46
47
  export * from "./components/DropdownMenu/DropdownMenu";
47
48
  export * from "./components/EntityList";
@@ -1 +1 @@
1
- import{ambossVisualConfiguration}from"./web-tokens/visualConfig";export const{dark,light}=ambossVisualConfiguration;export{default as createCache}from"@emotion/cache";export{CacheProvider,ThemeProvider}from"@emotion/react";export*from"./components/AccessCardItem/AccessCardItem";export*from"./components/AIButton/AIButton";export*from"./components/AIFloatingButton/AIFloatingButton";export*from"./components/Avatar/Avatar";export*from"./components/AvatarGroup/AvatarGroup";export*from"./components/Badge/Badge";export*from"./components/BinaryFeedback/BinaryFeedback";export*from"./components/Box/Box";export*from"./components/BulkActionsToolbar/BulkActionsToolbar";export*from"./components/Button/Button";export*from"./components/Callout/Callout";export*from"./components/Card/Card";export*from"./components/Card/CardBox/CardBox";export*from"./components/CatalogCard/CatalogCard";export*from"./components/ChatMessage";export*from"./components/ChatResponse";export*from"./components/CheckboxCard/CheckboxCard";export*from"./components/Collapsible/Collapsible";export*from"./components/ColorIndicator/ColorIndicator";export*from"./components/ColorPicker/ColorPicker";export*from"./components/Column/Columns";export*from"./components/Composite/FilterDialog/FilterDialog";export*from"./components/Container";export*from"./components/Content/ContentBadge/ContentBadge";export*from"./components/Content/ContentBox/ContentBox";export*from"./components/Content/ContentCheckbox/ContentCheckbox";export*from"./components/Content/ContentFontResizer";export*from"./components/Content/ContentHeading/ContentHeading";export*from"./components/Content/ContentLink/ContentLink";export*from"./components/Content/ContentList";export*from"./components/Content/ContentPictogramButton/ContentPictogramButton";export*from"./components/Content/ContentTable";export*from"./components/Content/ContentTableModal/ContentTableModal";export*from"./components/Content/ContentText/ContentText";export*from"./components/Content/DosageButton";export*from"./components/Content/ReferenceButton";export*from"./components/CountButton/CountButton";export*from"./components/DataTable";export*from"./components/Divider/Divider";export*from"./components/DropdownMenu/DropdownMenu";export*from"./components/EntityList";export*from"./components/EntityTree";export*from"./components/Form/Checkbox/Checkbox";export*from"./components/Form/Combobox/Combobox";export*from"./components/Form/DateInput/DateInput";export*from"./components/Form/DatePicker";export*from"./components/Form/FormFieldGroup/FormFieldGroup";export*from"./components/Form/Input";export*from"./components/Form/MaskedInput/MaskedInput";export*from"./components/Form/PasswordInput";export*from"./components/Form/Radio/Radio";export*from"./components/Form/RadioButton/RadioButton";export*from"./components/Form/RangeInput/RangeInput";export*from"./components/Form/SearchInput/SearchInput";export*from"./components/Form/SegmentedControl/SegmentedControl";export*from"./components/Form/Select";export*from"./components/Form/Textarea/Textarea";export*from"./components/Form/Toggle/Toggle";export*from"./components/Form/ToggleButton/ToggleButton";export*from"./components/Form/ToolbarToggle/ToolbarToggle";export*from"./components/Grid/Grid";export*from"./components/Icon/Icon";export*from"./components/IconTile/IconTile";export*from"./components/Image/Image";export*from"./components/Inline/Inline";export*from"./components/InlineMessage/InlineMessage";export*from"./components/InteractiveBox/InteractiveBox";export*from"./components/Layout";export*from"./components/Lightbox/Lightbox";export*from"./components/Link/Link";export*from"./components/LoadingSpinner/LoadingSpinner";export*from"./components/Logo/Logo";export*from"./components/MediaItem";export*from"./components/MediaViewerBar/MediaViewerBar";export*from"./components/MediaViewerCarousel/MediaViewerCarousel";export*from"./components/NavBar";export*from"./components/Notification/Notification";export*from"./components/Pagination/Pagination";export*from"./components/Patterns/ButtonGroup/ButtonGroup";export*from"./components/Patterns/EmptyState/EmptyState";export*from"./components/Patterns/Modal/Modal";export*from"./components/PictogramButton/PictogramButton";export*from"./components/Popover/Popover";export*from"./components/ProgressBar/ProgressBar";export*from"./components/PromptButton/PromptButton";export*from"./components/PromptButtonGroup/PromptButtonGroup";export*from"./components/PromptInput/PromptInput";export*from"./components/QBankRichText/QBankRichText";export*from"./components/RadioCard/RadioCard";export*from"./components/RangePopover/RangePopover";export*from"./components/RoundButton/RoundButton";export*from"./components/SearchResult/SearchResult";export*from"./components/SegmentedProgressBar/SegmentedProgressBar";export*from"./components/Sheet/Sheet";export*from"./components/SplashCard/SplashCard";export*from"./components/SplashCardMedia/SplashCardMedia";export*from"./components/Stack/Stack";export*from"./components/StatusIndicator/StatusIndicator";export*from"./components/SubThemeProvider/SubThemeProvider";export*from"./components/Tabs/Tabs";export*from"./components/Tag/Tag";export*from"./components/TagGroup/TagGroup";export*from"./components/Toast";export*from"./components/Toggletip/Toggletip";export*from"./components/Tooltip/Tooltip";export*from"./components/Tutorialtip/Tutorialtip";export*from"./components/Typography/Header";export*from"./components/Typography/StyledText/StyledText";export*from"./components/Typography/Text";export*from"./components/Typography/TextClamped/TextClamped";export*from"./components/UserHighlightTooltip/UserHighlightTooltip";export*from"./components/Utilities/AnimatedBorder/useAnimatedBorder";export*from"./components/Utilities/ContainerQuery/ContainerQuery";export*from"./components/Utilities/Expandable/Expandable";export*from"./components/Utilities/ScreenReaderText/ScreenReaderText";export*from"./shared/useSelectionRange";
1
+ import{ambossVisualConfiguration}from"./web-tokens/visualConfig";export const{dark,light}=ambossVisualConfiguration;export{default as createCache}from"@emotion/cache";export{CacheProvider,ThemeProvider}from"@emotion/react";export*from"./components/AccessCardItem/AccessCardItem";export*from"./components/AIButton/AIButton";export*from"./components/AIFloatingButton/AIFloatingButton";export*from"./components/Avatar/Avatar";export*from"./components/AvatarGroup/AvatarGroup";export*from"./components/Badge/Badge";export*from"./components/BinaryFeedback/BinaryFeedback";export*from"./components/Box/Box";export*from"./components/BulkActionsToolbar/BulkActionsToolbar";export*from"./components/Button/Button";export*from"./components/Callout/Callout";export*from"./components/Card/Card";export*from"./components/Card/CardBox/CardBox";export*from"./components/CatalogCard/CatalogCard";export*from"./components/ChatMessage";export*from"./components/ChatResponse";export*from"./components/CheckboxCard/CheckboxCard";export*from"./components/Collapsible/Collapsible";export*from"./components/ColorIndicator/ColorIndicator";export*from"./components/ColorPicker/ColorPicker";export*from"./components/Column/Columns";export*from"./components/Composite/FilterDialog/FilterDialog";export*from"./components/Container";export*from"./components/Content/ContentBadge/ContentBadge";export*from"./components/Content/ContentBox/ContentBox";export*from"./components/Content/ContentCheckbox/ContentCheckbox";export*from"./components/Content/ContentFontResizer";export*from"./components/Content/ContentHeading/ContentHeading";export*from"./components/Content/ContentLink/ContentLink";export*from"./components/Content/ContentList";export*from"./components/Content/ContentPictogramButton/ContentPictogramButton";export*from"./components/Content/ContentTable";export*from"./components/Content/ContentTableModal/ContentTableModal";export*from"./components/Content/ContentText/ContentText";export*from"./components/Content/DosageButton";export*from"./components/Content/ReferenceButton";export*from"./components/CountButton/CountButton";export*from"./components/DataTable";export*from"./components/DataTable/DataTableToolbar/DataTableToolbar";export*from"./components/Divider/Divider";export*from"./components/DropdownMenu/DropdownMenu";export*from"./components/EntityList";export*from"./components/EntityTree";export*from"./components/Form/Checkbox/Checkbox";export*from"./components/Form/Combobox/Combobox";export*from"./components/Form/DateInput/DateInput";export*from"./components/Form/DatePicker";export*from"./components/Form/FormFieldGroup/FormFieldGroup";export*from"./components/Form/Input";export*from"./components/Form/MaskedInput/MaskedInput";export*from"./components/Form/PasswordInput";export*from"./components/Form/Radio/Radio";export*from"./components/Form/RadioButton/RadioButton";export*from"./components/Form/RangeInput/RangeInput";export*from"./components/Form/SearchInput/SearchInput";export*from"./components/Form/SegmentedControl/SegmentedControl";export*from"./components/Form/Select";export*from"./components/Form/Textarea/Textarea";export*from"./components/Form/Toggle/Toggle";export*from"./components/Form/ToggleButton/ToggleButton";export*from"./components/Form/ToolbarToggle/ToolbarToggle";export*from"./components/Grid/Grid";export*from"./components/Icon/Icon";export*from"./components/IconTile/IconTile";export*from"./components/Image/Image";export*from"./components/Inline/Inline";export*from"./components/InlineMessage/InlineMessage";export*from"./components/InteractiveBox/InteractiveBox";export*from"./components/Layout";export*from"./components/Lightbox/Lightbox";export*from"./components/Link/Link";export*from"./components/LoadingSpinner/LoadingSpinner";export*from"./components/Logo/Logo";export*from"./components/MediaItem";export*from"./components/MediaViewerBar/MediaViewerBar";export*from"./components/MediaViewerCarousel/MediaViewerCarousel";export*from"./components/NavBar";export*from"./components/Notification/Notification";export*from"./components/Pagination/Pagination";export*from"./components/Patterns/ButtonGroup/ButtonGroup";export*from"./components/Patterns/EmptyState/EmptyState";export*from"./components/Patterns/Modal/Modal";export*from"./components/PictogramButton/PictogramButton";export*from"./components/Popover/Popover";export*from"./components/ProgressBar/ProgressBar";export*from"./components/PromptButton/PromptButton";export*from"./components/PromptButtonGroup/PromptButtonGroup";export*from"./components/PromptInput/PromptInput";export*from"./components/QBankRichText/QBankRichText";export*from"./components/RadioCard/RadioCard";export*from"./components/RangePopover/RangePopover";export*from"./components/RoundButton/RoundButton";export*from"./components/SearchResult/SearchResult";export*from"./components/SegmentedProgressBar/SegmentedProgressBar";export*from"./components/Sheet/Sheet";export*from"./components/SplashCard/SplashCard";export*from"./components/SplashCardMedia/SplashCardMedia";export*from"./components/Stack/Stack";export*from"./components/StatusIndicator/StatusIndicator";export*from"./components/SubThemeProvider/SubThemeProvider";export*from"./components/Tabs/Tabs";export*from"./components/Tag/Tag";export*from"./components/TagGroup/TagGroup";export*from"./components/Toast";export*from"./components/Toggletip/Toggletip";export*from"./components/Tooltip/Tooltip";export*from"./components/Tutorialtip/Tutorialtip";export*from"./components/Typography/Header";export*from"./components/Typography/StyledText/StyledText";export*from"./components/Typography/Text";export*from"./components/Typography/TextClamped/TextClamped";export*from"./components/UserHighlightTooltip/UserHighlightTooltip";export*from"./components/Utilities/AnimatedBorder/useAnimatedBorder";export*from"./components/Utilities/ContainerQuery/ContainerQuery";export*from"./components/Utilities/Expandable/Expandable";export*from"./components/Utilities/ScreenReaderText/ScreenReaderText";export*from"./shared/useSelectionRange";
@@ -1,11 +1,11 @@
1
- import type { ColumnSizes, HorizontalAlignment, MQ, SpaceSizes, IconSizes, TextAlignment, VerticalAlignment, StackHorizontalAlignment, StackVerticalAlignment, Order, ColumnAlignment, Hyphens, BorderRadius, ButtonSize, LightboxVerticalAlignment } from "../types";
1
+ import type { ColumnSizes, HorizontalAlignment, MQ, SpaceSizes, IconSizes, TextAlignment, VerticalAlignment, StackHorizontalAlignment, StackVerticalAlignment, Order, ColumnAlignment, Hyphens, BorderRadius, ButtonSize, InlineMessageSize, LightboxVerticalAlignment } from "../types";
2
2
  export type Breakpoints = [string, string, string];
3
3
  export type ContainerQueryBreakpoints = [string, string?, string?];
4
4
  type MqProp<T> = [
5
5
  T | MQ<T>,
6
6
  (Record<T extends string ? T : never, string | number> | ((value: T) => string | number))
7
7
  ];
8
- type MqRules = Record<string, MqProp<TextAlignment> | MqProp<SpaceSizes> | MqProp<HorizontalAlignment> | MqProp<VerticalAlignment> | MqProp<StackHorizontalAlignment> | MqProp<StackVerticalAlignment> | MqProp<LightboxVerticalAlignment> | MqProp<ColumnSizes> | MqProp<Order> | MqProp<ColumnAlignment> | MqProp<Hyphens> | MqProp<BorderRadius> | MqProp<boolean> | MqProp<IconSizes> | MqProp<ButtonSize>>;
8
+ type MqRules = Record<string, MqProp<TextAlignment> | MqProp<SpaceSizes> | MqProp<HorizontalAlignment> | MqProp<VerticalAlignment> | MqProp<StackHorizontalAlignment> | MqProp<StackVerticalAlignment> | MqProp<LightboxVerticalAlignment> | MqProp<ColumnSizes> | MqProp<Order> | MqProp<ColumnAlignment> | MqProp<Hyphens> | MqProp<BorderRadius> | MqProp<boolean> | MqProp<IconSizes> | MqProp<ButtonSize> | MqProp<InlineMessageSize>>;
9
9
  type EmotionCssPropertyName = string;
10
10
  type EmotionCssValue = string | number;
11
11
  type EmotionCssDescription = Record<EmotionCssPropertyName, EmotionCssValue>;
@@ -0,0 +1 @@
1
+ export declare const useIsMacOs: () => boolean;
@@ -0,0 +1 @@
1
+ import{useCallback,useSyncExternalStore}from"react";import{useWindow}from"./useWindow";let MAC_PLATFORM_PATTERN=/mac|iphone|ipad|ipod/i,readPlatform=navigator=>navigator.userAgentData?.platform||navigator.platform||navigator.userAgent,subscribeToPlatform=()=>()=>{},getServerIsMacOs=()=>!1;export const useIsMacOs=()=>{let window=useWindow();return useSyncExternalStore(subscribeToPlatform,useCallback(()=>!!window&&MAC_PLATFORM_PATTERN.test(readPlatform(window.navigator)),[window]),getServerIsMacOs)};
@@ -23,6 +23,8 @@ export declare const InputTextSizeRuntype: Union<[Literal<"s">, Literal<"m">]>;
23
23
  export type InputTextSize = Static<typeof InputTextSizeRuntype>;
24
24
  export declare const BaseTagSizeRuntype: Union<[Literal<"s">, Literal<"m">]>;
25
25
  export type BaseTagSize = Static<typeof BaseTagSizeRuntype>;
26
+ export declare const InlineMessageSizeRuntype: Union<[Literal<"s">, Literal<"m">]>;
27
+ export type InlineMessageSize = Static<typeof InlineMessageSizeRuntype>;
26
28
  export declare const BorderRadiusRuntype: Union<[Literal<"none">, Literal<"xs">, Literal<"s">, Literal<"m">]>;
27
29
  export type BorderRadius = Static<typeof BorderRadiusRuntype>;
28
30
  export declare const TextAlignmentRuntype: Union<[Literal<"left">, Literal<"right">, Literal<"center">]>;
@@ -1 +1 @@
1
- import{Literal,Union}from"runtypes";export function asValidProps(props){return props}export const LinkTextSizeRuntype=Union(Literal("xxs"),Literal("xs"),Literal("s"),Literal("m"),Literal("l"));export const TextSizeRuntype=Union(Literal("xxs"),Literal("xs"),Literal("s"),Literal("m"),Literal("l"));export const InputTextSizeRuntype=Union(Literal("s"),Literal("m"));export const BaseTagSizeRuntype=Union(Literal("s"),Literal("m"));export const BorderRadiusRuntype=Union(Literal("none"),Literal("xs"),Literal("s"),Literal("m"));export const TextAlignmentRuntype=Union(Literal("left"),Literal("right"),Literal("center"));export const HorizontalAlignmentRuntype=Union(Literal("left"),Literal("right"),Literal("center"),Literal("spaceBetween"));export const VerticalAlignmentRuntype=Union(Literal("top"),Literal("bottom"),Literal("center"),Literal("stretch"));export const StackVerticalAlignmentRuntype=Union(Literal("top"),Literal("bottom"),Literal("center"),Literal("spaceBetween"));export const LightboxVerticalAlignmentRuntype=Union(Literal("top"),Literal("center"));export const StackHorizontalAlignmentRuntype=Union(Literal("left"),Literal("right"),Literal("center"),Literal("stretch"));export const SpaceSizesRuntype=Union(Literal("zero"),Literal("xxxs"),Literal("xxs"),Literal("xs"),Literal("s"),Literal("m"),Literal("l"),Literal("xl"),Literal("xxl"));export const ColumsSizesRuntype=Union(Literal(1),Literal(2),Literal(3),Literal(4),Literal(5),Literal(6),Literal(7),Literal(8),Literal(9),Literal(10),Literal(11),Literal(12),Literal("auto"),Literal("narrow"),Literal("fill"));export const ColumnAlignmentRunType=Union(Literal("auto"),Literal("start"),Literal("center"),Literal("end"));export const OrderRuntype=Union(Literal("first"),Literal("last"),Literal("unset"));export const BaseVariationsRuntype=Union(Literal("primary"),Literal("secondary"),Literal("tertiary"));export const BaseColorsRuntype=Union(BaseVariationsRuntype,Literal("accent"),Literal("onAccent"));export const AIButtonVariationsRuntype=Union(BaseVariationsRuntype,Literal("gradient"));export const PictogramVariationsRuntype=Union(Literal("secondary"),Literal("tertiary"),Literal("quaternary"));export const TextColorsRuntype=Union(BaseColorsRuntype,Literal("success"),Literal("info"),Literal("error"),Literal("warning"));export const TextVariationsRuntype=Union(BaseVariationsRuntype,Literal("success"),Literal("info"),Literal("error"),Literal("warning"));export const TextWeightRuntype=Union(Literal("normal"),Literal("bold"),Literal("black"),Literal("inherit"));export const IconsColorsRuntime=Union(BaseColorsRuntype,Literal("success"),Literal("info"),Literal("error"),Literal("warning"),Literal("inherit"),Literal("brand"),Literal("quaternary"),Literal("ai"));export const IconsVariationsRuntype=Union(BaseVariationsRuntype,Literal("success"),Literal("info"),Literal("error"),Literal("warning"),Literal("inherit"),Literal("brand"));export const IconSizesRuntype=Union(Literal("s"),Literal("m"),Literal("l"));export const CalloutVariationsRuntype=Union(Literal("info"),Literal("success"),Literal("error"),Literal("warning"),Literal("neutral"),Literal("ai"));export const LinkVariationsRuntype=Union(BaseVariationsRuntype);export const LinkColorsRuntype=Union(BaseColorsRuntype);export const ButtonSizeRuntype=Union(Literal("s"),Literal("m"),Literal("l"));export const RoundButtonSizeRuntype=Union(Literal("xs"),Literal("s"),Literal("m"));export const DropdownMenuSizeRuntype=Union(Literal("xs"),Literal("s"),Literal("m"));export const HyphensRuntype=Union(Literal("auto"),Literal("none"),Literal("manual"));export const OverflowWrapRuntype=Union(Literal("normal"),Literal("break-word"));export const ToggleSizeRuntype=Union(Literal("s"),Literal("m"));export const ListSizeRuntype=Union(Literal("xs"),Literal("s"),Literal("m"),Literal("l"));export const PromptInputSizesRuntype=Union(Literal("s"),Literal("m"));export const MediaItemSizeRuntype=Union(Literal("xs"),Literal("s"),Literal("m"),Literal("l"),Literal("xl"));
1
+ import{Literal,Union}from"runtypes";export function asValidProps(props){return props}export const LinkTextSizeRuntype=Union(Literal("xxs"),Literal("xs"),Literal("s"),Literal("m"),Literal("l"));export const TextSizeRuntype=Union(Literal("xxs"),Literal("xs"),Literal("s"),Literal("m"),Literal("l"));export const InputTextSizeRuntype=Union(Literal("s"),Literal("m"));export const BaseTagSizeRuntype=Union(Literal("s"),Literal("m"));export const InlineMessageSizeRuntype=Union(Literal("s"),Literal("m"));export const BorderRadiusRuntype=Union(Literal("none"),Literal("xs"),Literal("s"),Literal("m"));export const TextAlignmentRuntype=Union(Literal("left"),Literal("right"),Literal("center"));export const HorizontalAlignmentRuntype=Union(Literal("left"),Literal("right"),Literal("center"),Literal("spaceBetween"));export const VerticalAlignmentRuntype=Union(Literal("top"),Literal("bottom"),Literal("center"),Literal("stretch"));export const StackVerticalAlignmentRuntype=Union(Literal("top"),Literal("bottom"),Literal("center"),Literal("spaceBetween"));export const LightboxVerticalAlignmentRuntype=Union(Literal("top"),Literal("center"));export const StackHorizontalAlignmentRuntype=Union(Literal("left"),Literal("right"),Literal("center"),Literal("stretch"));export const SpaceSizesRuntype=Union(Literal("zero"),Literal("xxxs"),Literal("xxs"),Literal("xs"),Literal("s"),Literal("m"),Literal("l"),Literal("xl"),Literal("xxl"));export const ColumsSizesRuntype=Union(Literal(1),Literal(2),Literal(3),Literal(4),Literal(5),Literal(6),Literal(7),Literal(8),Literal(9),Literal(10),Literal(11),Literal(12),Literal("auto"),Literal("narrow"),Literal("fill"));export const ColumnAlignmentRunType=Union(Literal("auto"),Literal("start"),Literal("center"),Literal("end"));export const OrderRuntype=Union(Literal("first"),Literal("last"),Literal("unset"));export const BaseVariationsRuntype=Union(Literal("primary"),Literal("secondary"),Literal("tertiary"));export const BaseColorsRuntype=Union(BaseVariationsRuntype,Literal("accent"),Literal("onAccent"));export const AIButtonVariationsRuntype=Union(BaseVariationsRuntype,Literal("gradient"));export const PictogramVariationsRuntype=Union(Literal("secondary"),Literal("tertiary"),Literal("quaternary"));export const TextColorsRuntype=Union(BaseColorsRuntype,Literal("success"),Literal("info"),Literal("error"),Literal("warning"));export const TextVariationsRuntype=Union(BaseVariationsRuntype,Literal("success"),Literal("info"),Literal("error"),Literal("warning"));export const TextWeightRuntype=Union(Literal("normal"),Literal("bold"),Literal("black"),Literal("inherit"));export const IconsColorsRuntime=Union(BaseColorsRuntype,Literal("success"),Literal("info"),Literal("error"),Literal("warning"),Literal("inherit"),Literal("brand"),Literal("quaternary"),Literal("ai"));export const IconsVariationsRuntype=Union(BaseVariationsRuntype,Literal("success"),Literal("info"),Literal("error"),Literal("warning"),Literal("inherit"),Literal("brand"));export const IconSizesRuntype=Union(Literal("s"),Literal("m"),Literal("l"));export const CalloutVariationsRuntype=Union(Literal("info"),Literal("success"),Literal("error"),Literal("warning"),Literal("neutral"),Literal("ai"));export const LinkVariationsRuntype=Union(BaseVariationsRuntype);export const LinkColorsRuntype=Union(BaseColorsRuntype);export const ButtonSizeRuntype=Union(Literal("s"),Literal("m"),Literal("l"));export const RoundButtonSizeRuntype=Union(Literal("xs"),Literal("s"),Literal("m"));export const DropdownMenuSizeRuntype=Union(Literal("xs"),Literal("s"),Literal("m"));export const HyphensRuntype=Union(Literal("auto"),Literal("none"),Literal("manual"));export const OverflowWrapRuntype=Union(Literal("normal"),Literal("break-word"));export const ToggleSizeRuntype=Union(Literal("s"),Literal("m"));export const ListSizeRuntype=Union(Literal("xs"),Literal("s"),Literal("m"),Literal("l"));export const PromptInputSizesRuntype=Union(Literal("s"),Literal("m"));export const MediaItemSizeRuntype=Union(Literal("xs"),Literal("s"),Literal("m"),Literal("l"),Literal("xl"));
@@ -927,6 +927,32 @@
927
927
  "lightOriginalValue": "neutral.white"
928
928
  }
929
929
  },
930
+ "kbd": {
931
+ "color-kbd-background-default": {
932
+ "name": "kbd.background",
933
+ "subState": "default",
934
+ "darkValue": "#1e2125",
935
+ "darkOriginalValue": "night-black.dark02",
936
+ "lightValue": "#f5f7f9",
937
+ "lightOriginalValue": "gray.light04"
938
+ },
939
+ "color-kbd-foreground-default": {
940
+ "name": "kbd.foreground",
941
+ "subState": "default",
942
+ "darkValue": "#ffffff",
943
+ "darkOriginalValue": "neutral.white",
944
+ "lightValue": "#314554",
945
+ "lightOriginalValue": "gray.dark02"
946
+ },
947
+ "color-kbd-border-default": {
948
+ "name": "kbd.border",
949
+ "subState": "default",
950
+ "darkValue": "#5b5f67",
951
+ "darkOriginalValue": "night-gray.dark02",
952
+ "lightValue": "#a3b2bd",
953
+ "lightOriginalValue": "gray.light01"
954
+ }
955
+ },
930
956
  "canvas": {
931
957
  "color-canvas": {
932
958
  "name": "canvas",
@@ -89,6 +89,16 @@
89
89
  "variableName": "$size-dimension-checkbox-m",
90
90
  "isUsed": false
91
91
  },
92
+ {
93
+ "category": "size",
94
+ "type": "dimension",
95
+ "name": "dimension kbd",
96
+ "subitemName": "kbd minWidth",
97
+ "value": "16px",
98
+ "original": 16,
99
+ "variableName": "$size-dimension-kbd-min-width",
100
+ "isUsed": false
101
+ },
92
102
  {
93
103
  "category": "size",
94
104
  "type": "dimension",
@@ -18,6 +18,9 @@ type Variables = {
18
18
  "s": string;
19
19
  "m": string;
20
20
  };
21
+ "kbd": {
22
+ "minWidth": string;
23
+ };
21
24
  "radio": {
22
25
  "s": string;
23
26
  "m": string;
@@ -537,6 +540,17 @@ export type AmbossTheme = {
537
540
  };
538
541
  };
539
542
  };
543
+ "kbd": {
544
+ "background": {
545
+ "default": string;
546
+ };
547
+ "foreground": {
548
+ "default": string;
549
+ };
550
+ "border": {
551
+ "default": string;
552
+ };
553
+ };
540
554
  "canvas": string;
541
555
  "background": {
542
556
  "primary": {
@@ -1772,6 +1786,17 @@ export type AmbossTheme = {
1772
1786
  "default": string;
1773
1787
  };
1774
1788
  };
1789
+ "kbd": {
1790
+ "background": {
1791
+ "default": string;
1792
+ };
1793
+ "foreground": {
1794
+ "default": string;
1795
+ };
1796
+ "border": {
1797
+ "default": string;
1798
+ };
1799
+ };
1775
1800
  };
1776
1801
  };
1777
1802
  "success": {