@orioncactuscorp/ui 1.8.0 → 1.9.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 (40) hide show
  1. package/dist/components/Accordion/Accordion.css +1 -1
  2. package/dist/components/Button/Button.css +1 -1
  3. package/dist/components/Checkbox/Checkbox.css +1 -1
  4. package/dist/components/Modal/Modal.css +1 -1
  5. package/dist/components/Modal/Modal.js +698 -547
  6. package/dist/components/Modal/bottomSheetGeometry.js +88 -0
  7. package/dist/components/Modal/modalScrollArbitration.js +9 -7
  8. package/dist/components/Modal/snapPoints.js +9 -8
  9. package/dist/components/Modal/useModalContentBlockTransition.js +64 -0
  10. package/dist/components/Modal/useModalDrag.js +979 -784
  11. package/dist/components/Radio/Radio.css +1 -1
  12. package/dist/components/ScrollArea/ScrollArea.css +1 -1
  13. package/dist/components/ScrollArea/ScrollArea.js +250 -223
  14. package/dist/components/ScrollArea/useScrollAreaGeometryStabilizer.js +36 -0
  15. package/dist/components/TextButton/TextButton.css +1 -1
  16. package/dist/components/TextButton/TextButton.module.scss.js +8 -6
  17. package/dist/styles.css +7 -7
  18. package/dist/ui/src/components/Modal/Modal.d.ts +1 -1
  19. package/dist/ui/src/components/Modal/Modal.d.ts.map +1 -1
  20. package/dist/ui/src/components/Modal/bottomSheetGeometry.d.ts +36 -0
  21. package/dist/ui/src/components/Modal/bottomSheetGeometry.d.ts.map +1 -0
  22. package/dist/ui/src/components/Modal/index.d.ts +1 -1
  23. package/dist/ui/src/components/Modal/index.d.ts.map +1 -1
  24. package/dist/ui/src/components/Modal/modalScrollArbitration.d.ts +6 -1
  25. package/dist/ui/src/components/Modal/modalScrollArbitration.d.ts.map +1 -1
  26. package/dist/ui/src/components/Modal/snapPoints.d.ts +1 -0
  27. package/dist/ui/src/components/Modal/snapPoints.d.ts.map +1 -1
  28. package/dist/ui/src/components/Modal/types.d.ts +8 -0
  29. package/dist/ui/src/components/Modal/types.d.ts.map +1 -1
  30. package/dist/ui/src/components/Modal/useModalContentBlockTransition.d.ts +5 -0
  31. package/dist/ui/src/components/Modal/useModalContentBlockTransition.d.ts.map +1 -0
  32. package/dist/ui/src/components/Modal/useModalDrag.d.ts +5 -1
  33. package/dist/ui/src/components/Modal/useModalDrag.d.ts.map +1 -1
  34. package/dist/ui/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  35. package/dist/ui/src/components/ScrollArea/useScrollAreaGeometryStabilizer.d.ts +11 -0
  36. package/dist/ui/src/components/ScrollArea/useScrollAreaGeometryStabilizer.d.ts.map +1 -0
  37. package/package.json +2 -1
  38. package/src/scss/mixins/_element.scss +161 -14
  39. package/src/scss/mixins/_element.test.ts +94 -5
  40. package/src/scss/mixins/_icon.scss +27 -0
@@ -1,7 +1,7 @@
1
1
  import { ModalBodyProps, ModalCloseProps, ModalContentProps, ModalFooterProps, ModalHeaderProps, ModalNavigationSectionProps, ModalRootProps, ModalTriggerProps } from './types';
2
2
  export declare function ModalRoot({ children, open, defaultOpen, modal, onOpenChange, canCloseAttempt: canCloseAttemptProp, onCloseAttempt, presentationState: presentationStateProp, defaultPresentationState, onPresentationStateChange, disablePointerDismissal, navigationDepth, dismissBehavior, }: ModalRootProps): import("react/jsx-runtime").JSX.Element;
3
3
  export declare function ModalTrigger({ className, children, render, nativeButton, }: ModalTriggerProps): import("react/jsx-runtime").JSX.Element;
4
- export declare function ModalContent({ className, children, variant, size, resize, backdrop, drag, peekable, snapPoints, defaultSnapPoint, snapPositions, defaultSnapPosition, initialFocus, peekHeight, closeThreshold, scrollLockTimeout, container, style, ...props }: ModalContentProps): import("react/jsx-runtime").JSX.Element;
4
+ export declare function ModalContent({ className, children, variant, size, resize, contentTransition, backdrop, drag, peekable, snapPoints, defaultSnapPoint, snapPositions, defaultSnapPosition, initialFocus, peekHeight, closeThreshold, scrollLockTimeout, container, style, ...props }: ModalContentProps): import("react/jsx-runtime").JSX.Element;
5
5
  export declare function ModalHeader({ className, title, children, leadingContent, trailingContent, closeLabel, closeButton, handle, ref, ...props }: ModalHeaderProps): import("react/jsx-runtime").JSX.Element;
6
6
  export declare function ModalNavigationSection({ className, title, children, expanded, defaultExpanded, onExpandedChange, disabled, forceMount, handle, headingLevel, indicator, titleAsDialogTitle, navigationProps, panelProps, panelContentProps, ref, style, ...props }: ModalNavigationSectionProps): import("react/jsx-runtime").JSX.Element;
7
7
  export declare function ModalBody({ className, children, layout, containerClassName, containerProps, ref, ...props }: ModalBodyProps): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../../../src/components/Modal/Modal.tsx"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EACV,cAAc,EAId,eAAe,EACf,iBAAiB,EAGjB,gBAAgB,EAChB,gBAAgB,EAEhB,2BAA2B,EAE3B,cAAc,EAEd,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAsMjB,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,IAAI,EACJ,WAAW,EACX,KAAY,EACZ,YAAY,EACZ,eAAe,EAAE,mBAAmB,EACpC,cAAc,EACd,iBAAiB,EAAE,qBAAqB,EACxC,wBAAoC,EACpC,yBAAyB,EACzB,uBAAuB,EACvB,eAAmB,EACnB,eAAe,GAChB,EAAE,cAAc,2CAkNhB;AAED,wBAAgB,YAAY,CAAC,EAC3B,SAAc,EACd,QAAQ,EACR,MAAM,EACN,YAAY,GACb,EAAE,iBAAiB,2CAsBnB;AAED,wBAAgB,YAAY,CAAC,EAC3B,SAAc,EACd,QAAQ,EACR,OAAoB,EACpB,IAAe,EACf,MAAkB,EAClB,QAAiB,EACjB,IAAgB,EAChB,QAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,iBAAiB,2CAgVnB;AAED,wBAAgB,WAAW,CAAC,EAC1B,SAAc,EACd,KAAK,EACL,QAAQ,EACR,cAAc,EACd,eAAe,EACf,UAAiB,EACjB,WAAkB,EAClB,MAAa,EACb,GAAG,EACH,GAAG,KAAK,EACT,EAAE,gBAAgB,2CAqDlB;AAED,wBAAgB,sBAAsB,CAAC,EACrC,SAAc,EACd,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,eAAsB,EACtB,gBAAgB,EAChB,QAAgB,EAChB,UAAiB,EACjB,MAAa,EACb,YAAgB,EAChB,SAAS,EACT,kBAAyB,EACzB,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,GAAG,EACH,KAAK,EACL,GAAG,KAAK,EACT,EAAE,2BAA2B,2CAqK7B;AAED,wBAAgB,SAAS,CAAC,EACxB,SAAc,EACd,QAAQ,EACR,MAAkB,EAClB,kBAAuB,EACvB,cAAc,EACd,GAAG,EACH,GAAG,KAAK,EACT,EAAE,cAAc,2CAgEhB;AAED,wBAAgB,WAAW,CAAC,EAC1B,SAAc,EACd,QAAQ,EACR,UAAmB,EACnB,GAAG,EACH,GAAG,KAAK,EACT,EAAE,gBAAgB,2CA8BlB;AAED,wBAAgB,UAAU,CAAC,EACzB,SAAc,EACd,QAA6B,EAC7B,KAAY,EACZ,IAAS,EACT,QAAQ,EACR,OAAO,EACP,GAAG,KAAK,EACT,EAAE,eAAe,2CAsBjB;AAED,QAAA,MAAM,KAAK;;;;;;;;;CAST,CAAC;AAEH,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../../../src/components/Modal/Modal.tsx"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EACV,cAAc,EAId,eAAe,EAEf,iBAAiB,EAGjB,gBAAgB,EAChB,gBAAgB,EAEhB,2BAA2B,EAG3B,cAAc,EAEd,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAuSjB,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,IAAI,EACJ,WAAW,EACX,KAAY,EACZ,YAAY,EACZ,eAAe,EAAE,mBAAmB,EACpC,cAAc,EACd,iBAAiB,EAAE,qBAAqB,EACxC,wBAAoC,EACpC,yBAAyB,EACzB,uBAAuB,EACvB,eAAmB,EACnB,eAAe,GAChB,EAAE,cAAc,2CAkNhB;AAED,wBAAgB,YAAY,CAAC,EAC3B,SAAc,EACd,QAAQ,EACR,MAAM,EACN,YAAY,GACb,EAAE,iBAAiB,2CAsBnB;AAED,wBAAgB,YAAY,CAAC,EAC3B,SAAc,EACd,QAAQ,EACR,OAAoB,EACpB,IAAe,EACf,MAAkB,EAClB,iBAA0B,EAC1B,QAAiB,EACjB,IAAgB,EAChB,QAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,iBAAiB,2CAmiBnB;AAED,wBAAgB,WAAW,CAAC,EAC1B,SAAc,EACd,KAAK,EACL,QAAQ,EACR,cAAc,EACd,eAAe,EACf,UAAiB,EACjB,WAAkB,EAClB,MAAa,EACb,GAAG,EACH,GAAG,KAAK,EACT,EAAE,gBAAgB,2CAqDlB;AAED,wBAAgB,sBAAsB,CAAC,EACrC,SAAc,EACd,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,eAAsB,EACtB,gBAAgB,EAChB,QAAgB,EAChB,UAAiB,EACjB,MAAa,EACb,YAAgB,EAChB,SAAS,EACT,kBAAyB,EACzB,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,GAAG,EACH,KAAK,EACL,GAAG,KAAK,EACT,EAAE,2BAA2B,2CAqK7B;AAED,wBAAgB,SAAS,CAAC,EACxB,SAAc,EACd,QAAQ,EACR,MAAkB,EAClB,kBAAuB,EACvB,cAAc,EACd,GAAG,EACH,GAAG,KAAK,EACT,EAAE,cAAc,2CAgEhB;AAED,wBAAgB,WAAW,CAAC,EAC1B,SAAc,EACd,QAAQ,EACR,UAAmB,EACnB,GAAG,EACH,GAAG,KAAK,EACT,EAAE,gBAAgB,2CA8BlB;AAED,wBAAgB,UAAU,CAAC,EACzB,SAAc,EACd,QAA6B,EAC7B,KAAY,EACZ,IAAS,EACT,QAAQ,EACR,OAAO,EACP,GAAG,KAAK,EACT,EAAE,eAAe,2CAsBjB;AAED,QAAA,MAAM,KAAK;;;;;;;;;CAST,CAAC;AAEH,eAAe,KAAK,CAAC"}
@@ -0,0 +1,36 @@
1
+ export type BottomSheetRestState = {
2
+ kind: 'default-snap';
3
+ } | {
4
+ index: number;
5
+ kind: 'snap';
6
+ } | {
7
+ kind: 'expanded';
8
+ } | {
9
+ kind: 'custom';
10
+ };
11
+ export interface BottomSheetRestStateOptions {
12
+ defaultTranslate: number;
13
+ sheetHeight: number;
14
+ snapHeights: readonly number[];
15
+ translate: number;
16
+ }
17
+ export interface ResizedBottomSheetTranslateOptions {
18
+ currentTranslate: number;
19
+ fallbackTranslate: number;
20
+ restState: BottomSheetRestState;
21
+ previousDefaultTranslate: number;
22
+ previousSheetHeight: number;
23
+ previousSnapHeights: readonly number[];
24
+ targetSheetHeight: number;
25
+ targetDefaultTranslate: number;
26
+ targetSnapHeights: readonly number[];
27
+ }
28
+ export interface ContentSizedBottomSheetHeightOptions {
29
+ contentHeight: number;
30
+ maxHeight?: number;
31
+ snapHeight?: number;
32
+ }
33
+ export declare function resolveContentSizedBottomSheetHeight({ contentHeight, maxHeight, snapHeight, }: ContentSizedBottomSheetHeightOptions): number;
34
+ export declare function resolveBottomSheetRestState({ defaultTranslate, sheetHeight, snapHeights, translate, }: BottomSheetRestStateOptions): BottomSheetRestState;
35
+ export declare function resolveResizedBottomSheetTranslate({ currentTranslate, fallbackTranslate, restState, previousDefaultTranslate, previousSheetHeight, previousSnapHeights, targetSheetHeight, targetDefaultTranslate, targetSnapHeights, }: ResizedBottomSheetTranslateOptions): number;
36
+ //# sourceMappingURL=bottomSheetGeometry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bottomSheetGeometry.d.ts","sourceRoot":"","sources":["../../../../../src/components/Modal/bottomSheetGeometry.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEvB,MAAM,WAAW,2BAA2B;IAC1C,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kCAAkC;IACjD,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,oBAAoB,CAAC;IAChC,wBAAwB,EAAE,MAAM,CAAC;IACjC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,oCAAoC;IACnD,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAuBD,wBAAgB,oCAAoC,CAAC,EACnD,aAAa,EACb,SAAS,EACT,UAAU,GACX,EAAE,oCAAoC,UAOtC;AAED,wBAAgB,2BAA2B,CAAC,EAC1C,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,SAAS,GACV,EAAE,2BAA2B,GAAG,oBAAoB,CAkCpD;AAED,wBAAgB,kCAAkC,CAAC,EACjD,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,EACT,wBAAwB,EACxB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,GAClB,EAAE,kCAAkC,UAyDpC"}
@@ -1,3 +1,3 @@
1
1
  export { default, ModalBody, ModalClose, ModalContent, ModalFooter, ModalHeader, ModalNavigationSection, ModalRoot, ModalTrigger, } from './Modal';
2
- export type { ModalBackdrop, ModalBodyLayout, ModalBodyProps, ModalCloseAttemptDetails, ModalCloseAttemptReason, ModalCloseProps, ModalContentProps, ModalDismissBehavior, ModalDismissBehaviorValue, ModalDrag, ModalFooterProps, ModalHeaderProps, ModalInitialFocus, ModalNavigationHeadingLevel, ModalNavigationSectionProps, ModalPlacement, ModalPresentationState, ModalResize, ModalRootProps, ModalSize, ModalSnapPoint, ModalSnapPosition, ModalTriggerProps, ModalVariant, } from './types';
2
+ export type { ModalBackdrop, ModalBodyLayout, ModalBodyProps, ModalCloseAttemptDetails, ModalCloseAttemptReason, ModalCloseProps, ModalContentTransition, ModalContentProps, ModalDismissBehavior, ModalDismissBehaviorValue, ModalDrag, ModalFooterProps, ModalHeaderProps, ModalInitialFocus, ModalNavigationHeadingLevel, ModalNavigationSectionProps, ModalPlacement, ModalPresentationState, ModalResize, ModalRootProps, ModalSize, ModalSnapPoint, ModalSnapPosition, ModalTriggerProps, ModalVariant, } from './types';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/Modal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,SAAS,EACT,UAAU,EACV,YAAY,EACZ,WAAW,EACX,WAAW,EACX,sBAAsB,EACtB,SAAS,EACT,YAAY,GACb,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,aAAa,EACb,eAAe,EACf,cAAc,EACd,wBAAwB,EACxB,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,yBAAyB,EACzB,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,2BAA2B,EAC3B,2BAA2B,EAC3B,cAAc,EACd,sBAAsB,EACtB,WAAW,EACX,cAAc,EACd,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,GACb,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/Modal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,SAAS,EACT,UAAU,EACV,YAAY,EACZ,WAAW,EACX,WAAW,EACX,sBAAsB,EACtB,SAAS,EACT,YAAY,GACb,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,aAAa,EACb,eAAe,EACf,cAAc,EACd,wBAAwB,EACxB,uBAAuB,EACvB,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,yBAAyB,EACzB,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,2BAA2B,EAC3B,2BAA2B,EAC3B,cAAc,EACd,sBAAsB,EACtB,WAAW,EACX,cAAc,EACd,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,GACb,MAAM,SAAS,CAAC"}
@@ -15,16 +15,21 @@ export declare function getModalScrollState(node: HTMLElement | null): ModalScro
15
15
  export declare function getScrollableAncestor(target: Element | null, boundary: HTMLElement | null): HTMLElement | null;
16
16
  export declare function setModalBodyTouchScrollLock(node: HTMLElement | null, locked: boolean): void;
17
17
  export declare function shouldIgnoreDragTarget(target: EventTarget | null): boolean;
18
+ export declare function hasActiveTextSelection({ boundary, target, }: {
19
+ boundary?: Node | null;
20
+ target: EventTarget | null;
21
+ }): boolean;
18
22
  export declare function shouldLockModalBodyTouchScroll({ target, chrome, bodyNode, }: {
19
23
  target: EventTarget | null;
20
24
  chrome: boolean;
21
25
  bodyNode: HTMLElement | null;
22
26
  }): boolean;
23
- export declare function getBottomTouchDragDecision({ target, deltaY, chrome, bodyNode, }: {
27
+ export declare function getBottomTouchDragDecision({ target, deltaY, chrome, bodyNode, canExpand, }: {
24
28
  target: EventTarget | null;
25
29
  deltaY: number;
26
30
  chrome: boolean;
27
31
  bodyNode: HTMLElement | null;
32
+ canExpand?: boolean;
28
33
  }): TouchDragDecision;
29
34
  export declare function getPopupTouchDragDecision({ target, bodyNode, }: {
30
35
  target: EventTarget | null;
@@ -1 +1 @@
1
- {"version":3,"file":"modalScrollArbitration.d.ts","sourceRoot":"","sources":["../../../../../src/components/Modal/modalScrollArbitration.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACvC,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC,CAAC;AA6BH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,WAAW,GAAG,IAAI,GACvB,IAAI,IAAI,WAAW,CAIrB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,WAIrD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,WAMxD;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,WAAW,GAAG,IAAI,GACvB,gBAAgB,CAMlB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,OAAO,GAAG,IAAI,EACtB,QAAQ,EAAE,WAAW,GAAG,IAAI,sBAY7B;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,WAAW,GAAG,IAAI,EACxB,MAAM,EAAE,OAAO,QAUhB;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,WA0BhE;AA+CD,wBAAgB,8BAA8B,CAAC,EAC7C,MAAM,EACN,MAAM,EACN,QAAQ,GACT,EAAE;IACD,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;CAC9B,WAWA;AAED,wBAAgB,0BAA0B,CAAC,EACzC,MAAM,EACN,MAAM,EACN,MAAM,EACN,QAAQ,GACT,EAAE;IACD,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;CAC9B,GAAG,iBAAiB,CAyBpB;AAED,wBAAgB,yBAAyB,CAAC,EACxC,MAAM,EACN,QAAQ,GACT,EAAE;IACD,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;CAC9B,GAAG,iBAAiB,CAUpB"}
1
+ {"version":3,"file":"modalScrollArbitration.d.ts","sourceRoot":"","sources":["../../../../../src/components/Modal/modalScrollArbitration.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACvC,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC,CAAC;AA6BH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,WAAW,GAAG,IAAI,GACvB,IAAI,IAAI,WAAW,CAIrB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,WAIrD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,WAMxD;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,WAAW,GAAG,IAAI,GACvB,gBAAgB,CAMlB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,OAAO,GAAG,IAAI,EACtB,QAAQ,EAAE,WAAW,GAAG,IAAI,sBAY7B;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,WAAW,GAAG,IAAI,EACxB,MAAM,EAAE,OAAO,QAUhB;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,WA0BhE;AAcD,wBAAgB,sBAAsB,CAAC,EACrC,QAAQ,EACR,MAAM,GACP,EAAE;IACD,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;CAC5B,WAyBA;AAED,wBAAgB,8BAA8B,CAAC,EAC7C,MAAM,EACN,MAAM,EACN,QAAQ,GACT,EAAE;IACD,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;CAC9B,WAWA;AAED,wBAAgB,0BAA0B,CAAC,EACzC,MAAM,EACN,MAAM,EACN,MAAM,EACN,QAAQ,EACR,SAAS,GACV,EAAE;IACD,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,iBAAiB,CA6BpB;AAED,wBAAgB,yBAAyB,CAAC,EACxC,MAAM,EACN,QAAQ,GACT,EAAE;IACD,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;CAC9B,GAAG,iBAAiB,CAUpB"}
@@ -16,6 +16,7 @@ export declare function resolveModalSnapMetrics({ snapPoints, defaultSnapPoint,
16
16
  }): {
17
17
  snapHeights: number[];
18
18
  sheetHeight: number;
19
+ defaultHeight: number;
19
20
  visibleTranslate: number;
20
21
  } | undefined;
21
22
  export declare function resolveModalPopupSnapPositions({ defaultSnapPosition, snapPositions, surfaceMotion, }: {
@@ -1 +1 @@
1
- {"version":3,"file":"snapPoints.d.ts","sourceRoot":"","sources":["../../../../../src/components/Modal/snapPoints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjE,MAAM,WAAW,yCAAyC;IACxD,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,yBAAyB;IACxC,GAAG,EAAE,iBAAiB,CAAC;IACvB,gBAAgB,CAAC,EAAE,yCAAyC,CAAC;IAC7D,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAaD,wBAAgB,uBAAuB,CAAC,EACtC,UAAU,EACV,gBAAgB,EAChB,cAAc,GACf,EAAE;IACD,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAC9B,gBAAgB,CAAC,EAAE,cAAc,CAAC;IAClC,cAAc,EAAE,MAAM,CAAC;CACxB;;;;cAyBA;AAkED,wBAAgB,8BAA8B,CAAC,EAC7C,mBAAmB,EACnB,aAAa,EACb,aAAa,GACd,EAAE;IACD,mBAAmB,CAAC,EAAE,iBAAiB,CAAC;IACxC,aAAa,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC5C,aAAa,EAAE,WAAW,CAAC;CAC5B;;;;;;;;;cA2DA"}
1
+ {"version":3,"file":"snapPoints.d.ts","sourceRoot":"","sources":["../../../../../src/components/Modal/snapPoints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjE,MAAM,WAAW,yCAAyC;IACxD,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,yBAAyB;IACxC,GAAG,EAAE,iBAAiB,CAAC;IACvB,gBAAgB,CAAC,EAAE,yCAAyC,CAAC;IAC7D,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAaD,wBAAgB,uBAAuB,CAAC,EACtC,UAAU,EACV,gBAAgB,EAChB,cAAc,GACf,EAAE;IACD,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAC9B,gBAAgB,CAAC,EAAE,cAAc,CAAC;IAClC,cAAc,EAAE,MAAM,CAAC;CACxB;;;;;cA0BA;AAkED,wBAAgB,8BAA8B,CAAC,EAC7C,mBAAmB,EACnB,aAAa,EACb,aAAa,GACd,EAAE;IACD,mBAAmB,CAAC,EAAE,iBAAiB,CAAC;IACxC,aAAa,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC5C,aAAa,EAAE,WAAW,CAAC;CAC5B;;;;;;;;;cA2DA"}
@@ -5,6 +5,7 @@ export type ModalVariant = 'adaptive' | 'bottom' | 'popup' | 'full';
5
5
  export type ModalPlacement = Exclude<ModalVariant, 'adaptive'>;
6
6
  export type ModalSize = 'small' | 'medium' | 'large';
7
7
  export type ModalResize = 'content' | 'fixed';
8
+ export type ModalContentTransition = 'auto' | 'none';
8
9
  export type ModalBodyLayout = 'content' | 'fill';
9
10
  export type ModalPresentationState = 'visible' | 'peeked';
10
11
  export type ModalBackdrop = 'auto' | 'visible' | 'hidden';
@@ -85,6 +86,13 @@ export interface ModalContentProps extends Omit<React.ComponentPropsWithoutRef<'
85
86
  variant?: ModalVariant;
86
87
  size?: ModalSize;
87
88
  resize?: ModalResize;
89
+ /**
90
+ * Animates ModalContent block-size changes caused by replacing depth views or
91
+ * other content. Popup surfaces animate their content block, while bottom
92
+ * sheets animate their geometry layer so sheet height and translate stay in
93
+ * one owner.
94
+ */
95
+ contentTransition?: ModalContentTransition;
88
96
  backdrop?: ModalBackdrop;
89
97
  drag?: ModalDrag;
90
98
  peekable?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/components/Modal/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/components/Modal/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function useModalContentBlockTransition({ enabled, node, }: {
2
+ enabled: boolean;
3
+ node: HTMLElement | null;
4
+ }): void;
5
+ //# sourceMappingURL=useModalContentBlockTransition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useModalContentBlockTransition.d.ts","sourceRoot":"","sources":["../../../../../src/components/Modal/useModalContentBlockTransition.ts"],"names":[],"mappings":"AAmBA,wBAAgB,8BAA8B,CAAC,EAC7C,OAAO,EACP,IAAI,GACL,EAAE;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;CAC1B,QAoIA"}
@@ -1,14 +1,16 @@
1
1
  import { default as React } from 'react';
2
2
  import { ModalCloseAttemptDetails, ModalDrag, ModalPlacement, ModalSnapPosition } from './types';
3
- export declare function useModalDrag({ enabled, drag, open, placement, surfaceMotionRef, backdropRef, bodyNode, snapHeights, snapPositions, defaultSnapPosition, peekHeight, peekFallback, presentationState, setPresentationState, requestClose, canCloseAttempt, dismissible, visibleTranslate, closeThreshold, scrollLockTimeout, popupSnapLayoutVersion, }: {
3
+ export declare function useModalDrag({ enabled, drag, open, placement, surfaceMotionRef, surfaceMotionNode, backdropRef, bodyNode, snapHeights, sheetHeight, snapPositions, defaultSnapPosition, peekHeight, peekFallback, presentationState, setPresentationState, requestClose, canCloseAttempt, dismissible, preserveShadowOpacity, visibleTranslate, shouldDeferBottomSettle, closeThreshold, scrollLockTimeout, popupSnapLayoutVersion, }: {
4
4
  enabled: boolean;
5
5
  drag: ModalDrag;
6
6
  open: boolean;
7
7
  placement: ModalPlacement;
8
8
  surfaceMotionRef: React.RefObject<HTMLDivElement | null>;
9
+ surfaceMotionNode: HTMLDivElement | null;
9
10
  backdropRef: React.RefObject<HTMLDivElement | null>;
10
11
  bodyNode: HTMLElement | null;
11
12
  snapHeights?: readonly number[];
13
+ sheetHeight?: number;
12
14
  snapPositions?: readonly ModalSnapPosition[];
13
15
  defaultSnapPosition?: ModalSnapPosition;
14
16
  peekHeight?: number;
@@ -21,7 +23,9 @@ export declare function useModalDrag({ enabled, drag, open, placement, surfaceMo
21
23
  }) => boolean;
22
24
  canCloseAttempt: (details?: ModalCloseAttemptDetails) => boolean;
23
25
  dismissible?: boolean;
26
+ preserveShadowOpacity?: boolean;
24
27
  visibleTranslate?: number;
28
+ shouldDeferBottomSettle?: () => boolean;
25
29
  closeThreshold?: number;
26
30
  scrollLockTimeout?: number;
27
31
  popupSnapLayoutVersion?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"useModalDrag.d.ts","sourceRoot":"","sources":["../../../../../src/components/Modal/useModalDrag.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EACV,wBAAwB,EACxB,SAAS,EACT,cAAc,EACd,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAq7BjB,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,QAAQ,EACR,WAAgC,EAChC,aAAoC,EACpC,mBAAmB,EACnB,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,WAAkB,EAClB,gBAAoB,EACpB,cAAqB,EACrB,iBAAuB,EACvB,sBAA0B,GAC3B,EAAE;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,cAAc,CAAC;IAC1B,gBAAgB,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACzD,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACpD,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,aAAa,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC7C,mBAAmB,CAAC,EAAE,iBAAiB,CAAC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,QAAQ,CAAC;IACxB,iBAAiB,EAAE,SAAS,GAAG,QAAQ,CAAC;IACxC,oBAAoB,EAAE,CAAC,iBAAiB,EAAE,SAAS,GAAG,QAAQ,KAAK,IAAI,CAAC;IACxE,YAAY,EAAE,CACZ,OAAO,CAAC,EAAE,wBAAwB,EAClC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,KAClD,OAAO,CAAC;IACb,eAAe,EAAE,CAAC,OAAO,CAAC,EAAE,wBAAwB,KAAK,OAAO,CAAC;IACjE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;2BA4tCW,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC;2BAiNlC,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC;yBAiNlC,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC;6BAAlC,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC;kCAWlC,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC;0BA2IlC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC;wBAwLhC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC;;EA2I3C"}
1
+ {"version":3,"file":"useModalDrag.d.ts","sourceRoot":"","sources":["../../../../../src/components/Modal/useModalDrag.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EACV,wBAAwB,EACxB,SAAS,EACT,cAAc,EACd,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAg8BjB,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,QAAQ,EACR,WAAgC,EAChC,WAAW,EACX,aAAoC,EACpC,mBAAmB,EACnB,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,WAAkB,EAClB,qBAA6B,EAC7B,gBAAoB,EACpB,uBAAuB,EACvB,cAAqB,EACrB,iBAAuB,EACvB,sBAA0B,GAC3B,EAAE;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,cAAc,CAAC;IAC1B,gBAAgB,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACzD,iBAAiB,EAAE,cAAc,GAAG,IAAI,CAAC;IACzC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACpD,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC7C,mBAAmB,CAAC,EAAE,iBAAiB,CAAC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,QAAQ,CAAC;IACxB,iBAAiB,EAAE,SAAS,GAAG,QAAQ,CAAC;IACxC,oBAAoB,EAAE,CAAC,iBAAiB,EAAE,SAAS,GAAG,QAAQ,KAAK,IAAI,CAAC;IACxE,YAAY,EAAE,CACZ,OAAO,CAAC,EAAE,wBAAwB,EAClC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,KAClD,OAAO,CAAC;IACb,eAAe,EAAE,CAAC,OAAO,CAAC,EAAE,wBAAwB,KAAK,OAAO,CAAC;IACjE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uBAAuB,CAAC,EAAE,MAAM,OAAO,CAAC;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;2BAygDW,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC;2BAyOlC,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC;yBAuOlC,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC;6BAAlC,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC;kCAWlC,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC;0BA2IlC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC;wBA0LhC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC;;EA2I3C"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollArea.d.ts","sourceRoot":"","sources":["../../../../../src/components/ScrollArea/ScrollArea.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AA2DzE,wBAAgB,UAAU,CAAC,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,KAAK,EAAE,EAC9D,EAAE,EACF,IAAY,EACZ,QAAQ,EACR,SAAc,EACd,GAAG,EACH,mBAAmB,EAAE,eAA+B,EACpD,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,CAAC,CAAC,GACnB,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,MAAM,eAAe,CAAC,CAAC,CAAC,CAAC,2CA21BlE;AAED,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,KAAK,EAAE,EACvE,EAAE,EACF,QAAQ,EACR,SAAc,EACd,GAAG,EACH,mBAAmB,EAAE,eAAyC,EAC9D,GAAG,KAAK,EACT,EAAE,wBAAwB,CAAC,CAAC,CAAC,2CAyB7B;AAED,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"ScrollArea.d.ts","sourceRoot":"","sources":["../../../../../src/components/ScrollArea/ScrollArea.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AA4DzE,wBAAgB,UAAU,CAAC,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,KAAK,EAAE,EAC9D,EAAE,EACF,IAAY,EACZ,QAAQ,EACR,SAAc,EACd,GAAG,EACH,mBAAmB,EAAE,eAA+B,EACpD,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,CAAC,CAAC,GACnB,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,MAAM,eAAe,CAAC,CAAC,CAAC,CAAC,2CA44BlE;AAED,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,KAAK,EAAE,EACvE,EAAE,EACF,QAAQ,EACR,SAAc,EACd,GAAG,EACH,mBAAmB,EAAE,eAAyC,EAC9D,GAAG,KAAK,EACT,EAAE,wBAAwB,CAAC,CAAC,CAAC,2CAyB7B;AAED,eAAe,UAAU,CAAC"}
@@ -0,0 +1,11 @@
1
+ interface ScrollAreaGeometryStabilizerOptions {
2
+ enabled: boolean;
3
+ getGeometrySignature: () => string;
4
+ updateGeometry: () => void;
5
+ }
6
+ export declare function useScrollAreaGeometryStabilizer({ enabled, getGeometrySignature, updateGeometry, }: ScrollAreaGeometryStabilizerOptions): {
7
+ cancelGeometryUpdate: () => void;
8
+ scheduleGeometryUpdate: () => void;
9
+ };
10
+ export {};
11
+ //# sourceMappingURL=useScrollAreaGeometryStabilizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useScrollAreaGeometryStabilizer.d.ts","sourceRoot":"","sources":["../../../../../src/components/ScrollArea/useScrollAreaGeometryStabilizer.ts"],"names":[],"mappings":"AAQA,UAAU,mCAAmC;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,oBAAoB,EAAE,MAAM,MAAM,CAAC;IACnC,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,wBAAgB,+BAA+B,CAAC,EAC9C,OAAO,EACP,oBAAoB,EACpB,cAAc,GACf,EAAE,mCAAmC;;;EA4DrC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orioncactuscorp/ui",
3
- "version": "1.8.0",
3
+ "version": "1.9.1",
4
4
  "description": "orioncactus UI foundations and core primitives",
5
5
  "private": false,
6
6
  "type": "module",
@@ -88,6 +88,7 @@
88
88
  "test:run": "vitest run",
89
89
  "test:coverage": "vitest run --coverage",
90
90
  "test:e2e": "bun run --cwd ../.. build && bun run --cwd ../.. example:build && playwright test",
91
+ "test:e2e:ci": "bun run --cwd ../.. example:build && playwright test",
91
92
  "storybook": "node ../../scripts/storybook-watchdog.mjs --cwd packages/ui --port 6006",
92
93
  "storybook:direct": "storybook dev -p 6006",
93
94
  "build-storybook": "storybook build"
@@ -57,53 +57,200 @@
57
57
  @return math.div(math.floor($spread * $precision), $precision) * 1px;
58
58
  }
59
59
 
60
+ $oc-border-side-tokens: (top, right, bottom, left) !default;
61
+ $oc-border-placement-tokens: (inset, outer) !default;
62
+ $oc-border-style-tokens: (solid) !default;
63
+
64
+ @function _oc-border-is-side-token($value) {
65
+ @return $value == all or list.index($oc-border-side-tokens, $value) != null;
66
+ }
67
+
68
+ @function _oc-border-is-placement-token($value) {
69
+ @return list.index($oc-border-placement-tokens, $value) != null;
70
+ }
71
+
72
+ @function _oc-border-is-style-token($value) {
73
+ @return list.index($oc-border-style-tokens, $value) != null;
74
+ }
75
+
76
+ @function _oc-border-list-looks-like-shorthand($value) {
77
+ @each $item in $value {
78
+ @if meta.type-of($item) == 'number' or _oc-border-is-side-token($item) or _oc-border-is-placement-token($item) or _oc-border-is-style-token($item) {
79
+ @return true;
80
+ }
81
+ }
82
+
83
+ @return false;
84
+ }
85
+
86
+ @function _oc-border-flatten-args($args) {
87
+ $tokens: ();
88
+
89
+ @each $arg in $args {
90
+ @if meta.type-of($arg) == 'list' and list.separator($arg) == space and not list.is-bracketed($arg) and _oc-border-list-looks-like-shorthand($arg) {
91
+ @each $item in $arg {
92
+ $tokens: list.append($tokens, $item);
93
+ }
94
+ } @else {
95
+ $tokens: list.append($tokens, $arg);
96
+ }
97
+ }
98
+
99
+ @return $tokens;
100
+ }
101
+
102
+ @function _oc-border-negative($width) {
103
+ @if meta.type-of($width) == 'number' {
104
+ @return -$width;
105
+ }
106
+
107
+ @return calc(#{$width} * -1);
108
+ }
109
+
110
+ @function _oc-border-shadow-item($width, $color, $side, $placement) {
111
+ @if $side == all {
112
+ @if $placement == inset {
113
+ @return inset 0 0 0 $width $color;
114
+ }
115
+
116
+ @return 0 0 0 $width $color;
117
+ }
118
+
119
+ @if $placement == inset {
120
+ @if $side == top {
121
+ @return inset 0 $width 0 0 $color;
122
+ }
123
+
124
+ @if $side == right {
125
+ @return inset _oc-border-negative($width) 0 0 0 $color;
126
+ }
127
+
128
+ @if $side == bottom {
129
+ @return inset 0 _oc-border-negative($width) 0 0 $color;
130
+ }
131
+
132
+ @return inset $width 0 0 0 $color;
133
+ }
134
+
135
+ @if $side == top {
136
+ @return 0 _oc-border-negative($width) 0 0 $color;
137
+ }
138
+
139
+ @if $side == right {
140
+ @return $width 0 0 0 $color;
141
+ }
142
+
143
+ @if $side == bottom {
144
+ @return 0 $width 0 0 $color;
145
+ }
146
+
147
+ @return _oc-border-negative($width) 0 0 0 $color;
148
+ }
149
+
150
+ @function _oc-border-shadow($width, $color, $sides, $placement) {
151
+ @if list.index($sides, all) != null {
152
+ @return _oc-border-shadow-item($width, $color, all, $placement);
153
+ }
154
+
155
+ $shadows: ();
156
+
157
+ @each $side in $sides {
158
+ $shadows: list.append($shadows, _oc-border-shadow-item($width, $color, $side, $placement), comma);
159
+ }
160
+
161
+ @return $shadows;
162
+ }
163
+
60
164
  @function _oc-border-args($args) {
61
- $count: list.length($args);
165
+ $tokens: _oc-border-flatten-args($args);
166
+ $count: list.length($tokens);
167
+ $width: null;
168
+ $color: null;
169
+ $sides: ();
170
+ $placement: inset;
62
171
 
63
172
  @if $count == 0 {
64
- @return (1px, currentColor);
173
+ @return (1px, currentcolor, (all), inset);
65
174
  }
66
175
 
67
- @if $count == 1 {
68
- $value: list.nth($args, 1);
176
+ @if list.length($args) == 2 and list.length(list.nth($args, 1)) == 1 and not _oc-border-is-side-token(list.nth($args, 1)) and not _oc-border-is-placement-token(list.nth($args, 1)) {
177
+ $second: list.nth($args, 2);
69
178
 
70
- @if meta.type-of($value) == 'number' {
71
- @return ($value, currentColor);
179
+ @if not _oc-border-is-side-token($second) and not _oc-border-is-placement-token($second) and not _oc-border-is-style-token($second) {
180
+ @return (list.nth($args, 1), $second, (all), inset);
72
181
  }
182
+ }
183
+
184
+ @each $token in $tokens {
185
+ @if meta.type-of($token) == 'number' {
186
+ @if $width != null {
187
+ @error 'oc-border accepts only one width token.';
188
+ }
189
+
190
+ $width: $token;
191
+ } @else if _oc-border-is-side-token($token) {
192
+ @if $token == all {
193
+ $sides: (all);
194
+ } @else if list.index($sides, all) == null and list.index($sides, $token) == null {
195
+ $sides: list.append($sides, $token);
196
+ }
197
+ } @else if _oc-border-is-placement-token($token) {
198
+ @if $placement != inset and $placement != $token {
199
+ @error 'oc-border accepts only one placement token.';
200
+ }
201
+
202
+ $placement: $token;
203
+ } @else if _oc-border-is-style-token($token) {
204
+ // Box-shadow strokes only support solid rendering; the token is accepted for CSS border shorthand familiarity.
205
+ } @else {
206
+ @if $color != null {
207
+ @error 'oc-border accepts only one color token.';
208
+ }
209
+
210
+ $color: $token;
211
+ }
212
+ }
213
+
214
+ @if $width == null {
215
+ $width: 1px;
216
+ }
73
217
 
74
- @return (1px, $value);
218
+ @if $color == null {
219
+ $color: currentcolor;
75
220
  }
76
221
 
77
- @if $count == 2 {
78
- @return (list.nth($args, 1), list.nth($args, 2));
222
+ @if list.length($sides) == 0 {
223
+ $sides: (all);
79
224
  }
80
225
 
81
- @error 'oc-border accepts zero, one, or two arguments.';
226
+ @return ($width, $color, $sides, $placement);
82
227
  }
83
228
 
84
229
  @mixin oc-border($args...) {
85
230
  $resolved: _oc-border-args($args);
86
231
  $width: list.nth($resolved, 1);
87
232
  $color: list.nth($resolved, 2);
233
+ $sides: list.nth($resolved, 3);
234
+ $placement: list.nth($resolved, 4);
88
235
 
89
- box-shadow: inset 0 0 0 $width $color;
236
+ box-shadow: _oc-border-shadow($width, $color, $sides, $placement);
90
237
 
91
238
  @if _oc-border-is-half-px($width) {
92
239
  /* stylelint-disable block-no-redundant-nested-style-rules, media-feature-range-notation -- WebKit rounds fractional inset strokes differently by DPR; nested selectors keep the correction scoped. */
93
240
  @supports (-webkit-backdrop-filter: none) {
94
241
  & {
95
- box-shadow: inset 0 0 0 _oc-border-webkit-base-spread($width) $color;
242
+ box-shadow: _oc-border-shadow(_oc-border-webkit-base-spread($width), $color, $sides, $placement);
96
243
  }
97
244
 
98
245
  @media only screen and (resolution: 2dppx) {
99
246
  & {
100
- box-shadow: inset 0 0 0 _oc-border-webkit-device-spread($width, 2) $color;
247
+ box-shadow: _oc-border-shadow(_oc-border-webkit-device-spread($width, 2), $color, $sides, $placement);
101
248
  }
102
249
  }
103
250
 
104
251
  @media only screen and (resolution: 3dppx) {
105
252
  & {
106
- box-shadow: inset 0 0 0 _oc-border-webkit-device-spread($width, 3) $color;
253
+ box-shadow: _oc-border-shadow(_oc-border-webkit-device-spread($width, 3), $color, $sides, $placement);
107
254
  }
108
255
  }
109
256
  }
@@ -2,7 +2,7 @@ import { compileString } from 'sass';
2
2
  import { describe, expect, it } from 'vitest';
3
3
 
4
4
  describe('oc-border mixin', () => {
5
- it('emits a 1px currentColor inset border by default', () => {
5
+ it('emits a 1px currentcolor inset border by default', () => {
6
6
  const result = compileString(
7
7
  `
8
8
  @use 'element' as *;
@@ -16,7 +16,7 @@ describe('oc-border mixin', () => {
16
16
  },
17
17
  );
18
18
 
19
- expect(result.css).toContain('box-shadow: inset 0 0 0 1px currentColor;');
19
+ expect(result.css).toContain('box-shadow: inset 0 0 0 1px currentcolor;');
20
20
  });
21
21
 
22
22
  it('treats a single non-number argument as the border color', () => {
@@ -54,6 +54,76 @@ describe('oc-border mixin', () => {
54
54
  expect(result.css).not.toContain('@supports');
55
55
  });
56
56
 
57
+ it('accepts CSS-like space-separated border shorthand', () => {
58
+ const result = compileString(
59
+ `
60
+ @use 'element' as *;
61
+
62
+ .target {
63
+ @include oc-border(1px solid top outer var(--stroke));
64
+ }
65
+ `,
66
+ {
67
+ loadPaths: ['src/scss/mixins'],
68
+ },
69
+ );
70
+
71
+ expect(result.css).toContain('box-shadow: 0 -1px 0 0 var(--stroke);');
72
+ });
73
+
74
+ it('accepts solid as a no-op style token for border shorthand familiarity', () => {
75
+ const result = compileString(
76
+ `
77
+ @use 'element' as *;
78
+
79
+ .target {
80
+ @include oc-border(1px solid black);
81
+ }
82
+ `,
83
+ {
84
+ loadPaths: ['src/scss/mixins'],
85
+ },
86
+ );
87
+
88
+ expect(result.css).toContain('box-shadow: inset 0 0 0 1px black;');
89
+ });
90
+
91
+ it('emits multiple side shadows in shorthand order', () => {
92
+ const result = compileString(
93
+ `
94
+ @use 'element' as *;
95
+
96
+ .target {
97
+ @include oc-border(1px top right var(--stroke));
98
+ }
99
+ `,
100
+ {
101
+ loadPaths: ['src/scss/mixins'],
102
+ },
103
+ );
104
+
105
+ expect(result.css).toContain(
106
+ 'box-shadow: inset 0 1px 0 0 var(--stroke), inset -1px 0 0 0 var(--stroke);',
107
+ );
108
+ });
109
+
110
+ it('keeps comma-separated width and color calls compatible', () => {
111
+ const result = compileString(
112
+ `
113
+ @use 'element' as *;
114
+
115
+ .target {
116
+ @include oc-border(1px, var(--stroke));
117
+ }
118
+ `,
119
+ {
120
+ loadPaths: ['src/scss/mixins'],
121
+ },
122
+ );
123
+
124
+ expect(result.css).toContain('box-shadow: inset 0 0 0 1px var(--stroke);');
125
+ });
126
+
57
127
  it('adds WebKit DPR correction for 1.5px borders', () => {
58
128
  const result = compileString(
59
129
  `
@@ -68,14 +138,33 @@ describe('oc-border mixin', () => {
68
138
  },
69
139
  );
70
140
 
71
- expect(result.css).toContain('box-shadow: inset 0 0 0 1.5px currentColor;');
141
+ expect(result.css).toContain('box-shadow: inset 0 0 0 1.5px currentcolor;');
72
142
  expect(result.css).toContain('@supports (-webkit-backdrop-filter: none)');
73
- expect(result.css).toContain('box-shadow: inset 0 0 0 1px currentColor;');
143
+ expect(result.css).toContain('box-shadow: inset 0 0 0 1px currentcolor;');
74
144
  expect(result.css).toContain('@media only screen and (resolution: 2dppx)');
75
145
  expect(result.css).toContain('@media only screen and (resolution: 3dppx)');
76
146
  expect(result.css).toContain(
77
- 'box-shadow: inset 0 0 0 1.6666px currentColor;',
147
+ 'box-shadow: inset 0 0 0 1.6666px currentcolor;',
148
+ );
149
+ });
150
+
151
+ it('applies WebKit DPR correction to directional outer borders', () => {
152
+ const result = compileString(
153
+ `
154
+ @use 'element' as *;
155
+
156
+ .target {
157
+ @include oc-border(1.5px bottom outer var(--stroke));
158
+ }
159
+ `,
160
+ {
161
+ loadPaths: ['src/scss/mixins'],
162
+ },
78
163
  );
164
+
165
+ expect(result.css).toContain('box-shadow: 0 1.5px 0 0 var(--stroke);');
166
+ expect(result.css).toContain('box-shadow: 0 1px 0 0 var(--stroke);');
167
+ expect(result.css).toContain('box-shadow: 0 1.6666px 0 0 var(--stroke);');
79
168
  });
80
169
 
81
170
  it('generalizes WebKit DPR correction for half-pixel borders', () => {
@@ -0,0 +1,27 @@
1
+ // Sizes an SvgIcon slot from the inherited line box.
2
+ // block-size(높이)만 line box 기준으로 잡고 inline-size는 auto라, SVG viewBox 비율대로
3
+ // 너비가 따라온다. 강제 1:1이 아니라 종횡비 보존.
4
+ // - $inset: line box에서 뺄 breathing room (raw em). 컴포넌트가 $inset-var CSS 변수로
5
+ // size별 override 가능하고, mixin 인자는 그 변수의 default다.
6
+ // - $fallback: `1lh` 미지원(pre-2023) 브라우저 전용. 생략 시 line height를 1.5em로
7
+ // 가정해 `1.5em - inset*2`로 자동 근사한다. 새 컴포넌트는 신경 쓸 필요 없다.
8
+ @mixin oc-icon-box($size-var, $inset-var, $inset: 0.1875em, $fallback: null) {
9
+ $inset-expr: var(#{$inset-var}, #{$inset});
10
+ $fallback-size: $fallback;
11
+
12
+ @if $fallback == null {
13
+ $fallback-size: calc(1.5em - (#{$inset-expr} * 2));
14
+ }
15
+
16
+ inline-size: auto;
17
+
18
+ // BEGIN 1lh fallback layer — `1lh`이 완전 baseline이 되면 이 base 선언과 @supports
19
+ // 래퍼를 지우고 @supports 안의 block-size 한 줄만 이 자리로 올리면 된다. call site 무영향.
20
+ block-size: var(#{$size-var}, #{$fallback-size});
21
+ @supports (block-size: 1lh) {
22
+ // stylelint-disable-next-line no-invalid-position-declaration -- mixin body는 항상 selector 안에서 @include된다
23
+ block-size: var(#{$size-var}, calc(1lh - (#{$inset-expr} * 2)));
24
+ }
25
+
26
+ // END 1lh fallback layer — 위 base 선언 + @supports 래퍼만 삭제.
27
+ }