@12-apps/ui 6.72.0 → 6.73.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components-catalog.md +1 -1
- package/dist/_internal/components/index.js +7 -7
- package/dist/_internal/components/navigation/SectionNav/SectionNav.bar.js +9 -6
- package/dist/_internal/components/navigation/SectionNav/SectionNav.js +8 -7
- package/dist/_internal/components/navigation/SectionNav/SectionNav.parts.js +8 -3
- package/dist/_internal/components/navigation/SectionNav/SectionNav.primary.js +11 -4
- package/dist/_internal/components/navigation/SectionNav/SectionNav.rail.js +4 -3
- package/dist/_internal/components/navigation/SectionNav/SectionNav.railCreate.js +3 -2
- package/dist/_internal/components/navigation/SectionNav/SectionNav.sheet.js +3 -2
- package/dist/_internal/components/navigation/index.js +8 -7
- package/dist/{chunk-WP7KPWCP.js → chunk-24HHUCWB.js} +14 -2
- package/dist/chunk-24HHUCWB.js.map +1 -0
- package/dist/{chunk-LWQGIN2M.js → chunk-27F2VXS4.js} +9 -6
- package/dist/chunk-27F2VXS4.js.map +1 -0
- package/dist/{chunk-WY7FR7I4.js → chunk-ILJ3FXIC.js} +17 -8
- package/dist/chunk-ILJ3FXIC.js.map +1 -0
- package/dist/{chunk-2STYL5PF.js → chunk-NM46HQSW.js} +2 -2
- package/dist/{chunk-OBGUD2PG.js → chunk-SNWCT6JN.js} +91 -42
- package/dist/chunk-SNWCT6JN.js.map +1 -0
- package/dist/{chunk-VI2IXBOO.js → chunk-UKUGSU3Y.js} +33 -14
- package/dist/chunk-UKUGSU3Y.js.map +1 -0
- package/dist/{chunk-XS4NQ6LD.js → chunk-URSYEHPU.js} +68 -36
- package/dist/chunk-URSYEHPU.js.map +1 -0
- package/dist/navigation/SectionNav.js +8 -7
- package/dist/types/components/navigation/SectionNav/SectionNav.bar.d.ts +8 -2
- package/dist/types/components/navigation/SectionNav/SectionNav.bar.d.ts.map +1 -1
- package/dist/types/components/navigation/SectionNav/SectionNav.d.ts +4 -1
- package/dist/types/components/navigation/SectionNav/SectionNav.d.ts.map +1 -1
- package/dist/types/components/navigation/SectionNav/SectionNav.parts.d.ts +12 -1
- package/dist/types/components/navigation/SectionNav/SectionNav.parts.d.ts.map +1 -1
- package/dist/types/components/navigation/SectionNav/SectionNav.primary.d.ts +16 -1
- package/dist/types/components/navigation/SectionNav/SectionNav.primary.d.ts.map +1 -1
- package/dist/types/components/navigation/SectionNav/SectionNav.rail.d.ts +3 -2
- package/dist/types/components/navigation/SectionNav/SectionNav.rail.d.ts.map +1 -1
- package/dist/types/components/navigation/SectionNav/SectionNav.railCreate.d.ts +3 -1
- package/dist/types/components/navigation/SectionNav/SectionNav.railCreate.d.ts.map +1 -1
- package/dist/types/components/navigation/SectionNav/SectionNav.types.d.ts +12 -0
- package/dist/types/components/navigation/SectionNav/SectionNav.types.d.ts.map +1 -1
- package/dist/types/components/navigation/SectionNav/index.d.ts +1 -0
- package/dist/types/components/navigation/SectionNav/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/navigation/SectionNav/SectionNav.bar.tsx +84 -30
- package/src/components/navigation/SectionNav/SectionNav.md +25 -4
- package/src/components/navigation/SectionNav/SectionNav.parts.tsx +19 -1
- package/src/components/navigation/SectionNav/SectionNav.primary.tsx +52 -11
- package/src/components/navigation/SectionNav/SectionNav.rail.tsx +90 -35
- package/src/components/navigation/SectionNav/SectionNav.railCreate.tsx +23 -5
- package/src/components/navigation/SectionNav/SectionNav.tsx +6 -0
- package/src/components/navigation/SectionNav/SectionNav.types.ts +12 -0
- package/src/components/navigation/SectionNav/index.ts +1 -0
- package/dist/chunk-LWQGIN2M.js.map +0 -1
- package/dist/chunk-OBGUD2PG.js.map +0 -1
- package/dist/chunk-VI2IXBOO.js.map +0 -1
- package/dist/chunk-WP7KPWCP.js.map +0 -1
- package/dist/chunk-WY7FR7I4.js.map +0 -1
- package/dist/chunk-XS4NQ6LD.js.map +0 -1
- /package/dist/{chunk-2STYL5PF.js.map → chunk-NM46HQSW.js.map} +0 -0
package/components-catalog.md
CHANGED
|
@@ -737,7 +737,7 @@ Components for site and app navigation.
|
|
|
737
737
|
### SectionNav
|
|
738
738
|
**Purpose**: A section's own navigation — the few screens one kind of work moves between
|
|
739
739
|
**Use Cases**: A phone bottom bar for a work area (a shift, a till, a field app); the same destinations as a rail on a wide screen
|
|
740
|
-
**Features**: `bar` (destinations with counts, a `more` sheet, a raised `primary` action in the middle opening its own sheet) and `rail` (a way back, destinations, every menu listed); router-agnostic links via `linkComponent`; copy as a required prop; also a bar of VERBS pinned at a screen's foot — action slots (`onSelect`, `disabled`, `dimmed` — looks disabled but still answers a tap, `loading` — focusable and busy, `active` as a pressed toggle), a raised `primary` that acts on tap with its label under it, disabled menu entries, host-owned `dataTestId`s
|
|
740
|
+
**Features**: `bar` (destinations with counts, a `more` sheet, a raised `primary` action in the middle opening its own sheet) and `rail` (a way back, destinations, every menu listed); router-agnostic links via `linkComponent`; copy as a required prop; also a bar of VERBS pinned at a screen's foot — action slots (`onSelect`, `disabled`, `dimmed` — looks disabled but still answers a tap, `loading` — focusable and busy, `active` as a pressed toggle), a raised `primary` that acts on tap with its label under it, disabled menu entries, host-owned `dataTestId`s; `compact` — both layouts as icons only, a size down (48px bar, 40px raised button, a rail for a 64px column), every label kept as the control's name, for a host that folds its chrome
|
|
741
741
|
**Also exports**: `RaisedActionButton` — the raised round action alone, for a bar the host already draws
|
|
742
742
|
**Types**: `SectionNavProps`, `SectionNavDestination`, `SectionNavAction`, `SectionNavMenu`, `SectionNavGroup`, `SectionNavEntry`, `SectionNavCopy`
|
|
743
743
|
**Location**: `src/components/navigation/SectionNav`
|
|
@@ -105,17 +105,17 @@ import "../../chunk-3L5OZCGA.js";
|
|
|
105
105
|
import "../../chunk-R26KYJHK.js";
|
|
106
106
|
import {
|
|
107
107
|
SectionNav
|
|
108
|
-
} from "../../chunk-
|
|
109
|
-
import "../../chunk-
|
|
110
|
-
import "../../chunk-
|
|
108
|
+
} from "../../chunk-27F2VXS4.js";
|
|
109
|
+
import "../../chunk-SNWCT6JN.js";
|
|
110
|
+
import "../../chunk-ILJ3FXIC.js";
|
|
111
111
|
import {
|
|
112
112
|
sectionNavBarInset
|
|
113
|
-
} from "../../chunk-
|
|
114
|
-
import "../../chunk-
|
|
113
|
+
} from "../../chunk-URSYEHPU.js";
|
|
114
|
+
import "../../chunk-NM46HQSW.js";
|
|
115
115
|
import {
|
|
116
116
|
RaisedActionButton
|
|
117
|
-
} from "../../chunk-
|
|
118
|
-
import "../../chunk-
|
|
117
|
+
} from "../../chunk-UKUGSU3Y.js";
|
|
118
|
+
import "../../chunk-24HHUCWB.js";
|
|
119
119
|
import "../../chunk-YCCWJ5XQ.js";
|
|
120
120
|
import "../../chunk-R445KMGG.js";
|
|
121
121
|
import {
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SectionNavBar,
|
|
3
|
-
sectionNavBarInset
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
import "../../../../chunk-
|
|
7
|
-
import "../../../../chunk-
|
|
3
|
+
sectionNavBarInset,
|
|
4
|
+
sectionNavSheetOffset
|
|
5
|
+
} from "../../../../chunk-URSYEHPU.js";
|
|
6
|
+
import "../../../../chunk-NM46HQSW.js";
|
|
7
|
+
import "../../../../chunk-UKUGSU3Y.js";
|
|
8
|
+
import "../../../../chunk-24HHUCWB.js";
|
|
8
9
|
import "../../../../chunk-YCCWJ5XQ.js";
|
|
9
10
|
import "../../../../chunk-TMSWLFL4.js";
|
|
10
11
|
import "../../../../chunk-UALPKKAY.js";
|
|
12
|
+
import "../../../../chunk-PUFA7FQ7.js";
|
|
11
13
|
import "../../../../chunk-5AK2EZG5.js";
|
|
12
14
|
import "../../../../chunk-N5PVD4J5.js";
|
|
13
15
|
import "../../../../chunk-6C5D6O3D.js";
|
|
@@ -44,6 +46,7 @@ import "../../../../chunk-MFU4Y25U.js";
|
|
|
44
46
|
import "../../../../chunk-PZ5AY32C.js";
|
|
45
47
|
export {
|
|
46
48
|
SectionNavBar,
|
|
47
|
-
sectionNavBarInset
|
|
49
|
+
sectionNavBarInset,
|
|
50
|
+
sectionNavSheetOffset
|
|
48
51
|
};
|
|
49
52
|
//# sourceMappingURL=SectionNav.bar.js.map
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SectionNav
|
|
3
|
-
} from "../../../../chunk-
|
|
4
|
-
import "../../../../chunk-
|
|
5
|
-
import "../../../../chunk-
|
|
6
|
-
import "../../../../chunk-
|
|
7
|
-
import "../../../../chunk-
|
|
8
|
-
import "../../../../chunk-
|
|
9
|
-
import "../../../../chunk-
|
|
3
|
+
} from "../../../../chunk-27F2VXS4.js";
|
|
4
|
+
import "../../../../chunk-SNWCT6JN.js";
|
|
5
|
+
import "../../../../chunk-ILJ3FXIC.js";
|
|
6
|
+
import "../../../../chunk-URSYEHPU.js";
|
|
7
|
+
import "../../../../chunk-NM46HQSW.js";
|
|
8
|
+
import "../../../../chunk-UKUGSU3Y.js";
|
|
9
|
+
import "../../../../chunk-24HHUCWB.js";
|
|
10
10
|
import "../../../../chunk-YCCWJ5XQ.js";
|
|
11
11
|
import "../../../../chunk-TMSWLFL4.js";
|
|
12
12
|
import "../../../../chunk-UALPKKAY.js";
|
|
13
|
+
import "../../../../chunk-PUFA7FQ7.js";
|
|
13
14
|
import "../../../../chunk-5AK2EZG5.js";
|
|
14
15
|
import "../../../../chunk-N5PVD4J5.js";
|
|
15
16
|
import "../../../../chunk-6C5D6O3D.js";
|
|
@@ -4,11 +4,14 @@ import {
|
|
|
4
4
|
CountedIcon,
|
|
5
5
|
NOT_LIVE,
|
|
6
6
|
SlotIcon,
|
|
7
|
+
VISUALLY_HIDDEN,
|
|
7
8
|
controlProps,
|
|
8
9
|
destinationControl,
|
|
9
|
-
focusRing
|
|
10
|
-
|
|
10
|
+
focusRing,
|
|
11
|
+
useMounted
|
|
12
|
+
} from "../../../../chunk-24HHUCWB.js";
|
|
11
13
|
import "../../../../chunk-YCCWJ5XQ.js";
|
|
14
|
+
import "../../../../chunk-PUFA7FQ7.js";
|
|
12
15
|
import "../../../../chunk-5AK2EZG5.js";
|
|
13
16
|
import "../../../../chunk-N5PVD4J5.js";
|
|
14
17
|
import "../../../../chunk-6C5D6O3D.js";
|
|
@@ -48,8 +51,10 @@ export {
|
|
|
48
51
|
CountedIcon,
|
|
49
52
|
NOT_LIVE,
|
|
50
53
|
SlotIcon,
|
|
54
|
+
VISUALLY_HIDDEN,
|
|
51
55
|
controlProps,
|
|
52
56
|
destinationControl,
|
|
53
|
-
focusRing
|
|
57
|
+
focusRing,
|
|
58
|
+
useMounted
|
|
54
59
|
};
|
|
55
60
|
//# sourceMappingURL=SectionNav.parts.js.map
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
RAISED_LIFT,
|
|
3
|
+
RAISED_LIFT_COMPACT,
|
|
4
|
+
RaisedActionButton,
|
|
5
|
+
raisedLift
|
|
6
|
+
} from "../../../../chunk-UKUGSU3Y.js";
|
|
7
|
+
import "../../../../chunk-24HHUCWB.js";
|
|
5
8
|
import "../../../../chunk-YCCWJ5XQ.js";
|
|
9
|
+
import "../../../../chunk-PUFA7FQ7.js";
|
|
6
10
|
import "../../../../chunk-5AK2EZG5.js";
|
|
7
11
|
import "../../../../chunk-N5PVD4J5.js";
|
|
8
12
|
import "../../../../chunk-6C5D6O3D.js";
|
|
@@ -37,6 +41,9 @@ import "../../../../chunk-N3GAFIXG.js";
|
|
|
37
41
|
import "../../../../chunk-YKCAJ2TN.js";
|
|
38
42
|
import "../../../../chunk-PZ5AY32C.js";
|
|
39
43
|
export {
|
|
40
|
-
|
|
44
|
+
RAISED_LIFT,
|
|
45
|
+
RAISED_LIFT_COMPACT,
|
|
46
|
+
RaisedActionButton,
|
|
47
|
+
raisedLift
|
|
41
48
|
};
|
|
42
49
|
//# sourceMappingURL=SectionNav.primary.js.map
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SectionNavRail
|
|
3
|
-
} from "../../../../chunk-
|
|
4
|
-
import "../../../../chunk-
|
|
5
|
-
import "../../../../chunk-
|
|
3
|
+
} from "../../../../chunk-SNWCT6JN.js";
|
|
4
|
+
import "../../../../chunk-ILJ3FXIC.js";
|
|
5
|
+
import "../../../../chunk-24HHUCWB.js";
|
|
6
6
|
import "../../../../chunk-YCCWJ5XQ.js";
|
|
7
|
+
import "../../../../chunk-PUFA7FQ7.js";
|
|
7
8
|
import "../../../../chunk-5AK2EZG5.js";
|
|
8
9
|
import "../../../../chunk-N5PVD4J5.js";
|
|
9
10
|
import "../../../../chunk-6C5D6O3D.js";
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
RailCreateMenu
|
|
3
|
-
} from "../../../../chunk-
|
|
4
|
-
import "../../../../chunk-
|
|
3
|
+
} from "../../../../chunk-ILJ3FXIC.js";
|
|
4
|
+
import "../../../../chunk-24HHUCWB.js";
|
|
5
5
|
import "../../../../chunk-YCCWJ5XQ.js";
|
|
6
|
+
import "../../../../chunk-PUFA7FQ7.js";
|
|
6
7
|
import "../../../../chunk-5AK2EZG5.js";
|
|
7
8
|
import "../../../../chunk-N5PVD4J5.js";
|
|
8
9
|
import "../../../../chunk-6C5D6O3D.js";
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SectionNavSheet
|
|
3
|
-
} from "../../../../chunk-
|
|
4
|
-
import "../../../../chunk-
|
|
3
|
+
} from "../../../../chunk-NM46HQSW.js";
|
|
4
|
+
import "../../../../chunk-24HHUCWB.js";
|
|
5
5
|
import "../../../../chunk-YCCWJ5XQ.js";
|
|
6
6
|
import "../../../../chunk-TMSWLFL4.js";
|
|
7
7
|
import "../../../../chunk-UALPKKAY.js";
|
|
8
|
+
import "../../../../chunk-PUFA7FQ7.js";
|
|
8
9
|
import "../../../../chunk-5AK2EZG5.js";
|
|
9
10
|
import "../../../../chunk-N5PVD4J5.js";
|
|
10
11
|
import "../../../../chunk-6C5D6O3D.js";
|
|
@@ -29,17 +29,17 @@ import "../../../chunk-3L5OZCGA.js";
|
|
|
29
29
|
import "../../../chunk-R26KYJHK.js";
|
|
30
30
|
import {
|
|
31
31
|
SectionNav
|
|
32
|
-
} from "../../../chunk-
|
|
33
|
-
import "../../../chunk-
|
|
34
|
-
import "../../../chunk-
|
|
32
|
+
} from "../../../chunk-27F2VXS4.js";
|
|
33
|
+
import "../../../chunk-SNWCT6JN.js";
|
|
34
|
+
import "../../../chunk-ILJ3FXIC.js";
|
|
35
35
|
import {
|
|
36
36
|
sectionNavBarInset
|
|
37
|
-
} from "../../../chunk-
|
|
38
|
-
import "../../../chunk-
|
|
37
|
+
} from "../../../chunk-URSYEHPU.js";
|
|
38
|
+
import "../../../chunk-NM46HQSW.js";
|
|
39
39
|
import {
|
|
40
40
|
RaisedActionButton
|
|
41
|
-
} from "../../../chunk-
|
|
42
|
-
import "../../../chunk-
|
|
41
|
+
} from "../../../chunk-UKUGSU3Y.js";
|
|
42
|
+
import "../../../chunk-24HHUCWB.js";
|
|
43
43
|
import "../../../chunk-YCCWJ5XQ.js";
|
|
44
44
|
import "../../../chunk-R445KMGG.js";
|
|
45
45
|
import {
|
|
@@ -92,6 +92,7 @@ import "../../../chunk-5UX5QAFJ.js";
|
|
|
92
92
|
import "../../../chunk-Z2JH5KW5.js";
|
|
93
93
|
import "../../../chunk-AL5E624U.js";
|
|
94
94
|
import "../../../chunk-LV7LSPBF.js";
|
|
95
|
+
import "../../../chunk-PUFA7FQ7.js";
|
|
95
96
|
import "../../../chunk-5AK2EZG5.js";
|
|
96
97
|
import "../../../chunk-N5PVD4J5.js";
|
|
97
98
|
import "../../../chunk-6C5D6O3D.js";
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
shownCount
|
|
3
3
|
} from "./chunk-YCCWJ5XQ.js";
|
|
4
|
+
import {
|
|
5
|
+
SR_ONLY_SX
|
|
6
|
+
} from "./chunk-PUFA7FQ7.js";
|
|
4
7
|
import {
|
|
5
8
|
Badge
|
|
6
9
|
} from "./chunk-N5PVD4J5.js";
|
|
@@ -11,6 +14,7 @@ import {
|
|
|
11
14
|
// src/components/navigation/SectionNav/SectionNav.parts.tsx
|
|
12
15
|
import Box from "@mui/material/Box/index.js";
|
|
13
16
|
import CircularProgress from "@mui/material/CircularProgress/index.js";
|
|
17
|
+
import { useEffect, useState } from "react";
|
|
14
18
|
import { Fragment, jsx } from "react/jsx-runtime";
|
|
15
19
|
function CountedIcon({
|
|
16
20
|
icon,
|
|
@@ -92,6 +96,12 @@ var CONTROL_RESET = {
|
|
|
92
96
|
margin: 0,
|
|
93
97
|
[NOT_LIVE]: { cursor: "default" }
|
|
94
98
|
};
|
|
99
|
+
var VISUALLY_HIDDEN = SR_ONLY_SX;
|
|
100
|
+
function useMounted() {
|
|
101
|
+
const [mounted, setMounted] = useState(false);
|
|
102
|
+
useEffect(() => setMounted(true), []);
|
|
103
|
+
return mounted;
|
|
104
|
+
}
|
|
95
105
|
|
|
96
106
|
export {
|
|
97
107
|
Box,
|
|
@@ -101,6 +111,8 @@ export {
|
|
|
101
111
|
destinationControl,
|
|
102
112
|
NOT_LIVE,
|
|
103
113
|
SlotIcon,
|
|
104
|
-
CONTROL_RESET
|
|
114
|
+
CONTROL_RESET,
|
|
115
|
+
VISUALLY_HIDDEN,
|
|
116
|
+
useMounted
|
|
105
117
|
};
|
|
106
|
-
//# sourceMappingURL=chunk-
|
|
118
|
+
//# sourceMappingURL=chunk-24HHUCWB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/navigation/SectionNav/SectionNav.parts.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport CircularProgress from '@mui/material/CircularProgress/index.js';\nimport type { SxProps, Theme } from '@mui/material/styles/index.js';\nimport { useEffect, useState, type ElementType, type ReactNode } from 'react';\n\nimport { rem } from '../../../tokens/scales';\nimport { SR_ONLY_SX } from '../../form/Label/Label.styles';\nimport { Badge } from '../../data-display/Badge';\n\nimport { shownCount } from './SectionNav.helpers';\nimport type { SectionNavBadge, SectionNavDestination } from './SectionNav.types';\n\n/**\n * An icon with its count on the shoulder.\n *\n * Quiet to assistive tech on change: the count moves on a poll, and a control\n * that announces itself every minute is noise. Its NAME carries the number,\n * so it is read when the control is.\n */\nexport function CountedIcon({\n icon,\n count,\n label,\n testId,\n attentionLabel,\n}: {\n icon: ReactNode;\n count: SectionNavBadge | undefined;\n label: (count: number) => string;\n testId: string;\n /** The \"!\" badge's accessible name (`SectionNavCopy.attention`). */\n attentionLabel?: string;\n}): React.JSX.Element {\n if (count === '!') {\n return (\n <Badge content=\"!\" variant=\"count\" color=\"warning\" aria-label={attentionLabel ?? label(1)} aria-live=\"off\" data-testid={testId}>\n {icon}\n </Badge>\n );\n }\n const shown = shownCount(count);\n if (shown === undefined) return <>{icon}</>;\n return (\n // The library's corner count, in the warning role the sidebar's pill is\n // drawn from.\n <Badge\n content={shown}\n variant=\"count\"\n color=\"warning\"\n max={99}\n aria-label={label(shown)}\n aria-live=\"off\"\n data-testid={testId}\n >\n {icon}\n </Badge>\n );\n}\n\n/** The keyboard ring every control in the nav draws, in the theme's own colour. */\nexport function focusRing(theme: Theme): SxProps<Theme> {\n return {\n '&:focus-visible': {\n outline: `${rem(theme, 2)} solid ${theme.palette.primary.main}`,\n outlineOffset: rem(theme, -2),\n },\n };\n}\n\n/**\n * The element an entry or destination renders as: the host's link for an\n * `href`, a button for an `onSelect`.\n *\n * Returned as props for a `Box`, so the control stays ONE interactive\n * element — never a button wrapped around a link. Whatever it would lead to,\n * a control that is not live is a BUTTON: a link cannot be disabled, and one\n * that looks dimmed but still navigates is the lie this rules out.\n *\n * - `inert` — a native `disabled` button: no focus, no click.\n * - `busy` — a write is in flight: `aria-disabled`, still focusable, and the\n * click is dropped, so the keyboard keeps its place until the write answers.\n * - `dimmed` — `aria-disabled`, still focusable, and the click STILL runs, so\n * the host can explain why the act cannot be done now.\n */\nexport function controlProps({\n href,\n onClick,\n linkComponent,\n inert = false,\n busy = false,\n dimmed = false,\n}: {\n href: string | undefined;\n onClick?: () => void;\n linkComponent: ElementType | undefined;\n inert?: boolean;\n busy?: boolean;\n dimmed?: boolean;\n}): Record<string, unknown> {\n if (inert) return { component: 'button', type: 'button', disabled: true };\n if (busy) return { component: 'button', type: 'button', 'aria-disabled': 'true' };\n if (dimmed) return { component: 'button', type: 'button', 'aria-disabled': 'true', onClick };\n if (href !== undefined) return { component: linkComponent ?? 'a', href, onClick };\n return { component: 'button', type: 'button', onClick };\n}\n\n/**\n * A destination's control: `controlProps` from its own state, plus\n * `aria-pressed` when it is an action slot that is a toggle. A link reports\n * where the viewer is through `aria-current` instead — the row draws that.\n */\nexport function destinationControl(\n destination: SectionNavDestination,\n linkComponent: ElementType | undefined,\n onClick: () => void,\n): Record<string, unknown> {\n return {\n ...controlProps({\n href: destination.href,\n linkComponent,\n inert: destination.disabled === true,\n busy: destination.loading === true,\n dimmed: destination.dimmed === true,\n onClick,\n }),\n 'aria-pressed': destination.href === undefined ? destination.active : undefined,\n };\n}\n\n/**\n * The selector for a control drawn as not live: natively disabled, or\n * `aria-disabled` (in flight, or dimmed) and still focusable.\n */\nexport const NOT_LIVE = '&:disabled, &[aria-disabled=\"true\"]';\n\n/**\n * The icon, or the spinner that stands in for it while the slot's write is in\n * flight — the same box, so the label under it does not move.\n */\nexport function SlotIcon({ icon, loading }: { icon: ReactNode; loading: boolean }): React.JSX.Element {\n if (!loading) return <>{icon}</>;\n return <CircularProgress size=\"1em\" color=\"inherit\" thickness={5} data-testid=\"section-nav-spinner\" />;\n}\n\n/** The base reset every clickable in the nav shares: no underline, no button chrome. */\nexport const CONTROL_RESET = {\n border: 0,\n background: 'none',\n font: 'inherit',\n color: 'inherit',\n textDecoration: 'none',\n cursor: 'pointer',\n margin: 0,\n [NOT_LIVE]: { cursor: 'default' },\n} as const;\n\n/**\n * Out of sight, still read: a compact nav keeps each label as its control's\n * accessible name. The same box `Label`'s `srOnly` draws.\n */\nexport const VISUALLY_HIDDEN = SR_ONLY_SX;\n\n/**\n * False on the first render, true from then on — so a fold animates when the\n * host CHANGES `compact`, never when a page simply opens folded (which drew\n * the labels sliding out over the neighbouring badges on every load).\n */\nexport function useMounted(): boolean {\n const [mounted, setMounted] = useState(false);\n useEffect(() => setMounted(true), []);\n return mounted;\n}\n\nexport { Box };\n"],"mappings":";;;;;;;;;;;;;;AAAA,OAAO,SAAS;AAChB,OAAO,sBAAsB;AAE7B,SAAS,WAAW,gBAAkD;AAgChE,SAM4B,UAN5B;AAhBC,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAOsB;AACpB,MAAI,UAAU,KAAK;AACjB,WACE,oBAAC,SAAM,SAAQ,KAAI,SAAQ,SAAQ,OAAM,WAAU,cAAY,kBAAkB,MAAM,CAAC,GAAG,aAAU,OAAM,eAAa,QACrH,gBACH;AAAA,EAEJ;AACA,QAAM,QAAQ,WAAW,KAAK;AAC9B,MAAI,UAAU,OAAW,QAAO,gCAAG,gBAAK;AACxC;AAAA;AAAA;AAAA,IAGE;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,QACT,SAAQ;AAAA,QACR,OAAM;AAAA,QACN,KAAK;AAAA,QACL,cAAY,MAAM,KAAK;AAAA,QACvB,aAAU;AAAA,QACV,eAAa;AAAA,QAEZ;AAAA;AAAA,IACH;AAAA;AAEJ;AAGO,SAAS,UAAU,OAA8B;AACtD,SAAO;AAAA,IACL,mBAAmB;AAAA,MACjB,SAAS,GAAG,IAAI,OAAO,CAAC,CAAC,UAAU,MAAM,QAAQ,QAAQ,IAAI;AAAA,MAC7D,eAAe,IAAI,OAAO,EAAE;AAAA,IAC9B;AAAA,EACF;AACF;AAiBO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,SAAS;AACX,GAO4B;AAC1B,MAAI,MAAO,QAAO,EAAE,WAAW,UAAU,MAAM,UAAU,UAAU,KAAK;AACxE,MAAI,KAAM,QAAO,EAAE,WAAW,UAAU,MAAM,UAAU,iBAAiB,OAAO;AAChF,MAAI,OAAQ,QAAO,EAAE,WAAW,UAAU,MAAM,UAAU,iBAAiB,QAAQ,QAAQ;AAC3F,MAAI,SAAS,OAAW,QAAO,EAAE,WAAW,iBAAiB,KAAK,MAAM,QAAQ;AAChF,SAAO,EAAE,WAAW,UAAU,MAAM,UAAU,QAAQ;AACxD;AAOO,SAAS,mBACd,aACA,eACA,SACyB;AACzB,SAAO;AAAA,IACL,GAAG,aAAa;AAAA,MACd,MAAM,YAAY;AAAA,MAClB;AAAA,MACA,OAAO,YAAY,aAAa;AAAA,MAChC,MAAM,YAAY,YAAY;AAAA,MAC9B,QAAQ,YAAY,WAAW;AAAA,MAC/B;AAAA,IACF,CAAC;AAAA,IACD,gBAAgB,YAAY,SAAS,SAAY,YAAY,SAAS;AAAA,EACxE;AACF;AAMO,IAAM,WAAW;AAMjB,SAAS,SAAS,EAAE,MAAM,QAAQ,GAA6D;AACpG,MAAI,CAAC,QAAS,QAAO,gCAAG,gBAAK;AAC7B,SAAO,oBAAC,oBAAiB,MAAK,OAAM,OAAM,WAAU,WAAW,GAAG,eAAY,uBAAsB;AACtG;AAGO,IAAM,gBAAgB;AAAA,EAC3B,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,OAAO;AAAA,EACP,gBAAgB;AAAA,EAChB,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,CAAC,QAAQ,GAAG,EAAE,QAAQ,UAAU;AAClC;AAMO,IAAM,kBAAkB;AAOxB,SAAS,aAAsB;AACpC,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAC5C,YAAU,MAAM,WAAW,IAAI,GAAG,CAAC,CAAC;AACpC,SAAO;AACT;","names":[]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SectionNavRail
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-SNWCT6JN.js";
|
|
4
4
|
import {
|
|
5
5
|
SectionNavBar
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-URSYEHPU.js";
|
|
7
7
|
|
|
8
8
|
// src/components/navigation/SectionNav/SectionNav.tsx
|
|
9
9
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -17,7 +17,8 @@ function SectionNav({
|
|
|
17
17
|
heading,
|
|
18
18
|
linkComponent,
|
|
19
19
|
copy,
|
|
20
|
-
dataTestId = "section-nav"
|
|
20
|
+
dataTestId = "section-nav",
|
|
21
|
+
compact = false
|
|
21
22
|
}) {
|
|
22
23
|
if (layout === "rail") {
|
|
23
24
|
return /* @__PURE__ */ jsx(
|
|
@@ -31,7 +32,8 @@ function SectionNav({
|
|
|
31
32
|
heading,
|
|
32
33
|
linkComponent,
|
|
33
34
|
copy,
|
|
34
|
-
dataTestId
|
|
35
|
+
dataTestId,
|
|
36
|
+
compact
|
|
35
37
|
}
|
|
36
38
|
);
|
|
37
39
|
}
|
|
@@ -44,7 +46,8 @@ function SectionNav({
|
|
|
44
46
|
more,
|
|
45
47
|
linkComponent,
|
|
46
48
|
copy,
|
|
47
|
-
dataTestId
|
|
49
|
+
dataTestId,
|
|
50
|
+
compact
|
|
48
51
|
}
|
|
49
52
|
);
|
|
50
53
|
}
|
|
@@ -52,4 +55,4 @@ function SectionNav({
|
|
|
52
55
|
export {
|
|
53
56
|
SectionNav
|
|
54
57
|
};
|
|
55
|
-
//# sourceMappingURL=chunk-
|
|
58
|
+
//# sourceMappingURL=chunk-27F2VXS4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/navigation/SectionNav/SectionNav.tsx"],"sourcesContent":["import { SectionNavBar } from './SectionNav.bar';\nimport { SectionNavRail } from './SectionNav.rail';\nimport type { SectionNavProps } from './SectionNav.types';\n\n/**\n * A section's own navigation — the handful of screens one kind of work moves\n * between — as a bottom bar on a phone or a rail on a wide screen.\n *\n * It knows no product. The host decides every destination, label, icon,\n * count and which one is current, and renders links through its own router\n * (`linkComponent`). The nav decides only how they are drawn: the order of the\n * bar's slots, the raised primary action, the sheets, the rail's sections.\n *\n * `compact` draws either layout as icons only, a size down, for a host that\n * folds its chrome; the labels stay the controls' names.\n *\n * Which layout to use is the host's call too, because the host knows what\n * else is on screen: a bar next to a sidebar is two navigations competing for\n * one glance.\n */\nexport function SectionNav({\n layout,\n label,\n destinations,\n primary,\n more,\n back,\n heading,\n linkComponent,\n copy,\n dataTestId = 'section-nav',\n compact = false,\n}: SectionNavProps): React.JSX.Element {\n if (layout === 'rail') {\n return (\n <SectionNavRail\n label={label}\n destinations={destinations}\n primary={primary}\n more={more}\n back={back}\n heading={heading}\n linkComponent={linkComponent}\n copy={copy}\n dataTestId={dataTestId}\n compact={compact}\n />\n );\n }\n return (\n <SectionNavBar\n label={label}\n destinations={destinations}\n primary={primary}\n more={more}\n linkComponent={linkComponent}\n copy={copy}\n dataTestId={dataTestId}\n compact={compact}\n />\n );\n}\n"],"mappings":";;;;;;;;AAmCM;AAfC,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,UAAU;AACZ,GAAuC;AACrC,MAAI,WAAW,QAAQ;AACrB,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACF;AAAA,EAEJ;AACA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,EACF;AAEJ;","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CountedIcon
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-24HHUCWB.js";
|
|
4
4
|
import {
|
|
5
5
|
rem
|
|
6
6
|
} from "./chunk-YKCAJ2TN.js";
|
|
@@ -59,11 +59,19 @@ function entryItem(groupId, entry, linkComponent, copy, testId, close) {
|
|
|
59
59
|
`${groupId}:${entry.id}`
|
|
60
60
|
);
|
|
61
61
|
}
|
|
62
|
+
function createButtonForm(menu, compact) {
|
|
63
|
+
if (!compact) return { startIcon: menu.icon, "aria-label": void 0, title: void 0 };
|
|
64
|
+
return { startIcon: void 0, "aria-label": menu.label, title: menu.label };
|
|
65
|
+
}
|
|
66
|
+
function createButtonLayoutSx(compact) {
|
|
67
|
+
return compact ? { justifyContent: "center", minWidth: 0, px: 0 } : { justifyContent: "flex-start", px: 1.75 };
|
|
68
|
+
}
|
|
62
69
|
function RailCreateMenu({
|
|
63
70
|
menu,
|
|
64
71
|
linkComponent,
|
|
65
72
|
copy,
|
|
66
|
-
testId
|
|
73
|
+
testId,
|
|
74
|
+
compact = false
|
|
67
75
|
}) {
|
|
68
76
|
const theme = useTheme();
|
|
69
77
|
const menuId = useId();
|
|
@@ -81,7 +89,7 @@ function RailCreateMenu({
|
|
|
81
89
|
{
|
|
82
90
|
variant: "contained",
|
|
83
91
|
fullWidth: true,
|
|
84
|
-
|
|
92
|
+
...createButtonForm(menu, compact),
|
|
85
93
|
disabled: menu.disabled === true,
|
|
86
94
|
"aria-haspopup": "menu",
|
|
87
95
|
"aria-expanded": open,
|
|
@@ -91,13 +99,14 @@ function RailCreateMenu({
|
|
|
91
99
|
sx: {
|
|
92
100
|
my: 1,
|
|
93
101
|
minHeight: rem(theme, 40),
|
|
94
|
-
|
|
95
|
-
px: 1.75,
|
|
102
|
+
...createButtonLayoutSx(compact),
|
|
96
103
|
fontWeight: 600,
|
|
97
104
|
// A place in the rail reads in sentence case, like the rows under it.
|
|
98
|
-
textTransform: "none"
|
|
105
|
+
textTransform: "none",
|
|
106
|
+
// The ring outside the filled button, where it can be seen.
|
|
107
|
+
"&.Mui-focusVisible": { outline: `${rem(theme, 2)} solid ${theme.palette.primary.main}`, outlineOffset: rem(theme, 2) }
|
|
99
108
|
},
|
|
100
|
-
children: menu.label
|
|
109
|
+
children: compact ? menu.icon : menu.label
|
|
101
110
|
}
|
|
102
111
|
),
|
|
103
112
|
/* @__PURE__ */ jsx(
|
|
@@ -124,4 +133,4 @@ function RailCreateMenu({
|
|
|
124
133
|
export {
|
|
125
134
|
RailCreateMenu
|
|
126
135
|
};
|
|
127
|
-
//# sourceMappingURL=chunk-
|
|
136
|
+
//# sourceMappingURL=chunk-ILJ3FXIC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/navigation/SectionNav/SectionNav.railCreate.tsx"],"sourcesContent":["import Button from '@mui/material/Button/index.js';\nimport ListItemIcon from '@mui/material/ListItemIcon/index.js';\nimport ListItemText from '@mui/material/ListItemText/index.js';\nimport ListSubheader from '@mui/material/ListSubheader/index.js';\nimport Menu from '@mui/material/Menu/index.js';\nimport MenuItem from '@mui/material/MenuItem/index.js';\nimport { useTheme, type SxProps, type Theme } from '@mui/material/styles/index.js';\nimport { useId, useState, type ElementType, type ReactNode } from 'react';\n\nimport type { SectionNavCopy } from '../../../copy';\nimport { rem } from '../../../tokens/scales';\n\nimport { CountedIcon } from './SectionNav.parts';\nimport type { SectionNavEntry, SectionNavMenu } from './SectionNav.types';\n\n/** One entry of the open menu: a link through the host's router, or an act. */\nfunction entryItem(\n groupId: string,\n entry: SectionNavEntry,\n linkComponent: ElementType | undefined,\n copy: SectionNavCopy,\n testId: string,\n close: () => void,\n): ReactNode {\n const link =\n entry.href === undefined || entry.disabled === true\n ? {}\n : { component: linkComponent ?? 'a', href: entry.href };\n const itemTestId = entry.dataTestId ?? `${testId}-entry-${entry.id}`;\n return (\n <MenuItem\n key={`${groupId}:${entry.id}`}\n {...link}\n disabled={entry.disabled === true}\n selected={entry.active === true}\n aria-current={entry.active === true ? 'page' : undefined}\n data-testid={itemTestId}\n onClick={() => {\n entry.onSelect?.();\n close();\n }}\n sx={{ gap: 1.5, py: 1, whiteSpace: 'normal' }}\n >\n <ListItemIcon sx={{ minWidth: 0, color: 'primary.main' }}>\n <CountedIcon\n icon={entry.icon}\n count={entry.badge}\n label={copy.badge}\n attentionLabel={copy.attention}\n testId={`${itemTestId}-badge`}\n />\n </ListItemIcon>\n <ListItemText\n primary={entry.label}\n secondary={entry.description}\n slotProps={{\n primary: { variant: 'body2', fontWeight: 500 },\n secondary: { variant: 'caption' },\n }}\n sx={{ my: 0 }}\n />\n </MenuItem>\n );\n}\n\n/** The button's icon and names: the icon in front of the label, or — compact — the icon alone, named by the label. */\nfunction createButtonForm(\n menu: SectionNavMenu,\n compact: boolean,\n): { startIcon: ReactNode; 'aria-label': string | undefined; title: string | undefined } {\n if (!compact) return { startIcon: menu.icon, 'aria-label': undefined, title: undefined };\n return { startIcon: undefined, 'aria-label': menu.label, title: menu.label };\n}\n\n/** Where the button's content sits: the label's start, or — compact — the icon centred. */\nfunction createButtonLayoutSx(compact: boolean): SxProps<Theme> {\n return compact ? { justifyContent: 'center', minWidth: 0, px: 0 } : { justifyContent: 'flex-start', px: 1.75 };\n}\n\n/**\n * A rail's `primary` menu as ONE button at the top of the rail, opening an\n * anchored menu of its groups (FUT-3015).\n *\n * The rail lists `more` in full, but a create menu listed that way costs a\n * heading and a two-line row per entry above the fold, for acts a person takes\n * once in a while. Folded behind '+ Criar' it costs one row. The button\n * carries the menu's `label`; the open menu is named by its `title`.\n *\n * `MenuList` skips the group subheaders when the keyboard moves, and the\n * popover hands focus back to the button when it closes on Escape or an\n * outside click. Choosing an entry closes it too, and the entry's link or act\n * takes over.\n */\nexport function RailCreateMenu({\n menu,\n linkComponent,\n copy,\n testId,\n compact = false,\n}: {\n menu: SectionNavMenu;\n linkComponent: ElementType | undefined;\n copy: SectionNavCopy;\n testId: string;\n /** The button as its icon only — the label stays its name and its tooltip. */\n compact?: boolean;\n}): React.JSX.Element {\n const theme = useTheme();\n const menuId = useId();\n const [anchor, setAnchor] = useState<HTMLElement | null>(null);\n const open = anchor !== null;\n const close = (): void => setAnchor(null);\n const paperTestId: Record<string, string> = { 'data-testid': `${testId}-menu` };\n // One flat list: MUI's MenuList walks its direct children, so a group's\n // subheader and entries cannot sit inside a wrapper.\n const items: ReactNode[] = menu.groups.flatMap((group) => [\n group.title ? (\n <ListSubheader key={`${group.id}-title`} disableSticky sx={{ lineHeight: 2.5, bgcolor: 'transparent' }}>\n {group.title}\n </ListSubheader>\n ) : null,\n ...group.entries.map((entry) => entryItem(group.id, entry, linkComponent, copy, testId, close)),\n ]);\n return (\n <>\n <Button\n variant=\"contained\"\n fullWidth\n {...createButtonForm(menu, compact)}\n disabled={menu.disabled === true}\n aria-haspopup=\"menu\"\n aria-expanded={open}\n aria-controls={open ? menuId : undefined}\n data-testid={menu.dataTestId ?? testId}\n onClick={(event) => setAnchor(event.currentTarget)}\n sx={{\n my: 1,\n minHeight: rem(theme, 40),\n ...(createButtonLayoutSx(compact) as object),\n fontWeight: 600,\n // A place in the rail reads in sentence case, like the rows under it.\n textTransform: 'none',\n // The ring outside the filled button, where it can be seen.\n '&.Mui-focusVisible': { outline: `${rem(theme, 2)} solid ${theme.palette.primary.main}`, outlineOffset: rem(theme, 2) },\n }}\n >\n {compact ? menu.icon : menu.label}\n </Button>\n <Menu\n id={menuId}\n anchorEl={anchor}\n open={open}\n onClose={close}\n variant=\"menu\"\n anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n transformOrigin={{ vertical: 'top', horizontal: 'left' }}\n slotProps={{\n list: { 'aria-label': menu.title },\n // A data attribute is not a declared slot prop, so it rides a spread.\n paper: { ...paperTestId, sx: { minWidth: rem(theme, 260), maxWidth: rem(theme, 340) } },\n }}\n >\n {items}\n </Menu>\n </>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
CountedIcon,
|
|
5
5
|
controlProps,
|
|
6
6
|
focusRing
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-24HHUCWB.js";
|
|
8
8
|
import {
|
|
9
9
|
Drawer,
|
|
10
10
|
DrawerContent,
|
|
@@ -175,4 +175,4 @@ function SectionNavSheet({
|
|
|
175
175
|
export {
|
|
176
176
|
SectionNavSheet
|
|
177
177
|
};
|
|
178
|
-
//# sourceMappingURL=chunk-
|
|
178
|
+
//# sourceMappingURL=chunk-NM46HQSW.js.map
|