@umamichi-ui/common-components 0.3.0 → 0.3.2
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/README.md +112 -112
- package/dist/dialog/AboutDialog.d.ts +1 -1
- package/dist/dialog/AboutDialog.d.ts.map +1 -1
- package/dist/dialog/AboutDialog.js.map +1 -1
- package/dist/dialog/ConfirmDialog.d.ts +1 -1
- package/dist/dialog/ConfirmDialog.d.ts.map +1 -1
- package/dist/dialog/ConfirmDialog.js.map +1 -1
- package/dist/dialog/ConfirmDialogOverlay.d.ts +1 -1
- package/dist/dialog/ConfirmDialogOverlay.d.ts.map +1 -1
- package/dist/icons/ChevronIcons.d.ts +2 -2
- package/dist/icons/ChevronIcons.d.ts.map +1 -1
- package/dist/icons/ChevronIcons.js.map +1 -1
- package/dist/icons/DropdownMenuChevron.d.ts +1 -1
- package/dist/icons/DropdownMenuChevron.d.ts.map +1 -1
- package/dist/icons/DropdownMenuChevron.js.map +1 -1
- package/dist/icons/InfoCircleIcon.d.ts +1 -1
- package/dist/icons/InfoCircleIcon.d.ts.map +1 -1
- package/dist/icons/InfoCircleIcon.js.map +1 -1
- package/dist/menu/FloatingMenu.d.ts +1 -1
- package/dist/menu/FloatingMenu.d.ts.map +1 -1
- package/dist/menu/FloatingMenu.js.map +1 -1
- package/dist/menu/MobileActionSheet.d.ts +1 -1
- package/dist/menu/MobileActionSheet.d.ts.map +1 -1
- package/dist/menu/MobileActionSheet.js.map +1 -1
- package/dist/menu/MobileActionSheetContent.d.ts +1 -1
- package/dist/menu/MobileActionSheetContent.d.ts.map +1 -1
- package/dist/menu/MobileActionSheetContent.js.map +1 -1
- package/dist/menu/computeFloatingMenuGeometry.js.map +1 -1
- package/dist/menu/useFloatingMenuGeometry.js.map +1 -1
- package/dist/overlay/OverlayStackProvider.d.ts +1 -1
- package/dist/overlay/OverlayStackProvider.d.ts.map +1 -1
- package/dist/overlay/OverlayStackProvider.js.map +1 -1
- package/dist/overlay/overlayHistory.js.map +1 -1
- package/dist/overlay/overlayStackTypes.js.map +1 -1
- package/dist/overlay/useOverlayStackEntry.js.map +1 -1
- package/dist/presence/useOverlayPresence.d.ts.map +1 -1
- package/dist/presence/useOverlayPresence.js +23 -10
- package/dist/presence/useOverlayPresence.js.map +1 -1
- package/package.json +2 -2
- package/src/styles/about-dialog.css +122 -122
- package/src/styles/index.css +3 -3
- package/src/styles/mobile-action-sheet.css +167 -167
- package/src/styles/overlay.css +61 -61
package/README.md
CHANGED
|
@@ -1,112 +1,112 @@
|
|
|
1
|
-
# @umamichi-ui/common-components
|
|
2
|
-
|
|
3
|
-
> 以下内容为 LLM 生成,且未经人工检查,请谨慎对待
|
|
4
|
-
|
|
5
|
-
Umamichi 站点共用的 React UI 组件库,与 [@umamichi-ui/common-css](https://www.npmjs.com/package/@umamichi-ui/common-css) 配合使用。
|
|
6
|
-
|
|
7
|
-
各子模块可单独引用,彼此尽量解耦:
|
|
8
|
-
|
|
9
|
-
| 子路径 | 内容 |
|
|
10
|
-
|--------|------|
|
|
11
|
-
| `@umamichi-ui/common-components/presence` | 进出场动画 hook(不依赖叠层栈) |
|
|
12
|
-
| `@umamichi-ui/common-components/overlay` | 叠层栈、`SiteOverlayBackdrop` |
|
|
13
|
-
| `@umamichi-ui/common-components/icons` | Chevron、下拉箭头、信息图标 |
|
|
14
|
-
| `@umamichi-ui/common-components/menu` | `FloatingMenu`、`MobileActionSheet` |
|
|
15
|
-
| `@umamichi-ui/common-components/dialog` | `ConfirmDialog`、`AboutDialog` |
|
|
16
|
-
| `@umamichi-ui/common-components/styles.css` | 本库补充样式(overlay、action sheet、about) |
|
|
17
|
-
|
|
18
|
-
## 依赖图
|
|
19
|
-
|
|
20
|
-
模块间**单向**依赖;`presence` 与 `icons` 为叶子模块,可被任意上层单独引用。
|
|
21
|
-
|
|
22
|
-
```mermaid
|
|
23
|
-
flowchart TB
|
|
24
|
-
subgraph peer["Peer(消费方安装)"]
|
|
25
|
-
react["react / react-dom"]
|
|
26
|
-
commonCss["@umamichi-ui/common-css"]
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
subgraph pkg["@umamichi-ui/common-components"]
|
|
30
|
-
presence["presence<br/>useOverlayPresence"]
|
|
31
|
-
icons["icons<br/>Chevron · DropdownMenuChevron · InfoCircle"]
|
|
32
|
-
overlay["overlay<br/>OverlayStackProvider · SiteOverlayBackdrop"]
|
|
33
|
-
menu["menu<br/>FloatingMenu · MobileActionSheet"]
|
|
34
|
-
dialog["dialog<br/>ConfirmDialog · ConfirmDialogOverlay · AboutDialog"]
|
|
35
|
-
styles["styles.css"]
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
react --> presence
|
|
39
|
-
react --> icons
|
|
40
|
-
react --> overlay
|
|
41
|
-
react --> menu
|
|
42
|
-
react --> dialog
|
|
43
|
-
|
|
44
|
-
commonCss -.->|"class 名约定"| styles
|
|
45
|
-
styles -.-> overlay
|
|
46
|
-
styles -.-> menu
|
|
47
|
-
styles -.-> dialog
|
|
48
|
-
|
|
49
|
-
presence --> overlay
|
|
50
|
-
presence --> menu
|
|
51
|
-
|
|
52
|
-
icons --> menu
|
|
53
|
-
|
|
54
|
-
overlay --> menu
|
|
55
|
-
overlay --> dialog
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
| 从 | 到 | 说明 |
|
|
59
|
-
|----|-----|------|
|
|
60
|
-
| `presence` | `overlay` | `SiteOverlayBackdrop` 进出场动画 |
|
|
61
|
-
| `presence` | `menu` | `FloatingMenu` 面板淡入(不进叠层栈) |
|
|
62
|
-
| `icons` | `menu` | 下拉箭头;ActionSheet 子菜单 Chevron |
|
|
63
|
-
| `overlay` | `menu` | `MobileActionSheet` 底部 backdrop |
|
|
64
|
-
| `overlay` | `dialog` | `ConfirmDialogOverlay` |
|
|
65
|
-
| `dialog`(内部) | — | `AboutDialog` → `ConfirmDialog` + `ConfirmDialogOverlay` |
|
|
66
|
-
|
|
67
|
-
**无库内依赖:** `ConfirmDialog`(纯 markup 壳)、`computeFloatingMenuGeometry`、`OverlayStackProvider` 自身逻辑。
|
|
68
|
-
|
|
69
|
-
`menu` 子模块内:`FloatingMenu` 只走 `presence`;`MobileActionSheet` 额外依赖 `overlay`。
|
|
70
|
-
|
|
71
|
-
## 使用
|
|
72
|
-
|
|
73
|
-
```tsx
|
|
74
|
-
import '@umamichi-ui/common-css';
|
|
75
|
-
import '@umamichi-ui/common-components/styles.css';
|
|
76
|
-
import { OverlayStackProvider } from '@umamichi-ui/common-components/overlay';
|
|
77
|
-
|
|
78
|
-
// 根组件
|
|
79
|
-
<OverlayStackProvider>
|
|
80
|
-
<App />
|
|
81
|
-
</OverlayStackProvider>
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
`MobileActionSheet` 与 `ConfirmDialogOverlay` 需要外层已挂载 `OverlayStackProvider`。`FloatingMenu` 仅需 `presence` hook,不进入叠层栈。
|
|
85
|
-
|
|
86
|
-
## 开发
|
|
87
|
-
|
|
88
|
-
```bash
|
|
89
|
-
npm install
|
|
90
|
-
npm run build
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
安装(npm 发布后):
|
|
94
|
-
|
|
95
|
-
```bash
|
|
96
|
-
npm install @umamichi-ui/common-components @umamichi-ui/common-css
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
本地联调可在消费项目中添加:
|
|
100
|
-
|
|
101
|
-
```json
|
|
102
|
-
"@umamichi-ui/common-components": "file:../umamichi-ui/common-components"
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
## 发布
|
|
106
|
-
|
|
107
|
-
```bash
|
|
108
|
-
npm run build
|
|
109
|
-
npm publish --access public
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
版本记录见 [CHANGELOG.md](./CHANGELOG.md)。
|
|
1
|
+
# @umamichi-ui/common-components
|
|
2
|
+
|
|
3
|
+
> 以下内容为 LLM 生成,且未经人工检查,请谨慎对待
|
|
4
|
+
|
|
5
|
+
Umamichi 站点共用的 React UI 组件库,与 [@umamichi-ui/common-css](https://www.npmjs.com/package/@umamichi-ui/common-css) 配合使用。
|
|
6
|
+
|
|
7
|
+
各子模块可单独引用,彼此尽量解耦:
|
|
8
|
+
|
|
9
|
+
| 子路径 | 内容 |
|
|
10
|
+
|--------|------|
|
|
11
|
+
| `@umamichi-ui/common-components/presence` | 进出场动画 hook(不依赖叠层栈) |
|
|
12
|
+
| `@umamichi-ui/common-components/overlay` | 叠层栈、`SiteOverlayBackdrop` |
|
|
13
|
+
| `@umamichi-ui/common-components/icons` | Chevron、下拉箭头、信息图标 |
|
|
14
|
+
| `@umamichi-ui/common-components/menu` | `FloatingMenu`、`MobileActionSheet` |
|
|
15
|
+
| `@umamichi-ui/common-components/dialog` | `ConfirmDialog`、`AboutDialog` |
|
|
16
|
+
| `@umamichi-ui/common-components/styles.css` | 本库补充样式(overlay、action sheet、about) |
|
|
17
|
+
|
|
18
|
+
## 依赖图
|
|
19
|
+
|
|
20
|
+
模块间**单向**依赖;`presence` 与 `icons` 为叶子模块,可被任意上层单独引用。
|
|
21
|
+
|
|
22
|
+
```mermaid
|
|
23
|
+
flowchart TB
|
|
24
|
+
subgraph peer["Peer(消费方安装)"]
|
|
25
|
+
react["react / react-dom"]
|
|
26
|
+
commonCss["@umamichi-ui/common-css"]
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
subgraph pkg["@umamichi-ui/common-components"]
|
|
30
|
+
presence["presence<br/>useOverlayPresence"]
|
|
31
|
+
icons["icons<br/>Chevron · DropdownMenuChevron · InfoCircle"]
|
|
32
|
+
overlay["overlay<br/>OverlayStackProvider · SiteOverlayBackdrop"]
|
|
33
|
+
menu["menu<br/>FloatingMenu · MobileActionSheet"]
|
|
34
|
+
dialog["dialog<br/>ConfirmDialog · ConfirmDialogOverlay · AboutDialog"]
|
|
35
|
+
styles["styles.css"]
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
react --> presence
|
|
39
|
+
react --> icons
|
|
40
|
+
react --> overlay
|
|
41
|
+
react --> menu
|
|
42
|
+
react --> dialog
|
|
43
|
+
|
|
44
|
+
commonCss -.->|"class 名约定"| styles
|
|
45
|
+
styles -.-> overlay
|
|
46
|
+
styles -.-> menu
|
|
47
|
+
styles -.-> dialog
|
|
48
|
+
|
|
49
|
+
presence --> overlay
|
|
50
|
+
presence --> menu
|
|
51
|
+
|
|
52
|
+
icons --> menu
|
|
53
|
+
|
|
54
|
+
overlay --> menu
|
|
55
|
+
overlay --> dialog
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
| 从 | 到 | 说明 |
|
|
59
|
+
|----|-----|------|
|
|
60
|
+
| `presence` | `overlay` | `SiteOverlayBackdrop` 进出场动画 |
|
|
61
|
+
| `presence` | `menu` | `FloatingMenu` 面板淡入(不进叠层栈) |
|
|
62
|
+
| `icons` | `menu` | 下拉箭头;ActionSheet 子菜单 Chevron |
|
|
63
|
+
| `overlay` | `menu` | `MobileActionSheet` 底部 backdrop |
|
|
64
|
+
| `overlay` | `dialog` | `ConfirmDialogOverlay` |
|
|
65
|
+
| `dialog`(内部) | — | `AboutDialog` → `ConfirmDialog` + `ConfirmDialogOverlay` |
|
|
66
|
+
|
|
67
|
+
**无库内依赖:** `ConfirmDialog`(纯 markup 壳)、`computeFloatingMenuGeometry`、`OverlayStackProvider` 自身逻辑。
|
|
68
|
+
|
|
69
|
+
`menu` 子模块内:`FloatingMenu` 只走 `presence`;`MobileActionSheet` 额外依赖 `overlay`。
|
|
70
|
+
|
|
71
|
+
## 使用
|
|
72
|
+
|
|
73
|
+
```tsx
|
|
74
|
+
import '@umamichi-ui/common-css';
|
|
75
|
+
import '@umamichi-ui/common-components/styles.css';
|
|
76
|
+
import { OverlayStackProvider } from '@umamichi-ui/common-components/overlay';
|
|
77
|
+
|
|
78
|
+
// 根组件
|
|
79
|
+
<OverlayStackProvider>
|
|
80
|
+
<App />
|
|
81
|
+
</OverlayStackProvider>
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
`MobileActionSheet` 与 `ConfirmDialogOverlay` 需要外层已挂载 `OverlayStackProvider`。`FloatingMenu` 仅需 `presence` hook,不进入叠层栈。
|
|
85
|
+
|
|
86
|
+
## 开发
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
npm install
|
|
90
|
+
npm run build
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
安装(npm 发布后):
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
npm install @umamichi-ui/common-components @umamichi-ui/common-css
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
本地联调可在消费项目中添加:
|
|
100
|
+
|
|
101
|
+
```json
|
|
102
|
+
"@umamichi-ui/common-components": "file:../umamichi-ui/common-components"
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## 发布
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
npm run build
|
|
109
|
+
npm publish --access public
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
版本记录见 [CHANGELOG.md](./CHANGELOG.md)。
|
|
@@ -23,5 +23,5 @@ export type AboutDialogProps = {
|
|
|
23
23
|
dialogTitle?: string;
|
|
24
24
|
closeLabel?: string;
|
|
25
25
|
};
|
|
26
|
-
export declare function AboutDialog({ open, overlayId, onClose, appName, version, channelLabel, tagline, copyrightYear, copyrightHolder, sections, links, dialogTitle, closeLabel, }: AboutDialogProps): import("react
|
|
26
|
+
export declare function AboutDialog({ open, overlayId, onClose, appName, version, channelLabel, tagline, copyrightYear, copyrightHolder, sections, links, dialogTitle, closeLabel, }: AboutDialogProps): import("react").JSX.Element;
|
|
27
27
|
//# sourceMappingURL=AboutDialog.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AboutDialog.d.ts","sourceRoot":"","sources":["../../src/dialog/AboutDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAChC,KAAK,CAAC,EAAE,eAAe,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,SAAS,EACT,OAAO,EACP,OAAO,EACP,OAAO,EACP,YAAY,EACZ,OAAO,EACP,aAAa,EACb,eAA4B,EAC5B,QAAa,EACb,KAAU,EACV,WAAkB,EAClB,UAAiB,GAClB,EAAE,gBAAgB
|
|
1
|
+
{"version":3,"file":"AboutDialog.d.ts","sourceRoot":"","sources":["../../src/dialog/AboutDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAChC,KAAK,CAAC,EAAE,eAAe,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,SAAS,EACT,OAAO,EACP,OAAO,EACP,OAAO,EACP,YAAY,EACZ,OAAO,EACP,aAAa,EACb,eAA4B,EAC5B,QAAa,EACb,KAAU,EACV,WAAkB,EAClB,UAAiB,GAClB,EAAE,gBAAgB,+BAyDlB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AboutDialog.js","sources":["../../src/dialog/AboutDialog.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { ConfirmDialog } from './ConfirmDialog';\nimport { ConfirmDialogOverlay } from './ConfirmDialogOverlay';\n\nexport type AboutDialogLink = {\n label: string;\n href: string;\n};\n\nexport type AboutDialogSection = {\n id: string;\n title: string;\n content: ReactNode;\n};\n\nexport type AboutDialogProps = {\n open: boolean;\n overlayId: string;\n onClose: () => void;\n appName: string;\n version: string;\n channelLabel?: ReactNode;\n tagline?: ReactNode;\n copyrightYear: number;\n copyrightHolder?: string;\n sections?: AboutDialogSection[];\n links?: AboutDialogLink[];\n dialogTitle?: string;\n closeLabel?: string;\n};\n\nexport function AboutDialog({\n open,\n overlayId,\n onClose,\n appName,\n version,\n channelLabel,\n tagline,\n copyrightYear,\n copyrightHolder = 'Umamichi',\n sections = [],\n links = [],\n dialogTitle = '关于',\n closeLabel = '确定',\n}: AboutDialogProps) {\n return (\n <ConfirmDialogOverlay open={open} overlayId={overlayId} onDismiss={onClose}>\n <ConfirmDialog\n title={dialogTitle}\n titleId=\"about-dialog-title\"\n className=\"confirm-dialog about-dialog\"\n bodyClassName=\"confirm-dialog-body about-dialog-body\"\n onClick={(event) => event.stopPropagation()}\n actionsClassName=\"confirm-dialog-actions about-dialog-actions\"\n actions={\n <button type=\"button\" className=\"primary-button\" onClick={onClose}>\n {closeLabel}\n </button>\n }\n >\n <div className=\"about-dialog-product\">\n <p className=\"about-dialog-app-name\">{appName}</p>\n <p className=\"about-dialog-version\">\n 版本 {version}\n {channelLabel ? <span className=\"about-dialog-channel\">{channelLabel}</span> : null}\n </p>\n {tagline ? <p className=\"about-dialog-tagline\">{tagline}</p> : null}\n </div>\n\n <p className=\"about-dialog-copyright\">\n © {copyrightYear} {copyrightHolder}\n </p>\n\n {sections.length > 0 || links.length > 0 ? <hr className=\"about-dialog-divider\" /> : null}\n\n {sections.map((section) => (\n <section key={section.id} className=\"about-dialog-section\" aria-labelledby={section.id}>\n <h3 id={section.id} className=\"about-dialog-section-title\">\n {section.title}\n </h3>\n <div className=\"about-dialog-section-text\">{section.content}</div>\n </section>\n ))}\n\n {links.length > 0 ? (\n <dl className=\"about-dialog-meta\">\n {links.map((link) => (\n <div key={link.label} className=\"about-dialog-meta-row\">\n <dt>{link.label}</dt>\n <dd>\n <a href={link.href} target=\"_blank\" rel=\"noreferrer\">\n {link.href}\n </a>\n </dd>\n </div>\n ))}\n </dl>\n ) : null}\n </ConfirmDialog>\n </ConfirmDialogOverlay>\n );\n}\n"],"names":[],"mappings":";;;AA+BO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB,WAAW,CAAA;AAAA,EACX,QAAQ,CAAA;AAAA,EACR,cAAc;AAAA,EACd,aAAa;AACf,GAAqB;AACnB,SACE,oBAAC,sBAAA,EAAqB,MAAY,WAAsB,WAAW,SACjE,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,MACP,SAAQ;AAAA,MACR,WAAU;AAAA,MACV,eAAc;AAAA,MACd,SAAS,CAAC,UAAU,MAAM,gBAAA;AAAA,MAC1B,kBAAiB;AAAA,MACjB,6BACG,UAAA,EAAO,MAAK,UAAS,WAAU,kBAAiB,SAAS,SACvD,UAAA,WAAA,CACH;AAAA,MAGF,UAAA;AAAA,QAAA,qBAAC,OAAA,EAAI,WAAU,wBACb,UAAA;AAAA,UAAA,oBAAC,KAAA,EAAE,WAAU,yBAAyB,UAAA,SAAQ;AAAA,UAC9C,qBAAC,KAAA,EAAE,WAAU,wBAAuB,UAAA;AAAA,YAAA;AAAA,YAC9B;AAAA,YACH,eAAe,oBAAC,QAAA,EAAK,WAAU,wBAAwB,wBAAa,IAAU;AAAA,UAAA,GACjF;AAAA,UACC,UAAU,oBAAC,KAAA,EAAE,WAAU,wBAAwB,mBAAQ,IAAO;AAAA,QAAA,GACjE;AAAA,QAEA,qBAAC,KAAA,EAAE,WAAU,0BAAyB,UAAA;AAAA,UAAA;AAAA,UACjC;AAAA,UAAc;AAAA,UAAE;AAAA,QAAA,GACrB;AAAA,QAEC,SAAS,SAAS,KAAK,MAAM,SAAS,IAAI,oBAAC,MAAA,EAAG,WAAU,uBAAA,CAAuB,IAAK;AAAA,QAEpF,SAAS,IAAI,CAAC,YACb,qBAAC,aAAyB,WAAU,wBAAuB,mBAAiB,QAAQ,IAClF,UAAA;AAAA,UAAA,oBAAC,QAAG,IAAI,QAAQ,IAAI,WAAU,8BAC3B,kBAAQ,MAAA,CACX;AAAA,UACA,oBAAC,OAAA,EAAI,WAAU,6BAA6B,kBAAQ,QAAA,CAAQ;AAAA,QAAA,KAJhD,QAAQ,EAKtB,CACD;AAAA,QAEA,MAAM,SAAS,IACd,oBAAC,QAAG,WAAU,qBACX,UAAA,MAAM,IAAI,CAAC,SACV,qBAAC,OAAA,EAAqB,WAAU,yBAC9B,UAAA;AAAA,UAAA,oBAAC,MAAA,EAAI,eAAK,MAAA,CAAM;AAAA,UAChB,oBAAC,MAAA,EACC,UAAA,oBAAC,KAAA,EAAE,MAAM,KAAK,MAAM,QAAO,UAAS,KAAI,cACrC,UAAA,KAAK,MACR,EAAA,CACF;AAAA,QAAA,EAAA,GANQ,KAAK,KAOf,CACD,EAAA,CACH,IACE;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAER;AAEJ;"}
|
|
1
|
+
{"version":3,"file":"AboutDialog.js","sources":["../../src/dialog/AboutDialog.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\r\nimport { ConfirmDialog } from './ConfirmDialog';\r\nimport { ConfirmDialogOverlay } from './ConfirmDialogOverlay';\r\n\r\nexport type AboutDialogLink = {\r\n label: string;\r\n href: string;\r\n};\r\n\r\nexport type AboutDialogSection = {\r\n id: string;\r\n title: string;\r\n content: ReactNode;\r\n};\r\n\r\nexport type AboutDialogProps = {\r\n open: boolean;\r\n overlayId: string;\r\n onClose: () => void;\r\n appName: string;\r\n version: string;\r\n channelLabel?: ReactNode;\r\n tagline?: ReactNode;\r\n copyrightYear: number;\r\n copyrightHolder?: string;\r\n sections?: AboutDialogSection[];\r\n links?: AboutDialogLink[];\r\n dialogTitle?: string;\r\n closeLabel?: string;\r\n};\r\n\r\nexport function AboutDialog({\r\n open,\r\n overlayId,\r\n onClose,\r\n appName,\r\n version,\r\n channelLabel,\r\n tagline,\r\n copyrightYear,\r\n copyrightHolder = 'Umamichi',\r\n sections = [],\r\n links = [],\r\n dialogTitle = '关于',\r\n closeLabel = '确定',\r\n}: AboutDialogProps) {\r\n return (\r\n <ConfirmDialogOverlay open={open} overlayId={overlayId} onDismiss={onClose}>\r\n <ConfirmDialog\r\n title={dialogTitle}\r\n titleId=\"about-dialog-title\"\r\n className=\"confirm-dialog about-dialog\"\r\n bodyClassName=\"confirm-dialog-body about-dialog-body\"\r\n onClick={(event) => event.stopPropagation()}\r\n actionsClassName=\"confirm-dialog-actions about-dialog-actions\"\r\n actions={\r\n <button type=\"button\" className=\"primary-button\" onClick={onClose}>\r\n {closeLabel}\r\n </button>\r\n }\r\n >\r\n <div className=\"about-dialog-product\">\r\n <p className=\"about-dialog-app-name\">{appName}</p>\r\n <p className=\"about-dialog-version\">\r\n 版本 {version}\r\n {channelLabel ? <span className=\"about-dialog-channel\">{channelLabel}</span> : null}\r\n </p>\r\n {tagline ? <p className=\"about-dialog-tagline\">{tagline}</p> : null}\r\n </div>\r\n\r\n <p className=\"about-dialog-copyright\">\r\n © {copyrightYear} {copyrightHolder}\r\n </p>\r\n\r\n {sections.length > 0 || links.length > 0 ? <hr className=\"about-dialog-divider\" /> : null}\r\n\r\n {sections.map((section) => (\r\n <section key={section.id} className=\"about-dialog-section\" aria-labelledby={section.id}>\r\n <h3 id={section.id} className=\"about-dialog-section-title\">\r\n {section.title}\r\n </h3>\r\n <div className=\"about-dialog-section-text\">{section.content}</div>\r\n </section>\r\n ))}\r\n\r\n {links.length > 0 ? (\r\n <dl className=\"about-dialog-meta\">\r\n {links.map((link) => (\r\n <div key={link.label} className=\"about-dialog-meta-row\">\r\n <dt>{link.label}</dt>\r\n <dd>\r\n <a href={link.href} target=\"_blank\" rel=\"noreferrer\">\r\n {link.href}\r\n </a>\r\n </dd>\r\n </div>\r\n ))}\r\n </dl>\r\n ) : null}\r\n </ConfirmDialog>\r\n </ConfirmDialogOverlay>\r\n );\r\n}\r\n"],"names":[],"mappings":";;;AA+BO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB,WAAW,CAAA;AAAA,EACX,QAAQ,CAAA;AAAA,EACR,cAAc;AAAA,EACd,aAAa;AACf,GAAqB;AACnB,SACE,oBAAC,sBAAA,EAAqB,MAAY,WAAsB,WAAW,SACjE,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,MACP,SAAQ;AAAA,MACR,WAAU;AAAA,MACV,eAAc;AAAA,MACd,SAAS,CAAC,UAAU,MAAM,gBAAA;AAAA,MAC1B,kBAAiB;AAAA,MACjB,6BACG,UAAA,EAAO,MAAK,UAAS,WAAU,kBAAiB,SAAS,SACvD,UAAA,WAAA,CACH;AAAA,MAGF,UAAA;AAAA,QAAA,qBAAC,OAAA,EAAI,WAAU,wBACb,UAAA;AAAA,UAAA,oBAAC,KAAA,EAAE,WAAU,yBAAyB,UAAA,SAAQ;AAAA,UAC9C,qBAAC,KAAA,EAAE,WAAU,wBAAuB,UAAA;AAAA,YAAA;AAAA,YAC9B;AAAA,YACH,eAAe,oBAAC,QAAA,EAAK,WAAU,wBAAwB,wBAAa,IAAU;AAAA,UAAA,GACjF;AAAA,UACC,UAAU,oBAAC,KAAA,EAAE,WAAU,wBAAwB,mBAAQ,IAAO;AAAA,QAAA,GACjE;AAAA,QAEA,qBAAC,KAAA,EAAE,WAAU,0BAAyB,UAAA;AAAA,UAAA;AAAA,UACjC;AAAA,UAAc;AAAA,UAAE;AAAA,QAAA,GACrB;AAAA,QAEC,SAAS,SAAS,KAAK,MAAM,SAAS,IAAI,oBAAC,MAAA,EAAG,WAAU,uBAAA,CAAuB,IAAK;AAAA,QAEpF,SAAS,IAAI,CAAC,YACb,qBAAC,aAAyB,WAAU,wBAAuB,mBAAiB,QAAQ,IAClF,UAAA;AAAA,UAAA,oBAAC,QAAG,IAAI,QAAQ,IAAI,WAAU,8BAC3B,kBAAQ,MAAA,CACX;AAAA,UACA,oBAAC,OAAA,EAAI,WAAU,6BAA6B,kBAAQ,QAAA,CAAQ;AAAA,QAAA,KAJhD,QAAQ,EAKtB,CACD;AAAA,QAEA,MAAM,SAAS,IACd,oBAAC,QAAG,WAAU,qBACX,UAAA,MAAM,IAAI,CAAC,SACV,qBAAC,OAAA,EAAqB,WAAU,yBAC9B,UAAA;AAAA,UAAA,oBAAC,MAAA,EAAI,eAAK,MAAA,CAAM;AAAA,UAChB,oBAAC,MAAA,EACC,UAAA,oBAAC,KAAA,EAAE,MAAM,KAAK,MAAM,QAAO,UAAS,KAAI,cACrC,UAAA,KAAK,MACR,EAAA,CACF;AAAA,QAAA,EAAA,GANQ,KAAK,KAOf,CACD,EAAA,CACH,IACE;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAER;AAEJ;"}
|
|
@@ -13,5 +13,5 @@ export type ConfirmDialogProps = {
|
|
|
13
13
|
onSubmit?: FormEventHandler<HTMLFormElement>;
|
|
14
14
|
as?: 'div' | 'form';
|
|
15
15
|
};
|
|
16
|
-
export declare function ConfirmDialog({ title, titleId, children, actions, className, bodyClassName, actionsClassName, role, ariaDescribedBy, onClick, onSubmit, as, }: ConfirmDialogProps): import("react
|
|
16
|
+
export declare function ConfirmDialog({ title, titleId, children, actions, className, bodyClassName, actionsClassName, role, ariaDescribedBy, onClick, onSubmit, as, }: ConfirmDialogProps): import("react").JSX.Element;
|
|
17
17
|
//# sourceMappingURL=ConfirmDialog.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfirmDialog.d.ts","sourceRoot":"","sources":["../../src/dialog/ConfirmDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAC7C,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,OAAO,EACP,QAAQ,EACR,OAAO,EACP,SAA4B,EAC5B,aAAqC,EACrC,gBAA2C,EAC3C,IAAe,EACf,eAAe,EACf,OAAO,EACP,QAAQ,EACR,EAAU,GACX,EAAE,kBAAkB
|
|
1
|
+
{"version":3,"file":"ConfirmDialog.d.ts","sourceRoot":"","sources":["../../src/dialog/ConfirmDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAC7C,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,OAAO,EACP,QAAQ,EACR,OAAO,EACP,SAA4B,EAC5B,aAAqC,EACrC,gBAA2C,EAC3C,IAAe,EACf,eAAe,EACf,OAAO,EACP,QAAQ,EACR,EAAU,GACX,EAAE,kBAAkB,+BA8BpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfirmDialog.js","sources":["../../src/dialog/ConfirmDialog.tsx"],"sourcesContent":["import type { FormEventHandler, MouseEventHandler, ReactNode } from 'react';\n\nexport type ConfirmDialogProps = {\n title: ReactNode;\n titleId?: string;\n children: ReactNode;\n actions: ReactNode;\n className?: string;\n bodyClassName?: string;\n actionsClassName?: string;\n role?: 'dialog' | 'alertdialog';\n ariaDescribedBy?: string;\n onClick?: MouseEventHandler<HTMLElement>;\n onSubmit?: FormEventHandler<HTMLFormElement>;\n as?: 'div' | 'form';\n};\n\nexport function ConfirmDialog({\n title,\n titleId,\n children,\n actions,\n className = 'confirm-dialog',\n bodyClassName = 'confirm-dialog-body',\n actionsClassName = 'confirm-dialog-actions',\n role = 'dialog',\n ariaDescribedBy,\n onClick,\n onSubmit,\n as = 'div',\n}: ConfirmDialogProps) {\n const resolvedTitleId = titleId ?? 'confirm-dialog-title';\n const sharedProps = {\n className,\n role,\n 'aria-modal': true as const,\n 'aria-labelledby': resolvedTitleId,\n ...(ariaDescribedBy ? { 'aria-describedby': ariaDescribedBy } : {}),\n onClick,\n };\n\n const inner = (\n <>\n <h2 id={resolvedTitleId} className=\"confirm-dialog-title\">\n {title}\n </h2>\n <div className={bodyClassName}>{children}</div>\n <div className={actionsClassName}>{actions}</div>\n </>\n );\n\n if (as === 'form') {\n return (\n <form {...sharedProps} onSubmit={onSubmit}>\n {inner}\n </form>\n );\n }\n\n return <div {...sharedProps}>{inner}</div>;\n}\n"],"names":[],"mappings":";AAiBO,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA,KAAK;AACP,GAAuB;AACrB,QAAM,kBAAkB,WAAW;AACnC,QAAM,cAAc;AAAA,IAClB;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd,mBAAmB;AAAA,IACnB,GAAI,kBAAkB,EAAE,oBAAoB,gBAAA,IAAoB,CAAA;AAAA,IAChE;AAAA,EAAA;AAGF,QAAM,QACJ,qBAAA,UAAA,EACE,UAAA;AAAA,IAAA,oBAAC,MAAA,EAAG,IAAI,iBAAiB,WAAU,wBAChC,UAAA,OACH;AAAA,IACA,oBAAC,OAAA,EAAI,WAAW,eAAgB,SAAA,CAAS;AAAA,IACzC,oBAAC,OAAA,EAAI,WAAW,kBAAmB,UAAA,QAAA,CAAQ;AAAA,EAAA,GAC7C;AAGF,MAAI,OAAO,QAAQ;AACjB,WACE,oBAAC,QAAA,EAAM,GAAG,aAAa,UACpB,UAAA,OACH;AAAA,EAEJ;AAEA,SAAO,oBAAC,OAAA,EAAK,GAAG,aAAc,UAAA,OAAM;AACtC;"}
|
|
1
|
+
{"version":3,"file":"ConfirmDialog.js","sources":["../../src/dialog/ConfirmDialog.tsx"],"sourcesContent":["import type { FormEventHandler, MouseEventHandler, ReactNode } from 'react';\r\n\r\nexport type ConfirmDialogProps = {\r\n title: ReactNode;\r\n titleId?: string;\r\n children: ReactNode;\r\n actions: ReactNode;\r\n className?: string;\r\n bodyClassName?: string;\r\n actionsClassName?: string;\r\n role?: 'dialog' | 'alertdialog';\r\n ariaDescribedBy?: string;\r\n onClick?: MouseEventHandler<HTMLElement>;\r\n onSubmit?: FormEventHandler<HTMLFormElement>;\r\n as?: 'div' | 'form';\r\n};\r\n\r\nexport function ConfirmDialog({\r\n title,\r\n titleId,\r\n children,\r\n actions,\r\n className = 'confirm-dialog',\r\n bodyClassName = 'confirm-dialog-body',\r\n actionsClassName = 'confirm-dialog-actions',\r\n role = 'dialog',\r\n ariaDescribedBy,\r\n onClick,\r\n onSubmit,\r\n as = 'div',\r\n}: ConfirmDialogProps) {\r\n const resolvedTitleId = titleId ?? 'confirm-dialog-title';\r\n const sharedProps = {\r\n className,\r\n role,\r\n 'aria-modal': true as const,\r\n 'aria-labelledby': resolvedTitleId,\r\n ...(ariaDescribedBy ? { 'aria-describedby': ariaDescribedBy } : {}),\r\n onClick,\r\n };\r\n\r\n const inner = (\r\n <>\r\n <h2 id={resolvedTitleId} className=\"confirm-dialog-title\">\r\n {title}\r\n </h2>\r\n <div className={bodyClassName}>{children}</div>\r\n <div className={actionsClassName}>{actions}</div>\r\n </>\r\n );\r\n\r\n if (as === 'form') {\r\n return (\r\n <form {...sharedProps} onSubmit={onSubmit}>\r\n {inner}\r\n </form>\r\n );\r\n }\r\n\r\n return <div {...sharedProps}>{inner}</div>;\r\n}\r\n"],"names":[],"mappings":";AAiBO,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA,KAAK;AACP,GAAuB;AACrB,QAAM,kBAAkB,WAAW;AACnC,QAAM,cAAc;AAAA,IAClB;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd,mBAAmB;AAAA,IACnB,GAAI,kBAAkB,EAAE,oBAAoB,gBAAA,IAAoB,CAAA;AAAA,IAChE;AAAA,EAAA;AAGF,QAAM,QACJ,qBAAA,UAAA,EACE,UAAA;AAAA,IAAA,oBAAC,MAAA,EAAG,IAAI,iBAAiB,WAAU,wBAChC,UAAA,OACH;AAAA,IACA,oBAAC,OAAA,EAAI,WAAW,eAAgB,SAAA,CAAS;AAAA,IACzC,oBAAC,OAAA,EAAI,WAAW,kBAAmB,UAAA,QAAA,CAAQ;AAAA,EAAA,GAC7C;AAGF,MAAI,OAAO,QAAQ;AACjB,WACE,oBAAC,QAAA,EAAM,GAAG,aAAa,UACpB,UAAA,OACH;AAAA,EAEJ;AAEA,SAAO,oBAAC,OAAA,EAAK,GAAG,aAAc,UAAA,OAAM;AACtC;"}
|
|
@@ -11,5 +11,5 @@ export type ConfirmDialogOverlayProps = {
|
|
|
11
11
|
focusManagement?: boolean;
|
|
12
12
|
initialFocusRef?: RefObject<HTMLElement | null>;
|
|
13
13
|
};
|
|
14
|
-
export declare function ConfirmDialogOverlay({ open, overlayId, onDismiss, onExited, children, align, dismissOnEscape, focusManagement, initialFocusRef, }: ConfirmDialogOverlayProps): import("react
|
|
14
|
+
export declare function ConfirmDialogOverlay({ open, overlayId, onDismiss, onExited, children, align, dismissOnEscape, focusManagement, initialFocusRef, }: ConfirmDialogOverlayProps): import("react").JSX.Element;
|
|
15
15
|
//# sourceMappingURL=ConfirmDialogOverlay.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfirmDialogOverlay.d.ts","sourceRoot":"","sources":["../../src/dialog/ConfirmDialogOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElD,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAI5F,MAAM,MAAM,yBAAyB,GAAG;IAEtC,IAAI,EAAE,OAAO,CAAC;IAEd,SAAS,EAAE,MAAM,CAAC;IAElB,SAAS,EAAE,MAAM,IAAI,CAAC;IAEtB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAEtB,QAAQ,EAAE,SAAS,CAAC;IAEpB,KAAK,CAAC,EAAE,gBAAgB,CAAC;IAEzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,eAAe,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;CAEjD,CAAC;AAIF,wBAAgB,oBAAoB,CAAC,EAEnC,IAAI,EAEJ,SAAS,EAET,SAAS,EAET,QAAQ,EAER,QAAQ,EAER,KAAkB,EAElB,eAAsB,EAEtB,eAAsB,EAEtB,eAAe,GAEhB,EAAE,yBAAyB
|
|
1
|
+
{"version":3,"file":"ConfirmDialogOverlay.d.ts","sourceRoot":"","sources":["../../src/dialog/ConfirmDialogOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElD,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAI5F,MAAM,MAAM,yBAAyB,GAAG;IAEtC,IAAI,EAAE,OAAO,CAAC;IAEd,SAAS,EAAE,MAAM,CAAC;IAElB,SAAS,EAAE,MAAM,IAAI,CAAC;IAEtB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAEtB,QAAQ,EAAE,SAAS,CAAC;IAEpB,KAAK,CAAC,EAAE,gBAAgB,CAAC;IAEzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,eAAe,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;CAEjD,CAAC;AAIF,wBAAgB,oBAAoB,CAAC,EAEnC,IAAI,EAEJ,SAAS,EAET,SAAS,EAET,QAAQ,EAER,QAAQ,EAER,KAAkB,EAElB,eAAsB,EAEtB,eAAsB,EAEtB,eAAe,GAEhB,EAAE,yBAAyB,+BA8B3B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export type ChevronIconProps = {
|
|
2
2
|
className?: string;
|
|
3
3
|
};
|
|
4
|
-
export declare function ChevronRightIcon({ className }: ChevronIconProps): import("react
|
|
5
|
-
export declare function ChevronLeftIcon({ className }: ChevronIconProps): import("react
|
|
4
|
+
export declare function ChevronRightIcon({ className }: ChevronIconProps): import("react").JSX.Element;
|
|
5
|
+
export declare function ChevronLeftIcon({ className }: ChevronIconProps): import("react").JSX.Element;
|
|
6
6
|
//# sourceMappingURL=ChevronIcons.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChevronIcons.d.ts","sourceRoot":"","sources":["../../src/icons/ChevronIcons.tsx"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAUF,wBAAgB,gBAAgB,CAAC,EAAE,SAA0B,EAAE,EAAE,gBAAgB
|
|
1
|
+
{"version":3,"file":"ChevronIcons.d.ts","sourceRoot":"","sources":["../../src/icons/ChevronIcons.tsx"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAUF,wBAAgB,gBAAgB,CAAC,EAAE,SAA0B,EAAE,EAAE,gBAAgB,+BAMhF;AAED,wBAAgB,eAAe,CAAC,EAAE,SAA0B,EAAE,EAAE,gBAAgB,+BAM/E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChevronIcons.js","sources":["../../src/icons/ChevronIcons.tsx"],"sourcesContent":["export type ChevronIconProps = {\n className?: string;\n};\n\nconst chevronPathProps = {\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 1.75,\n strokeLinecap: 'square' as const,\n strokeLinejoin: 'miter' as const,\n};\n\nexport function ChevronRightIcon({ className = 'chevron-icon' }: ChevronIconProps) {\n return (\n <svg className={className} viewBox=\"0 0 16 16\" width=\"20\" height=\"20\" aria-hidden=\"true\">\n <path d=\"M6 4 L10 8 L6 12\" {...chevronPathProps} />\n </svg>\n );\n}\n\nexport function ChevronLeftIcon({ className = 'chevron-icon' }: ChevronIconProps) {\n return (\n <svg className={className} viewBox=\"0 0 16 16\" width=\"20\" height=\"20\" aria-hidden=\"true\">\n <path d=\"M10 4 L6 8 L10 12\" {...chevronPathProps} />\n </svg>\n );\n}\n"],"names":[],"mappings":";AAIA,MAAM,mBAAmB;AAAA,EACvB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,eAAe;AAAA,EACf,gBAAgB;AAClB;AAEO,SAAS,iBAAiB,EAAE,YAAY,kBAAoC;AACjF,6BACG,OAAA,EAAI,WAAsB,SAAQ,aAAY,OAAM,MAAK,QAAO,MAAK,eAAY,QAChF,UAAA,oBAAC,QAAA,EAAK,GAAE,oBAAoB,GAAG,kBAAkB,GACnD;AAEJ;AAEO,SAAS,gBAAgB,EAAE,YAAY,kBAAoC;AAChF,6BACG,OAAA,EAAI,WAAsB,SAAQ,aAAY,OAAM,MAAK,QAAO,MAAK,eAAY,QAChF,UAAA,oBAAC,QAAA,EAAK,GAAE,qBAAqB,GAAG,kBAAkB,GACpD;AAEJ;"}
|
|
1
|
+
{"version":3,"file":"ChevronIcons.js","sources":["../../src/icons/ChevronIcons.tsx"],"sourcesContent":["export type ChevronIconProps = {\r\n className?: string;\r\n};\r\n\r\nconst chevronPathProps = {\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 1.75,\r\n strokeLinecap: 'square' as const,\r\n strokeLinejoin: 'miter' as const,\r\n};\r\n\r\nexport function ChevronRightIcon({ className = 'chevron-icon' }: ChevronIconProps) {\r\n return (\r\n <svg className={className} viewBox=\"0 0 16 16\" width=\"20\" height=\"20\" aria-hidden=\"true\">\r\n <path d=\"M6 4 L10 8 L6 12\" {...chevronPathProps} />\r\n </svg>\r\n );\r\n}\r\n\r\nexport function ChevronLeftIcon({ className = 'chevron-icon' }: ChevronIconProps) {\r\n return (\r\n <svg className={className} viewBox=\"0 0 16 16\" width=\"20\" height=\"20\" aria-hidden=\"true\">\r\n <path d=\"M10 4 L6 8 L10 12\" {...chevronPathProps} />\r\n </svg>\r\n );\r\n}\r\n"],"names":[],"mappings":";AAIA,MAAM,mBAAmB;AAAA,EACvB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,eAAe;AAAA,EACf,gBAAgB;AAClB;AAEO,SAAS,iBAAiB,EAAE,YAAY,kBAAoC;AACjF,6BACG,OAAA,EAAI,WAAsB,SAAQ,aAAY,OAAM,MAAK,QAAO,MAAK,eAAY,QAChF,UAAA,oBAAC,QAAA,EAAK,GAAE,oBAAoB,GAAG,kBAAkB,GACnD;AAEJ;AAEO,SAAS,gBAAgB,EAAE,YAAY,kBAAoC;AAChF,6BACG,OAAA,EAAI,WAAsB,SAAQ,aAAY,OAAM,MAAK,QAAO,MAAK,eAAY,QAChF,UAAA,oBAAC,QAAA,EAAK,GAAE,qBAAqB,GAAG,kBAAkB,GACpD;AAEJ;"}
|
|
@@ -2,5 +2,5 @@ export type DropdownMenuChevronProps = {
|
|
|
2
2
|
className?: string;
|
|
3
3
|
size?: number;
|
|
4
4
|
};
|
|
5
|
-
export declare function DropdownMenuChevron({ className, size }: DropdownMenuChevronProps): import("react
|
|
5
|
+
export declare function DropdownMenuChevron({ className, size }: DropdownMenuChevronProps): import("react").JSX.Element;
|
|
6
6
|
//# sourceMappingURL=DropdownMenuChevron.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownMenuChevron.d.ts","sourceRoot":"","sources":["../../src/icons/DropdownMenuChevron.tsx"],"names":[],"mappings":"AAAA,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,EAAE,SAAmC,EAAE,IAAI,EAAE,EAAE,wBAAwB
|
|
1
|
+
{"version":3,"file":"DropdownMenuChevron.d.ts","sourceRoot":"","sources":["../../src/icons/DropdownMenuChevron.tsx"],"names":[],"mappings":"AAAA,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,EAAE,SAAmC,EAAE,IAAI,EAAE,EAAE,wBAAwB,+BAgB1G"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownMenuChevron.js","sources":["../../src/icons/DropdownMenuChevron.tsx"],"sourcesContent":["export type DropdownMenuChevronProps = {\n className?: string;\n size?: number;\n};\n\nexport function DropdownMenuChevron({ className = 'dropdown-menu-chevron', size }: DropdownMenuChevronProps) {\n const width = size ?? '0.72em';\n const height = size ?? '0.72em';\n\n return (\n <svg className={className} viewBox=\"0 0 16 16\" width={width} height={height} aria-hidden=\"true\">\n <path\n d=\"M4 7 L8 11 L12 7\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"square\"\n strokeLinejoin=\"miter\"\n />\n </svg>\n );\n}\n"],"names":[],"mappings":";AAKO,SAAS,oBAAoB,EAAE,YAAY,yBAAyB,QAAkC;AAC3G,QAAM,QAAQ,QAAQ;AACtB,QAAM,SAAS,QAAQ;AAEvB,SACE,oBAAC,SAAI,WAAsB,SAAQ,aAAY,OAAc,QAAgB,eAAY,QACvF,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,GAAE;AAAA,MACF,MAAK;AAAA,MACL,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,IAAA;AAAA,EAAA,GAEnB;AAEJ;"}
|
|
1
|
+
{"version":3,"file":"DropdownMenuChevron.js","sources":["../../src/icons/DropdownMenuChevron.tsx"],"sourcesContent":["export type DropdownMenuChevronProps = {\r\n className?: string;\r\n size?: number;\r\n};\r\n\r\nexport function DropdownMenuChevron({ className = 'dropdown-menu-chevron', size }: DropdownMenuChevronProps) {\r\n const width = size ?? '0.72em';\r\n const height = size ?? '0.72em';\r\n\r\n return (\r\n <svg className={className} viewBox=\"0 0 16 16\" width={width} height={height} aria-hidden=\"true\">\r\n <path\r\n d=\"M4 7 L8 11 L12 7\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.75\"\r\n strokeLinecap=\"square\"\r\n strokeLinejoin=\"miter\"\r\n />\r\n </svg>\r\n );\r\n}\r\n"],"names":[],"mappings":";AAKO,SAAS,oBAAoB,EAAE,YAAY,yBAAyB,QAAkC;AAC3G,QAAM,QAAQ,QAAQ;AACtB,QAAM,SAAS,QAAQ;AAEvB,SACE,oBAAC,SAAI,WAAsB,SAAQ,aAAY,OAAc,QAAgB,eAAY,QACvF,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,GAAE;AAAA,MACF,MAAK;AAAA,MACL,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,IAAA;AAAA,EAAA,GAEnB;AAEJ;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type InfoCircleIconProps = {
|
|
2
2
|
className?: string;
|
|
3
3
|
};
|
|
4
|
-
export declare function InfoCircleIcon({ className }: InfoCircleIconProps): import("react
|
|
4
|
+
export declare function InfoCircleIcon({ className }: InfoCircleIconProps): import("react").JSX.Element;
|
|
5
5
|
//# sourceMappingURL=InfoCircleIcon.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InfoCircleIcon.d.ts","sourceRoot":"","sources":["../../src/icons/InfoCircleIcon.tsx"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,cAAc,CAAC,EAAE,SAAkC,EAAE,EAAE,mBAAmB
|
|
1
|
+
{"version":3,"file":"InfoCircleIcon.d.ts","sourceRoot":"","sources":["../../src/icons/InfoCircleIcon.tsx"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,cAAc,CAAC,EAAE,SAAkC,EAAE,EAAE,mBAAmB,+BAUzF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InfoCircleIcon.js","sources":["../../src/icons/InfoCircleIcon.tsx"],"sourcesContent":["export type InfoCircleIconProps = {\n className?: string;\n};\n\nexport function InfoCircleIcon({ className = 'app-info-circle-icon' }: InfoCircleIconProps) {\n return (\n <svg className={className} viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" aria-hidden>\n <circle cx=\"12\" cy=\"12\" r=\"9\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" />\n <path\n fill=\"currentColor\"\n d=\"M12 10.25a1.1 1.1 0 1 0 0-2.2 1.1 1.1 0 0 0 0 2.2Zm-.15 1.05c-.55 0-1 .35-1 .9v4.1c0 .55.45.9 1 .9h.3c.55 0 1-.35 1-.9v-4.1c0-.55-.45-.9-1-.9h-.3Z\"\n />\n </svg>\n );\n}\n"],"names":[],"mappings":";AAIO,SAAS,eAAe,EAAE,YAAY,0BAA+C;AAC1F,SACE,qBAAC,OAAA,EAAI,WAAsB,SAAQ,aAAY,OAAM,MAAK,QAAO,MAAK,eAAW,MAC/E,UAAA;AAAA,IAAA,oBAAC,UAAA,EAAO,IAAG,MAAK,IAAG,MAAK,GAAE,KAAI,MAAK,QAAO,QAAO,gBAAe,aAAY,KAAI;AAAA,IAChF;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,GAAE;AAAA,MAAA;AAAA,IAAA;AAAA,EACJ,GACF;AAEJ;"}
|
|
1
|
+
{"version":3,"file":"InfoCircleIcon.js","sources":["../../src/icons/InfoCircleIcon.tsx"],"sourcesContent":["export type InfoCircleIconProps = {\r\n className?: string;\r\n};\r\n\r\nexport function InfoCircleIcon({ className = 'app-info-circle-icon' }: InfoCircleIconProps) {\r\n return (\r\n <svg className={className} viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" aria-hidden>\r\n <circle cx=\"12\" cy=\"12\" r=\"9\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" />\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M12 10.25a1.1 1.1 0 1 0 0-2.2 1.1 1.1 0 0 0 0 2.2Zm-.15 1.05c-.55 0-1 .35-1 .9v4.1c0 .55.45.9 1 .9h.3c.55 0 1-.35 1-.9v-4.1c0-.55-.45-.9-1-.9h-.3Z\"\r\n />\r\n </svg>\r\n );\r\n}\r\n"],"names":[],"mappings":";AAIO,SAAS,eAAe,EAAE,YAAY,0BAA+C;AAC1F,SACE,qBAAC,OAAA,EAAI,WAAsB,SAAQ,aAAY,OAAM,MAAK,QAAO,MAAK,eAAW,MAC/E,UAAA;AAAA,IAAA,oBAAC,UAAA,EAAO,IAAG,MAAK,IAAG,MAAK,GAAE,KAAI,MAAK,QAAO,QAAO,gBAAe,aAAY,KAAI;AAAA,IAChF;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,GAAE;AAAA,MAAA;AAAA,IAAA;AAAA,EACJ,GACF;AAEJ;"}
|
|
@@ -24,5 +24,5 @@ export type FloatingMenuProps = {
|
|
|
24
24
|
scrollRootSelector?: string;
|
|
25
25
|
wrapClassName?: string;
|
|
26
26
|
};
|
|
27
|
-
export declare function FloatingMenu({ menuAriaLabel, items, triggerLabel, triggerIcon, triggerVariant, triggerClassName, triggerAriaLabel, scrollRootSelector, wrapClassName, }: FloatingMenuProps): import("react
|
|
27
|
+
export declare function FloatingMenu({ menuAriaLabel, items, triggerLabel, triggerIcon, triggerVariant, triggerClassName, triggerAriaLabel, scrollRootSelector, wrapClassName, }: FloatingMenuProps): import("react").JSX.Element;
|
|
28
28
|
//# sourceMappingURL=FloatingMenu.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FloatingMenu.d.ts","sourceRoot":"","sources":["../../src/menu/FloatingMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAM3E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG,qBAAqB,CAAC;AAEzE,MAAM,MAAM,0BAA0B,GAAG,SAAS,GAAG,MAAM,CAAC;AAE5D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,cAAc,CAAC,EAAE,0BAA0B,CAAC;IAC5C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAaF,wBAAgB,YAAY,CAAC,EAC3B,aAAa,EACb,KAAK,EACL,YAAY,EACZ,WAAW,EACX,cAA0B,EAC1B,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,aAA+B,GAChC,EAAE,iBAAiB
|
|
1
|
+
{"version":3,"file":"FloatingMenu.d.ts","sourceRoot":"","sources":["../../src/menu/FloatingMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAM3E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG,qBAAqB,CAAC;AAEzE,MAAM,MAAM,0BAA0B,GAAG,SAAS,GAAG,MAAM,CAAC;AAE5D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,cAAc,CAAC,EAAE,0BAA0B,CAAC;IAC5C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAaF,wBAAgB,YAAY,CAAC,EAC3B,aAAa,EACb,KAAK,EACL,YAAY,EACZ,WAAW,EACX,cAA0B,EAC1B,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,aAA+B,GAChC,EAAE,iBAAiB,+BAqHnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FloatingMenu.js","sources":["../../src/menu/FloatingMenu.tsx"],"sourcesContent":["import { useEffect, useId, useRef, useState, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\nimport { mergeOverlayRefs, useOverlayPresence, withOverlayOpen } from '../presence/useOverlayPresence';\nimport { DropdownMenuChevron } from '../icons/DropdownMenuChevron';\nimport { useFloatingMenuGeometry } from './useFloatingMenuGeometry';\n\nexport type FloatingMenuItem = {\n kind: 'item';\n id: string;\n label: ReactNode;\n disabled?: boolean;\n title?: string;\n onSelect: () => void;\n};\n\nexport type FloatingMenuSeparator = {\n kind: 'separator';\n id: string;\n};\n\nexport type FloatingMenuEntry = FloatingMenuItem | FloatingMenuSeparator;\n\nexport type FloatingMenuTriggerVariant = 'labeled' | 'icon';\n\nexport type FloatingMenuProps = {\n menuAriaLabel: string;\n items: FloatingMenuEntry[];\n triggerLabel?: ReactNode;\n triggerIcon?: ReactNode;\n triggerVariant?: FloatingMenuTriggerVariant;\n triggerClassName?: string;\n triggerAriaLabel?: string;\n scrollRootSelector?: string;\n wrapClassName?: string;\n};\n\nfunction IconDropdownTriggerContent({ icon }: { icon: ReactNode }) {\n return (\n <>\n {icon}\n <span className=\"dropdown-menu-trigger-caret\" aria-hidden=\"true\">\n <DropdownMenuChevron />\n </span>\n </>\n );\n}\n\nexport function FloatingMenu({\n menuAriaLabel,\n items,\n triggerLabel,\n triggerIcon,\n triggerVariant = 'labeled',\n triggerClassName,\n triggerAriaLabel,\n scrollRootSelector,\n wrapClassName = 'dropdown-menu',\n}: FloatingMenuProps) {\n const wrapRef = useRef<HTMLDivElement | null>(null);\n const menuId = useId();\n const [menuOpen, setMenuOpen] = useState(false);\n const { mounted: menuMounted, isOpen: menuShown, overlayRef: menuOverlayRef } =\n useOverlayPresence<HTMLUListElement>(menuOpen);\n const { menuPanelRef, triggerRef, menuGeometry } = useFloatingMenuGeometry({\n menuOpen,\n menuMounted,\n scrollRootSelector,\n });\n\n useEffect(() => {\n if (!menuOpen) {\n return;\n }\n const onDocumentMouseDown = (event: MouseEvent) => {\n const target = event.target as Node;\n if (wrapRef.current?.contains(target) || menuPanelRef.current?.contains(target)) {\n return;\n }\n setMenuOpen(false);\n };\n document.addEventListener('mousedown', onDocumentMouseDown);\n return () => document.removeEventListener('mousedown', onDocumentMouseDown);\n }, [menuOpen, menuPanelRef]);\n\n useEffect(() => {\n if (!menuOpen) {\n return;\n }\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n event.stopPropagation();\n setMenuOpen(false);\n }\n };\n window.addEventListener('keydown', onKeyDown, true);\n return () => window.removeEventListener('keydown', onKeyDown, true);\n }, [menuOpen]);\n\n const menuPanel = menuMounted ? (\n <ul\n ref={mergeOverlayRefs(menuOverlayRef, menuPanelRef)}\n id={menuId}\n className={withOverlayOpen('dropdown-menu-panel', menuShown && menuGeometry !== null)}\n role=\"menu\"\n aria-label={menuAriaLabel}\n style={{\n top: menuGeometry?.top ?? -9999,\n left: menuGeometry?.left ?? -9999,\n maxHeight: menuGeometry?.maxHeight,\n overflowY: menuGeometry?.maxHeight ? 'auto' : undefined,\n }}\n >\n {items.map((entry) => {\n if (entry.kind === 'separator') {\n return (\n <li key={entry.id} className=\"dropdown-menu-separator\" role=\"separator\" aria-orientation=\"horizontal\" />\n );\n }\n\n return (\n <li key={entry.id} role=\"none\">\n <button\n type=\"button\"\n className=\"dropdown-menu-item\"\n role=\"menuitem\"\n disabled={entry.disabled}\n title={entry.title}\n onClick={() => {\n if (entry.disabled) {\n return;\n }\n entry.onSelect();\n setMenuOpen(false);\n }}\n >\n {entry.label}\n </button>\n </li>\n );\n })}\n </ul>\n ) : null;\n\n const resolvedTriggerClassName =\n triggerClassName ??\n (triggerVariant === 'icon'\n ? 'icon-button dropdown-menu-trigger dropdown-menu-trigger--icon'\n : 'secondary-button dropdown-menu-trigger');\n\n return (\n <div className={wrapClassName} ref={wrapRef}>\n <button\n ref={triggerRef}\n type=\"button\"\n className={resolvedTriggerClassName}\n aria-label={triggerAriaLabel ?? (triggerVariant === 'icon' ? menuAriaLabel : undefined)}\n aria-expanded={menuOpen}\n aria-haspopup=\"menu\"\n aria-controls={menuId}\n onClick={() => setMenuOpen((open) => !open)}\n >\n {triggerVariant === 'icon' ? (\n <IconDropdownTriggerContent icon={triggerIcon} />\n ) : (\n <>\n {triggerLabel}\n {' '}\n <DropdownMenuChevron />\n </>\n )}\n </button>\n {menuPanel ? createPortal(menuPanel, document.body) : null}\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FloatingMenu.js","sources":["../../src/menu/FloatingMenu.tsx"],"sourcesContent":["import { useEffect, useId, useRef, useState, type ReactNode } from 'react';\r\nimport { createPortal } from 'react-dom';\r\nimport { mergeOverlayRefs, useOverlayPresence, withOverlayOpen } from '../presence/useOverlayPresence';\r\nimport { DropdownMenuChevron } from '../icons/DropdownMenuChevron';\r\nimport { useFloatingMenuGeometry } from './useFloatingMenuGeometry';\r\n\r\nexport type FloatingMenuItem = {\r\n kind: 'item';\r\n id: string;\r\n label: ReactNode;\r\n disabled?: boolean;\r\n title?: string;\r\n onSelect: () => void;\r\n};\r\n\r\nexport type FloatingMenuSeparator = {\r\n kind: 'separator';\r\n id: string;\r\n};\r\n\r\nexport type FloatingMenuEntry = FloatingMenuItem | FloatingMenuSeparator;\r\n\r\nexport type FloatingMenuTriggerVariant = 'labeled' | 'icon';\r\n\r\nexport type FloatingMenuProps = {\r\n menuAriaLabel: string;\r\n items: FloatingMenuEntry[];\r\n triggerLabel?: ReactNode;\r\n triggerIcon?: ReactNode;\r\n triggerVariant?: FloatingMenuTriggerVariant;\r\n triggerClassName?: string;\r\n triggerAriaLabel?: string;\r\n scrollRootSelector?: string;\r\n wrapClassName?: string;\r\n};\r\n\r\nfunction IconDropdownTriggerContent({ icon }: { icon: ReactNode }) {\r\n return (\r\n <>\r\n {icon}\r\n <span className=\"dropdown-menu-trigger-caret\" aria-hidden=\"true\">\r\n <DropdownMenuChevron />\r\n </span>\r\n </>\r\n );\r\n}\r\n\r\nexport function FloatingMenu({\r\n menuAriaLabel,\r\n items,\r\n triggerLabel,\r\n triggerIcon,\r\n triggerVariant = 'labeled',\r\n triggerClassName,\r\n triggerAriaLabel,\r\n scrollRootSelector,\r\n wrapClassName = 'dropdown-menu',\r\n}: FloatingMenuProps) {\r\n const wrapRef = useRef<HTMLDivElement | null>(null);\r\n const menuId = useId();\r\n const [menuOpen, setMenuOpen] = useState(false);\r\n const { mounted: menuMounted, isOpen: menuShown, overlayRef: menuOverlayRef } =\r\n useOverlayPresence<HTMLUListElement>(menuOpen);\r\n const { menuPanelRef, triggerRef, menuGeometry } = useFloatingMenuGeometry({\r\n menuOpen,\r\n menuMounted,\r\n scrollRootSelector,\r\n });\r\n\r\n useEffect(() => {\r\n if (!menuOpen) {\r\n return;\r\n }\r\n const onDocumentMouseDown = (event: MouseEvent) => {\r\n const target = event.target as Node;\r\n if (wrapRef.current?.contains(target) || menuPanelRef.current?.contains(target)) {\r\n return;\r\n }\r\n setMenuOpen(false);\r\n };\r\n document.addEventListener('mousedown', onDocumentMouseDown);\r\n return () => document.removeEventListener('mousedown', onDocumentMouseDown);\r\n }, [menuOpen, menuPanelRef]);\r\n\r\n useEffect(() => {\r\n if (!menuOpen) {\r\n return;\r\n }\r\n const onKeyDown = (event: KeyboardEvent) => {\r\n if (event.key === 'Escape') {\r\n event.stopPropagation();\r\n setMenuOpen(false);\r\n }\r\n };\r\n window.addEventListener('keydown', onKeyDown, true);\r\n return () => window.removeEventListener('keydown', onKeyDown, true);\r\n }, [menuOpen]);\r\n\r\n const menuPanel = menuMounted ? (\r\n <ul\r\n ref={mergeOverlayRefs(menuOverlayRef, menuPanelRef)}\r\n id={menuId}\r\n className={withOverlayOpen('dropdown-menu-panel', menuShown && menuGeometry !== null)}\r\n role=\"menu\"\r\n aria-label={menuAriaLabel}\r\n style={{\r\n top: menuGeometry?.top ?? -9999,\r\n left: menuGeometry?.left ?? -9999,\r\n maxHeight: menuGeometry?.maxHeight,\r\n overflowY: menuGeometry?.maxHeight ? 'auto' : undefined,\r\n }}\r\n >\r\n {items.map((entry) => {\r\n if (entry.kind === 'separator') {\r\n return (\r\n <li key={entry.id} className=\"dropdown-menu-separator\" role=\"separator\" aria-orientation=\"horizontal\" />\r\n );\r\n }\r\n\r\n return (\r\n <li key={entry.id} role=\"none\">\r\n <button\r\n type=\"button\"\r\n className=\"dropdown-menu-item\"\r\n role=\"menuitem\"\r\n disabled={entry.disabled}\r\n title={entry.title}\r\n onClick={() => {\r\n if (entry.disabled) {\r\n return;\r\n }\r\n entry.onSelect();\r\n setMenuOpen(false);\r\n }}\r\n >\r\n {entry.label}\r\n </button>\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n ) : null;\r\n\r\n const resolvedTriggerClassName =\r\n triggerClassName ??\r\n (triggerVariant === 'icon'\r\n ? 'icon-button dropdown-menu-trigger dropdown-menu-trigger--icon'\r\n : 'secondary-button dropdown-menu-trigger');\r\n\r\n return (\r\n <div className={wrapClassName} ref={wrapRef}>\r\n <button\r\n ref={triggerRef}\r\n type=\"button\"\r\n className={resolvedTriggerClassName}\r\n aria-label={triggerAriaLabel ?? (triggerVariant === 'icon' ? menuAriaLabel : undefined)}\r\n aria-expanded={menuOpen}\r\n aria-haspopup=\"menu\"\r\n aria-controls={menuId}\r\n onClick={() => setMenuOpen((open) => !open)}\r\n >\r\n {triggerVariant === 'icon' ? (\r\n <IconDropdownTriggerContent icon={triggerIcon} />\r\n ) : (\r\n <>\r\n {triggerLabel}\r\n {' '}\r\n <DropdownMenuChevron />\r\n </>\r\n )}\r\n </button>\r\n {menuPanel ? createPortal(menuPanel, document.body) : null}\r\n </div>\r\n );\r\n}\r\n"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,6 @@ export type MobileActionSheetProps = {
|
|
|
4
4
|
overlayId: string;
|
|
5
5
|
onDismiss: () => void;
|
|
6
6
|
} & Omit<MobileActionSheetContentProps, 'onRequestDismiss' | 'open'>;
|
|
7
|
-
export declare function MobileActionSheet({ open, overlayId, onDismiss, ...contentProps }: MobileActionSheetProps): import("react
|
|
7
|
+
export declare function MobileActionSheet({ open, overlayId, onDismiss, ...contentProps }: MobileActionSheetProps): import("react").JSX.Element;
|
|
8
8
|
export type { MobileActionSheetEntry };
|
|
9
9
|
//# sourceMappingURL=MobileActionSheet.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MobileActionSheet.d.ts","sourceRoot":"","sources":["../../src/menu/MobileActionSheet.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,6BAA6B,EAClC,KAAK,sBAAsB,EAC5B,MAAM,4BAA4B,CAAC;AAEpC,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB,GAAG,IAAI,CAAC,6BAA6B,EAAE,kBAAkB,GAAG,MAAM,CAAC,CAAC;AAErE,wBAAgB,iBAAiB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,YAAY,EAAE,EAAE,sBAAsB
|
|
1
|
+
{"version":3,"file":"MobileActionSheet.d.ts","sourceRoot":"","sources":["../../src/menu/MobileActionSheet.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,6BAA6B,EAClC,KAAK,sBAAsB,EAC5B,MAAM,4BAA4B,CAAC;AAEpC,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB,GAAG,IAAI,CAAC,6BAA6B,EAAE,kBAAkB,GAAG,MAAM,CAAC,CAAC;AAErE,wBAAgB,iBAAiB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,YAAY,EAAE,EAAE,sBAAsB,+BAMxG;AAED,YAAY,EAAE,sBAAsB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MobileActionSheet.js","sources":["../../src/menu/MobileActionSheet.tsx"],"sourcesContent":["import { SiteOverlayBackdrop } from '../overlay/SiteOverlayBackdrop';\nimport {\n MobileActionSheetContent,\n type MobileActionSheetContentProps,\n type MobileActionSheetEntry,\n} from './MobileActionSheetContent';\n\nexport type MobileActionSheetProps = {\n open: boolean;\n overlayId: string;\n onDismiss: () => void;\n} & Omit<MobileActionSheetContentProps, 'onRequestDismiss' | 'open'>;\n\nexport function MobileActionSheet({ open, overlayId, onDismiss, ...contentProps }: MobileActionSheetProps) {\n return (\n <SiteOverlayBackdrop open={open} overlayId={overlayId} align=\"bottom\" onDismiss={onDismiss}>\n <MobileActionSheetContent {...contentProps} open={open} onRequestDismiss={onDismiss} />\n </SiteOverlayBackdrop>\n );\n}\n\nexport type { MobileActionSheetEntry };\n"],"names":[],"mappings":";;;AAaO,SAAS,kBAAkB,EAAE,MAAM,WAAW,WAAW,GAAG,gBAAwC;AACzG,SACE,oBAAC,qBAAA,EAAoB,MAAY,WAAsB,OAAM,UAAS,WACpE,UAAA,oBAAC,0BAAA,EAA0B,GAAG,cAAc,MAAY,kBAAkB,WAAW,GACvF;AAEJ;"}
|
|
1
|
+
{"version":3,"file":"MobileActionSheet.js","sources":["../../src/menu/MobileActionSheet.tsx"],"sourcesContent":["import { SiteOverlayBackdrop } from '../overlay/SiteOverlayBackdrop';\r\nimport {\r\n MobileActionSheetContent,\r\n type MobileActionSheetContentProps,\r\n type MobileActionSheetEntry,\r\n} from './MobileActionSheetContent';\r\n\r\nexport type MobileActionSheetProps = {\r\n open: boolean;\r\n overlayId: string;\r\n onDismiss: () => void;\r\n} & Omit<MobileActionSheetContentProps, 'onRequestDismiss' | 'open'>;\r\n\r\nexport function MobileActionSheet({ open, overlayId, onDismiss, ...contentProps }: MobileActionSheetProps) {\r\n return (\r\n <SiteOverlayBackdrop open={open} overlayId={overlayId} align=\"bottom\" onDismiss={onDismiss}>\r\n <MobileActionSheetContent {...contentProps} open={open} onRequestDismiss={onDismiss} />\r\n </SiteOverlayBackdrop>\r\n );\r\n}\r\n\r\nexport type { MobileActionSheetEntry };\r\n"],"names":[],"mappings":";;;AAaO,SAAS,kBAAkB,EAAE,MAAM,WAAW,WAAW,GAAG,gBAAwC;AACzG,SACE,oBAAC,qBAAA,EAAoB,MAAY,WAAsB,OAAM,UAAS,WACpE,UAAA,oBAAC,0BAAA,EAA0B,GAAG,cAAc,MAAY,kBAAkB,WAAW,GACvF;AAEJ;"}
|
|
@@ -27,5 +27,5 @@ export type MobileActionSheetContentProps = {
|
|
|
27
27
|
onRequestDismiss: () => void;
|
|
28
28
|
backAriaLabel?: string;
|
|
29
29
|
};
|
|
30
|
-
export declare function MobileActionSheetContent({ ariaLabel, entries, open, onRequestDismiss, backAriaLabel, }: MobileActionSheetContentProps): import("react
|
|
30
|
+
export declare function MobileActionSheetContent({ ariaLabel, entries, open, onRequestDismiss, backAriaLabel, }: MobileActionSheetContentProps): import("react").JSX.Element;
|
|
31
31
|
//# sourceMappingURL=MobileActionSheetContent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MobileActionSheetContent.d.ts","sourceRoot":"","sources":["../../src/menu/MobileActionSheetContent.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAG5D,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,IAAI,EAAE,SAAS,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,2BAA2B,EAAE,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAC9B,2BAA2B,GAC3B,4BAA4B,GAC5B,8BAA8B,CAAC;AAEnC,MAAM,MAAM,6BAA6B,GAAG;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAIF,wBAAgB,wBAAwB,CAAC,EACvC,SAAS,EACT,OAAO,EACP,IAAI,EACJ,gBAAgB,EAChB,aAAoB,GACrB,EAAE,6BAA6B
|
|
1
|
+
{"version":3,"file":"MobileActionSheetContent.d.ts","sourceRoot":"","sources":["../../src/menu/MobileActionSheetContent.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAG5D,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,IAAI,EAAE,SAAS,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,2BAA2B,EAAE,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAC9B,2BAA2B,GAC3B,4BAA4B,GAC5B,8BAA8B,CAAC;AAEnC,MAAM,MAAM,6BAA6B,GAAG;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAIF,wBAAgB,wBAAwB,CAAC,EACvC,SAAS,EACT,OAAO,EACP,IAAI,EACJ,gBAAgB,EAChB,aAAoB,GACrB,EAAE,6BAA6B,+BAqI/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MobileActionSheetContent.js","sources":["../../src/menu/MobileActionSheetContent.tsx"],"sourcesContent":["import { useEffect, useState, type ReactNode } from 'react';\nimport { ChevronLeftIcon, ChevronRightIcon } from '../icons/ChevronIcons';\n\nexport type MobileActionSheetActionItem = {\n kind: 'item';\n id: string;\n label: string;\n icon?: ReactNode;\n disabled?: boolean;\n title?: string;\n onSelect: () => void;\n};\n\nexport type MobileActionSheetSubmenuItem = {\n kind: 'submenu';\n id: string;\n label: string;\n icon: ReactNode;\n items: MobileActionSheetActionItem[];\n};\n\nexport type MobileActionSheetSeparatorItem = {\n kind: 'separator';\n id: string;\n};\n\nexport type MobileActionSheetEntry =\n | MobileActionSheetActionItem\n | MobileActionSheetSubmenuItem\n | MobileActionSheetSeparatorItem;\n\nexport type MobileActionSheetContentProps = {\n ariaLabel: string;\n entries: MobileActionSheetEntry[];\n open: boolean;\n onRequestDismiss: () => void;\n backAriaLabel?: string;\n};\n\nconst ROOT_PANEL = 'root';\n\nexport function MobileActionSheetContent({\n ariaLabel,\n entries,\n open,\n onRequestDismiss,\n backAriaLabel = '返回',\n}: MobileActionSheetContentProps) {\n const [activePanel, setActivePanel] = useState(ROOT_PANEL);\n\n useEffect(() => {\n if (!open) {\n setActivePanel(ROOT_PANEL);\n }\n }, [open]);\n\n const handleDismiss = () => {\n setActivePanel(ROOT_PANEL);\n onRequestDismiss();\n };\n\n const submenuById = new Map(\n entries.filter((e): e is MobileActionSheetSubmenuItem => e.kind === 'submenu').map((e) => [e.id, e]),\n );\n const activeSubmenu = activePanel === ROOT_PANEL ? null : submenuById.get(activePanel);\n\n const renderActionItem = (item: MobileActionSheetActionItem, closeOnSelect: boolean) => (\n <li key={item.id} className=\"mobile-action-sheet-list-item\" role=\"none\">\n <button\n type=\"button\"\n className=\"mobile-action-sheet-item\"\n role=\"menuitem\"\n disabled={item.disabled}\n title={item.title}\n onClick={() => {\n if (item.disabled) {\n return;\n }\n item.onSelect();\n if (closeOnSelect) {\n handleDismiss();\n }\n }}\n >\n {item.icon ? (\n <span className=\"mobile-action-sheet-item-icon\" aria-hidden=\"true\">\n {item.icon}\n </span>\n ) : null}\n <span className=\"mobile-action-sheet-item-label\">{item.label}</span>\n </button>\n </li>\n );\n\n const rootPanel = (\n <div className=\"mobile-action-sheet-panel\" role=\"menu\" aria-label={ariaLabel}>\n <ul className=\"mobile-action-sheet-list\">\n {entries.map((entry) => {\n if (entry.kind === 'separator') {\n return (\n <li key={entry.id} className=\"mobile-action-sheet-list-item\" role=\"none\">\n <div className=\"mobile-action-sheet-separator\" role=\"separator\" />\n </li>\n );\n }\n\n if (entry.kind === 'submenu') {\n return (\n <li key={entry.id} className=\"mobile-action-sheet-list-item\" role=\"none\">\n <button\n type=\"button\"\n className=\"mobile-action-sheet-item mobile-action-sheet-item--submenu\"\n role=\"menuitem\"\n aria-haspopup=\"menu\"\n onClick={() => setActivePanel(entry.id)}\n >\n <span className=\"mobile-action-sheet-item-icon\" aria-hidden=\"true\">\n {entry.icon}\n </span>\n <span className=\"mobile-action-sheet-item-label\">{entry.label}</span>\n <ChevronRightIcon className=\"mobile-action-sheet-item-chevron\" />\n </button>\n </li>\n );\n }\n\n return renderActionItem(entry, true);\n })}\n </ul>\n </div>\n );\n\n const hasSubmenus = entries.some((e) => e.kind === 'submenu');\n const onSubmenu = activeSubmenu !== null && activeSubmenu !== undefined;\n\n return (\n <div\n className=\"mobile-action-sheet\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={ariaLabel}\n onClick={(event) => event.stopPropagation()}\n >\n <div\n className={\n hasSubmenus ? 'mobile-action-sheet-panels mobile-action-sheet-panels--slide' : 'mobile-action-sheet-panels'\n }\n style={hasSubmenus ? { transform: onSubmenu ? 'translateX(-50%)' : 'none' } : undefined}\n >\n {rootPanel}\n {hasSubmenus ? (\n <div\n className=\"mobile-action-sheet-panel\"\n role=\"menu\"\n aria-label={activeSubmenu?.label}\n aria-hidden={!onSubmenu}\n >\n {activeSubmenu ? (\n <>\n <div className=\"mobile-action-sheet-subheader\">\n <button\n type=\"button\"\n className=\"mobile-action-sheet-back\"\n aria-label={backAriaLabel}\n onClick={() => setActivePanel(ROOT_PANEL)}\n >\n <ChevronLeftIcon className=\"mobile-action-sheet-back-chevron\" />\n </button>\n <span className=\"mobile-action-sheet-subheader-title\">{activeSubmenu.label}</span>\n </div>\n <ul className=\"mobile-action-sheet-list\">\n {activeSubmenu.items.map((item) => renderActionItem(item, true))}\n </ul>\n </>\n ) : null}\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MobileActionSheetContent.js","sources":["../../src/menu/MobileActionSheetContent.tsx"],"sourcesContent":["import { useEffect, useState, type ReactNode } from 'react';\r\nimport { ChevronLeftIcon, ChevronRightIcon } from '../icons/ChevronIcons';\r\n\r\nexport type MobileActionSheetActionItem = {\r\n kind: 'item';\r\n id: string;\r\n label: string;\r\n icon?: ReactNode;\r\n disabled?: boolean;\r\n title?: string;\r\n onSelect: () => void;\r\n};\r\n\r\nexport type MobileActionSheetSubmenuItem = {\r\n kind: 'submenu';\r\n id: string;\r\n label: string;\r\n icon: ReactNode;\r\n items: MobileActionSheetActionItem[];\r\n};\r\n\r\nexport type MobileActionSheetSeparatorItem = {\r\n kind: 'separator';\r\n id: string;\r\n};\r\n\r\nexport type MobileActionSheetEntry =\r\n | MobileActionSheetActionItem\r\n | MobileActionSheetSubmenuItem\r\n | MobileActionSheetSeparatorItem;\r\n\r\nexport type MobileActionSheetContentProps = {\r\n ariaLabel: string;\r\n entries: MobileActionSheetEntry[];\r\n open: boolean;\r\n onRequestDismiss: () => void;\r\n backAriaLabel?: string;\r\n};\r\n\r\nconst ROOT_PANEL = 'root';\r\n\r\nexport function MobileActionSheetContent({\r\n ariaLabel,\r\n entries,\r\n open,\r\n onRequestDismiss,\r\n backAriaLabel = '返回',\r\n}: MobileActionSheetContentProps) {\r\n const [activePanel, setActivePanel] = useState(ROOT_PANEL);\r\n\r\n useEffect(() => {\r\n if (!open) {\r\n setActivePanel(ROOT_PANEL);\r\n }\r\n }, [open]);\r\n\r\n const handleDismiss = () => {\r\n setActivePanel(ROOT_PANEL);\r\n onRequestDismiss();\r\n };\r\n\r\n const submenuById = new Map(\r\n entries.filter((e): e is MobileActionSheetSubmenuItem => e.kind === 'submenu').map((e) => [e.id, e]),\r\n );\r\n const activeSubmenu = activePanel === ROOT_PANEL ? null : submenuById.get(activePanel);\r\n\r\n const renderActionItem = (item: MobileActionSheetActionItem, closeOnSelect: boolean) => (\r\n <li key={item.id} className=\"mobile-action-sheet-list-item\" role=\"none\">\r\n <button\r\n type=\"button\"\r\n className=\"mobile-action-sheet-item\"\r\n role=\"menuitem\"\r\n disabled={item.disabled}\r\n title={item.title}\r\n onClick={() => {\r\n if (item.disabled) {\r\n return;\r\n }\r\n item.onSelect();\r\n if (closeOnSelect) {\r\n handleDismiss();\r\n }\r\n }}\r\n >\r\n {item.icon ? (\r\n <span className=\"mobile-action-sheet-item-icon\" aria-hidden=\"true\">\r\n {item.icon}\r\n </span>\r\n ) : null}\r\n <span className=\"mobile-action-sheet-item-label\">{item.label}</span>\r\n </button>\r\n </li>\r\n );\r\n\r\n const rootPanel = (\r\n <div className=\"mobile-action-sheet-panel\" role=\"menu\" aria-label={ariaLabel}>\r\n <ul className=\"mobile-action-sheet-list\">\r\n {entries.map((entry) => {\r\n if (entry.kind === 'separator') {\r\n return (\r\n <li key={entry.id} className=\"mobile-action-sheet-list-item\" role=\"none\">\r\n <div className=\"mobile-action-sheet-separator\" role=\"separator\" />\r\n </li>\r\n );\r\n }\r\n\r\n if (entry.kind === 'submenu') {\r\n return (\r\n <li key={entry.id} className=\"mobile-action-sheet-list-item\" role=\"none\">\r\n <button\r\n type=\"button\"\r\n className=\"mobile-action-sheet-item mobile-action-sheet-item--submenu\"\r\n role=\"menuitem\"\r\n aria-haspopup=\"menu\"\r\n onClick={() => setActivePanel(entry.id)}\r\n >\r\n <span className=\"mobile-action-sheet-item-icon\" aria-hidden=\"true\">\r\n {entry.icon}\r\n </span>\r\n <span className=\"mobile-action-sheet-item-label\">{entry.label}</span>\r\n <ChevronRightIcon className=\"mobile-action-sheet-item-chevron\" />\r\n </button>\r\n </li>\r\n );\r\n }\r\n\r\n return renderActionItem(entry, true);\r\n })}\r\n </ul>\r\n </div>\r\n );\r\n\r\n const hasSubmenus = entries.some((e) => e.kind === 'submenu');\r\n const onSubmenu = activeSubmenu !== null && activeSubmenu !== undefined;\r\n\r\n return (\r\n <div\r\n className=\"mobile-action-sheet\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n aria-label={ariaLabel}\r\n onClick={(event) => event.stopPropagation()}\r\n >\r\n <div\r\n className={\r\n hasSubmenus ? 'mobile-action-sheet-panels mobile-action-sheet-panels--slide' : 'mobile-action-sheet-panels'\r\n }\r\n style={hasSubmenus ? { transform: onSubmenu ? 'translateX(-50%)' : 'none' } : undefined}\r\n >\r\n {rootPanel}\r\n {hasSubmenus ? (\r\n <div\r\n className=\"mobile-action-sheet-panel\"\r\n role=\"menu\"\r\n aria-label={activeSubmenu?.label}\r\n aria-hidden={!onSubmenu}\r\n >\r\n {activeSubmenu ? (\r\n <>\r\n <div className=\"mobile-action-sheet-subheader\">\r\n <button\r\n type=\"button\"\r\n className=\"mobile-action-sheet-back\"\r\n aria-label={backAriaLabel}\r\n onClick={() => setActivePanel(ROOT_PANEL)}\r\n >\r\n <ChevronLeftIcon className=\"mobile-action-sheet-back-chevron\" />\r\n </button>\r\n <span className=\"mobile-action-sheet-subheader-title\">{activeSubmenu.label}</span>\r\n </div>\r\n <ul className=\"mobile-action-sheet-list\">\r\n {activeSubmenu.items.map((item) => renderActionItem(item, true))}\r\n </ul>\r\n </>\r\n ) : null}\r\n </div>\r\n ) : null}\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computeFloatingMenuGeometry.js","sources":["../../src/menu/computeFloatingMenuGeometry.ts"],"sourcesContent":["export type FloatingMenuGeometry = {\n top: number;\n left: number;\n maxHeight?: number;\n};\n\nexport type ComputeFloatingMenuGeometryOptions = {\n pad?: number;\n gap?: number;\n minScrollHeight?: number;\n};\n\nexport function computeFloatingMenuGeometry(\n trigger: HTMLElement,\n menu: HTMLElement,\n options: ComputeFloatingMenuGeometryOptions = {},\n): FloatingMenuGeometry {\n const pad = options.pad ?? 8;\n const gap = options.gap ?? 4;\n const minScrollHeight = options.minScrollHeight ?? 120;\n const rect = trigger.getBoundingClientRect();\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n const menuWidth = menu.offsetWidth;\n const menuHeight = menu.offsetHeight;\n\n let left = rect.right - menuWidth;\n if (left < pad) {\n left = rect.left;\n }\n left = Math.max(pad, Math.min(left, vw - menuWidth - pad));\n\n let top = rect.bottom + gap;\n let maxHeight: number | undefined;\n if (top + menuHeight > vh - pad) {\n const topIfAbove = rect.top - gap - menuHeight;\n if (topIfAbove >= pad) {\n top = topIfAbove;\n } else {\n maxHeight = Math.max(minScrollHeight, vh - pad - top);\n }\n }\n return { top, left, maxHeight };\n}\n"],"names":[],"mappings":"AAYO,SAAS,4BACd,SACA,MACA,UAA8C,CAAA,GACxB;AACtB,QAAM,MAAM,QAAQ,OAAO;AAC3B,QAAM,MAAM,QAAQ,OAAO;AAC3B,QAAM,kBAAkB,QAAQ,mBAAmB;AACnD,QAAM,OAAO,QAAQ,sBAAA;AACrB,QAAM,KAAK,OAAO;AAClB,QAAM,KAAK,OAAO;AAClB,QAAM,YAAY,KAAK;AACvB,QAAM,aAAa,KAAK;AAExB,MAAI,OAAO,KAAK,QAAQ;AACxB,MAAI,OAAO,KAAK;AACd,WAAO,KAAK;AAAA,EACd;AACA,SAAO,KAAK,IAAI,KAAK,KAAK,IAAI,MAAM,KAAK,YAAY,GAAG,CAAC;AAEzD,MAAI,MAAM,KAAK,SAAS;AACxB,MAAI;AACJ,MAAI,MAAM,aAAa,KAAK,KAAK;AAC/B,UAAM,aAAa,KAAK,MAAM,MAAM;AACpC,QAAI,cAAc,KAAK;AACrB,YAAM;AAAA,IACR,OAAO;AACL,kBAAY,KAAK,IAAI,iBAAiB,KAAK,MAAM,GAAG;AAAA,IACtD;AAAA,EACF;AACA,SAAO,EAAE,KAAK,MAAM,UAAA;AACtB;"}
|
|
1
|
+
{"version":3,"file":"computeFloatingMenuGeometry.js","sources":["../../src/menu/computeFloatingMenuGeometry.ts"],"sourcesContent":["export type FloatingMenuGeometry = {\r\n top: number;\r\n left: number;\r\n maxHeight?: number;\r\n};\r\n\r\nexport type ComputeFloatingMenuGeometryOptions = {\r\n pad?: number;\r\n gap?: number;\r\n minScrollHeight?: number;\r\n};\r\n\r\nexport function computeFloatingMenuGeometry(\r\n trigger: HTMLElement,\r\n menu: HTMLElement,\r\n options: ComputeFloatingMenuGeometryOptions = {},\r\n): FloatingMenuGeometry {\r\n const pad = options.pad ?? 8;\r\n const gap = options.gap ?? 4;\r\n const minScrollHeight = options.minScrollHeight ?? 120;\r\n const rect = trigger.getBoundingClientRect();\r\n const vw = window.innerWidth;\r\n const vh = window.innerHeight;\r\n const menuWidth = menu.offsetWidth;\r\n const menuHeight = menu.offsetHeight;\r\n\r\n let left = rect.right - menuWidth;\r\n if (left < pad) {\r\n left = rect.left;\r\n }\r\n left = Math.max(pad, Math.min(left, vw - menuWidth - pad));\r\n\r\n let top = rect.bottom + gap;\r\n let maxHeight: number | undefined;\r\n if (top + menuHeight > vh - pad) {\r\n const topIfAbove = rect.top - gap - menuHeight;\r\n if (topIfAbove >= pad) {\r\n top = topIfAbove;\r\n } else {\r\n maxHeight = Math.max(minScrollHeight, vh - pad - top);\r\n }\r\n }\r\n return { top, left, maxHeight };\r\n}\r\n"],"names":[],"mappings":"AAYO,SAAS,4BACd,SACA,MACA,UAA8C,CAAA,GACxB;AACtB,QAAM,MAAM,QAAQ,OAAO;AAC3B,QAAM,MAAM,QAAQ,OAAO;AAC3B,QAAM,kBAAkB,QAAQ,mBAAmB;AACnD,QAAM,OAAO,QAAQ,sBAAA;AACrB,QAAM,KAAK,OAAO;AAClB,QAAM,KAAK,OAAO;AAClB,QAAM,YAAY,KAAK;AACvB,QAAM,aAAa,KAAK;AAExB,MAAI,OAAO,KAAK,QAAQ;AACxB,MAAI,OAAO,KAAK;AACd,WAAO,KAAK;AAAA,EACd;AACA,SAAO,KAAK,IAAI,KAAK,KAAK,IAAI,MAAM,KAAK,YAAY,GAAG,CAAC;AAEzD,MAAI,MAAM,KAAK,SAAS;AACxB,MAAI;AACJ,MAAI,MAAM,aAAa,KAAK,KAAK;AAC/B,UAAM,aAAa,KAAK,MAAM,MAAM;AACpC,QAAI,cAAc,KAAK;AACrB,YAAM;AAAA,IACR,OAAO;AACL,kBAAY,KAAK,IAAI,iBAAiB,KAAK,MAAM,GAAG;AAAA,IACtD;AAAA,EACF;AACA,SAAO,EAAE,KAAK,MAAM,UAAA;AACtB;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFloatingMenuGeometry.js","sources":["../../src/menu/useFloatingMenuGeometry.ts"],"sourcesContent":["import { useLayoutEffect, useRef, useState } from 'react';\nimport { computeFloatingMenuGeometry, type FloatingMenuGeometry } from './computeFloatingMenuGeometry';\n\nexport type UseFloatingMenuGeometryOptions = {\n menuOpen: boolean;\n menuMounted: boolean;\n /** 额外监听 scroll 的容器选择器(如 `.app-main`) */\n scrollRootSelector?: string;\n};\n\nexport function useFloatingMenuGeometry({\n menuOpen,\n menuMounted,\n scrollRootSelector,\n}: UseFloatingMenuGeometryOptions) {\n const menuPanelRef = useRef<HTMLUListElement | null>(null);\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n const [menuGeometry, setMenuGeometry] = useState<FloatingMenuGeometry | null>(null);\n\n useLayoutEffect(() => {\n if (!menuOpen || !menuMounted) {\n setMenuGeometry(null);\n return;\n }\n\n const update = () => {\n const trigger = triggerRef.current;\n const menu = menuPanelRef.current;\n if (!trigger || !menu) {\n return;\n }\n setMenuGeometry(computeFloatingMenuGeometry(trigger, menu));\n };\n\n update();\n\n const scrollRoots: HTMLElement[] = [];\n if (scrollRootSelector) {\n const root = document.querySelector<HTMLElement>(scrollRootSelector);\n if (root) {\n scrollRoots.push(root);\n }\n }\n\n window.addEventListener('resize', update);\n window.addEventListener('scroll', update, true);\n for (const root of scrollRoots) {\n root.addEventListener('scroll', update, { passive: true });\n }\n\n return () => {\n window.removeEventListener('resize', update);\n window.removeEventListener('scroll', update, true);\n for (const root of scrollRoots) {\n root.removeEventListener('scroll', update);\n }\n };\n }, [menuOpen, menuMounted, scrollRootSelector]);\n\n return { menuPanelRef, triggerRef, menuGeometry };\n}\n"],"names":[],"mappings":";;AAUO,SAAS,wBAAwB;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AACF,GAAmC;AACjC,QAAM,eAAe,OAAgC,IAAI;AACzD,QAAM,aAAa,OAAiC,IAAI;AACxD,QAAM,CAAC,cAAc,eAAe,IAAI,SAAsC,IAAI;AAElF,kBAAgB,MAAM;AACpB,QAAI,CAAC,YAAY,CAAC,aAAa;AAC7B,sBAAgB,IAAI;AACpB;AAAA,IACF;AAEA,UAAM,SAAS,MAAM;AACnB,YAAM,UAAU,WAAW;AAC3B,YAAM,OAAO,aAAa;AAC1B,UAAI,CAAC,WAAW,CAAC,MAAM;AACrB;AAAA,MACF;AACA,sBAAgB,4BAA4B,SAAS,IAAI,CAAC;AAAA,IAC5D;AAEA,WAAA;AAEA,UAAM,cAA6B,CAAA;AACnC,QAAI,oBAAoB;AACtB,YAAM,OAAO,SAAS,cAA2B,kBAAkB;AACnE,UAAI,MAAM;AACR,oBAAY,KAAK,IAAI;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,iBAAiB,UAAU,MAAM;AACxC,WAAO,iBAAiB,UAAU,QAAQ,IAAI;AAC9C,eAAW,QAAQ,aAAa;AAC9B,WAAK,iBAAiB,UAAU,QAAQ,EAAE,SAAS,MAAM;AAAA,IAC3D;AAEA,WAAO,MAAM;AACX,aAAO,oBAAoB,UAAU,MAAM;AAC3C,aAAO,oBAAoB,UAAU,QAAQ,IAAI;AACjD,iBAAW,QAAQ,aAAa;AAC9B,aAAK,oBAAoB,UAAU,MAAM;AAAA,MAC3C;AAAA,IACF;AAAA,EACF,GAAG,CAAC,UAAU,aAAa,kBAAkB,CAAC;AAE9C,SAAO,EAAE,cAAc,YAAY,aAAA;AACrC;"}
|
|
1
|
+
{"version":3,"file":"useFloatingMenuGeometry.js","sources":["../../src/menu/useFloatingMenuGeometry.ts"],"sourcesContent":["import { useLayoutEffect, useRef, useState } from 'react';\r\nimport { computeFloatingMenuGeometry, type FloatingMenuGeometry } from './computeFloatingMenuGeometry';\r\n\r\nexport type UseFloatingMenuGeometryOptions = {\r\n menuOpen: boolean;\r\n menuMounted: boolean;\r\n /** 额外监听 scroll 的容器选择器(如 `.app-main`) */\r\n scrollRootSelector?: string;\r\n};\r\n\r\nexport function useFloatingMenuGeometry({\r\n menuOpen,\r\n menuMounted,\r\n scrollRootSelector,\r\n}: UseFloatingMenuGeometryOptions) {\r\n const menuPanelRef = useRef<HTMLUListElement | null>(null);\r\n const triggerRef = useRef<HTMLButtonElement | null>(null);\r\n const [menuGeometry, setMenuGeometry] = useState<FloatingMenuGeometry | null>(null);\r\n\r\n useLayoutEffect(() => {\r\n if (!menuOpen || !menuMounted) {\r\n setMenuGeometry(null);\r\n return;\r\n }\r\n\r\n const update = () => {\r\n const trigger = triggerRef.current;\r\n const menu = menuPanelRef.current;\r\n if (!trigger || !menu) {\r\n return;\r\n }\r\n setMenuGeometry(computeFloatingMenuGeometry(trigger, menu));\r\n };\r\n\r\n update();\r\n\r\n const scrollRoots: HTMLElement[] = [];\r\n if (scrollRootSelector) {\r\n const root = document.querySelector<HTMLElement>(scrollRootSelector);\r\n if (root) {\r\n scrollRoots.push(root);\r\n }\r\n }\r\n\r\n window.addEventListener('resize', update);\r\n window.addEventListener('scroll', update, true);\r\n for (const root of scrollRoots) {\r\n root.addEventListener('scroll', update, { passive: true });\r\n }\r\n\r\n return () => {\r\n window.removeEventListener('resize', update);\r\n window.removeEventListener('scroll', update, true);\r\n for (const root of scrollRoots) {\r\n root.removeEventListener('scroll', update);\r\n }\r\n };\r\n }, [menuOpen, menuMounted, scrollRootSelector]);\r\n\r\n return { menuPanelRef, triggerRef, menuGeometry };\r\n}\r\n"],"names":[],"mappings":";;AAUO,SAAS,wBAAwB;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AACF,GAAmC;AACjC,QAAM,eAAe,OAAgC,IAAI;AACzD,QAAM,aAAa,OAAiC,IAAI;AACxD,QAAM,CAAC,cAAc,eAAe,IAAI,SAAsC,IAAI;AAElF,kBAAgB,MAAM;AACpB,QAAI,CAAC,YAAY,CAAC,aAAa;AAC7B,sBAAgB,IAAI;AACpB;AAAA,IACF;AAEA,UAAM,SAAS,MAAM;AACnB,YAAM,UAAU,WAAW;AAC3B,YAAM,OAAO,aAAa;AAC1B,UAAI,CAAC,WAAW,CAAC,MAAM;AACrB;AAAA,MACF;AACA,sBAAgB,4BAA4B,SAAS,IAAI,CAAC;AAAA,IAC5D;AAEA,WAAA;AAEA,UAAM,cAA6B,CAAA;AACnC,QAAI,oBAAoB;AACtB,YAAM,OAAO,SAAS,cAA2B,kBAAkB;AACnE,UAAI,MAAM;AACR,oBAAY,KAAK,IAAI;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,iBAAiB,UAAU,MAAM;AACxC,WAAO,iBAAiB,UAAU,QAAQ,IAAI;AAC9C,eAAW,QAAQ,aAAa;AAC9B,WAAK,iBAAiB,UAAU,QAAQ,EAAE,SAAS,MAAM;AAAA,IAC3D;AAEA,WAAO,MAAM;AACX,aAAO,oBAAoB,UAAU,MAAM;AAC3C,aAAO,oBAAoB,UAAU,QAAQ,IAAI;AACjD,iBAAW,QAAQ,aAAa;AAC9B,aAAK,oBAAoB,UAAU,MAAM;AAAA,MAC3C;AAAA,IACF;AAAA,EACF,GAAG,CAAC,UAAU,aAAa,kBAAkB,CAAC;AAE9C,SAAO,EAAE,cAAc,YAAY,aAAA;AACrC;"}
|
|
@@ -11,7 +11,7 @@ type OverlayStackContextValue = {
|
|
|
11
11
|
};
|
|
12
12
|
export declare function OverlayStackProvider({ children }: {
|
|
13
13
|
children: ReactNode;
|
|
14
|
-
}): import("react
|
|
14
|
+
}): import("react").JSX.Element;
|
|
15
15
|
export declare function useOverlayStack(): OverlayStackContextValue;
|
|
16
16
|
export {};
|
|
17
17
|
//# sourceMappingURL=OverlayStackProvider.d.ts.map
|