@atlaskit/top-layer 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/CHANGELOG.md +44 -0
- package/README.md +151 -0
- package/animations/package.json +17 -0
- package/arrow/package.json +17 -0
- package/create-close-event/package.json +17 -0
- package/dialog/package.json +17 -0
- package/dialog-scroll-lock/package.json +17 -0
- package/dist/cjs/animations/presets.js +199 -0
- package/dist/cjs/animations/types.js +5 -0
- package/dist/cjs/arrow/index.js +130 -0
- package/dist/cjs/arrow/types.js +5 -0
- package/dist/cjs/dialog/create-close-event.js +39 -0
- package/dist/cjs/dialog/dialog-content.compiled.css +14 -0
- package/dist/cjs/dialog/dialog-content.js +144 -0
- package/dist/cjs/dialog/index.js +19 -0
- package/dist/cjs/dialog/types.js +5 -0
- package/dist/cjs/dialog-scroll-lock/index.js +46 -0
- package/dist/cjs/entry-points/animations.js +36 -0
- package/dist/cjs/entry-points/arrow.js +12 -0
- package/dist/cjs/entry-points/create-close-event.js +19 -0
- package/dist/cjs/entry-points/dialog-scroll-lock.js +12 -0
- package/dist/cjs/entry-points/dialog.js +12 -0
- package/dist/cjs/entry-points/focus.js +24 -0
- package/dist/cjs/entry-points/placement-map.js +18 -0
- package/dist/cjs/entry-points/popover.js +12 -0
- package/dist/cjs/entry-points/popup-surface.js +12 -0
- package/dist/cjs/entry-points/popup.js +12 -0
- package/dist/cjs/entry-points/use-anchor-position.js +12 -0
- package/dist/cjs/entry-points/use-arrow-navigation.js +18 -0
- package/dist/cjs/entry-points/use-simple-light-dismiss.js +12 -0
- package/dist/cjs/focus/focus.js +115 -0
- package/dist/cjs/focus/index.js +24 -0
- package/dist/cjs/index.js +8 -0
- package/dist/cjs/internal/anchor-positioning-fallback.js +154 -0
- package/dist/cjs/internal/combine.js +29 -0
- package/dist/cjs/internal/ensure-preset-styles.js +34 -0
- package/dist/cjs/internal/reduced-motion.js +27 -0
- package/dist/cjs/internal/resolve-placement.js +24 -0
- package/dist/cjs/internal/role-types.js +66 -0
- package/dist/cjs/internal/set-style.js +42 -0
- package/dist/cjs/internal/slot.js +65 -0
- package/dist/cjs/internal/use-anchor-positioning.js +336 -0
- package/dist/cjs/internal/use-animated-visibility.js +169 -0
- package/dist/cjs/internal/use-animation-preset.js +24 -0
- package/dist/cjs/internal/use-focus-wrap.js +94 -0
- package/dist/cjs/internal/use-initial-focus.js +112 -0
- package/dist/cjs/internal/use-preset-styles.js +27 -0
- package/dist/cjs/placement-map/index.js +147 -0
- package/dist/cjs/popover/create-close-event.js +44 -0
- package/dist/cjs/popover/index.js +19 -0
- package/dist/cjs/popover/popover.compiled.css +13 -0
- package/dist/cjs/popover/popover.js +251 -0
- package/dist/cjs/popover/types.js +5 -0
- package/dist/cjs/popup/index.js +37 -0
- package/dist/cjs/popup/popup-content.js +201 -0
- package/dist/cjs/popup/popup-context.js +42 -0
- package/dist/cjs/popup/popup-surface.compiled.css +5 -0
- package/dist/cjs/popup/popup-surface.js +30 -0
- package/dist/cjs/popup/popup-trigger-function.js +74 -0
- package/dist/cjs/popup/popup-trigger.js +82 -0
- package/dist/cjs/popup/popup.js +70 -0
- package/dist/cjs/popup/types.js +5 -0
- package/dist/cjs/use-arrow-navigation/index.js +18 -0
- package/dist/cjs/use-arrow-navigation/use-arrow-navigation.js +245 -0
- package/dist/cjs/use-simple-light-dismiss/index.js +84 -0
- package/dist/es2019/animations/presets.js +375 -0
- package/dist/es2019/animations/types.js +1 -0
- package/dist/es2019/arrow/index.js +249 -0
- package/dist/es2019/arrow/types.js +1 -0
- package/dist/es2019/dialog/create-close-event.js +34 -0
- package/dist/es2019/dialog/dialog-content.compiled.css +14 -0
- package/dist/es2019/dialog/dialog-content.js +138 -0
- package/dist/es2019/dialog/index.js +2 -0
- package/dist/es2019/dialog/types.js +1 -0
- package/dist/es2019/dialog-scroll-lock/index.js +41 -0
- package/dist/es2019/entry-points/animations.js +1 -0
- package/dist/es2019/entry-points/arrow.js +1 -0
- package/dist/es2019/entry-points/create-close-event.js +2 -0
- package/dist/es2019/entry-points/dialog-scroll-lock.js +1 -0
- package/dist/es2019/entry-points/dialog.js +1 -0
- package/dist/es2019/entry-points/focus.js +1 -0
- package/dist/es2019/entry-points/placement-map.js +1 -0
- package/dist/es2019/entry-points/popover.js +1 -0
- package/dist/es2019/entry-points/popup-surface.js +1 -0
- package/dist/es2019/entry-points/popup.js +1 -0
- package/dist/es2019/entry-points/use-anchor-position.js +1 -0
- package/dist/es2019/entry-points/use-arrow-navigation.js +1 -0
- package/dist/es2019/entry-points/use-simple-light-dismiss.js +1 -0
- package/dist/es2019/focus/focus.js +107 -0
- package/dist/es2019/focus/index.js +1 -0
- package/dist/es2019/index.js +7 -0
- package/dist/es2019/internal/anchor-positioning-fallback.js +153 -0
- package/dist/es2019/internal/combine.js +18 -0
- package/dist/es2019/internal/ensure-preset-styles.js +29 -0
- package/dist/es2019/internal/reduced-motion.js +21 -0
- package/dist/es2019/internal/resolve-placement.js +19 -0
- package/dist/es2019/internal/role-types.js +61 -0
- package/dist/es2019/internal/set-style.js +39 -0
- package/dist/es2019/internal/slot.js +57 -0
- package/dist/es2019/internal/use-anchor-positioning.js +330 -0
- package/dist/es2019/internal/use-animated-visibility.js +159 -0
- package/dist/es2019/internal/use-animation-preset.js +18 -0
- package/dist/es2019/internal/use-focus-wrap.js +90 -0
- package/dist/es2019/internal/use-initial-focus.js +109 -0
- package/dist/es2019/internal/use-preset-styles.js +22 -0
- package/dist/es2019/placement-map/index.js +142 -0
- package/dist/es2019/popover/create-close-event.js +39 -0
- package/dist/es2019/popover/index.js +2 -0
- package/dist/es2019/popover/popover.compiled.css +13 -0
- package/dist/es2019/popover/popover.js +240 -0
- package/dist/es2019/popover/types.js +1 -0
- package/dist/es2019/popup/index.js +33 -0
- package/dist/es2019/popup/popup-content.js +192 -0
- package/dist/es2019/popup/popup-context.js +34 -0
- package/dist/es2019/popup/popup-surface.compiled.css +5 -0
- package/dist/es2019/popup/popup-surface.js +24 -0
- package/dist/es2019/popup/popup-trigger-function.js +69 -0
- package/dist/es2019/popup/popup-trigger.js +76 -0
- package/dist/es2019/popup/popup.js +56 -0
- package/dist/es2019/popup/types.js +1 -0
- package/dist/es2019/use-arrow-navigation/index.js +1 -0
- package/dist/es2019/use-arrow-navigation/use-arrow-navigation.js +238 -0
- package/dist/es2019/use-simple-light-dismiss/index.js +79 -0
- package/dist/esm/animations/presets.js +190 -0
- package/dist/esm/animations/types.js +1 -0
- package/dist/esm/arrow/index.js +123 -0
- package/dist/esm/arrow/types.js +1 -0
- package/dist/esm/dialog/create-close-event.js +33 -0
- package/dist/esm/dialog/dialog-content.compiled.css +14 -0
- package/dist/esm/dialog/dialog-content.js +135 -0
- package/dist/esm/dialog/index.js +2 -0
- package/dist/esm/dialog/types.js +1 -0
- package/dist/esm/dialog-scroll-lock/index.js +41 -0
- package/dist/esm/entry-points/animations.js +1 -0
- package/dist/esm/entry-points/arrow.js +1 -0
- package/dist/esm/entry-points/create-close-event.js +2 -0
- package/dist/esm/entry-points/dialog-scroll-lock.js +1 -0
- package/dist/esm/entry-points/dialog.js +1 -0
- package/dist/esm/entry-points/focus.js +1 -0
- package/dist/esm/entry-points/placement-map.js +1 -0
- package/dist/esm/entry-points/popover.js +1 -0
- package/dist/esm/entry-points/popup-surface.js +1 -0
- package/dist/esm/entry-points/popup.js +1 -0
- package/dist/esm/entry-points/use-anchor-position.js +1 -0
- package/dist/esm/entry-points/use-arrow-navigation.js +1 -0
- package/dist/esm/entry-points/use-simple-light-dismiss.js +1 -0
- package/dist/esm/focus/focus.js +107 -0
- package/dist/esm/focus/index.js +1 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/internal/anchor-positioning-fallback.js +147 -0
- package/dist/esm/internal/combine.js +23 -0
- package/dist/esm/internal/ensure-preset-styles.js +28 -0
- package/dist/esm/internal/reduced-motion.js +21 -0
- package/dist/esm/internal/resolve-placement.js +18 -0
- package/dist/esm/internal/role-types.js +60 -0
- package/dist/esm/internal/set-style.js +36 -0
- package/dist/esm/internal/slot.js +59 -0
- package/dist/esm/internal/use-anchor-positioning.js +323 -0
- package/dist/esm/internal/use-animated-visibility.js +162 -0
- package/dist/esm/internal/use-animation-preset.js +18 -0
- package/dist/esm/internal/use-focus-wrap.js +89 -0
- package/dist/esm/internal/use-initial-focus.js +107 -0
- package/dist/esm/internal/use-preset-styles.js +21 -0
- package/dist/esm/placement-map/index.js +141 -0
- package/dist/esm/popover/create-close-event.js +38 -0
- package/dist/esm/popover/index.js +2 -0
- package/dist/esm/popover/popover.compiled.css +13 -0
- package/dist/esm/popover/popover.js +242 -0
- package/dist/esm/popover/types.js +1 -0
- package/dist/esm/popup/index.js +33 -0
- package/dist/esm/popup/popup-content.js +192 -0
- package/dist/esm/popup/popup-context.js +34 -0
- package/dist/esm/popup/popup-surface.compiled.css +5 -0
- package/dist/esm/popup/popup-surface.js +23 -0
- package/dist/esm/popup/popup-trigger-function.js +69 -0
- package/dist/esm/popup/popup-trigger.js +74 -0
- package/dist/esm/popup/popup.js +61 -0
- package/dist/esm/popup/types.js +1 -0
- package/dist/esm/use-arrow-navigation/index.js +1 -0
- package/dist/esm/use-arrow-navigation/use-arrow-navigation.js +238 -0
- package/dist/esm/use-simple-light-dismiss/index.js +78 -0
- package/dist/types/animations/presets.d.ts +94 -0
- package/dist/types/animations/types.d.ts +42 -0
- package/dist/types/arrow/index.d.ts +24 -0
- package/dist/types/arrow/types.d.ts +29 -0
- package/dist/types/dialog/create-close-event.d.ts +24 -0
- package/dist/types/dialog/dialog-content.d.ts +20 -0
- package/dist/types/dialog/index.d.ts +3 -0
- package/dist/types/dialog/types.d.ts +92 -0
- package/dist/types/dialog-scroll-lock/index.d.ts +24 -0
- package/dist/types/entry-points/animations.d.ts +2 -0
- package/dist/types/entry-points/arrow.d.ts +2 -0
- package/dist/types/entry-points/create-close-event.d.ts +4 -0
- package/dist/types/entry-points/dialog-scroll-lock.d.ts +1 -0
- package/dist/types/entry-points/dialog.d.ts +2 -0
- package/dist/types/entry-points/focus.d.ts +2 -0
- package/dist/types/entry-points/placement-map.d.ts +2 -0
- package/dist/types/entry-points/popover.d.ts +2 -0
- package/dist/types/entry-points/popup-surface.d.ts +2 -0
- package/dist/types/entry-points/popup.d.ts +2 -0
- package/dist/types/entry-points/use-anchor-position.d.ts +1 -0
- package/dist/types/entry-points/use-arrow-navigation.d.ts +2 -0
- package/dist/types/entry-points/use-simple-light-dismiss.d.ts +2 -0
- package/dist/types/focus/focus.d.ts +42 -0
- package/dist/types/focus/index.d.ts +2 -0
- package/dist/types/index.d.ts +0 -0
- package/dist/types/internal/anchor-positioning-fallback.d.ts +24 -0
- package/dist/types/internal/combine.d.ts +14 -0
- package/dist/types/internal/ensure-preset-styles.d.ts +6 -0
- package/dist/types/internal/reduced-motion.d.ts +14 -0
- package/dist/types/internal/resolve-placement.d.ts +16 -0
- package/dist/types/internal/role-types.d.ts +62 -0
- package/dist/types/internal/set-style.d.ts +28 -0
- package/dist/types/internal/slot.d.ts +29 -0
- package/dist/types/internal/use-anchor-positioning.d.ts +95 -0
- package/dist/types/internal/use-animated-visibility.d.ts +74 -0
- package/dist/types/internal/use-animation-preset.d.ts +11 -0
- package/dist/types/internal/use-focus-wrap.d.ts +20 -0
- package/dist/types/internal/use-initial-focus.d.ts +21 -0
- package/dist/types/internal/use-preset-styles.d.ts +15 -0
- package/dist/types/placement-map/index.d.ts +55 -0
- package/dist/types/popover/create-close-event.d.ts +26 -0
- package/dist/types/popover/index.d.ts +3 -0
- package/dist/types/popover/popover.d.ts +22 -0
- package/dist/types/popover/types.d.ts +153 -0
- package/dist/types/popup/index.d.ts +34 -0
- package/dist/types/popup/popup-content.d.ts +14 -0
- package/dist/types/popup/popup-context.d.ts +96 -0
- package/dist/types/popup/popup-surface.d.ts +16 -0
- package/dist/types/popup/popup-trigger-function.d.ts +108 -0
- package/dist/types/popup/popup-trigger.d.ts +23 -0
- package/dist/types/popup/popup.d.ts +14 -0
- package/dist/types/popup/types.d.ts +289 -0
- package/dist/types/use-arrow-navigation/index.d.ts +2 -0
- package/dist/types/use-arrow-navigation/use-arrow-navigation.d.ts +136 -0
- package/dist/types/use-simple-light-dismiss/index.d.ts +45 -0
- package/dist/types-ts4.5/animations/presets.d.ts +94 -0
- package/dist/types-ts4.5/animations/types.d.ts +42 -0
- package/dist/types-ts4.5/arrow/index.d.ts +24 -0
- package/dist/types-ts4.5/arrow/types.d.ts +29 -0
- package/dist/types-ts4.5/dialog/create-close-event.d.ts +24 -0
- package/dist/types-ts4.5/dialog/dialog-content.d.ts +20 -0
- package/dist/types-ts4.5/dialog/index.d.ts +3 -0
- package/dist/types-ts4.5/dialog/types.d.ts +92 -0
- package/dist/types-ts4.5/dialog-scroll-lock/index.d.ts +24 -0
- package/dist/types-ts4.5/entry-points/animations.d.ts +2 -0
- package/dist/types-ts4.5/entry-points/arrow.d.ts +2 -0
- package/dist/types-ts4.5/entry-points/create-close-event.d.ts +4 -0
- package/dist/types-ts4.5/entry-points/dialog-scroll-lock.d.ts +1 -0
- package/dist/types-ts4.5/entry-points/dialog.d.ts +2 -0
- package/dist/types-ts4.5/entry-points/focus.d.ts +2 -0
- package/dist/types-ts4.5/entry-points/placement-map.d.ts +2 -0
- package/dist/types-ts4.5/entry-points/popover.d.ts +2 -0
- package/dist/types-ts4.5/entry-points/popup-surface.d.ts +2 -0
- package/dist/types-ts4.5/entry-points/popup.d.ts +2 -0
- package/dist/types-ts4.5/entry-points/use-anchor-position.d.ts +1 -0
- package/dist/types-ts4.5/entry-points/use-arrow-navigation.d.ts +2 -0
- package/dist/types-ts4.5/entry-points/use-simple-light-dismiss.d.ts +2 -0
- package/dist/types-ts4.5/focus/focus.d.ts +42 -0
- package/dist/types-ts4.5/focus/index.d.ts +2 -0
- package/dist/types-ts4.5/index.d.ts +0 -0
- package/dist/types-ts4.5/internal/anchor-positioning-fallback.d.ts +24 -0
- package/dist/types-ts4.5/internal/combine.d.ts +14 -0
- package/dist/types-ts4.5/internal/ensure-preset-styles.d.ts +6 -0
- package/dist/types-ts4.5/internal/reduced-motion.d.ts +14 -0
- package/dist/types-ts4.5/internal/resolve-placement.d.ts +16 -0
- package/dist/types-ts4.5/internal/role-types.d.ts +62 -0
- package/dist/types-ts4.5/internal/set-style.d.ts +28 -0
- package/dist/types-ts4.5/internal/slot.d.ts +29 -0
- package/dist/types-ts4.5/internal/use-anchor-positioning.d.ts +95 -0
- package/dist/types-ts4.5/internal/use-animated-visibility.d.ts +74 -0
- package/dist/types-ts4.5/internal/use-animation-preset.d.ts +11 -0
- package/dist/types-ts4.5/internal/use-focus-wrap.d.ts +20 -0
- package/dist/types-ts4.5/internal/use-initial-focus.d.ts +21 -0
- package/dist/types-ts4.5/internal/use-preset-styles.d.ts +15 -0
- package/dist/types-ts4.5/placement-map/index.d.ts +55 -0
- package/dist/types-ts4.5/popover/create-close-event.d.ts +26 -0
- package/dist/types-ts4.5/popover/index.d.ts +3 -0
- package/dist/types-ts4.5/popover/popover.d.ts +22 -0
- package/dist/types-ts4.5/popover/types.d.ts +153 -0
- package/dist/types-ts4.5/popup/index.d.ts +34 -0
- package/dist/types-ts4.5/popup/popup-content.d.ts +14 -0
- package/dist/types-ts4.5/popup/popup-context.d.ts +96 -0
- package/dist/types-ts4.5/popup/popup-surface.d.ts +16 -0
- package/dist/types-ts4.5/popup/popup-trigger-function.d.ts +108 -0
- package/dist/types-ts4.5/popup/popup-trigger.d.ts +23 -0
- package/dist/types-ts4.5/popup/popup.d.ts +14 -0
- package/dist/types-ts4.5/popup/types.d.ts +289 -0
- package/dist/types-ts4.5/use-arrow-navigation/index.d.ts +2 -0
- package/dist/types-ts4.5/use-arrow-navigation/use-arrow-navigation.d.ts +136 -0
- package/dist/types-ts4.5/use-simple-light-dismiss/index.d.ts +45 -0
- package/focus/package.json +17 -0
- package/package.json +95 -0
- package/placement-map/package.json +17 -0
- package/popover/package.json +17 -0
- package/popup/package.json +17 -0
- package/popup-surface/package.json +17 -0
- package/use-anchor-position/package.json +17 -0
- package/use-arrow-navigation/package.json +17 -0
- package/use-simple-light-dismiss/package.json +17 -0
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
import { type ReactElement, type ReactNode, type Ref, type RefObject } from 'react';
|
|
2
|
+
import { type TAnimationPreset } from '../animations/types';
|
|
3
|
+
import { type TArrowPreset } from '../arrow/types';
|
|
4
|
+
import { type TPlacement } from '../internal/resolve-placement';
|
|
5
|
+
import { type TRoleRequiringAccessibleName, type TRoleWithImplicitName } from '../internal/role-types';
|
|
6
|
+
import { type TPopoverCloseReason } from '../popover/types';
|
|
7
|
+
/**
|
|
8
|
+
* Describes where to position a popover relative to its trigger.
|
|
9
|
+
*
|
|
10
|
+
* - `axis` — which axis the popover appears along (`'block'` = above/below, `'inline'` = left/right).
|
|
11
|
+
* Defaults to `'block'`.
|
|
12
|
+
* - `edge` — which end of the axis (`'start'` = above/left in LTR, `'end'` = below/right in LTR).
|
|
13
|
+
* Defaults to `'end'`.
|
|
14
|
+
* - `align` — where to align on the cross-axis (`'start'`, `'center'`, `'end'`).
|
|
15
|
+
* Defaults to `'center'`. Can be written explicitly for clarity.
|
|
16
|
+
*
|
|
17
|
+
* All fields are optional. The default `{}` means "below the trigger, centered"
|
|
18
|
+
* (equivalent to Popper.js `'bottom'`).
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts
|
|
22
|
+
* // Below trigger, centered (all defaults)
|
|
23
|
+
* placement={{}}
|
|
24
|
+
* placement={{ axis: 'block', edge: 'end', align: 'center' }}
|
|
25
|
+
*
|
|
26
|
+
* // Below trigger, aligned to the start (left in LTR)
|
|
27
|
+
* placement={{ align: 'start' }}
|
|
28
|
+
*
|
|
29
|
+
* // Above trigger, aligned to the end (right in LTR)
|
|
30
|
+
* placement={{ edge: 'start', align: 'end' }}
|
|
31
|
+
*
|
|
32
|
+
* // Right of trigger, centered
|
|
33
|
+
* placement={{ axis: 'inline' }}
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export type TPlacementOptions = Partial<TPlacement>;
|
|
37
|
+
export type TPopupProps = {
|
|
38
|
+
/**
|
|
39
|
+
* Position of the popup relative to the trigger. Only the Popup compound uses
|
|
40
|
+
* placement; the low-level Popover primitive does not.
|
|
41
|
+
*/
|
|
42
|
+
placement: TPlacementOptions;
|
|
43
|
+
/**
|
|
44
|
+
* Must contain `Popup.Trigger` and `Popup.Content`.
|
|
45
|
+
*/
|
|
46
|
+
children: ReactNode;
|
|
47
|
+
/**
|
|
48
|
+
* Called when the popup is dismissed via light dismiss.
|
|
49
|
+
*
|
|
50
|
+
* The `reason` field indicates how the dismiss occurred:
|
|
51
|
+
* - `'escape'`: the user pressed the Escape key.
|
|
52
|
+
* - `'light-dismiss'`: the user clicked outside (or another auto-dismiss).
|
|
53
|
+
*/
|
|
54
|
+
onClose: (args: {
|
|
55
|
+
reason: TPopoverCloseReason;
|
|
56
|
+
}) => void;
|
|
57
|
+
/**
|
|
58
|
+
* Called when the popup's open state changes.
|
|
59
|
+
*
|
|
60
|
+
* Receives the new open state and a reference to the popover element,
|
|
61
|
+
* which is useful for focus management (e.g. focusing the first interactive
|
|
62
|
+
* child on open via `getFirstFocusable` from `@atlaskit/top-layer/focus`).
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```tsx
|
|
66
|
+
* <Popup
|
|
67
|
+
* onOpenChange={({ isOpen, element }) => {
|
|
68
|
+
* if (isOpen) {
|
|
69
|
+
* getFirstFocusable({ container: element })?.focus();
|
|
70
|
+
* }
|
|
71
|
+
* }}
|
|
72
|
+
* />
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
onOpenChange?: (args: {
|
|
76
|
+
isOpen: boolean;
|
|
77
|
+
element: HTMLDivElement;
|
|
78
|
+
}) => void;
|
|
79
|
+
/**
|
|
80
|
+
* Native popover attribute value. Default is `'auto'`.
|
|
81
|
+
*
|
|
82
|
+
* - `'auto'`: light dismiss (Escape, click-outside). Only one `popover="auto"` can be open at a time; opening another closes the previous.
|
|
83
|
+
* - `'hint'`: allows ephemeral UI (e.g. tooltips) to open without closing other `popover="auto"` popovers. Falls back to `popover="auto"` when unsupported.
|
|
84
|
+
* - `'manual'`: no light dismiss; the consumer controls show/hide entirely. Escape and click-outside do not close the popover.
|
|
85
|
+
*/
|
|
86
|
+
mode?: 'auto' | 'hint' | 'manual';
|
|
87
|
+
/**
|
|
88
|
+
* Test ID applied to the popup content element.
|
|
89
|
+
*/
|
|
90
|
+
testId?: string;
|
|
91
|
+
/**
|
|
92
|
+
* Forces the JavaScript positioning fallback even when the browser
|
|
93
|
+
* supports CSS Anchor Positioning. Useful for testing fallback
|
|
94
|
+
* behavior in any environment, including production.
|
|
95
|
+
*/
|
|
96
|
+
forceFallbackPositioning?: boolean;
|
|
97
|
+
};
|
|
98
|
+
export type TPopupTriggerProps = {
|
|
99
|
+
/**
|
|
100
|
+
* The trigger element. Must accept a ref.
|
|
101
|
+
*/
|
|
102
|
+
children: ReactElement;
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* All ARIA roles supported for popover content.
|
|
106
|
+
* Add new roles to the appropriate category in `internal/role-types.tsx` as needed.
|
|
107
|
+
*/
|
|
108
|
+
export type TPopupRole = TRoleRequiringAccessibleName | TRoleWithImplicitName;
|
|
109
|
+
/**
|
|
110
|
+
* Props shared across all popover role variants.
|
|
111
|
+
*
|
|
112
|
+
* When inside the `<Popup>` compound component, `isOpen` is provided automatically
|
|
113
|
+
* via context (the browser manages visibility through `togglePopover()`).
|
|
114
|
+
*
|
|
115
|
+
* When used standalone (e.g. tooltip, spotlight), the consumer must provide `isOpen`
|
|
116
|
+
* to control visibility. If `animate` is provided, `isOpen` is required at the type
|
|
117
|
+
* level — this ensures exit animations always have a controlled lifecycle.
|
|
118
|
+
*/
|
|
119
|
+
type TPopupContentBaseProps = {
|
|
120
|
+
children: ReactNode;
|
|
121
|
+
/**
|
|
122
|
+
* Ref to the underlying `<div popover>` element.
|
|
123
|
+
*/
|
|
124
|
+
ref?: Ref<HTMLDivElement>;
|
|
125
|
+
/**
|
|
126
|
+
* Controls the width of the popover.
|
|
127
|
+
*
|
|
128
|
+
* - `'content'` (default): popover sizes to its content.
|
|
129
|
+
* - `'trigger'`: popover matches the trigger element's width exactly
|
|
130
|
+
* via CSS `anchor-size(width)`. Falls back to a one-off measurement
|
|
131
|
+
* of `triggerRef.current.offsetWidth` when CSS Anchor Positioning
|
|
132
|
+
* is not supported.
|
|
133
|
+
* - `'min-trigger'`: popover is at least as wide as the trigger, but
|
|
134
|
+
* can grow wider if content requires it. Uses `min-width: anchor-size(width)`.
|
|
135
|
+
* Falls back to a one-off measurement of the trigger's width.
|
|
136
|
+
*/
|
|
137
|
+
width?: 'content' | 'trigger' | 'min-trigger';
|
|
138
|
+
/**
|
|
139
|
+
* Ref to the trigger element for anchor positioning.
|
|
140
|
+
* When absent, anchor positioning is skipped (consumer handles positioning).
|
|
141
|
+
*/
|
|
142
|
+
triggerRef?: RefObject<HTMLElement | null>;
|
|
143
|
+
/**
|
|
144
|
+
* Position of the popover relative to the trigger.
|
|
145
|
+
*/
|
|
146
|
+
placement?: TPlacementOptions;
|
|
147
|
+
/**
|
|
148
|
+
* Called when the popover is dismissed via light dismiss (Escape, click outside).
|
|
149
|
+
* When an animation preset is provided, `onClose` is called after the exit
|
|
150
|
+
* animation completes.
|
|
151
|
+
*
|
|
152
|
+
* The `reason` field indicates how the dismiss occurred:
|
|
153
|
+
* - `'escape'`: the user pressed the Escape key.
|
|
154
|
+
* - `'light-dismiss'`: the user clicked outside (or another auto-dismiss).
|
|
155
|
+
*/
|
|
156
|
+
onClose?: (args: {
|
|
157
|
+
reason: TPopoverCloseReason;
|
|
158
|
+
}) => void;
|
|
159
|
+
/**
|
|
160
|
+
* Test ID applied to the popover content element.
|
|
161
|
+
*/
|
|
162
|
+
testId?: string;
|
|
163
|
+
/**
|
|
164
|
+
* Gap between the popover and its trigger, in pixels.
|
|
165
|
+
* Defaults to 8 (design token `space.100`). Tooltip uses 4.
|
|
166
|
+
*/
|
|
167
|
+
offset?: number;
|
|
168
|
+
/**
|
|
169
|
+
* Forces the JavaScript positioning fallback even when the browser
|
|
170
|
+
* supports CSS Anchor Positioning. Useful for testing fallback
|
|
171
|
+
* behavior in any environment, including production.
|
|
172
|
+
*/
|
|
173
|
+
forceFallbackPositioning?: boolean;
|
|
174
|
+
/**
|
|
175
|
+
* Arrow preset from `@atlaskit/top-layer/arrow`.
|
|
176
|
+
*
|
|
177
|
+
* When provided, renders CSS arrows that automatically flip when the
|
|
178
|
+
* popover flips via `@position-try` fallbacks. The arrows inherit
|
|
179
|
+
* their background color from the popover element.
|
|
180
|
+
*
|
|
181
|
+
* @example
|
|
182
|
+
* ```tsx
|
|
183
|
+
* import { arrow } from '@atlaskit/top-layer/arrow';
|
|
184
|
+
*
|
|
185
|
+
* const myArrow = arrow();
|
|
186
|
+
* <Popup.Content arrow={myArrow} />
|
|
187
|
+
* ```
|
|
188
|
+
*
|
|
189
|
+
* Constraints:
|
|
190
|
+
* - `box-shadow` is disabled on the popover (incompatible with the
|
|
191
|
+
* `clip-path: inset() margin-box` technique)
|
|
192
|
+
* - `::before` and `::after` pseudo-elements are consumed by the arrows
|
|
193
|
+
* - Only works with CSS Anchor Positioning; no arrow in the JS fallback
|
|
194
|
+
*/
|
|
195
|
+
arrow?: false | TArrowPreset;
|
|
196
|
+
/**
|
|
197
|
+
* Native popover attribute value. Default is `'auto'`.
|
|
198
|
+
*
|
|
199
|
+
* - `'auto'`: light dismiss (Escape, click-outside). Only one `popover="auto"` can be open at a time; opening another closes the previous.
|
|
200
|
+
* - `'hint'`: allows ephemeral UI (e.g. tooltips) to open without closing other `popover="auto"` popovers. When the browser does not support `popover="hint"`, the component automatically falls back to `popover="auto"`; this fallback is transparent to the consumer.
|
|
201
|
+
* - `'manual'`: no light dismiss; the consumer controls show/hide entirely (e.g. Flag). Escape and click-outside do not close the popover.
|
|
202
|
+
*/
|
|
203
|
+
mode?: 'auto' | 'hint' | 'manual';
|
|
204
|
+
/**
|
|
205
|
+
* Animation preset for entry/exit transitions.
|
|
206
|
+
*
|
|
207
|
+
* - `TAnimationPreset`: a preset object (e.g. from `@atlaskit/top-layer/animations`).
|
|
208
|
+
* Entry animation plays via `@starting-style`, exit via `allow-discrete`.
|
|
209
|
+
* - `undefined` / `false`: no animation.
|
|
210
|
+
*
|
|
211
|
+
* When used standalone (outside `<Popup>` compound), pair with `isOpen` for exit
|
|
212
|
+
* animations to work correctly. Inside the compound, `isOpen` is provided via context.
|
|
213
|
+
*
|
|
214
|
+
* Animations use `@starting-style` and `allow-discrete` for progressive
|
|
215
|
+
* enhancement: browsers without support show/hide instantly.
|
|
216
|
+
*/
|
|
217
|
+
animate?: false | TAnimationPreset;
|
|
218
|
+
/**
|
|
219
|
+
* Whether the popover is open.
|
|
220
|
+
*
|
|
221
|
+
* Controls `showPopover()` / `hidePopover()` on the underlying element.
|
|
222
|
+
* Inside the `<Popup>` compound, `isOpen` is provided automatically via context
|
|
223
|
+
* (the browser manages state through `togglePopover()`).
|
|
224
|
+
*
|
|
225
|
+
* For standalone usage, provide `isOpen` to control visibility — especially
|
|
226
|
+
* when `animate` is set, so the exit animation lifecycle works correctly.
|
|
227
|
+
*
|
|
228
|
+
* @example
|
|
229
|
+
* ```tsx
|
|
230
|
+
* <Popup.Content
|
|
231
|
+
* role="tooltip"
|
|
232
|
+
* isOpen={isVisible}
|
|
233
|
+
* animate={slideAndFade()}
|
|
234
|
+
* >
|
|
235
|
+
* Tooltip content
|
|
236
|
+
* </Popup.Content>
|
|
237
|
+
* ```
|
|
238
|
+
*/
|
|
239
|
+
isOpen?: boolean;
|
|
240
|
+
};
|
|
241
|
+
/**
|
|
242
|
+
* Popup content props.
|
|
243
|
+
*
|
|
244
|
+
* Roles like `'dialog'`, `'alertdialog'`, and `'menu'` require an accessible
|
|
245
|
+
* name. Provide either `label` (aria-label) or `labelledBy` (aria-labelledby).
|
|
246
|
+
* TypeScript enforces this at compile time.
|
|
247
|
+
*/
|
|
248
|
+
export type TPopupContentProps = TPopupContentBaseProps & (({
|
|
249
|
+
/**
|
|
250
|
+
* ARIA role for the popover. Roles that are ARIA landmarks (`dialog`,
|
|
251
|
+
* `alertdialog`, `menu`) require an accessible name.
|
|
252
|
+
*/
|
|
253
|
+
role: TRoleRequiringAccessibleName;
|
|
254
|
+
} & ({
|
|
255
|
+
/**
|
|
256
|
+
* Accessible name via `aria-label`.
|
|
257
|
+
*/
|
|
258
|
+
label: string;
|
|
259
|
+
/**
|
|
260
|
+
* Accessible name via `aria-labelledby`.
|
|
261
|
+
*/
|
|
262
|
+
labelledBy?: string;
|
|
263
|
+
} | {
|
|
264
|
+
/**
|
|
265
|
+
* Accessible name via `aria-label`.
|
|
266
|
+
*/
|
|
267
|
+
label?: string;
|
|
268
|
+
/**
|
|
269
|
+
* Accessible name via `aria-labelledby`.
|
|
270
|
+
*/
|
|
271
|
+
labelledBy: string;
|
|
272
|
+
})) | {
|
|
273
|
+
/**
|
|
274
|
+
* ARIA role for the popover.
|
|
275
|
+
*/
|
|
276
|
+
role: TRoleWithImplicitName;
|
|
277
|
+
/**
|
|
278
|
+
* Accessible name via `aria-label`.
|
|
279
|
+
*/
|
|
280
|
+
label?: string;
|
|
281
|
+
/**
|
|
282
|
+
* Accessible name via `aria-labelledby`.
|
|
283
|
+
*/
|
|
284
|
+
labelledBy?: string;
|
|
285
|
+
});
|
|
286
|
+
export type TPopupSurfaceProps = {
|
|
287
|
+
children: ReactNode;
|
|
288
|
+
};
|
|
289
|
+
export {};
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { type RefObject } from 'react';
|
|
2
|
+
import { type TFocusableFilter } from '../focus';
|
|
3
|
+
/**
|
|
4
|
+
* Returns true if the element belongs to the current menu level of the
|
|
5
|
+
* container — i.e. it is NOT inside a nested `role="menu"` sub-container.
|
|
6
|
+
*
|
|
7
|
+
* Uses `element.closest('[role="menu"]')` to determine the nearest menu
|
|
8
|
+
* scope. If the nearest scope is the container's own `role="menu"` element,
|
|
9
|
+
* the element belongs to this level. If it's a different (nested) menu,
|
|
10
|
+
* the element belongs to a child level and should be excluded.
|
|
11
|
+
*
|
|
12
|
+
* Supports two container patterns:
|
|
13
|
+
*
|
|
14
|
+
* **1. Container has `role="menu"` directly** (preferred — used by avatar-group):
|
|
15
|
+
* ```
|
|
16
|
+
* <div ref={containerRef} role="menu">
|
|
17
|
+
* <button role="menuitem" /> ← isAtCurrentMenuLevel → true
|
|
18
|
+
* <div role="menu"> ← nested sub-menu
|
|
19
|
+
* <button role="menuitem" /> ← isAtCurrentMenuLevel → false
|
|
20
|
+
* </div>
|
|
21
|
+
* </div>
|
|
22
|
+
* ```
|
|
23
|
+
* Uses the simple check: `element.closest('[role="menu"]') === container`
|
|
24
|
+
*
|
|
25
|
+
* **2. Container is a wrapper without `role="menu"`** (used by dropdown-menu,
|
|
26
|
+
* where `MenuGroup` owns `role="menu"` but doesn't accept a ref):
|
|
27
|
+
* ```
|
|
28
|
+
* <div ref={containerRef}> ← wrapper (no role="menu")
|
|
29
|
+
* <MenuGroup role="menu">
|
|
30
|
+
* <button role="menuitem" /> ← isAtCurrentMenuLevel → true
|
|
31
|
+
* <div role="menu"> ← nested sub-menu
|
|
32
|
+
* <button role="menuitem" /> ← isAtCurrentMenuLevel → false
|
|
33
|
+
* </div>
|
|
34
|
+
* </MenuGroup>
|
|
35
|
+
* </div>
|
|
36
|
+
* ```
|
|
37
|
+
* Falls back to walking the DOM to check that the element's closest
|
|
38
|
+
* `role="menu"` is the container's own menu (not doubly nested).
|
|
39
|
+
*
|
|
40
|
+
* Ideally all consumers should use pattern 1 (place the ref directly on the
|
|
41
|
+
* `role="menu"` element). Pattern 2 exists because `@atlaskit/menu`'s
|
|
42
|
+
* `MenuGroup` does not currently accept a ref. If `MenuGroup` gains ref
|
|
43
|
+
* support in the future, dropdown-menu should switch to pattern 1 and the
|
|
44
|
+
* fallback path can be removed.
|
|
45
|
+
*
|
|
46
|
+
* Used both as a `TFocusableFilter` (to scope getNextFocusable etc.) and as
|
|
47
|
+
* a guard to prevent parent menu handlers from acting on events that
|
|
48
|
+
* belong to a nested menu.
|
|
49
|
+
*/
|
|
50
|
+
export declare function isAtCurrentMenuLevel(element: Element, container: HTMLElement): boolean;
|
|
51
|
+
export type TUseArrowNavigationArgs = {
|
|
52
|
+
/**
|
|
53
|
+
* Ref to the container element that holds the focusable items.
|
|
54
|
+
*/
|
|
55
|
+
containerRef: RefObject<HTMLElement | null>;
|
|
56
|
+
/**
|
|
57
|
+
* Called when ArrowRight is pressed on a focused element with `aria-haspopup`.
|
|
58
|
+
*
|
|
59
|
+
* This follows the WAI-ARIA menu pattern: ArrowRight on a menu item that
|
|
60
|
+
* controls a submenu should open that submenu. The consumer decides *how*
|
|
61
|
+
* to open it (e.g. `trigger.click()`, imperative state update, etc.).
|
|
62
|
+
*
|
|
63
|
+
* Only fires when `filter` (if provided) confirms the focused element
|
|
64
|
+
* belongs to the current menu level.
|
|
65
|
+
*/
|
|
66
|
+
onNestedOpen?: ({ trigger }: {
|
|
67
|
+
trigger: HTMLElement;
|
|
68
|
+
}) => void;
|
|
69
|
+
/**
|
|
70
|
+
* Called when ArrowLeft is pressed and the current menu is nested
|
|
71
|
+
* (i.e. the container is inside another `role="menu"`).
|
|
72
|
+
*
|
|
73
|
+
* This follows the WAI-ARIA menu pattern: ArrowLeft in a submenu
|
|
74
|
+
* should close it and return to the parent menu. The consumer
|
|
75
|
+
* decides *how* to close (e.g. calling their close handler).
|
|
76
|
+
*/
|
|
77
|
+
onNestedClose?: () => void;
|
|
78
|
+
/**
|
|
79
|
+
* Called when the user presses Tab to exit the menu.
|
|
80
|
+
*/
|
|
81
|
+
onClose: () => void;
|
|
82
|
+
/**
|
|
83
|
+
* When false, the keydown listener is not attached.
|
|
84
|
+
* Defaults to true.
|
|
85
|
+
*/
|
|
86
|
+
isEnabled?: boolean;
|
|
87
|
+
/**
|
|
88
|
+
* Optional filter to restrict which focusable elements are navigated.
|
|
89
|
+
* When provided, only elements that pass the filter will be focused.
|
|
90
|
+
*
|
|
91
|
+
* The filter is also used as a guard on the currently focused element:
|
|
92
|
+
* if the focused element doesn't pass the filter, the handler bails out.
|
|
93
|
+
* This prevents parent menu handlers from acting on events that belong
|
|
94
|
+
* to a nested menu.
|
|
95
|
+
*
|
|
96
|
+
* A common filter is `isAtCurrentMenuLevel` which excludes items inside
|
|
97
|
+
* nested `role="menu"` sub-containers.
|
|
98
|
+
*/
|
|
99
|
+
filter?: TFocusableFilter;
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Provides arrow key navigation for menu containers.
|
|
103
|
+
*
|
|
104
|
+
* Uses the focusable helpers from `@atlaskit/top-layer/focus` to manage
|
|
105
|
+
* DOM-based focus movement within a container.
|
|
106
|
+
*
|
|
107
|
+
* - **ArrowDown / ArrowUp**: Move focus to the next/previous item (wraps).
|
|
108
|
+
* - **Home / End**: Move focus to the first/last item.
|
|
109
|
+
* - **Tab**: Calls `onClose` to exit the menu.
|
|
110
|
+
*
|
|
111
|
+
* When a `filter` is provided, it is used both for scoping focusable
|
|
112
|
+
* elements and as a guard to prevent parent menu handlers from acting
|
|
113
|
+
* on events that belong to a nested menu.
|
|
114
|
+
*
|
|
115
|
+
* @example Basic usage
|
|
116
|
+
* ```tsx
|
|
117
|
+
* useArrowNavigation({
|
|
118
|
+
* containerRef: menuRef,
|
|
119
|
+
* onClose: () => setIsOpen(false),
|
|
120
|
+
* isEnabled: isOpen,
|
|
121
|
+
* });
|
|
122
|
+
* ```
|
|
123
|
+
*
|
|
124
|
+
* @example With nested menu filter
|
|
125
|
+
* ```tsx
|
|
126
|
+
* import { useArrowNavigation, isAtCurrentMenuLevel } from '@atlaskit/top-layer/use-arrow-navigation';
|
|
127
|
+
*
|
|
128
|
+
* useArrowNavigation({
|
|
129
|
+
* containerRef: menuRef,
|
|
130
|
+
* onClose: () => setIsOpen(false),
|
|
131
|
+
* isEnabled: isOpen,
|
|
132
|
+
* filter: isAtCurrentMenuLevel,
|
|
133
|
+
* });
|
|
134
|
+
* ```
|
|
135
|
+
*/
|
|
136
|
+
export declare function useArrowNavigation({ containerRef, onClose, onNestedOpen, onNestedClose, isEnabled, filter, }: TUseArrowNavigationArgs): void;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type RefObject } from 'react';
|
|
2
|
+
import { type TPopoverCloseReason } from '../popover/types';
|
|
3
|
+
type TUseSimpleLightDismissOptions = {
|
|
4
|
+
/**
|
|
5
|
+
* Ref to the popover element. Clicks inside this element will not trigger dismiss.
|
|
6
|
+
*/
|
|
7
|
+
popoverRef: RefObject<HTMLElement | null>;
|
|
8
|
+
/**
|
|
9
|
+
* Whether the popover is currently open.
|
|
10
|
+
* Listeners are only bound when `isOpen` is `true`.
|
|
11
|
+
*/
|
|
12
|
+
isOpen: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Called when a light-dismiss event occurs.
|
|
15
|
+
*
|
|
16
|
+
* - `reason: 'escape'` — the user pressed the Escape key.
|
|
17
|
+
* - `reason: 'light-dismiss'` — the user clicked outside the popover.
|
|
18
|
+
*
|
|
19
|
+
* **Note:** This hook provides simple, standalone light dismiss that does not
|
|
20
|
+
* participate in the browser's `popover="auto"` dismiss stack. Every active
|
|
21
|
+
* instance will fire independently — if multiple popovers use this hook,
|
|
22
|
+
* they will all receive dismiss events.
|
|
23
|
+
*/
|
|
24
|
+
onClose: (args: {
|
|
25
|
+
reason: TPopoverCloseReason;
|
|
26
|
+
}) => void;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Simple light-dismiss hook for `popover="manual"` elements.
|
|
30
|
+
*
|
|
31
|
+
* Provides Escape-to-close and click-outside-to-close behavior without
|
|
32
|
+
* relying on the browser's `popover="auto"` light-dismiss stack.
|
|
33
|
+
*
|
|
34
|
+
* **No stacking awareness:** This hook does not track a popover stack.
|
|
35
|
+
* If multiple manual popovers are open and all use this hook, a single
|
|
36
|
+
* Escape press or outside click will dismiss **all of them simultaneously**.
|
|
37
|
+
* This is by design — the hook is intentionally simple for cases where
|
|
38
|
+
* only one manual popover is open at a time.
|
|
39
|
+
*
|
|
40
|
+
* For stacked/nested popovers that should dismiss one-at-a-time, use
|
|
41
|
+
* `popover="auto"` mode instead, which provides native stack-aware
|
|
42
|
+
* light dismiss via the browser's top-layer stack.
|
|
43
|
+
*/
|
|
44
|
+
export declare function useSimpleLightDismiss({ popoverRef, isOpen, onClose, }: TUseSimpleLightDismissOptions): void;
|
|
45
|
+
export type { TUseSimpleLightDismissOptions };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@atlaskit/top-layer/focus",
|
|
3
|
+
"main": "../dist/cjs/entry-points/focus.js",
|
|
4
|
+
"module": "../dist/esm/entry-points/focus.js",
|
|
5
|
+
"module:es2019": "../dist/es2019/entry-points/focus.js",
|
|
6
|
+
"sideEffects": [
|
|
7
|
+
"*.compiled.css"
|
|
8
|
+
],
|
|
9
|
+
"types": "../dist/types/entry-points/focus.d.ts",
|
|
10
|
+
"typesVersions": {
|
|
11
|
+
">=4.5 <5.9": {
|
|
12
|
+
"*": [
|
|
13
|
+
"../dist/types-ts4.5/entry-points/focus.d.ts"
|
|
14
|
+
]
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@atlaskit/top-layer",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Low-level layering primitives based on popover and dialog",
|
|
5
|
+
"homepage": "https://atlassian.design/components/top-layer",
|
|
6
|
+
"repository": "https://bitbucket.org/atlassian/atlassian-frontend-mirror",
|
|
7
|
+
"author": "Atlassian Pty Ltd",
|
|
8
|
+
"license": "Apache-2.0",
|
|
9
|
+
"main": "dist/cjs/index.js",
|
|
10
|
+
"module": "dist/esm/index.js",
|
|
11
|
+
"module:es2019": "dist/es2019/index.js",
|
|
12
|
+
"types": "dist/types/index.d.ts",
|
|
13
|
+
"sideEffects": [
|
|
14
|
+
"*.compiled.css"
|
|
15
|
+
],
|
|
16
|
+
"atlaskit:src": "src/index.tsx",
|
|
17
|
+
"atlassian": {
|
|
18
|
+
"team": "Design System Team",
|
|
19
|
+
"website": {
|
|
20
|
+
"name": "Top Layer",
|
|
21
|
+
"category": "Libraries"
|
|
22
|
+
},
|
|
23
|
+
"integrationTests": {
|
|
24
|
+
"additionalBrowsers": [
|
|
25
|
+
"desktop-firefox"
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"@atlaskit/browser-apis": "^0.0.1",
|
|
31
|
+
"@atlaskit/css": "^0.19.0",
|
|
32
|
+
"@atlaskit/ds-lib": "^6.0.0",
|
|
33
|
+
"@atlaskit/tokens": "^11.1.0",
|
|
34
|
+
"@babel/runtime": "^7.0.0",
|
|
35
|
+
"@compiled/react": "^0.20.0",
|
|
36
|
+
"bind-event-listener": "^3.0.0",
|
|
37
|
+
"raf-schd": "^4.0.3"
|
|
38
|
+
},
|
|
39
|
+
"peerDependencies": {
|
|
40
|
+
"react": "^18.2.0 || ^19.0.0",
|
|
41
|
+
"react-dom": "^18.2.0 || ^19.0.0"
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@af/integration-testing": "workspace:^",
|
|
45
|
+
"@af/visual-regression": "workspace:^",
|
|
46
|
+
"@atlaskit/button": "^23.10.0",
|
|
47
|
+
"@atlaskit/heading": "^5.3.0",
|
|
48
|
+
"@atlaskit/lozenge": "^13.5.0",
|
|
49
|
+
"@atlaskit/primitives": "^18.0.0",
|
|
50
|
+
"@atlaskit/ssr": "workspace:^",
|
|
51
|
+
"@atlaskit/textfield": "^8.2.0",
|
|
52
|
+
"@atlassian/testing-library": "^0.4.0",
|
|
53
|
+
"@testing-library/react": "^16.3.0",
|
|
54
|
+
"@types/raf-schd": "^4.0.1",
|
|
55
|
+
"tiny-invariant": "^1.2.0"
|
|
56
|
+
},
|
|
57
|
+
"techstack": {
|
|
58
|
+
"@atlassian/frontend": {
|
|
59
|
+
"import-structure": [
|
|
60
|
+
"atlassian-conventions"
|
|
61
|
+
],
|
|
62
|
+
"circular-dependencies": [
|
|
63
|
+
"file-and-folder-level"
|
|
64
|
+
]
|
|
65
|
+
},
|
|
66
|
+
"@repo/internal": {
|
|
67
|
+
"dom-events": "use-bind-event-listener",
|
|
68
|
+
"ui-components": [
|
|
69
|
+
"lite-mode"
|
|
70
|
+
],
|
|
71
|
+
"design-tokens": [
|
|
72
|
+
"color",
|
|
73
|
+
"spacing"
|
|
74
|
+
],
|
|
75
|
+
"deprecation": [
|
|
76
|
+
"no-deprecated-imports"
|
|
77
|
+
],
|
|
78
|
+
"styling": [
|
|
79
|
+
"static",
|
|
80
|
+
"compiled"
|
|
81
|
+
]
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
"publishConfig": {
|
|
85
|
+
"registry": "https://registry.npmjs.org/"
|
|
86
|
+
},
|
|
87
|
+
"typesVersions": {
|
|
88
|
+
">=4.5 <4.9": {
|
|
89
|
+
"*": [
|
|
90
|
+
"dist/types-ts4.5/*",
|
|
91
|
+
"dist/types-ts4.5/index.d.ts"
|
|
92
|
+
]
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@atlaskit/top-layer/placement-map",
|
|
3
|
+
"main": "../dist/cjs/entry-points/placement-map.js",
|
|
4
|
+
"module": "../dist/esm/entry-points/placement-map.js",
|
|
5
|
+
"module:es2019": "../dist/es2019/entry-points/placement-map.js",
|
|
6
|
+
"sideEffects": [
|
|
7
|
+
"*.compiled.css"
|
|
8
|
+
],
|
|
9
|
+
"types": "../dist/types/entry-points/placement-map.d.ts",
|
|
10
|
+
"typesVersions": {
|
|
11
|
+
">=4.5 <5.9": {
|
|
12
|
+
"*": [
|
|
13
|
+
"../dist/types-ts4.5/entry-points/placement-map.d.ts"
|
|
14
|
+
]
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@atlaskit/top-layer/popover",
|
|
3
|
+
"main": "../dist/cjs/entry-points/popover.js",
|
|
4
|
+
"module": "../dist/esm/entry-points/popover.js",
|
|
5
|
+
"module:es2019": "../dist/es2019/entry-points/popover.js",
|
|
6
|
+
"sideEffects": [
|
|
7
|
+
"*.compiled.css"
|
|
8
|
+
],
|
|
9
|
+
"types": "../dist/types/entry-points/popover.d.ts",
|
|
10
|
+
"typesVersions": {
|
|
11
|
+
">=4.5 <5.9": {
|
|
12
|
+
"*": [
|
|
13
|
+
"../dist/types-ts4.5/entry-points/popover.d.ts"
|
|
14
|
+
]
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@atlaskit/top-layer/popup",
|
|
3
|
+
"main": "../dist/cjs/entry-points/popup.js",
|
|
4
|
+
"module": "../dist/esm/entry-points/popup.js",
|
|
5
|
+
"module:es2019": "../dist/es2019/entry-points/popup.js",
|
|
6
|
+
"sideEffects": [
|
|
7
|
+
"*.compiled.css"
|
|
8
|
+
],
|
|
9
|
+
"types": "../dist/types/entry-points/popup.d.ts",
|
|
10
|
+
"typesVersions": {
|
|
11
|
+
">=4.5 <5.9": {
|
|
12
|
+
"*": [
|
|
13
|
+
"../dist/types-ts4.5/entry-points/popup.d.ts"
|
|
14
|
+
]
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@atlaskit/top-layer/popup-surface",
|
|
3
|
+
"main": "../dist/cjs/entry-points/popup-surface.js",
|
|
4
|
+
"module": "../dist/esm/entry-points/popup-surface.js",
|
|
5
|
+
"module:es2019": "../dist/es2019/entry-points/popup-surface.js",
|
|
6
|
+
"sideEffects": [
|
|
7
|
+
"*.compiled.css"
|
|
8
|
+
],
|
|
9
|
+
"types": "../dist/types/entry-points/popup-surface.d.ts",
|
|
10
|
+
"typesVersions": {
|
|
11
|
+
">=4.5 <5.9": {
|
|
12
|
+
"*": [
|
|
13
|
+
"../dist/types-ts4.5/entry-points/popup-surface.d.ts"
|
|
14
|
+
]
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@atlaskit/top-layer/use-anchor-position",
|
|
3
|
+
"main": "../dist/cjs/entry-points/use-anchor-position.js",
|
|
4
|
+
"module": "../dist/esm/entry-points/use-anchor-position.js",
|
|
5
|
+
"module:es2019": "../dist/es2019/entry-points/use-anchor-position.js",
|
|
6
|
+
"sideEffects": [
|
|
7
|
+
"*.compiled.css"
|
|
8
|
+
],
|
|
9
|
+
"types": "../dist/types/entry-points/use-anchor-position.d.ts",
|
|
10
|
+
"typesVersions": {
|
|
11
|
+
">=4.5 <5.9": {
|
|
12
|
+
"*": [
|
|
13
|
+
"../dist/types-ts4.5/entry-points/use-anchor-position.d.ts"
|
|
14
|
+
]
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|