@apostel/bedrock 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +216 -0
- package/dist/accessible-icon/parts.d.ts +16 -0
- package/dist/accessible-icon/parts.d.ts.map +1 -0
- package/dist/accessible-icon/parts.js +24 -0
- package/dist/accessible-icon/parts.js.map +1 -0
- package/dist/accordion/controlled-root.d.ts +19 -0
- package/dist/accordion/controlled-root.d.ts.map +1 -0
- package/dist/accordion/controlled-root.js +53 -0
- package/dist/accordion/controlled-root.js.map +1 -0
- package/dist/accordion/parts.d.ts +35 -0
- package/dist/accordion/parts.d.ts.map +1 -0
- package/dist/accordion/parts.js +52 -0
- package/dist/accordion/parts.js.map +1 -0
- package/dist/accordion/root.d.ts +24 -0
- package/dist/accordion/root.d.ts.map +1 -0
- package/dist/accordion/root.js +45 -0
- package/dist/accordion/root.js.map +1 -0
- package/dist/accordion/shared.d.ts +23 -0
- package/dist/accordion/shared.d.ts.map +1 -0
- package/dist/accordion/shared.js +16 -0
- package/dist/accordion/shared.js.map +1 -0
- package/dist/alert-dialog/parts.d.ts +16 -0
- package/dist/alert-dialog/parts.d.ts.map +1 -0
- package/dist/alert-dialog/parts.js +20 -0
- package/dist/alert-dialog/parts.js.map +1 -0
- package/dist/anchor.d.ts +27 -0
- package/dist/anchor.d.ts.map +1 -0
- package/dist/anchor.js +70 -0
- package/dist/anchor.js.map +1 -0
- package/dist/aspect-ratio/parts.d.ts +16 -0
- package/dist/aspect-ratio/parts.d.ts.map +1 -0
- package/dist/aspect-ratio/parts.js +15 -0
- package/dist/aspect-ratio/parts.js.map +1 -0
- package/dist/avatar/parts.d.ts +23 -0
- package/dist/avatar/parts.d.ts.map +1 -0
- package/dist/avatar/parts.js +51 -0
- package/dist/avatar/parts.js.map +1 -0
- package/dist/bedrock.css +64 -0
- package/dist/capabilities.d.ts +25 -0
- package/dist/capabilities.d.ts.map +1 -0
- package/dist/capabilities.js +40 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/checkbox/controlled-root.d.ts +18 -0
- package/dist/checkbox/controlled-root.d.ts.map +1 -0
- package/dist/checkbox/controlled-root.js +28 -0
- package/dist/checkbox/controlled-root.js.map +1 -0
- package/dist/checkbox/parts.d.ts +29 -0
- package/dist/checkbox/parts.d.ts.map +1 -0
- package/dist/checkbox/parts.js +42 -0
- package/dist/checkbox/parts.js.map +1 -0
- package/dist/client-render.d.ts +10 -0
- package/dist/client-render.d.ts.map +1 -0
- package/dist/client-render.js +14 -0
- package/dist/client-render.js.map +1 -0
- package/dist/collapsible/controlled-root.d.ts +17 -0
- package/dist/collapsible/controlled-root.d.ts.map +1 -0
- package/dist/collapsible/controlled-root.js +21 -0
- package/dist/collapsible/controlled-root.js.map +1 -0
- package/dist/collapsible/parts.d.ts +14 -0
- package/dist/collapsible/parts.d.ts.map +1 -0
- package/dist/collapsible/parts.js +24 -0
- package/dist/collapsible/parts.js.map +1 -0
- package/dist/collapsible/root.d.ts +16 -0
- package/dist/collapsible/root.d.ts.map +1 -0
- package/dist/collapsible/root.js +28 -0
- package/dist/collapsible/root.js.map +1 -0
- package/dist/collapsible/shared.d.ts +11 -0
- package/dist/collapsible/shared.d.ts.map +1 -0
- package/dist/collapsible/shared.js +26 -0
- package/dist/collapsible/shared.js.map +1 -0
- package/dist/compose-refs.d.ts +29 -0
- package/dist/compose-refs.d.ts.map +1 -0
- package/dist/compose-refs.js +67 -0
- package/dist/compose-refs.js.map +1 -0
- package/dist/context-menu/root.d.ts +17 -0
- package/dist/context-menu/root.d.ts.map +1 -0
- package/dist/context-menu/root.js +50 -0
- package/dist/context-menu/root.js.map +1 -0
- package/dist/controlled.d.ts +120 -0
- package/dist/controlled.d.ts.map +1 -0
- package/dist/controlled.js +91 -0
- package/dist/controlled.js.map +1 -0
- package/dist/create-controlled-root.d.ts +29 -0
- package/dist/create-controlled-root.d.ts.map +1 -0
- package/dist/create-controlled-root.js +92 -0
- package/dist/create-controlled-root.js.map +1 -0
- package/dist/dialog/controlled-root.d.ts +15 -0
- package/dist/dialog/controlled-root.d.ts.map +1 -0
- package/dist/dialog/controlled-root.js +21 -0
- package/dist/dialog/controlled-root.js.map +1 -0
- package/dist/dialog/parts.d.ts +18 -0
- package/dist/dialog/parts.d.ts.map +1 -0
- package/dist/dialog/parts.js +80 -0
- package/dist/dialog/parts.js.map +1 -0
- package/dist/dialog/root.d.ts +22 -0
- package/dist/dialog/root.d.ts.map +1 -0
- package/dist/dialog/root.js +39 -0
- package/dist/dialog/root.js.map +1 -0
- package/dist/dialog/shared.d.ts +32 -0
- package/dist/dialog/shared.d.ts.map +1 -0
- package/dist/dialog/shared.js +53 -0
- package/dist/dialog/shared.js.map +1 -0
- package/dist/dropdown-menu/controlled-root.d.ts +7 -0
- package/dist/dropdown-menu/controlled-root.d.ts.map +1 -0
- package/dist/dropdown-menu/controlled-root.js +13 -0
- package/dist/dropdown-menu/controlled-root.js.map +1 -0
- package/dist/dropdown-menu/root.d.ts +13 -0
- package/dist/dropdown-menu/root.d.ts.map +1 -0
- package/dist/dropdown-menu/root.js +22 -0
- package/dist/dropdown-menu/root.js.map +1 -0
- package/dist/hover-card/controlled-root.d.ts +9 -0
- package/dist/hover-card/controlled-root.d.ts.map +1 -0
- package/dist/hover-card/controlled-root.js +15 -0
- package/dist/hover-card/controlled-root.js.map +1 -0
- package/dist/hover-card/root.d.ts +13 -0
- package/dist/hover-card/root.d.ts.map +1 -0
- package/dist/hover-card/root.js +19 -0
- package/dist/hover-card/root.js.map +1 -0
- package/dist/index.d.ts +274 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +211 -0
- package/dist/index.js.map +1 -0
- package/dist/interest.d.ts +30 -0
- package/dist/interest.d.ts.map +1 -0
- package/dist/interest.js +94 -0
- package/dist/interest.js.map +1 -0
- package/dist/label/parts.d.ts +14 -0
- package/dist/label/parts.d.ts.map +1 -0
- package/dist/label/parts.js +21 -0
- package/dist/label/parts.js.map +1 -0
- package/dist/menu/parts.d.ts +64 -0
- package/dist/menu/parts.d.ts.map +1 -0
- package/dist/menu/parts.js +131 -0
- package/dist/menu/parts.js.map +1 -0
- package/dist/menu/shared.d.ts +7 -0
- package/dist/menu/shared.d.ts.map +1 -0
- package/dist/menu/shared.js +9 -0
- package/dist/menu/shared.js.map +1 -0
- package/dist/menubar/parts.d.ts +20 -0
- package/dist/menubar/parts.d.ts.map +1 -0
- package/dist/menubar/parts.js +34 -0
- package/dist/menubar/parts.js.map +1 -0
- package/dist/navigation-menu/parts.d.ts +28 -0
- package/dist/navigation-menu/parts.d.ts.map +1 -0
- package/dist/navigation-menu/parts.js +46 -0
- package/dist/navigation-menu/parts.js.map +1 -0
- package/dist/open-state.d.ts +23 -0
- package/dist/open-state.d.ts.map +1 -0
- package/dist/open-state.js +106 -0
- package/dist/open-state.js.map +1 -0
- package/dist/popover/controlled-root.d.ts +14 -0
- package/dist/popover/controlled-root.d.ts.map +1 -0
- package/dist/popover/controlled-root.js +17 -0
- package/dist/popover/controlled-root.js.map +1 -0
- package/dist/popover/parts.d.ts +27 -0
- package/dist/popover/parts.d.ts.map +1 -0
- package/dist/popover/parts.js +39 -0
- package/dist/popover/parts.js.map +1 -0
- package/dist/popover/root.d.ts +24 -0
- package/dist/popover/root.d.ts.map +1 -0
- package/dist/popover/root.js +24 -0
- package/dist/popover/root.js.map +1 -0
- package/dist/popover/shared.d.ts +22 -0
- package/dist/popover/shared.d.ts.map +1 -0
- package/dist/popover/shared.js +25 -0
- package/dist/popover/shared.js.map +1 -0
- package/dist/progress/parts.d.ts +25 -0
- package/dist/progress/parts.d.ts.map +1 -0
- package/dist/progress/parts.js +32 -0
- package/dist/progress/parts.js.map +1 -0
- package/dist/radio-group/controlled-root.d.ts +19 -0
- package/dist/radio-group/controlled-root.d.ts.map +1 -0
- package/dist/radio-group/controlled-root.js +29 -0
- package/dist/radio-group/controlled-root.js.map +1 -0
- package/dist/radio-group/parts.d.ts +36 -0
- package/dist/radio-group/parts.d.ts.map +1 -0
- package/dist/radio-group/parts.js +62 -0
- package/dist/radio-group/parts.js.map +1 -0
- package/dist/roving.d.ts +26 -0
- package/dist/roving.d.ts.map +1 -0
- package/dist/roving.js +124 -0
- package/dist/roving.js.map +1 -0
- package/dist/scroll-area/parts.d.ts +29 -0
- package/dist/scroll-area/parts.d.ts.map +1 -0
- package/dist/scroll-area/parts.js +44 -0
- package/dist/scroll-area/parts.js.map +1 -0
- package/dist/select/parts.d.ts +57 -0
- package/dist/select/parts.d.ts.map +1 -0
- package/dist/select/parts.js +76 -0
- package/dist/select/parts.js.map +1 -0
- package/dist/separator/parts.d.ts +14 -0
- package/dist/separator/parts.d.ts.map +1 -0
- package/dist/separator/parts.js +15 -0
- package/dist/separator/parts.js.map +1 -0
- package/dist/slider/parts.d.ts +32 -0
- package/dist/slider/parts.d.ts.map +1 -0
- package/dist/slider/parts.js +52 -0
- package/dist/slider/parts.js.map +1 -0
- package/dist/slot.d.ts +3 -0
- package/dist/slot.d.ts.map +1 -0
- package/dist/slot.js +49 -0
- package/dist/slot.js.map +1 -0
- package/dist/switch/parts.d.ts +21 -0
- package/dist/switch/parts.d.ts.map +1 -0
- package/dist/switch/parts.js +31 -0
- package/dist/switch/parts.js.map +1 -0
- package/dist/tabs/controlled-root.d.ts +11 -0
- package/dist/tabs/controlled-root.d.ts.map +1 -0
- package/dist/tabs/controlled-root.js +15 -0
- package/dist/tabs/controlled-root.js.map +1 -0
- package/dist/tabs/parts.d.ts +20 -0
- package/dist/tabs/parts.d.ts.map +1 -0
- package/dist/tabs/parts.js +42 -0
- package/dist/tabs/parts.js.map +1 -0
- package/dist/tabs/root.d.ts +15 -0
- package/dist/tabs/root.d.ts.map +1 -0
- package/dist/tabs/root.js +26 -0
- package/dist/tabs/root.js.map +1 -0
- package/dist/tabs/shared.d.ts +12 -0
- package/dist/tabs/shared.d.ts.map +1 -0
- package/dist/tabs/shared.js +11 -0
- package/dist/tabs/shared.js.map +1 -0
- package/dist/toast/parts.d.ts +40 -0
- package/dist/toast/parts.d.ts.map +1 -0
- package/dist/toast/parts.js +102 -0
- package/dist/toast/parts.js.map +1 -0
- package/dist/toggle/controlled-root.d.ts +9 -0
- package/dist/toggle/controlled-root.d.ts.map +1 -0
- package/dist/toggle/controlled-root.js +14 -0
- package/dist/toggle/controlled-root.js.map +1 -0
- package/dist/toggle/parts.d.ts +20 -0
- package/dist/toggle/parts.d.ts.map +1 -0
- package/dist/toggle/parts.js +29 -0
- package/dist/toggle/parts.js.map +1 -0
- package/dist/toggle-group/parts.d.ts +28 -0
- package/dist/toggle-group/parts.d.ts.map +1 -0
- package/dist/toggle-group/parts.js +57 -0
- package/dist/toggle-group/parts.js.map +1 -0
- package/dist/toolbar/parts.d.ts +22 -0
- package/dist/toolbar/parts.d.ts.map +1 -0
- package/dist/toolbar/parts.js +27 -0
- package/dist/toolbar/parts.js.map +1 -0
- package/dist/tooltip/controlled-root.d.ts +9 -0
- package/dist/tooltip/controlled-root.d.ts.map +1 -0
- package/dist/tooltip/controlled-root.js +15 -0
- package/dist/tooltip/controlled-root.js.map +1 -0
- package/dist/tooltip/parts.d.ts +23 -0
- package/dist/tooltip/parts.d.ts.map +1 -0
- package/dist/tooltip/parts.js +28 -0
- package/dist/tooltip/parts.js.map +1 -0
- package/dist/tooltip/root.d.ts +13 -0
- package/dist/tooltip/root.d.ts.map +1 -0
- package/dist/tooltip/root.js +17 -0
- package/dist/tooltip/root.js.map +1 -0
- package/dist/tooltip/shared.d.ts +13 -0
- package/dist/tooltip/shared.d.ts.map +1 -0
- package/dist/tooltip/shared.js +9 -0
- package/dist/tooltip/shared.js.map +1 -0
- package/dist/tooltip/use-controlled-interest-root.d.ts +19 -0
- package/dist/tooltip/use-controlled-interest-root.d.ts.map +1 -0
- package/dist/tooltip/use-controlled-interest-root.js +31 -0
- package/dist/tooltip/use-controlled-interest-root.js.map +1 -0
- package/dist/tooltip/use-interest-root.d.ts +16 -0
- package/dist/tooltip/use-interest-root.d.ts.map +1 -0
- package/dist/tooltip/use-interest-root.js +39 -0
- package/dist/tooltip/use-interest-root.js.map +1 -0
- package/dist/types.d.ts +55 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/validate-element.d.ts +12 -0
- package/dist/validate-element.d.ts.map +1 -0
- package/dist/validate-element.js +21 -0
- package/dist/validate-element.js.map +1 -0
- package/dist/validate-trigger.d.ts +14 -0
- package/dist/validate-trigger.d.ts.map +1 -0
- package/dist/validate-trigger.js +59 -0
- package/dist/validate-trigger.js.map +1 -0
- package/dist/visually-hidden/parts.d.ts +12 -0
- package/dist/visually-hidden/parts.d.ts.map +1 -0
- package/dist/visually-hidden/parts.js +25 -0
- package/dist/visually-hidden/parts.js.map +1 -0
- package/package.json +81 -0
- package/skills/migrate-to-bedrock/SKILL.md +188 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type ComponentPropsWithRef } from 'react';
|
|
2
|
+
import type { Orientation } from '../roving.js';
|
|
3
|
+
import type { AsChildProps } from '../types.js';
|
|
4
|
+
export interface TabsRootProps extends ComponentPropsWithRef<'div'>, AsChildProps {
|
|
5
|
+
defaultValue?: string;
|
|
6
|
+
orientation?: Orientation;
|
|
7
|
+
onValueChange?(value: string): void;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Holds the selected value in React state, because nothing in the platform
|
|
11
|
+
* models "one of these panels is showing". This is a primitive where the
|
|
12
|
+
* two-root split buys very little: both roots ship the same roving module.
|
|
13
|
+
*/
|
|
14
|
+
export declare function TabsRoot({ asChild, children, defaultValue, orientation, onValueChange, ...props }: TabsRootProps): import("react").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=root.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../src/tabs/root.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,qBAAqB,EAE3B,MAAM,OAAO,CAAA;AACd,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAE5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAG5C,MAAM,WAAW,aAAc,SAAQ,qBAAqB,CAAC,KAAK,CAAC,EAAE,YAAY;IAC/E,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACpC;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,EACvB,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,WAA0B,EAC1B,aAAa,EACb,GAAG,KAAK,EACT,EAAE,aAAa,+BA2Bf"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useId, useMemo, useRef, useState, } from 'react';
|
|
3
|
+
import { Slot } from '../slot.js';
|
|
4
|
+
import { TabsContext } from './shared.js';
|
|
5
|
+
/**
|
|
6
|
+
* Holds the selected value in React state, because nothing in the platform
|
|
7
|
+
* models "one of these panels is showing". This is a primitive where the
|
|
8
|
+
* two-root split buys very little: both roots ship the same roving module.
|
|
9
|
+
*/
|
|
10
|
+
export function TabsRoot({ asChild, children, defaultValue, orientation = 'horizontal', onValueChange, ...props }) {
|
|
11
|
+
const baseId = useId();
|
|
12
|
+
const [value, setValue] = useState(defaultValue);
|
|
13
|
+
const Part = asChild ? Slot : 'div';
|
|
14
|
+
const changeRef = useRef(onValueChange);
|
|
15
|
+
changeRef.current = onValueChange;
|
|
16
|
+
const select = useCallback((next) => {
|
|
17
|
+
setValue((current) => {
|
|
18
|
+
if (current !== next)
|
|
19
|
+
changeRef.current?.(next);
|
|
20
|
+
return next;
|
|
21
|
+
});
|
|
22
|
+
}, []);
|
|
23
|
+
const context = useMemo(() => ({ baseId, value, select, orientation }), [baseId, value, select, orientation]);
|
|
24
|
+
return (_jsx(TabsContext.Provider, { value: context, children: _jsx(Part, { ...props, "data-orientation": orientation, "data-bedrock-tabs": "", children: children }) }));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=root.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"root.js","sourceRoot":"","sources":["../../src/tabs/root.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,WAAW,EACX,KAAK,EACL,OAAO,EACP,MAAM,EACN,QAAQ,GAGT,MAAM,OAAO,CAAA;AAEd,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAE9B,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAQtC;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,EACvB,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,WAAW,GAAG,YAAY,EAC1B,aAAa,EACb,GAAG,KAAK,EACM;IACd,MAAM,MAAM,GAAG,KAAK,EAAE,CAAA;IACtB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAA;IAChD,MAAM,IAAI,GAAgB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;IAEhD,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC,CAAA;IACvC,SAAS,CAAC,OAAO,GAAG,aAAa,CAAA;IAEjC,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,IAAY,EAAE,EAAE;QAC1C,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE;YACnB,IAAI,OAAO,KAAK,IAAI;gBAAE,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAA;YAC/C,OAAO,IAAI,CAAA;QACb,CAAC,CAAC,CAAA;IACJ,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,OAAO,GAAG,OAAO,CACrB,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,EAC9C,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CACrC,CAAA;IAED,OAAO,CACL,KAAC,WAAW,CAAC,QAAQ,IAAC,KAAK,EAAE,OAAO,YAClC,KAAC,IAAI,OAAK,KAAK,sBAAoB,WAAW,uBAAoB,EAAE,YACjE,QAAQ,GACJ,GACc,CACxB,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Orientation } from '../roving.js';
|
|
2
|
+
export interface TabsContextValue {
|
|
3
|
+
baseId: string;
|
|
4
|
+
value: string | undefined;
|
|
5
|
+
select(value: string): void;
|
|
6
|
+
orientation: Orientation;
|
|
7
|
+
}
|
|
8
|
+
export declare const TabsContext: import("react").Context<TabsContextValue | null>;
|
|
9
|
+
export declare function useTabsContext(part: string): TabsContextValue;
|
|
10
|
+
export declare const tabId: (baseId: string, value: string) => string;
|
|
11
|
+
export declare const panelId: (baseId: string, value: string) => string;
|
|
12
|
+
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/tabs/shared.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAE5C,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,WAAW,EAAE,WAAW,CAAA;CACzB;AAED,eAAO,MAAM,WAAW,kDAA+C,CAAA;AAEvE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAI7D;AAED,eAAO,MAAM,KAAK,GAAI,QAAQ,MAAM,EAAE,OAAO,MAAM,WAA6B,CAAA;AAChF,eAAO,MAAM,OAAO,GAAI,QAAQ,MAAM,EAAE,OAAO,MAAM,WAA+B,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createContext, useContext } from 'react';
|
|
2
|
+
export const TabsContext = createContext(null);
|
|
3
|
+
export function useTabsContext(part) {
|
|
4
|
+
const context = useContext(TabsContext);
|
|
5
|
+
if (!context)
|
|
6
|
+
throw new Error(`[bedrock] ${part} must be used inside Tabs.Root.`);
|
|
7
|
+
return context;
|
|
8
|
+
}
|
|
9
|
+
export const tabId = (baseId, value) => `${baseId}-tab-${value}`;
|
|
10
|
+
export const panelId = (baseId, value) => `${baseId}-panel-${value}`;
|
|
11
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/tabs/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAUjD,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAA0B,IAAI,CAAC,CAAA;AAEvE,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,CAAA;IACvC,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,iCAAiC,CAAC,CAAA;IACjF,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,MAAc,EAAE,KAAa,EAAE,EAAE,CAAC,GAAG,MAAM,QAAQ,KAAK,EAAE,CAAA;AAChF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,MAAc,EAAE,KAAa,EAAE,EAAE,CAAC,GAAG,MAAM,UAAU,KAAK,EAAE,CAAA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type ComponentPropsWithRef, type ReactNode } from 'react';
|
|
2
|
+
import type { AsChildProps } from '../types.js';
|
|
3
|
+
export interface ToastProviderProps {
|
|
4
|
+
children?: ReactNode;
|
|
5
|
+
/** How long a toast stays up. Individual toasts can override it. */
|
|
6
|
+
duration?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function ToastProvider({ children, duration }: ToastProviderProps): import("react").JSX.Element;
|
|
9
|
+
export interface ToastViewportProps extends ComponentPropsWithRef<'ol'>, AsChildProps {
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* One `popover="manual"` region holding the whole stack, rather than a popover
|
|
13
|
+
* per toast. Manual, because a toast must not be light-dismissed by a click
|
|
14
|
+
* elsewhere and must not close whatever menu is open.
|
|
15
|
+
*
|
|
16
|
+
* The list is in the top layer, so it sits above dialogs without a z-index, and
|
|
17
|
+
* ordinary flow layout applies inside it.
|
|
18
|
+
*/
|
|
19
|
+
export declare function ToastViewport({ asChild, ref, ...props }: ToastViewportProps): import("react").JSX.Element;
|
|
20
|
+
export interface ToastRootProps extends ComponentPropsWithRef<'li'>, AsChildProps {
|
|
21
|
+
duration?: number;
|
|
22
|
+
onOpenChange?(open: boolean): void;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Dismisses itself after `duration`, and pauses while the pointer is over it or
|
|
26
|
+
* focus is inside — the two behaviours people notice when they are missing.
|
|
27
|
+
*
|
|
28
|
+
* No swipe-to-dismiss: that is a pointer gesture with no native equivalent, and
|
|
29
|
+
* it is listed as a gap rather than half-implemented.
|
|
30
|
+
*/
|
|
31
|
+
export declare function ToastRoot({ asChild, children, duration, onOpenChange, ref, ...props }: ToastRootProps): import("react").JSX.Element | null;
|
|
32
|
+
export interface ToastPartProps extends ComponentPropsWithRef<'div'>, AsChildProps {
|
|
33
|
+
}
|
|
34
|
+
export declare function ToastTitle({ asChild, ...props }: ToastPartProps): import("react").JSX.Element;
|
|
35
|
+
export declare function ToastDescription({ asChild, ...props }: ToastPartProps): import("react").JSX.Element;
|
|
36
|
+
export interface ToastCloseProps extends ComponentPropsWithRef<'button'>, AsChildProps {
|
|
37
|
+
}
|
|
38
|
+
export declare function ToastClose({ asChild, onClick, ...props }: ToastCloseProps): import("react").JSX.Element;
|
|
39
|
+
export declare function ToastAction({ asChild, ...props }: ToastCloseProps): import("react").JSX.Element;
|
|
40
|
+
//# sourceMappingURL=parts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../../src/toast/parts.tsx"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,qBAAqB,EAE1B,KAAK,SAAS,EACf,MAAM,OAAO,CAAA;AAGd,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAQ5C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,QAAe,EAAE,EAAE,kBAAkB,+BAI9E;AAED,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB,CAAC,IAAI,CAAC,EAAE,YAAY;CAAG;AAExF;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,+BAoB3E;AAED,MAAM,WAAW,cAAe,SAAQ,qBAAqB,CAAC,IAAI,CAAC,EAAE,YAAY;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAA;CACnC;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,GAAG,EACH,GAAG,KAAK,EACT,EAAE,cAAc,sCAyDhB;AAED,MAAM,WAAW,cAAe,SAAQ,qBAAqB,CAAC,KAAK,CAAC,EAAE,YAAY;CAAG;AAErF,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,+BAI/D;AAED,wBAAgB,gBAAgB,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,+BAIrE;AAED,MAAM,WAAW,eAAgB,SAAQ,qBAAqB,CAAC,QAAQ,CAAC,EAAE,YAAY;CAAG;AAEzF,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,+BAezE;AAED,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,+BAIjE"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState, } from 'react';
|
|
3
|
+
import { useComposedRefs } from '../compose-refs.js';
|
|
4
|
+
import { Slot } from '../slot.js';
|
|
5
|
+
const ToastProviderContext = createContext({ duration: 5000 });
|
|
6
|
+
export function ToastProvider({ children, duration = 5000 }) {
|
|
7
|
+
const value = useMemo(() => ({ duration }), [duration]);
|
|
8
|
+
return _jsx(ToastProviderContext.Provider, { value: value, children: children });
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* One `popover="manual"` region holding the whole stack, rather than a popover
|
|
12
|
+
* per toast. Manual, because a toast must not be light-dismissed by a click
|
|
13
|
+
* elsewhere and must not close whatever menu is open.
|
|
14
|
+
*
|
|
15
|
+
* The list is in the top layer, so it sits above dialogs without a z-index, and
|
|
16
|
+
* ordinary flow layout applies inside it.
|
|
17
|
+
*/
|
|
18
|
+
export function ToastViewport({ asChild, ref, ...props }) {
|
|
19
|
+
const Part = asChild ? Slot : 'ol';
|
|
20
|
+
const show = useCallback((node) => {
|
|
21
|
+
// The one imperative call: there is no attribute that opens a popover on
|
|
22
|
+
// parse, and a toast region has to be there before the first toast is.
|
|
23
|
+
if (node && !node.matches(':popover-open'))
|
|
24
|
+
node.showPopover();
|
|
25
|
+
}, []);
|
|
26
|
+
return (_jsx(Part, { ...props, popover: "manual", role: "region", "aria-live": "polite", tabIndex: -1, ref: useComposedRefs(ref, show), "data-bedrock-toast-viewport": "" }));
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Dismisses itself after `duration`, and pauses while the pointer is over it or
|
|
30
|
+
* focus is inside — the two behaviours people notice when they are missing.
|
|
31
|
+
*
|
|
32
|
+
* No swipe-to-dismiss: that is a pointer gesture with no native equivalent, and
|
|
33
|
+
* it is listed as a gap rather than half-implemented.
|
|
34
|
+
*/
|
|
35
|
+
export function ToastRoot({ asChild, children, duration, onOpenChange, ref, ...props }) {
|
|
36
|
+
const { duration: fallback } = useContext(ToastProviderContext);
|
|
37
|
+
const [open, setOpen] = useState(true);
|
|
38
|
+
const nodeRef = useRef(null);
|
|
39
|
+
const Part = asChild ? Slot : 'li';
|
|
40
|
+
const changeRef = useRef(onOpenChange);
|
|
41
|
+
changeRef.current = onOpenChange;
|
|
42
|
+
const total = duration ?? fallback;
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
if (total === Infinity)
|
|
45
|
+
return;
|
|
46
|
+
let timer = 0;
|
|
47
|
+
const node = nodeRef.current;
|
|
48
|
+
const start = () => {
|
|
49
|
+
timer = window.setTimeout(() => {
|
|
50
|
+
setOpen(false);
|
|
51
|
+
changeRef.current?.(false);
|
|
52
|
+
}, total);
|
|
53
|
+
};
|
|
54
|
+
const pause = () => window.clearTimeout(timer);
|
|
55
|
+
const resume = () => {
|
|
56
|
+
pause();
|
|
57
|
+
start();
|
|
58
|
+
};
|
|
59
|
+
start();
|
|
60
|
+
node?.addEventListener('pointerenter', pause);
|
|
61
|
+
node?.addEventListener('pointerleave', resume);
|
|
62
|
+
node?.addEventListener('focusin', pause);
|
|
63
|
+
node?.addEventListener('focusout', resume);
|
|
64
|
+
return () => {
|
|
65
|
+
pause();
|
|
66
|
+
node?.removeEventListener('pointerenter', pause);
|
|
67
|
+
node?.removeEventListener('pointerleave', resume);
|
|
68
|
+
node?.removeEventListener('focusin', pause);
|
|
69
|
+
node?.removeEventListener('focusout', resume);
|
|
70
|
+
};
|
|
71
|
+
}, [total]);
|
|
72
|
+
// Above the early return: a hook cannot be called conditionally, and this one
|
|
73
|
+
// has to keep its identity across the render that dismisses the toast.
|
|
74
|
+
const composedRef = useComposedRefs(ref, (node) => {
|
|
75
|
+
nodeRef.current = node;
|
|
76
|
+
});
|
|
77
|
+
if (!open)
|
|
78
|
+
return null;
|
|
79
|
+
return (_jsx(Part, { ...props, role: "status", ref: composedRef, "data-bedrock-toast": "", children: children }));
|
|
80
|
+
}
|
|
81
|
+
export function ToastTitle({ asChild, ...props }) {
|
|
82
|
+
const Part = asChild ? Slot : 'div';
|
|
83
|
+
return _jsx(Part, { ...props, "data-bedrock-toast-title": "" });
|
|
84
|
+
}
|
|
85
|
+
export function ToastDescription({ asChild, ...props }) {
|
|
86
|
+
const Part = asChild ? Slot : 'div';
|
|
87
|
+
return _jsx(Part, { ...props, "data-bedrock-toast-description": "" });
|
|
88
|
+
}
|
|
89
|
+
export function ToastClose({ asChild, onClick, ...props }) {
|
|
90
|
+
const Part = asChild ? Slot : 'button';
|
|
91
|
+
return (_jsx(Part, { ...props, type: "button", onClick: (event) => {
|
|
92
|
+
onClick?.(event);
|
|
93
|
+
if (event.defaultPrevented)
|
|
94
|
+
return;
|
|
95
|
+
event.currentTarget.closest('[data-bedrock-toast]')?.remove();
|
|
96
|
+
}, "data-bedrock-toast-close": "" }));
|
|
97
|
+
}
|
|
98
|
+
export function ToastAction({ asChild, ...props }) {
|
|
99
|
+
const Part = asChild ? Slot : 'button';
|
|
100
|
+
return _jsx(Part, { ...props, type: "button", "data-bedrock-toast-action": "" });
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=parts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parts.js","sourceRoot":"","sources":["../../src/toast/parts.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type ComponentPropsWithRef } from 'react';
|
|
2
|
+
import type { AsChildProps } from '../types.js';
|
|
3
|
+
export interface ControlledToggleProps extends Omit<ComponentPropsWithRef<'button'>, 'defaultValue'>, AsChildProps {
|
|
4
|
+
pressed: boolean;
|
|
5
|
+
onPressedChange?: ((pressed: boolean) => void) | undefined;
|
|
6
|
+
}
|
|
7
|
+
/** `pressed` decides; the click reports and changes nothing on its own. */
|
|
8
|
+
export declare function ToggleRoot({ asChild, pressed, onPressedChange, onClick, ...props }: ControlledToggleProps): import("react").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=controlled-root.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controlled-root.d.ts","sourceRoot":"","sources":["../../src/toggle/controlled-root.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,qBAAqB,EAAqC,MAAM,OAAO,CAAA;AAElG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE5C,MAAM,WAAW,qBACf,SAAQ,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC,EAAE,YAAY;IAC3E,OAAO,EAAE,OAAO,CAAA;IAChB,eAAe,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,SAAS,CAAA;CAC3D;AAED,2EAA2E;AAC3E,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,OAAO,EACP,eAAe,EACf,OAAO,EACP,GAAG,KAAK,EACT,EAAE,qBAAqB,+BAoBvB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback } from 'react';
|
|
3
|
+
import { Slot } from '../slot.js';
|
|
4
|
+
/** `pressed` decides; the click reports and changes nothing on its own. */
|
|
5
|
+
export function ToggleRoot({ asChild, pressed, onPressedChange, onClick, ...props }) {
|
|
6
|
+
const Part = asChild ? Slot : 'button';
|
|
7
|
+
const handleClick = useCallback((event) => {
|
|
8
|
+
onClick?.(event);
|
|
9
|
+
if (!event.defaultPrevented)
|
|
10
|
+
onPressedChange?.(!pressed);
|
|
11
|
+
}, [onClick, onPressedChange, pressed]);
|
|
12
|
+
return (_jsx(Part, { ...props, type: "button", "aria-pressed": pressed, onClick: handleClick, "data-bedrock-toggle": "" }));
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=controlled-root.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controlled-root.js","sourceRoot":"","sources":["../../src/toggle/controlled-root.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAiE,MAAM,OAAO,CAAA;AAClG,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAS9B,2EAA2E;AAC3E,MAAM,UAAU,UAAU,CAAC,EACzB,OAAO,EACP,OAAO,EACP,eAAe,EACf,OAAO,EACP,GAAG,KAAK,EACc;IACtB,MAAM,IAAI,GAAgB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAA;IAEnD,MAAM,WAAW,GAAG,WAAW,CAC7B,CAAC,KAAoC,EAAE,EAAE;QACvC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAA;QAChB,IAAI,CAAC,KAAK,CAAC,gBAAgB;YAAE,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;IAC1D,CAAC,EACD,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,CACpC,CAAA;IAED,OAAO,CACL,KAAC,IAAI,OACC,KAAK,EACT,IAAI,EAAC,QAAQ,kBACC,OAAO,EACrB,OAAO,EAAE,WAAW,yBACA,EAAE,GACtB,CACH,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type ComponentPropsWithRef } from 'react';
|
|
2
|
+
import type { AsChildProps } from '../types.js';
|
|
3
|
+
export interface ToggleProps extends ComponentPropsWithRef<'button'>, AsChildProps {
|
|
4
|
+
defaultPressed?: boolean;
|
|
5
|
+
onPressedChange?(pressed: boolean): void;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* The one control in this group with no native element behind it.
|
|
9
|
+
*
|
|
10
|
+
* A checkbox with `appearance: none` would give the state for free, but a
|
|
11
|
+
* toggle button is a different thing to assistive technology — `aria-pressed`
|
|
12
|
+
* on a button, not `:checked` on an input — and picking the wrong one to save
|
|
13
|
+
* six lines of state would be the wrong trade.
|
|
14
|
+
*
|
|
15
|
+
* So this is a `<button aria-pressed>` with a `useState`, and it is honest
|
|
16
|
+
* about being JavaScript. It is also why `data-state` still does not appear:
|
|
17
|
+
* `[aria-pressed="true"]` is the selector.
|
|
18
|
+
*/
|
|
19
|
+
export declare function ToggleRoot({ asChild, defaultPressed, onPressedChange, onClick, ...props }: ToggleProps): import("react").JSX.Element;
|
|
20
|
+
//# sourceMappingURL=parts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../../src/toggle/parts.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,qBAAqB,EAG3B,MAAM,OAAO,CAAA;AAEd,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE5C,MAAM,WAAW,WAAY,SAAQ,qBAAqB,CAAC,QAAQ,CAAC,EAAE,YAAY;IAChF,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,eAAe,CAAC,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;CACzC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,cAAsB,EACtB,eAAe,EACf,OAAO,EACP,GAAG,KAAK,EACT,EAAE,WAAW,+BAyBb"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useState, } from 'react';
|
|
3
|
+
import { Slot } from '../slot.js';
|
|
4
|
+
/**
|
|
5
|
+
* The one control in this group with no native element behind it.
|
|
6
|
+
*
|
|
7
|
+
* A checkbox with `appearance: none` would give the state for free, but a
|
|
8
|
+
* toggle button is a different thing to assistive technology — `aria-pressed`
|
|
9
|
+
* on a button, not `:checked` on an input — and picking the wrong one to save
|
|
10
|
+
* six lines of state would be the wrong trade.
|
|
11
|
+
*
|
|
12
|
+
* So this is a `<button aria-pressed>` with a `useState`, and it is honest
|
|
13
|
+
* about being JavaScript. It is also why `data-state` still does not appear:
|
|
14
|
+
* `[aria-pressed="true"]` is the selector.
|
|
15
|
+
*/
|
|
16
|
+
export function ToggleRoot({ asChild, defaultPressed = false, onPressedChange, onClick, ...props }) {
|
|
17
|
+
const [pressed, setPressed] = useState(defaultPressed);
|
|
18
|
+
const Part = asChild ? Slot : 'button';
|
|
19
|
+
const handleClick = useCallback((event) => {
|
|
20
|
+
onClick?.(event);
|
|
21
|
+
if (event.defaultPrevented)
|
|
22
|
+
return;
|
|
23
|
+
const next = !pressed;
|
|
24
|
+
setPressed(next);
|
|
25
|
+
onPressedChange?.(next);
|
|
26
|
+
}, [onClick, onPressedChange, pressed]);
|
|
27
|
+
return (_jsx(Part, { ...props, type: "button", "aria-pressed": pressed, onClick: handleClick, "data-bedrock-toggle": "" }));
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=parts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parts.js","sourceRoot":"","sources":["../../src/toggle/parts.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,WAAW,EACX,QAAQ,GAIT,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAQ9B;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,UAAU,CAAC,EACzB,OAAO,EACP,cAAc,GAAG,KAAK,EACtB,eAAe,EACf,OAAO,EACP,GAAG,KAAK,EACI;IACZ,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAA;IACtD,MAAM,IAAI,GAAgB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAA;IAEnD,MAAM,WAAW,GAAG,WAAW,CAC7B,CAAC,KAAoC,EAAE,EAAE;QACvC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAA;QAChB,IAAI,KAAK,CAAC,gBAAgB;YAAE,OAAM;QAElC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAA;QACrB,UAAU,CAAC,IAAI,CAAC,CAAA;QAChB,eAAe,EAAE,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC,EACD,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,CACpC,CAAA;IAED,OAAO,CACL,KAAC,IAAI,OACC,KAAK,EACT,IAAI,EAAC,QAAQ,kBACC,OAAO,EACrB,OAAO,EAAE,WAAW,yBACA,EAAE,GACtB,CACH,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type ComponentPropsWithRef } from 'react';
|
|
2
|
+
import { type Orientation } from '../roving.js';
|
|
3
|
+
import type { AsChildProps } from '../types.js';
|
|
4
|
+
interface ToggleGroupContextValue {
|
|
5
|
+
pressed: readonly string[];
|
|
6
|
+
toggle(value: string): void;
|
|
7
|
+
}
|
|
8
|
+
declare const ToggleGroupContext: import("react").Context<ToggleGroupContextValue | null>;
|
|
9
|
+
export declare function useToggleGroupContext(part: string): ToggleGroupContextValue;
|
|
10
|
+
export { ToggleGroupContext };
|
|
11
|
+
export interface ToggleGroupRootProps extends Omit<ComponentPropsWithRef<'div'>, 'defaultValue'>, AsChildProps {
|
|
12
|
+
type?: 'single' | 'multiple';
|
|
13
|
+
defaultValue?: string | string[];
|
|
14
|
+
orientation?: Orientation;
|
|
15
|
+
loop?: boolean;
|
|
16
|
+
onValueChange?(value: string[]): void;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* A group of toggle buttons sharing one tab stop. `aria-pressed` on each,
|
|
20
|
+
* rather than radio semantics, because these are buttons that stay down — the
|
|
21
|
+
* bold/italic/underline row, not a choice of one thing.
|
|
22
|
+
*/
|
|
23
|
+
export declare function ToggleGroupRoot({ asChild, children, type, defaultValue, orientation, loop, onValueChange, ref, ...props }: ToggleGroupRootProps): import("react").JSX.Element;
|
|
24
|
+
export interface ToggleGroupItemProps extends ComponentPropsWithRef<'button'>, AsChildProps {
|
|
25
|
+
value: string;
|
|
26
|
+
}
|
|
27
|
+
export declare function ToggleGroupItem({ asChild, value, onClick, ...props }: ToggleGroupItemProps): import("react").JSX.Element;
|
|
28
|
+
//# sourceMappingURL=parts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../../src/toggle-group/parts.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,qBAAqB,EAG3B,MAAM,OAAO,CAAA;AAEd,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,WAAW,CAAA;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE5C,UAAU,uBAAuB;IAC/B,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;IAC1B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED,QAAA,MAAM,kBAAkB,yDAAsD,CAAA;AAE9E,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB,CAI3E;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAA;AAE7B,MAAM,WAAW,oBACf,SAAQ,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,EAAE,YAAY;IACxE,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC5B,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAChC,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;CACtC;AAOD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAC9B,OAAO,EACP,QAAQ,EACR,IAAe,EACf,YAAY,EACZ,WAA0B,EAC1B,IAAW,EACX,aAAa,EACb,GAAG,EACH,GAAG,KAAK,EACT,EAAE,oBAAoB,+BA2CtB;AAED,MAAM,WAAW,oBAAqB,SAAQ,qBAAqB,CAAC,QAAQ,CAAC,EAAE,YAAY;IACzF,KAAK,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,eAAe,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,+BAsB1F"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useCallback, useContext, useMemo, useRef, useState, } from 'react';
|
|
3
|
+
import { useComposedRefs } from '../compose-refs.js';
|
|
4
|
+
import { useRoving } from '../roving.js';
|
|
5
|
+
import { Slot } from '../slot.js';
|
|
6
|
+
const ToggleGroupContext = createContext(null);
|
|
7
|
+
export function useToggleGroupContext(part) {
|
|
8
|
+
const context = useContext(ToggleGroupContext);
|
|
9
|
+
if (!context)
|
|
10
|
+
throw new Error(`[bedrock] ${part} must be used inside ToggleGroup.Root.`);
|
|
11
|
+
return context;
|
|
12
|
+
}
|
|
13
|
+
export { ToggleGroupContext };
|
|
14
|
+
function toArray(value) {
|
|
15
|
+
if (value === undefined)
|
|
16
|
+
return [];
|
|
17
|
+
return Array.isArray(value) ? value : [value];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* A group of toggle buttons sharing one tab stop. `aria-pressed` on each,
|
|
21
|
+
* rather than radio semantics, because these are buttons that stay down — the
|
|
22
|
+
* bold/italic/underline row, not a choice of one thing.
|
|
23
|
+
*/
|
|
24
|
+
export function ToggleGroupRoot({ asChild, children, type = 'single', defaultValue, orientation = 'horizontal', loop = true, onValueChange, ref, ...props }) {
|
|
25
|
+
const [pressed, setPressed] = useState(() => toArray(defaultValue));
|
|
26
|
+
const { registerContainer } = useRoving({ orientation, loop, typeahead: false });
|
|
27
|
+
const Part = asChild ? Slot : 'div';
|
|
28
|
+
const changeRef = useRef(onValueChange);
|
|
29
|
+
changeRef.current = onValueChange;
|
|
30
|
+
const toggle = useCallback((value) => {
|
|
31
|
+
setPressed((current) => {
|
|
32
|
+
const isOn = current.includes(value);
|
|
33
|
+
const next = type === 'single'
|
|
34
|
+
? isOn
|
|
35
|
+
? []
|
|
36
|
+
: [value]
|
|
37
|
+
: isOn
|
|
38
|
+
? current.filter((entry) => entry !== value)
|
|
39
|
+
: [...current, value];
|
|
40
|
+
changeRef.current?.(next);
|
|
41
|
+
return next;
|
|
42
|
+
});
|
|
43
|
+
}, [type]);
|
|
44
|
+
const context = useMemo(() => ({ pressed, toggle }), [pressed, toggle]);
|
|
45
|
+
return (_jsx(ToggleGroupContext.Provider, { value: context, children: _jsx(Part, { ...props, role: "group", "data-orientation": orientation, ref: useComposedRefs(ref, registerContainer), "data-bedrock-toggle-group": "", children: children }) }));
|
|
46
|
+
}
|
|
47
|
+
export function ToggleGroupItem({ asChild, value, onClick, ...props }) {
|
|
48
|
+
const { pressed, toggle } = useToggleGroupContext('ToggleGroup.Item');
|
|
49
|
+
const Part = asChild ? Slot : 'button';
|
|
50
|
+
const handleClick = useCallback((event) => {
|
|
51
|
+
onClick?.(event);
|
|
52
|
+
if (!event.defaultPrevented)
|
|
53
|
+
toggle(value);
|
|
54
|
+
}, [onClick, toggle, value]);
|
|
55
|
+
return (_jsx(Part, { ...props, type: "button", "aria-pressed": pressed.includes(value), onClick: handleClick, "data-bedrock-roving-item": "", "data-bedrock-toggle-group-item": "" }));
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=parts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parts.js","sourceRoot":"","sources":["../../src/toggle-group/parts.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ComponentPropsWithRef } from 'react';
|
|
2
|
+
import { type Orientation } from '../roving.js';
|
|
3
|
+
import { type SeparatorProps } from '../separator/parts.js';
|
|
4
|
+
import type { AsChildProps } from '../types.js';
|
|
5
|
+
export interface ToolbarRootProps extends ComponentPropsWithRef<'div'>, AsChildProps {
|
|
6
|
+
orientation?: Orientation;
|
|
7
|
+
loop?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* `role="toolbar"`, one tab stop, arrows between the controls. Mixed content —
|
|
11
|
+
* buttons, links, toggle groups — all of which register as roving items, so the
|
|
12
|
+
* order follows the DOM rather than a registry.
|
|
13
|
+
*/
|
|
14
|
+
export declare function ToolbarRoot({ asChild, orientation, loop, ref, ...props }: ToolbarRootProps): import("react").JSX.Element;
|
|
15
|
+
export interface ToolbarButtonProps extends ComponentPropsWithRef<'button'>, AsChildProps {
|
|
16
|
+
}
|
|
17
|
+
export declare function ToolbarButton({ asChild, ...props }: ToolbarButtonProps): import("react").JSX.Element;
|
|
18
|
+
export interface ToolbarLinkProps extends ComponentPropsWithRef<'a'>, AsChildProps {
|
|
19
|
+
}
|
|
20
|
+
export declare function ToolbarLink({ asChild, ...props }: ToolbarLinkProps): import("react").JSX.Element;
|
|
21
|
+
export declare function ToolbarSeparator(props: SeparatorProps): import("react").JSX.Element;
|
|
22
|
+
//# sourceMappingURL=parts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../../src/toolbar/parts.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAe,MAAM,OAAO,CAAA;AAE/D,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,WAAW,CAAA;AACvD,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE5C,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB,CAAC,KAAK,CAAC,EAAE,YAAY;IAClF,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,WAA0B,EAC1B,IAAW,EACX,GAAG,EACH,GAAG,KAAK,EACT,EAAE,gBAAgB,+BAclB;AAED,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB,CAAC,QAAQ,CAAC,EAAE,YAAY;CAAG;AAE5F,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,+BAMtE;AAED,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB,CAAC,GAAG,CAAC,EAAE,YAAY;CAAG;AAErF,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,+BAIlE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,+BAErD"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useComposedRefs } from '../compose-refs.js';
|
|
3
|
+
import { useRoving } from '../roving.js';
|
|
4
|
+
import { SeparatorRoot } from '../separator/parts.js';
|
|
5
|
+
import { Slot } from '../slot.js';
|
|
6
|
+
/**
|
|
7
|
+
* `role="toolbar"`, one tab stop, arrows between the controls. Mixed content —
|
|
8
|
+
* buttons, links, toggle groups — all of which register as roving items, so the
|
|
9
|
+
* order follows the DOM rather than a registry.
|
|
10
|
+
*/
|
|
11
|
+
export function ToolbarRoot({ asChild, orientation = 'horizontal', loop = true, ref, ...props }) {
|
|
12
|
+
const { registerContainer } = useRoving({ orientation, loop, typeahead: false });
|
|
13
|
+
const Part = asChild ? Slot : 'div';
|
|
14
|
+
return (_jsx(Part, { ...props, role: "toolbar", "aria-orientation": orientation === 'both' ? undefined : orientation, "data-orientation": orientation, ref: useComposedRefs(ref, registerContainer), "data-bedrock-toolbar": "" }));
|
|
15
|
+
}
|
|
16
|
+
export function ToolbarButton({ asChild, ...props }) {
|
|
17
|
+
const Part = asChild ? Slot : 'button';
|
|
18
|
+
return (_jsx(Part, { ...props, type: "button", "data-bedrock-roving-item": "", "data-bedrock-toolbar-button": "" }));
|
|
19
|
+
}
|
|
20
|
+
export function ToolbarLink({ asChild, ...props }) {
|
|
21
|
+
const Part = asChild ? Slot : 'a';
|
|
22
|
+
return _jsx(Part, { ...props, "data-bedrock-roving-item": "", "data-bedrock-toolbar-link": "" });
|
|
23
|
+
}
|
|
24
|
+
export function ToolbarSeparator(props) {
|
|
25
|
+
return _jsx(SeparatorRoot, { decorative: true, ...props });
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=parts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parts.js","sourceRoot":"","sources":["../../src/toolbar/parts.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAoB,MAAM,WAAW,CAAA;AACvD,OAAO,EAAE,aAAa,EAAuB,MAAM,oBAAoB,CAAA;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAQ9B;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,OAAO,EACP,WAAW,GAAG,YAAY,EAC1B,IAAI,GAAG,IAAI,EACX,GAAG,EACH,GAAG,KAAK,EACS;IACjB,MAAM,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;IAChF,MAAM,IAAI,GAAgB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;IAEhD,OAAO,CACL,KAAC,IAAI,OACC,KAAK,EACT,IAAI,EAAC,SAAS,sBACI,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,sBAChD,WAAW,EAC7B,GAAG,EAAE,eAAe,CAAc,GAAG,EAAE,iBAAiB,CAAC,0BACpC,EAAE,GACvB,CACH,CAAA;AACH,CAAC;AAID,MAAM,UAAU,aAAa,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAsB;IACrE,MAAM,IAAI,GAAgB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAA;IAEnD,OAAO,CACL,KAAC,IAAI,OAAK,KAAK,EAAE,IAAI,EAAC,QAAQ,8BAA0B,EAAE,iCAA6B,EAAE,GAAG,CAC7F,CAAA;AACH,CAAC;AAID,MAAM,UAAU,WAAW,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAoB;IACjE,MAAM,IAAI,GAAgB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAA;IAE9C,OAAO,KAAC,IAAI,OAAK,KAAK,8BAA2B,EAAE,+BAA2B,EAAE,GAAG,CAAA;AACrF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAqB;IACpD,OAAO,KAAC,aAAa,IAAC,UAAU,WAAK,KAAK,GAAI,CAAA;AAChD,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { ControlledRootProps } from '../create-controlled-root.js';
|
|
3
|
+
export interface ControlledTooltipRootProps extends ControlledRootProps {
|
|
4
|
+
children?: ReactNode;
|
|
5
|
+
delayDuration?: number;
|
|
6
|
+
closeDelay?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function TooltipRoot({ children, delayDuration, closeDelay, ...props }: ControlledTooltipRootProps): import("react").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=controlled-root.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controlled-root.d.ts","sourceRoot":"","sources":["../../src/tooltip/controlled-root.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAIpE,MAAM,WAAW,0BAA2B,SAAQ,mBAAmB;IACrE,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,aAAmB,EACnB,UAAgB,EAChB,GAAG,KAAK,EACT,EAAE,0BAA0B,+BAW5B"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { TooltipContext } from './shared.js';
|
|
3
|
+
import { useControlledInterestRoot } from './use-controlled-interest-root.js';
|
|
4
|
+
export function TooltipRoot({ children, delayDuration = 700, closeDelay = 150, ...props }) {
|
|
5
|
+
const context = useControlledInterestRoot({
|
|
6
|
+
...props,
|
|
7
|
+
showDelay: delayDuration,
|
|
8
|
+
hideDelay: closeDelay,
|
|
9
|
+
hoverableContent: false,
|
|
10
|
+
kind: 'hint',
|
|
11
|
+
role: 'tooltip',
|
|
12
|
+
});
|
|
13
|
+
return _jsx(TooltipContext.Provider, { value: context, children: children });
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=controlled-root.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controlled-root.js","sourceRoot":"","sources":["../../src/tooltip/controlled-root.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAQ1E,MAAM,UAAU,WAAW,CAAC,EAC1B,QAAQ,EACR,aAAa,GAAG,GAAG,EACnB,UAAU,GAAG,GAAG,EAChB,GAAG,KAAK,EACmB;IAC3B,MAAM,OAAO,GAAG,yBAAyB,CAAC;QACxC,GAAG,KAAK;QACR,SAAS,EAAE,aAAa;QACxB,SAAS,EAAE,UAAU;QACrB,gBAAgB,EAAE,KAAK;QACvB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,SAAS;KAChB,CAAC,CAAA;IAEF,OAAO,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,OAAO,YAAG,QAAQ,GAA2B,CAAA;AACtF,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ComponentPropsWithRef } from 'react';
|
|
2
|
+
import { type Align, type Side } from '../anchor.js';
|
|
3
|
+
import type { AsChildProps } from '../types.js';
|
|
4
|
+
export interface TooltipTriggerProps extends ComponentPropsWithRef<'button'>, AsChildProps {
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Buttons *and* anchors, unlike every other trigger in this library: an
|
|
8
|
+
* `interestfor` invoker accepts both, and that is exactly what makes a link
|
|
9
|
+
* preview possible without a wrapper element.
|
|
10
|
+
*
|
|
11
|
+
* The `interestfor` attribute is emitted only when the platform can act on it.
|
|
12
|
+
* Otherwise the same node is handed to the JavaScript fallback, and nothing
|
|
13
|
+
* about the markup a consumer writes changes either way.
|
|
14
|
+
*/
|
|
15
|
+
export declare function TooltipTrigger({ asChild, ref, style, ...props }: TooltipTriggerProps): import("react").JSX.Element;
|
|
16
|
+
export interface TooltipContentProps extends ComponentPropsWithRef<'div'>, AsChildProps {
|
|
17
|
+
side?: Side;
|
|
18
|
+
align?: Align;
|
|
19
|
+
sideOffset?: number;
|
|
20
|
+
avoidCollisions?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare function TooltipContent({ asChild, children, side, align, sideOffset, avoidCollisions, style, ref, ...props }: TooltipContentProps): import("react").JSX.Element;
|
|
23
|
+
//# sourceMappingURL=parts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../../src/tooltip/parts.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAe,MAAM,OAAO,CAAA;AAC/D,OAAO,EAAmB,KAAK,KAAK,EAAE,KAAK,IAAI,EAAE,MAAM,WAAW,CAAA;AAIlE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAI5C,MAAM,WAAW,mBAAoB,SAAQ,qBAAqB,CAAC,QAAQ,CAAC,EAAE,YAAY;CAAG;AAE7F;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,mBAAmB,+BAiBpF;AAED,MAAM,WAAW,mBAAoB,SAAQ,qBAAqB,CAAC,KAAK,CAAC,EAAE,YAAY;IACrF,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,QAAQ,EACR,IAAY,EACZ,KAAgB,EAChB,UAAc,EACd,eAAsB,EACtB,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,mBAAmB,+BAoBrB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { placementStyles } from '../anchor.js';
|
|
3
|
+
import { useClientRender } from '../client-render.js';
|
|
4
|
+
import { useComposedRefs } from '../compose-refs.js';
|
|
5
|
+
import { Slot } from '../slot.js';
|
|
6
|
+
import { validateTrigger } from '../validate-trigger.js';
|
|
7
|
+
import { useTooltipContext } from './shared.js';
|
|
8
|
+
/**
|
|
9
|
+
* Buttons *and* anchors, unlike every other trigger in this library: an
|
|
10
|
+
* `interestfor` invoker accepts both, and that is exactly what makes a link
|
|
11
|
+
* preview possible without a wrapper element.
|
|
12
|
+
*
|
|
13
|
+
* The `interestfor` attribute is emitted only when the platform can act on it.
|
|
14
|
+
* Otherwise the same node is handed to the JavaScript fallback, and nothing
|
|
15
|
+
* about the markup a consumer writes changes either way.
|
|
16
|
+
*/
|
|
17
|
+
export function TooltipTrigger({ asChild, ref, style, ...props }) {
|
|
18
|
+
const { id, anchor, native, registerTrigger } = useTooltipContext('Tooltip.Trigger');
|
|
19
|
+
const Part = asChild ? Slot : 'button';
|
|
20
|
+
return (_jsx(Part, { ...props, ...(native ? { interestfor: id } : {}), "aria-describedby": id, style: { anchorName: anchor, ...style }, ref: useComposedRefs(ref, registerTrigger, (node) => validateTrigger(node, 'interest', 'Tooltip.Trigger')), "data-bedrock-tooltip-trigger": "" }));
|
|
21
|
+
}
|
|
22
|
+
export function TooltipContent({ asChild, children, side = 'top', align = 'center', sideOffset = 6, avoidCollisions = true, style, ref, ...props }) {
|
|
23
|
+
const { id, open, anchor, kind, role, registerContent } = useTooltipContext('Tooltip.Content');
|
|
24
|
+
const onClient = useClientRender();
|
|
25
|
+
const Part = asChild ? Slot : 'div';
|
|
26
|
+
return (_jsx(Part, { ...props, id: id, popover: kind, role: role, style: { ...placementStyles(anchor, { side, align, sideOffset, avoidCollisions }), ...style }, "data-side": side, "data-align": align, ref: useComposedRefs(ref, registerContent), "data-bedrock-tooltip": "", children: open || !onClient ? children : null }));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=parts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parts.js","sourceRoot":"","sources":["../../src/tooltip/parts.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAyB,MAAM,WAAW,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAE9B,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAI5C;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,EAAuB;IACnF,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,CAAA;IACpF,MAAM,IAAI,GAAgB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAA;IAEnD,OAAO,CACL,KAAC,IAAI,OACC,KAAK,KACL,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,sBAErB,EAAE,EACpB,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,EAAkB,EACvD,GAAG,EAAE,eAAe,CAAc,GAAG,EAAE,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE,CAC/D,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,iBAAiB,CAAC,CACrD,kCAC4B,EAAE,GAC/B,CACH,CAAA;AACH,CAAC;AASD,MAAM,UAAU,cAAc,CAAC,EAC7B,OAAO,EACP,QAAQ,EACR,IAAI,GAAG,KAAK,EACZ,KAAK,GAAG,QAAQ,EAChB,UAAU,GAAG,CAAC,EACd,eAAe,GAAG,IAAI,EACtB,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACY;IACpB,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,CAAA;IAC9F,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAA;IAClC,MAAM,IAAI,GAAgB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;IAEhD,OAAO,CACL,KAAC,IAAI,OACC,KAAK,EACT,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,IAAI,EACb,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,EAAE,GAAG,eAAe,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,eAClF,IAAI,gBACH,KAAK,EACjB,GAAG,EAAE,eAAe,CAAc,GAAG,EAAE,eAAe,CAAC,0BAClC,EAAE,YAEtB,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAC/B,CACR,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export interface TooltipRootProps {
|
|
3
|
+
children?: ReactNode;
|
|
4
|
+
/**
|
|
5
|
+
* How long the pointer must rest before it opens. Named for what it does,
|
|
6
|
+
* not for the CSS property or the timer that currently implements it.
|
|
7
|
+
*/
|
|
8
|
+
delayDuration?: number;
|
|
9
|
+
closeDelay?: number;
|
|
10
|
+
onOpenChange?(open: boolean): void;
|
|
11
|
+
}
|
|
12
|
+
export declare function TooltipRoot({ children, delayDuration, closeDelay, onOpenChange, }: TooltipRootProps): import("react").JSX.Element;
|
|
13
|
+
//# sourceMappingURL=root.d.ts.map
|