@a-type/ui 6.1.13 → 6.1.14
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/dist/components/lightbox/Lightbox.stories.d.ts +1 -1
- package/dist/components/quickAction/QuickAction.d.ts +2 -2
- package/dist/components/quickAction/QuickAction.js +5 -46
- package/dist/components/quickAction/QuickAction.js.map +1 -1
- package/dist/components/quickAction/QuickAction.module.css +6 -13
- package/dist/components/quickAction/QuickAction.stories.js +6 -5
- package/dist/components/quickAction/QuickAction.stories.js.map +1 -1
- package/package.json +2 -2
- package/src/components/quickAction/QuickAction.module.css +6 -13
- package/src/components/quickAction/QuickAction.stories.tsx +15 -0
- package/src/components/quickAction/QuickAction.tsx +8 -79
|
@@ -9,7 +9,7 @@ declare const meta: {
|
|
|
9
9
|
Content: (props: import("@base-ui/react").AlertDialogPopupProps) => import("react/jsx-runtime").JSX.Element;
|
|
10
10
|
Image: import("react").FunctionComponent<import("react").DetailedHTMLProps<import("react").ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>>;
|
|
11
11
|
Root: typeof import("@base-ui/react").DialogRoot;
|
|
12
|
-
Trigger: import("react").FunctionComponent<import("@base-ui/react").
|
|
12
|
+
Trigger: import("react").FunctionComponent<import("@base-ui/react").DialogTriggerProps<unknown> & import("react").RefAttributes<HTMLElement>>;
|
|
13
13
|
Close: (props: import("@base-ui/react").AlertDialogCloseProps) => import("react/jsx-runtime").JSX.Element;
|
|
14
14
|
Title: () => import("react/jsx-runtime").JSX.Element;
|
|
15
15
|
Portal: import("react").ForwardRefExoticComponent<Omit<import("@base-ui/react").AlertDialogPortalProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DialogPopupProps, DialogRootProps } from '@base-ui/react/dialog';
|
|
2
2
|
import { RefObject } from 'react';
|
|
3
3
|
import { ButtonProps } from '../button/Button.js';
|
|
4
|
-
export declare const QuickActionRoot: ({ children,
|
|
4
|
+
export declare const QuickActionRoot: ({ children, ...props }: Omit<DialogRootProps, "children"> & {
|
|
5
5
|
children?: React.ReactNode;
|
|
6
6
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
7
7
|
export type QuickActionTriggerProps = ButtonProps;
|
|
@@ -11,7 +11,7 @@ interface QuickActionContentProps extends DialogPopupProps {
|
|
|
11
11
|
align?: 'center' | 'start' | 'end';
|
|
12
12
|
ref?: RefObject<HTMLDivElement>;
|
|
13
13
|
}
|
|
14
|
-
export declare const QuickAction: (({ children,
|
|
14
|
+
export declare const QuickAction: (({ children, ...props }: Omit<DialogRootProps, "children"> & {
|
|
15
15
|
children?: React.ReactNode;
|
|
16
16
|
}) => import("react/jsx-runtime").JSX.Element) & {
|
|
17
17
|
Trigger: ({ className, emphasis, children, ref, ...props }: QuickActionTriggerProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -12,50 +12,19 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
12
12
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
13
|
import { Dialog, } from '@base-ui/react/dialog';
|
|
14
14
|
import clsx from 'clsx';
|
|
15
|
-
import { createContext,
|
|
16
|
-
import useMergedRef from '../../hooks/useMergedRef.js';
|
|
17
|
-
import { useMonitor, useValueMonitor, ValueMonitor, } from '../../systems/ValueMonitor.js';
|
|
15
|
+
import { createContext, useContext, useId } from 'react';
|
|
18
16
|
import { Button } from '../button/Button.js';
|
|
19
17
|
import cls from './QuickAction.module.css';
|
|
20
18
|
const QuickActionIdContext = createContext('qab');
|
|
21
|
-
const TriggerSizeContext = createContext({
|
|
22
|
-
monitor: new ValueMonitor({ width: 0, height: 0 }),
|
|
23
|
-
onRemeasure: () => () => { },
|
|
24
|
-
});
|
|
25
19
|
export const QuickActionRoot = (_a) => {
|
|
26
|
-
var { children
|
|
20
|
+
var { children } = _a, props = __rest(_a, ["children"]);
|
|
27
21
|
const id = useId();
|
|
28
|
-
|
|
29
|
-
const remeasureListener = useRef(() => { });
|
|
30
|
-
const onRemeasure = useCallback((cb) => {
|
|
31
|
-
remeasureListener.current = cb;
|
|
32
|
-
return () => {
|
|
33
|
-
remeasureListener.current = () => { };
|
|
34
|
-
};
|
|
35
|
-
}, []);
|
|
36
|
-
return (_jsx(TriggerSizeContext.Provider, { value: {
|
|
37
|
-
monitor: triggerSizeMonitor,
|
|
38
|
-
onRemeasure,
|
|
39
|
-
}, children: _jsx(Dialog.Root, Object.assign({ onOpenChange: (open, details) => {
|
|
40
|
-
remeasureListener.current();
|
|
41
|
-
onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(open, details);
|
|
42
|
-
} }, props, { children: _jsx(QuickActionIdContext.Provider, { value: id.replace(/:/g, ''), children: children }) })) }));
|
|
22
|
+
return (_jsx(Dialog.Root, Object.assign({}, props, { children: _jsx(QuickActionIdContext.Provider, { value: id.replace(/:/g, ''), children: children }) })));
|
|
43
23
|
};
|
|
44
24
|
const QuickActionTrigger = (_a) => {
|
|
45
25
|
var { className, emphasis = 'primary', children, ref } = _a, props = __rest(_a, ["className", "emphasis", "children", "ref"]);
|
|
46
26
|
const layoutId = useContext(QuickActionIdContext);
|
|
47
|
-
|
|
48
|
-
const measureRef = useRef(null);
|
|
49
|
-
useEffect(() => onRemeasure(() => {
|
|
50
|
-
const el = measureRef.current;
|
|
51
|
-
if (el) {
|
|
52
|
-
console.log('remeasuring trigger size', el.getBoundingClientRect());
|
|
53
|
-
const rect = el.getBoundingClientRect();
|
|
54
|
-
sizeMonitor.set({ width: rect.width, height: rect.height });
|
|
55
|
-
}
|
|
56
|
-
}), [onRemeasure, sizeMonitor]);
|
|
57
|
-
const finalRef = useMergedRef(ref, measureRef);
|
|
58
|
-
return (_jsx(Dialog.Trigger, Object.assign({}, props, { ref: finalRef, render: (_a) => {
|
|
27
|
+
return (_jsx(Dialog.Trigger, Object.assign({}, props, { ref: ref, render: (_a) => {
|
|
59
28
|
var { color: _ } = _a, composed = __rest(_a, ["color"]);
|
|
60
29
|
return (_jsx(Button, Object.assign({ color: props.color, emphasis: emphasis }, composed, { className: clsx(cls.trigger, className), style: {
|
|
61
30
|
// @ts-ignore
|
|
@@ -65,18 +34,8 @@ const QuickActionTrigger = (_a) => {
|
|
|
65
34
|
};
|
|
66
35
|
const QuickActionContent = (_a) => {
|
|
67
36
|
var { children, className, align = 'center', ref, style } = _a, rest = __rest(_a, ["children", "className", "align", "ref", "style"]);
|
|
68
|
-
const innerRef = useRef(null);
|
|
69
|
-
const finalRef = useMergedRef(innerRef, ref);
|
|
70
37
|
const layoutId = useContext(QuickActionIdContext);
|
|
71
|
-
|
|
72
|
-
useMonitor(triggerSizeMonitor, (size) => {
|
|
73
|
-
if (innerRef.current) {
|
|
74
|
-
const style = innerRef.current.style;
|
|
75
|
-
style.setProperty('--trigger-width', `${size.width}px`);
|
|
76
|
-
style.setProperty('--trigger-height', `${size.height}px`);
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
return (_jsx(Dialog.Portal, { children: _jsx(Dialog.Popup, Object.assign({ ref: finalRef, className: clsx(cls.popup, className), "data-align": align, style: Object.assign({ positionAnchor: `--${layoutId}`, '--trigger-width': triggerSizeMonitor.get().width + 'px', '--trigger-height': triggerSizeMonitor.get().height + 'px' }, style) }, rest, { children: children })) }));
|
|
38
|
+
return (_jsx(Dialog.Portal, { children: _jsx(Dialog.Popup, Object.assign({ ref: ref, className: clsx(cls.popup, className), "data-align": align, style: Object.assign({ positionAnchor: `--${layoutId}` }, style) }, rest, { children: children })) }));
|
|
80
39
|
};
|
|
81
40
|
export const QuickAction = Object.assign(QuickActionRoot, {
|
|
82
41
|
Trigger: QuickActionTrigger,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuickAction.js","sourceRoot":"","sources":["../../../src/components/quickAction/QuickAction.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EACN,MAAM,GAGN,MAAM,uBAAuB,CAAC;AAC/B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,
|
|
1
|
+
{"version":3,"file":"QuickAction.js","sourceRoot":"","sources":["../../../src/components/quickAction/QuickAction.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EACN,MAAM,GAGN,MAAM,uBAAuB,CAAC;AAC/B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAa,UAAU,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AACpE,OAAO,EAAE,MAAM,EAAe,MAAM,qBAAqB,CAAC;AAC1D,OAAO,GAAG,MAAM,0BAA0B,CAAC;AAE3C,MAAM,oBAAoB,GAAG,aAAa,CAAS,KAAK,CAAC,CAAC;AAE1D,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAK/B,EAAE,EAAE;QAL2B,EAC/B,QAAQ,OAIR,EAHG,KAAK,cAFuB,YAG/B,CADQ;IAIR,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,OAAO,CACN,KAAC,MAAM,CAAC,IAAI,oBAAK,KAAK,cACrB,KAAC,oBAAoB,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,YACxD,QAAQ,GACsB,IACnB,CACd,CAAC;AACH,CAAC,CAAC;AAGF,MAAM,kBAAkB,GAAG,CAAC,EAMF,EAAE,EAAE;QANF,EAC3B,SAAS,EACT,QAAQ,GAAG,SAAS,EACpB,QAAQ,EACR,GAAG,OAEsB,EADtB,KAAK,cALmB,4CAM3B,CADQ;IAER,MAAM,QAAQ,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;IAClD,OAAO,CACN,KAAC,MAAM,CAAC,OAAO,oBACV,KAAK,IACT,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,CAAC,EAAyB,EAAE,EAAE;gBAA7B,EAAE,KAAK,EAAE,CAAC,OAAe,EAAV,QAAQ,cAAvB,SAAyB,CAAF;YAAO,OAAA,CACtC,KAAC,MAAM,kBACN,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,QAAQ,EAAE,QAAQ,IACd,QAAQ,IACZ,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,EACvC,KAAK,EAAE;oBACN,aAAa;oBACb,UAAU,EAAE,KAAK,QAAQ,EAAE;iBAC3B,IACA,CACF,CAAA;SAAA,YAEA,QAAQ,IACO,CACjB,CAAC;AACH,CAAC,CAAC;AAQF,MAAM,kBAAkB,GAAG,CAAC,EAOF,EAAE,EAAE;QAPF,EAC3B,QAAQ,EACR,SAAS,EACT,KAAK,GAAG,QAAQ,EAChB,GAAG,EACH,KAAK,OAEoB,EADtB,IAAI,cANoB,kDAO3B,CADO;IAEP,MAAM,QAAQ,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;IAElD,OAAO,CACN,KAAC,MAAM,CAAC,MAAM,cACb,KAAC,MAAM,CAAC,KAAK,kBACZ,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,gBACzB,KAAK,EACjB,KAAK,EACJ,gBACC,cAAc,EAAE,KAAK,QAAQ,EAAE,IAC5B,KAAK,CACD,IAEL,IAAI,cAEP,QAAQ,IACK,GACA,CAChB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE;IACzD,OAAO,EAAE,kBAAkB;IAC3B,OAAO,EAAE,kBAAkB;CAC3B,CAAC,CAAC"}
|
|
@@ -18,6 +18,8 @@
|
|
|
18
18
|
padding: 0;
|
|
19
19
|
|
|
20
20
|
clip-path: inset(-50px -50px -50px -50px);
|
|
21
|
+
transform: translate(0px, 0px) scale(1);
|
|
22
|
+
will-change: transform;
|
|
21
23
|
|
|
22
24
|
bottom: anchor(bottom);
|
|
23
25
|
&[data-align='center'] {
|
|
@@ -32,24 +34,15 @@
|
|
|
32
34
|
|
|
33
35
|
&[data-starting-style],
|
|
34
36
|
&[data-ending-style] {
|
|
37
|
+
clip-path: inset(200px 200px 200px 200px);
|
|
35
38
|
&[data-align='center'] {
|
|
36
|
-
|
|
37
|
-
calc(100% - var(--trigger-height, 0px))
|
|
38
|
-
calc((100% - var(--trigger-width, 0px)) / 2) 0
|
|
39
|
-
calc((100% - var(--trigger-width, 0px)) / 2) round 200px
|
|
40
|
-
);
|
|
39
|
+
transform: translate(0px, 60px) scale(0.8);
|
|
41
40
|
}
|
|
42
41
|
&[data-align='start'] {
|
|
43
|
-
|
|
44
|
-
calc(100% - var(--trigger-height, 0px))
|
|
45
|
-
calc(100% - var(--trigger-width, 0px)) 0 0 round 200px
|
|
46
|
-
);
|
|
42
|
+
transform: translate(-60px, 60px) scale(0.8);
|
|
47
43
|
}
|
|
48
44
|
&[data-align='end'] {
|
|
49
|
-
|
|
50
|
-
calc(100% - var(--trigger-height, 0px)) 0 0
|
|
51
|
-
calc(100% - var(--trigger-width, 0px)) round 200px
|
|
52
|
-
);
|
|
45
|
+
transform: translate(60px, 60px) scale(0.8);
|
|
53
46
|
}
|
|
54
47
|
}
|
|
55
48
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Autocomplete } from '../autocomplete/Autocomplete.js';
|
|
3
3
|
import clsx from 'clsx';
|
|
4
|
+
import { NavBar, NavBarItem, NavBarItemIcon, NavBarItemText, PageNav, } from '../../index.js';
|
|
4
5
|
import { Box } from '../box/Box.js';
|
|
5
6
|
import { Icon } from '../icon/Icon.js';
|
|
6
7
|
import { PageContent } from '../layouts/PageContent.js';
|
|
@@ -44,11 +45,11 @@ const GroupedAutocomplete = Autocomplete.createGrouped();
|
|
|
44
45
|
const ActionContent = () => (_jsx(GroupedAutocomplete, { items: groupedItems, children: _jsxs(Box, { p: true, col: true, children: [_jsx(GroupedAutocomplete.List, { children: (group) => (_jsxs(GroupedAutocomplete.Group, { children: [_jsx(GroupedAutocomplete.GroupLabel, { children: group.category }), _jsx(GroupedAutocomplete.GroupList, { children: group.items.map((item) => (_jsx(GroupedAutocomplete.Item, { value: item.id, children: item.label }, item.id))) })] }, group.category)) }), _jsx(GroupedAutocomplete.Empty, { children: "No results found." }), _jsx(GroupedAutocomplete.Input, { disableCaret: true, style: { width: '100%' } })] }) }));
|
|
45
46
|
export const Default = {
|
|
46
47
|
render(args) {
|
|
47
|
-
return (
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
return (_jsxs(PageRoot, { children: [_jsx(PageContent, { children: _jsx(PageNowPlaying, { className: clsx({
|
|
49
|
+
'items-center': args.align === 'center',
|
|
50
|
+
'items-start': args.align === 'start',
|
|
51
|
+
'items-end': args.align === 'end',
|
|
52
|
+
}), style: { display: 'flex', flexDirection: 'column' }, children: _jsxs(QuickAction, Object.assign({}, args, { children: [_jsx(QuickAction.Trigger, { children: _jsx(Icon, { name: "plus" }) }), _jsx(QuickAction.Content, { style: { width: '95vw' }, align: args.align, children: _jsx(ActionContent, {}) })] })) }) }), _jsx(PageNav, { children: _jsx(NavBar, { children: _jsxs(NavBarItem, { children: [_jsx(NavBarItemIcon, { name: "home" }), _jsx(NavBarItemText, { children: "Home" })] }) }) })] }));
|
|
52
53
|
},
|
|
53
54
|
};
|
|
54
55
|
//# sourceMappingURL=QuickAction.stories.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuickAction.stories.js","sourceRoot":"","sources":["../../../src/components/quickAction/QuickAction.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAE/D,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,IAAI,GAAG;IACZ,KAAK,EAAE,wBAAwB;IAC/B,QAAQ,EAAE;QACT,KAAK,EAAE;YACN,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC;YACnC,WAAW,EACV,+DAA+D;YAChE,YAAY,EAAE,QAAQ;SACtB;KACD;IACD,UAAU,EAAE;QACX,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;KAC5B;CACc,CAAC;AAEjB,eAAe,IAAI,CAAC;AAQpB,MAAM,YAAY,GAAgB;IACjC;QACC,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE;YACN,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAC/B,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;YACjC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;SACjC;KACD;IACD;QACC,QAAQ,EAAE,SAAS;QACnB,KAAK,EAAE;YACN,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;YACzC,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;YACvC,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;SACvC;KACD;CACD,CAAC;AACF,MAAM,mBAAmB,GAAG,YAAY,CAAC,aAAa,EAAa,CAAC;AAEpE,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,CAC3B,KAAC,mBAAmB,IAAC,KAAK,EAAE,YAAY,YACvC,MAAC,GAAG,IAAC,CAAC,QAAC,GAAG,mBACT,KAAC,mBAAmB,CAAC,IAAI,cACvB,CAAC,KAAK,EAAE,EAAE,CAAC,CACX,MAAC,mBAAmB,CAAC,KAAK,eACzB,KAAC,mBAAmB,CAAC,UAAU,cAC7B,KAAK,CAAC,QAAQ,GACiB,EACjC,KAAC,mBAAmB,CAAC,SAAS,cAC5B,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC1B,KAAC,mBAAmB,CAAC,IAAI,IAAe,KAAK,EAAE,IAAI,CAAC,EAAE,YACpD,IAAI,CAAC,KAAK,IADmB,IAAI,CAAC,EAAE,CAEX,CAC3B,CAAC,GAC6B,KAVD,KAAK,CAAC,QAAQ,CAWlB,CAC5B,GACyB,EAC3B,KAAC,mBAAmB,CAAC,KAAK,oCAA8C,EACxE,KAAC,mBAAmB,CAAC,KAAK,IAAC,YAAY,QAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAI,IAC/D,GACe,CACtB,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAU;IAC7B,MAAM,CAAC,IAAI;QACV,OAAO,CACN,
|
|
1
|
+
{"version":3,"file":"QuickAction.stories.js","sourceRoot":"","sources":["../../../src/components/quickAction/QuickAction.stories.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@a-type/ui",
|
|
3
|
-
"version": "6.1.
|
|
3
|
+
"version": "6.1.14",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"repository": {
|
|
6
6
|
"url": "https://github.com/a-type/ui"
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
44
|
"@a-type/utils": "^1.1.9",
|
|
45
|
-
"@base-ui/react": "^1.
|
|
45
|
+
"@base-ui/react": "^1.6.0",
|
|
46
46
|
"@use-gesture/react": "^10.3.1",
|
|
47
47
|
"browser-image-resizer": "^2.4.1",
|
|
48
48
|
"calendar-blocks": "^0.4.0",
|
|
@@ -18,6 +18,8 @@
|
|
|
18
18
|
padding: 0;
|
|
19
19
|
|
|
20
20
|
clip-path: inset(-50px -50px -50px -50px);
|
|
21
|
+
transform: translate(0px, 0px) scale(1);
|
|
22
|
+
will-change: transform;
|
|
21
23
|
|
|
22
24
|
bottom: anchor(bottom);
|
|
23
25
|
&[data-align='center'] {
|
|
@@ -32,24 +34,15 @@
|
|
|
32
34
|
|
|
33
35
|
&[data-starting-style],
|
|
34
36
|
&[data-ending-style] {
|
|
37
|
+
clip-path: inset(200px 200px 200px 200px);
|
|
35
38
|
&[data-align='center'] {
|
|
36
|
-
|
|
37
|
-
calc(100% - var(--trigger-height, 0px))
|
|
38
|
-
calc((100% - var(--trigger-width, 0px)) / 2) 0
|
|
39
|
-
calc((100% - var(--trigger-width, 0px)) / 2) round 200px
|
|
40
|
-
);
|
|
39
|
+
transform: translate(0px, 60px) scale(0.8);
|
|
41
40
|
}
|
|
42
41
|
&[data-align='start'] {
|
|
43
|
-
|
|
44
|
-
calc(100% - var(--trigger-height, 0px))
|
|
45
|
-
calc(100% - var(--trigger-width, 0px)) 0 0 round 200px
|
|
46
|
-
);
|
|
42
|
+
transform: translate(-60px, 60px) scale(0.8);
|
|
47
43
|
}
|
|
48
44
|
&[data-align='end'] {
|
|
49
|
-
|
|
50
|
-
calc(100% - var(--trigger-height, 0px)) 0 0
|
|
51
|
-
calc(100% - var(--trigger-width, 0px)) round 200px
|
|
52
|
-
);
|
|
45
|
+
transform: translate(60px, 60px) scale(0.8);
|
|
53
46
|
}
|
|
54
47
|
}
|
|
55
48
|
|
|
@@ -2,6 +2,13 @@ import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
|
2
2
|
import { Autocomplete } from '../autocomplete/Autocomplete.js';
|
|
3
3
|
|
|
4
4
|
import clsx from 'clsx';
|
|
5
|
+
import {
|
|
6
|
+
NavBar,
|
|
7
|
+
NavBarItem,
|
|
8
|
+
NavBarItemIcon,
|
|
9
|
+
NavBarItemText,
|
|
10
|
+
PageNav,
|
|
11
|
+
} from '../../index.js';
|
|
5
12
|
import { Box } from '../box/Box.js';
|
|
6
13
|
import { Icon } from '../icon/Icon.js';
|
|
7
14
|
import { PageContent } from '../layouts/PageContent.js';
|
|
@@ -101,6 +108,14 @@ export const Default: Story = {
|
|
|
101
108
|
</QuickAction>
|
|
102
109
|
</PageNowPlaying>
|
|
103
110
|
</PageContent>
|
|
111
|
+
<PageNav>
|
|
112
|
+
<NavBar>
|
|
113
|
+
<NavBarItem>
|
|
114
|
+
<NavBarItemIcon name="home" />
|
|
115
|
+
<NavBarItemText>Home</NavBarItemText>
|
|
116
|
+
</NavBarItem>
|
|
117
|
+
</NavBar>
|
|
118
|
+
</PageNav>
|
|
104
119
|
</PageRoot>
|
|
105
120
|
);
|
|
106
121
|
},
|
|
@@ -4,69 +4,25 @@ import {
|
|
|
4
4
|
DialogRootProps,
|
|
5
5
|
} from '@base-ui/react/dialog';
|
|
6
6
|
import clsx from 'clsx';
|
|
7
|
-
import {
|
|
8
|
-
createContext,
|
|
9
|
-
RefObject,
|
|
10
|
-
useCallback,
|
|
11
|
-
useContext,
|
|
12
|
-
useEffect,
|
|
13
|
-
useId,
|
|
14
|
-
useRef,
|
|
15
|
-
} from 'react';
|
|
16
|
-
import useMergedRef from '../../hooks/useMergedRef.js';
|
|
17
|
-
import {
|
|
18
|
-
useMonitor,
|
|
19
|
-
useValueMonitor,
|
|
20
|
-
ValueMonitor,
|
|
21
|
-
} from '../../systems/ValueMonitor.js';
|
|
7
|
+
import { createContext, RefObject, useContext, useId } from 'react';
|
|
22
8
|
import { Button, ButtonProps } from '../button/Button.js';
|
|
23
9
|
import cls from './QuickAction.module.css';
|
|
24
10
|
|
|
25
11
|
const QuickActionIdContext = createContext<string>('qab');
|
|
26
12
|
|
|
27
|
-
const TriggerSizeContext = createContext<{
|
|
28
|
-
monitor: ValueMonitor<{ width: number; height: number }>;
|
|
29
|
-
onRemeasure: (cb: () => void) => () => void;
|
|
30
|
-
}>({
|
|
31
|
-
monitor: new ValueMonitor({ width: 0, height: 0 }),
|
|
32
|
-
onRemeasure: () => () => {},
|
|
33
|
-
});
|
|
34
|
-
|
|
35
13
|
export const QuickActionRoot = ({
|
|
36
14
|
children,
|
|
37
|
-
onOpenChange,
|
|
38
15
|
...props
|
|
39
16
|
}: Omit<DialogRootProps, 'children'> & {
|
|
40
17
|
children?: React.ReactNode;
|
|
41
18
|
}) => {
|
|
42
19
|
const id = useId();
|
|
43
|
-
const triggerSizeMonitor = useValueMonitor({ width: 0, height: 0 });
|
|
44
|
-
const remeasureListener = useRef<() => void>(() => {});
|
|
45
|
-
const onRemeasure = useCallback((cb: () => void) => {
|
|
46
|
-
remeasureListener.current = cb;
|
|
47
|
-
return () => {
|
|
48
|
-
remeasureListener.current = () => {};
|
|
49
|
-
};
|
|
50
|
-
}, []);
|
|
51
20
|
return (
|
|
52
|
-
<
|
|
53
|
-
value={
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
>
|
|
58
|
-
<Dialog.Root
|
|
59
|
-
onOpenChange={(open, details) => {
|
|
60
|
-
remeasureListener.current();
|
|
61
|
-
onOpenChange?.(open, details);
|
|
62
|
-
}}
|
|
63
|
-
{...props}
|
|
64
|
-
>
|
|
65
|
-
<QuickActionIdContext.Provider value={id.replace(/:/g, '')}>
|
|
66
|
-
{children}
|
|
67
|
-
</QuickActionIdContext.Provider>
|
|
68
|
-
</Dialog.Root>
|
|
69
|
-
</TriggerSizeContext.Provider>
|
|
21
|
+
<Dialog.Root {...props}>
|
|
22
|
+
<QuickActionIdContext.Provider value={id.replace(/:/g, '')}>
|
|
23
|
+
{children}
|
|
24
|
+
</QuickActionIdContext.Provider>
|
|
25
|
+
</Dialog.Root>
|
|
70
26
|
);
|
|
71
27
|
};
|
|
72
28
|
|
|
@@ -79,25 +35,10 @@ const QuickActionTrigger = ({
|
|
|
79
35
|
...props
|
|
80
36
|
}: QuickActionTriggerProps) => {
|
|
81
37
|
const layoutId = useContext(QuickActionIdContext);
|
|
82
|
-
const { monitor: sizeMonitor, onRemeasure } = useContext(TriggerSizeContext);
|
|
83
|
-
const measureRef = useRef<HTMLButtonElement>(null);
|
|
84
|
-
useEffect(
|
|
85
|
-
() =>
|
|
86
|
-
onRemeasure(() => {
|
|
87
|
-
const el = measureRef.current;
|
|
88
|
-
if (el) {
|
|
89
|
-
console.log('remeasuring trigger size', el.getBoundingClientRect());
|
|
90
|
-
const rect = el.getBoundingClientRect();
|
|
91
|
-
sizeMonitor.set({ width: rect.width, height: rect.height });
|
|
92
|
-
}
|
|
93
|
-
}),
|
|
94
|
-
[onRemeasure, sizeMonitor],
|
|
95
|
-
);
|
|
96
|
-
const finalRef = useMergedRef(ref, measureRef);
|
|
97
38
|
return (
|
|
98
39
|
<Dialog.Trigger
|
|
99
40
|
{...props}
|
|
100
|
-
ref={
|
|
41
|
+
ref={ref}
|
|
101
42
|
render={({ color: _, ...composed }) => (
|
|
102
43
|
<Button
|
|
103
44
|
color={props.color}
|
|
@@ -130,29 +71,17 @@ const QuickActionContent = ({
|
|
|
130
71
|
style,
|
|
131
72
|
...rest
|
|
132
73
|
}: QuickActionContentProps) => {
|
|
133
|
-
const innerRef = useRef<HTMLDivElement>(null);
|
|
134
|
-
const finalRef = useMergedRef(innerRef, ref);
|
|
135
74
|
const layoutId = useContext(QuickActionIdContext);
|
|
136
|
-
const { monitor: triggerSizeMonitor } = useContext(TriggerSizeContext);
|
|
137
|
-
useMonitor(triggerSizeMonitor, (size) => {
|
|
138
|
-
if (innerRef.current) {
|
|
139
|
-
const style = innerRef.current.style;
|
|
140
|
-
style.setProperty('--trigger-width', `${size.width}px`);
|
|
141
|
-
style.setProperty('--trigger-height', `${size.height}px`);
|
|
142
|
-
}
|
|
143
|
-
});
|
|
144
75
|
|
|
145
76
|
return (
|
|
146
77
|
<Dialog.Portal>
|
|
147
78
|
<Dialog.Popup
|
|
148
|
-
ref={
|
|
79
|
+
ref={ref}
|
|
149
80
|
className={clsx(cls.popup, className)}
|
|
150
81
|
data-align={align}
|
|
151
82
|
style={
|
|
152
83
|
{
|
|
153
84
|
positionAnchor: `--${layoutId}`,
|
|
154
|
-
'--trigger-width': triggerSizeMonitor.get().width + 'px',
|
|
155
|
-
'--trigger-height': triggerSizeMonitor.get().height + 'px',
|
|
156
85
|
...style,
|
|
157
86
|
} as any
|
|
158
87
|
}
|