@12-apps/ui 6.74.2 → 6.76.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_internal/components/form/Textarea/Textarea.js +1 -1
- package/dist/_internal/components/form/index.js +1 -1
- package/dist/_internal/components/index.js +5 -5
- package/dist/_internal/components/layout/Drawer/Drawer.js +1 -1
- package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.items.js +3 -3
- package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.js +8 -8
- package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.rail.js +4 -4
- package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.styles.js +3 -1
- package/dist/_internal/components/layout/SettingsLayout/SettingsPanel.js +5 -5
- package/dist/_internal/components/layout/SettingsLayout/SettingsSectionChips.js +3 -3
- package/dist/_internal/components/layout/SettingsLayout/SettingsSectionHeader.js +2 -2
- package/dist/_internal/components/layout/SettingsLayout/SettingsStatusMarker.js +2 -2
- package/dist/_internal/components/layout/index.js +1 -1
- package/dist/_internal/components/navigation/SectionNav/SectionNav.bar.js +3 -3
- package/dist/_internal/components/navigation/SectionNav/SectionNav.js +4 -4
- package/dist/_internal/components/navigation/SectionNav/SectionNav.sheet.js +2 -2
- package/dist/_internal/components/navigation/index.js +4 -4
- package/dist/{chunk-V5EWCJBT.js → chunk-4BLVVMY7.js} +3 -3
- package/dist/{chunk-OKYYHBGS.js → chunk-6KM3TL4Q.js} +11 -4
- package/dist/chunk-6KM3TL4Q.js.map +1 -0
- package/dist/{chunk-27F2VXS4.js → chunk-7IXXASQ6.js} +2 -2
- package/dist/{chunk-DBFRCTI5.js → chunk-7Y2VWMGS.js} +2 -2
- package/dist/{chunk-UALPKKAY.js → chunk-F742IMLQ.js} +5 -2
- package/dist/{chunk-UALPKKAY.js.map → chunk-F742IMLQ.js.map} +1 -1
- package/dist/{chunk-F3Q4CMRB.js → chunk-GBVNY2LG.js} +3 -3
- package/dist/{chunk-NM46HQSW.js → chunk-J26ZWYQI.js} +2 -2
- package/dist/{chunk-KKVM723A.js → chunk-LY5I3ZSV.js} +4 -4
- package/dist/{chunk-NYFNF7I5.js → chunk-NK4T624E.js} +3 -1
- package/dist/chunk-NK4T624E.js.map +1 -0
- package/dist/{chunk-URSYEHPU.js → chunk-PMRLFNBT.js} +2 -2
- package/dist/{chunk-X47MWURD.js → chunk-Q6MZHT2F.js} +10 -8
- package/dist/chunk-Q6MZHT2F.js.map +1 -0
- package/dist/{chunk-TNYKM4UU.js → chunk-SWQXAUUG.js} +55 -21
- package/dist/chunk-SWQXAUUG.js.map +1 -0
- package/dist/{chunk-6KEXHOIF.js → chunk-WOXNVM52.js} +2 -2
- package/dist/form/Textarea.js +1 -1
- package/dist/layout/Drawer.js +1 -1
- package/dist/layout/SettingsLayout.js +8 -8
- package/dist/navigation/SectionNav.js +4 -4
- package/dist/types/components/form/Textarea/Textarea.d.ts.map +1 -1
- package/dist/types/components/form/Textarea/Textarea.types.d.ts +4 -2
- package/dist/types/components/form/Textarea/Textarea.types.d.ts.map +1 -1
- package/dist/types/components/layout/Drawer/Drawer.d.ts.map +1 -1
- package/dist/types/components/layout/SettingsLayout/SettingsLayout.d.ts.map +1 -1
- package/dist/types/components/layout/SettingsLayout/SettingsLayout.rail.d.ts +6 -2
- package/dist/types/components/layout/SettingsLayout/SettingsLayout.rail.d.ts.map +1 -1
- package/dist/types/components/layout/SettingsLayout/SettingsLayout.styles.d.ts +2 -0
- package/dist/types/components/layout/SettingsLayout/SettingsLayout.styles.d.ts.map +1 -1
- package/dist/types/components/layout/SettingsLayout/SettingsLayout.types.d.ts +19 -0
- package/dist/types/components/layout/SettingsLayout/SettingsLayout.types.d.ts.map +1 -1
- package/dist/types/components/layout/SettingsLayout/index.d.ts +1 -1
- package/dist/types/components/layout/SettingsLayout/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/form/Textarea/Textarea.tsx +14 -7
- package/src/components/form/Textarea/Textarea.types.ts +4 -2
- package/src/components/layout/Drawer/Drawer.tsx +4 -1
- package/src/components/layout/SettingsLayout/SettingsLayout.md +19 -0
- package/src/components/layout/SettingsLayout/SettingsLayout.rail.tsx +67 -23
- package/src/components/layout/SettingsLayout/SettingsLayout.styles.ts +3 -0
- package/src/components/layout/SettingsLayout/SettingsLayout.tsx +12 -0
- package/src/components/layout/SettingsLayout/SettingsLayout.types.ts +20 -0
- package/src/components/layout/SettingsLayout/index.ts +1 -0
- package/dist/chunk-NYFNF7I5.js.map +0 -1
- package/dist/chunk-OKYYHBGS.js.map +0 -1
- package/dist/chunk-TNYKM4UU.js.map +0 -1
- package/dist/chunk-X47MWURD.js.map +0 -1
- /package/dist/{chunk-V5EWCJBT.js.map → chunk-4BLVVMY7.js.map} +0 -0
- /package/dist/{chunk-27F2VXS4.js.map → chunk-7IXXASQ6.js.map} +0 -0
- /package/dist/{chunk-DBFRCTI5.js.map → chunk-7Y2VWMGS.js.map} +0 -0
- /package/dist/{chunk-F3Q4CMRB.js.map → chunk-GBVNY2LG.js.map} +0 -0
- /package/dist/{chunk-NM46HQSW.js.map → chunk-J26ZWYQI.js.map} +0 -0
- /package/dist/{chunk-KKVM723A.js.map → chunk-LY5I3ZSV.js.map} +0 -0
- /package/dist/{chunk-URSYEHPU.js.map → chunk-PMRLFNBT.js.map} +0 -0
- /package/dist/{chunk-6KEXHOIF.js.map → chunk-WOXNVM52.js.map} +0 -0
|
@@ -130,13 +130,13 @@ import "../../chunk-3AIRFAI3.js";
|
|
|
130
130
|
import "../../chunk-R26KYJHK.js";
|
|
131
131
|
import {
|
|
132
132
|
SectionNav
|
|
133
|
-
} from "../../chunk-
|
|
133
|
+
} from "../../chunk-7IXXASQ6.js";
|
|
134
134
|
import "../../chunk-SNWCT6JN.js";
|
|
135
135
|
import "../../chunk-ILJ3FXIC.js";
|
|
136
136
|
import {
|
|
137
137
|
sectionNavBarInset
|
|
138
|
-
} from "../../chunk-
|
|
139
|
-
import "../../chunk-
|
|
138
|
+
} from "../../chunk-PMRLFNBT.js";
|
|
139
|
+
import "../../chunk-J26ZWYQI.js";
|
|
140
140
|
import {
|
|
141
141
|
RaisedActionButton
|
|
142
142
|
} from "../../chunk-UKUGSU3Y.js";
|
|
@@ -201,7 +201,7 @@ import {
|
|
|
201
201
|
Drawer,
|
|
202
202
|
DrawerContent,
|
|
203
203
|
DrawerHeader
|
|
204
|
-
} from "../../chunk-
|
|
204
|
+
} from "../../chunk-F742IMLQ.js";
|
|
205
205
|
import "../../chunk-ENORM6S2.js";
|
|
206
206
|
import {
|
|
207
207
|
Resizable
|
|
@@ -219,7 +219,7 @@ import "../../chunk-QUWK7SYN.js";
|
|
|
219
219
|
import "../../chunk-BH5GSBR3.js";
|
|
220
220
|
import {
|
|
221
221
|
Textarea
|
|
222
|
-
} from "../../chunk-
|
|
222
|
+
} from "../../chunk-Q6MZHT2F.js";
|
|
223
223
|
import "../../chunk-IPC426NS.js";
|
|
224
224
|
import "../../chunk-6I3TYKE2.js";
|
|
225
225
|
import {
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
import {
|
|
3
3
|
SettingsRailGroup,
|
|
4
4
|
SettingsRailItem
|
|
5
|
-
} from "../../../../chunk-
|
|
6
|
-
import "../../../../chunk-
|
|
7
|
-
import "../../../../chunk-
|
|
5
|
+
} from "../../../../chunk-4BLVVMY7.js";
|
|
6
|
+
import "../../../../chunk-7Y2VWMGS.js";
|
|
7
|
+
import "../../../../chunk-NK4T624E.js";
|
|
8
8
|
import "../../../../chunk-YKCAJ2TN.js";
|
|
9
9
|
import "../../../../chunk-PZ5AY32C.js";
|
|
10
10
|
export {
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
SettingsLayout
|
|
4
|
-
} from "../../../../chunk-
|
|
4
|
+
} from "../../../../chunk-6KM3TL4Q.js";
|
|
5
5
|
import "../../../../chunk-BXC6GRLE.js";
|
|
6
|
-
import "../../../../chunk-
|
|
7
|
-
import "../../../../chunk-
|
|
6
|
+
import "../../../../chunk-LY5I3ZSV.js";
|
|
7
|
+
import "../../../../chunk-GBVNY2LG.js";
|
|
8
8
|
import "../../../../chunk-AJUSBPWG.js";
|
|
9
|
-
import "../../../../chunk-
|
|
10
|
-
import "../../../../chunk-
|
|
11
|
-
import "../../../../chunk-
|
|
12
|
-
import "../../../../chunk-
|
|
13
|
-
import "../../../../chunk-
|
|
9
|
+
import "../../../../chunk-SWQXAUUG.js";
|
|
10
|
+
import "../../../../chunk-4BLVVMY7.js";
|
|
11
|
+
import "../../../../chunk-7Y2VWMGS.js";
|
|
12
|
+
import "../../../../chunk-WOXNVM52.js";
|
|
13
|
+
import "../../../../chunk-NK4T624E.js";
|
|
14
14
|
import "../../../../chunk-HPK33ACY.js";
|
|
15
15
|
import "../../../../chunk-YKCAJ2TN.js";
|
|
16
16
|
import "../../../../chunk-PZ5AY32C.js";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
SettingsRail
|
|
4
|
-
} from "../../../../chunk-
|
|
5
|
-
import "../../../../chunk-
|
|
6
|
-
import "../../../../chunk-
|
|
7
|
-
import "../../../../chunk-
|
|
4
|
+
} from "../../../../chunk-SWQXAUUG.js";
|
|
5
|
+
import "../../../../chunk-4BLVVMY7.js";
|
|
6
|
+
import "../../../../chunk-7Y2VWMGS.js";
|
|
7
|
+
import "../../../../chunk-NK4T624E.js";
|
|
8
8
|
import "../../../../chunk-YKCAJ2TN.js";
|
|
9
9
|
import "../../../../chunk-PZ5AY32C.js";
|
|
10
10
|
export {
|
|
@@ -4,8 +4,9 @@ import {
|
|
|
4
4
|
TOUCH_TARGET,
|
|
5
5
|
atLeastRail,
|
|
6
6
|
displayAcrossRail,
|
|
7
|
+
railCardWidth,
|
|
7
8
|
railWidth
|
|
8
|
-
} from "../../../../chunk-
|
|
9
|
+
} from "../../../../chunk-NK4T624E.js";
|
|
9
10
|
import "../../../../chunk-YKCAJ2TN.js";
|
|
10
11
|
import "../../../../chunk-PZ5AY32C.js";
|
|
11
12
|
export {
|
|
@@ -14,6 +15,7 @@ export {
|
|
|
14
15
|
TOUCH_TARGET,
|
|
15
16
|
atLeastRail,
|
|
16
17
|
displayAcrossRail,
|
|
18
|
+
railCardWidth,
|
|
17
19
|
railWidth
|
|
18
20
|
};
|
|
19
21
|
//# sourceMappingURL=SettingsLayout.styles.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
SettingsPanel
|
|
4
|
-
} from "../../../../chunk-
|
|
5
|
-
import "../../../../chunk-
|
|
4
|
+
} from "../../../../chunk-LY5I3ZSV.js";
|
|
5
|
+
import "../../../../chunk-GBVNY2LG.js";
|
|
6
6
|
import "../../../../chunk-AJUSBPWG.js";
|
|
7
|
-
import "../../../../chunk-
|
|
8
|
-
import "../../../../chunk-
|
|
9
|
-
import "../../../../chunk-
|
|
7
|
+
import "../../../../chunk-7Y2VWMGS.js";
|
|
8
|
+
import "../../../../chunk-WOXNVM52.js";
|
|
9
|
+
import "../../../../chunk-NK4T624E.js";
|
|
10
10
|
import "../../../../chunk-YKCAJ2TN.js";
|
|
11
11
|
import "../../../../chunk-PZ5AY32C.js";
|
|
12
12
|
export {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
SettingsSectionChips
|
|
4
|
-
} from "../../../../chunk-
|
|
4
|
+
} from "../../../../chunk-GBVNY2LG.js";
|
|
5
5
|
import "../../../../chunk-AJUSBPWG.js";
|
|
6
|
-
import "../../../../chunk-
|
|
7
|
-
import "../../../../chunk-
|
|
6
|
+
import "../../../../chunk-7Y2VWMGS.js";
|
|
7
|
+
import "../../../../chunk-NK4T624E.js";
|
|
8
8
|
import "../../../../chunk-YKCAJ2TN.js";
|
|
9
9
|
import "../../../../chunk-PZ5AY32C.js";
|
|
10
10
|
export {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
SettingsSectionHeader
|
|
4
|
-
} from "../../../../chunk-
|
|
5
|
-
import "../../../../chunk-
|
|
4
|
+
} from "../../../../chunk-WOXNVM52.js";
|
|
5
|
+
import "../../../../chunk-NK4T624E.js";
|
|
6
6
|
import "../../../../chunk-YKCAJ2TN.js";
|
|
7
7
|
import "../../../../chunk-PZ5AY32C.js";
|
|
8
8
|
export {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
SettingsStatusMarker
|
|
4
|
-
} from "../../../../chunk-
|
|
5
|
-
import "../../../../chunk-
|
|
4
|
+
} from "../../../../chunk-7Y2VWMGS.js";
|
|
5
|
+
import "../../../../chunk-NK4T624E.js";
|
|
6
6
|
import "../../../../chunk-YKCAJ2TN.js";
|
|
7
7
|
import "../../../../chunk-PZ5AY32C.js";
|
|
8
8
|
export {
|
|
@@ -2,13 +2,13 @@ import {
|
|
|
2
2
|
SectionNavBar,
|
|
3
3
|
sectionNavBarInset,
|
|
4
4
|
sectionNavSheetOffset
|
|
5
|
-
} from "../../../../chunk-
|
|
6
|
-
import "../../../../chunk-
|
|
5
|
+
} from "../../../../chunk-PMRLFNBT.js";
|
|
6
|
+
import "../../../../chunk-J26ZWYQI.js";
|
|
7
7
|
import "../../../../chunk-UKUGSU3Y.js";
|
|
8
8
|
import "../../../../chunk-24HHUCWB.js";
|
|
9
9
|
import "../../../../chunk-YCCWJ5XQ.js";
|
|
10
10
|
import "../../../../chunk-TMSWLFL4.js";
|
|
11
|
-
import "../../../../chunk-
|
|
11
|
+
import "../../../../chunk-F742IMLQ.js";
|
|
12
12
|
import "../../../../chunk-PUFA7FQ7.js";
|
|
13
13
|
import "../../../../chunk-5AK2EZG5.js";
|
|
14
14
|
import "../../../../chunk-N5PVD4J5.js";
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SectionNav
|
|
3
|
-
} from "../../../../chunk-
|
|
3
|
+
} from "../../../../chunk-7IXXASQ6.js";
|
|
4
4
|
import "../../../../chunk-SNWCT6JN.js";
|
|
5
5
|
import "../../../../chunk-ILJ3FXIC.js";
|
|
6
|
-
import "../../../../chunk-
|
|
7
|
-
import "../../../../chunk-
|
|
6
|
+
import "../../../../chunk-PMRLFNBT.js";
|
|
7
|
+
import "../../../../chunk-J26ZWYQI.js";
|
|
8
8
|
import "../../../../chunk-UKUGSU3Y.js";
|
|
9
9
|
import "../../../../chunk-24HHUCWB.js";
|
|
10
10
|
import "../../../../chunk-YCCWJ5XQ.js";
|
|
11
11
|
import "../../../../chunk-TMSWLFL4.js";
|
|
12
|
-
import "../../../../chunk-
|
|
12
|
+
import "../../../../chunk-F742IMLQ.js";
|
|
13
13
|
import "../../../../chunk-PUFA7FQ7.js";
|
|
14
14
|
import "../../../../chunk-5AK2EZG5.js";
|
|
15
15
|
import "../../../../chunk-N5PVD4J5.js";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SectionNavSheet
|
|
3
|
-
} from "../../../../chunk-
|
|
3
|
+
} from "../../../../chunk-J26ZWYQI.js";
|
|
4
4
|
import "../../../../chunk-24HHUCWB.js";
|
|
5
5
|
import "../../../../chunk-YCCWJ5XQ.js";
|
|
6
6
|
import "../../../../chunk-TMSWLFL4.js";
|
|
7
|
-
import "../../../../chunk-
|
|
7
|
+
import "../../../../chunk-F742IMLQ.js";
|
|
8
8
|
import "../../../../chunk-PUFA7FQ7.js";
|
|
9
9
|
import "../../../../chunk-5AK2EZG5.js";
|
|
10
10
|
import "../../../../chunk-N5PVD4J5.js";
|
|
@@ -54,20 +54,20 @@ import "../../../chunk-3AIRFAI3.js";
|
|
|
54
54
|
import "../../../chunk-R26KYJHK.js";
|
|
55
55
|
import {
|
|
56
56
|
SectionNav
|
|
57
|
-
} from "../../../chunk-
|
|
57
|
+
} from "../../../chunk-7IXXASQ6.js";
|
|
58
58
|
import "../../../chunk-SNWCT6JN.js";
|
|
59
59
|
import "../../../chunk-ILJ3FXIC.js";
|
|
60
60
|
import {
|
|
61
61
|
sectionNavBarInset
|
|
62
|
-
} from "../../../chunk-
|
|
63
|
-
import "../../../chunk-
|
|
62
|
+
} from "../../../chunk-PMRLFNBT.js";
|
|
63
|
+
import "../../../chunk-J26ZWYQI.js";
|
|
64
64
|
import {
|
|
65
65
|
RaisedActionButton
|
|
66
66
|
} from "../../../chunk-UKUGSU3Y.js";
|
|
67
67
|
import "../../../chunk-24HHUCWB.js";
|
|
68
68
|
import "../../../chunk-YCCWJ5XQ.js";
|
|
69
69
|
import "../../../chunk-TMSWLFL4.js";
|
|
70
|
-
import "../../../chunk-
|
|
70
|
+
import "../../../chunk-F742IMLQ.js";
|
|
71
71
|
import "../../../chunk-7K23NEZO.js";
|
|
72
72
|
import "../../../chunk-5MMAV7XK.js";
|
|
73
73
|
import "../../../chunk-3ROCD7XF.js";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SettingsStatusMarker
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7Y2VWMGS.js";
|
|
4
4
|
import {
|
|
5
5
|
TOUCH_TARGET,
|
|
6
6
|
atLeastRail
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-NK4T624E.js";
|
|
8
8
|
import {
|
|
9
9
|
rem
|
|
10
10
|
} from "./chunk-YKCAJ2TN.js";
|
|
@@ -169,4 +169,4 @@ export {
|
|
|
169
169
|
SettingsRailItem,
|
|
170
170
|
SettingsRailGroup
|
|
171
171
|
};
|
|
172
|
-
//# sourceMappingURL=chunk-
|
|
172
|
+
//# sourceMappingURL=chunk-4BLVVMY7.js.map
|
|
@@ -4,13 +4,13 @@ import {
|
|
|
4
4
|
} from "./chunk-BXC6GRLE.js";
|
|
5
5
|
import {
|
|
6
6
|
SettingsPanel
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-LY5I3ZSV.js";
|
|
8
8
|
import {
|
|
9
9
|
SettingsRail
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-SWQXAUUG.js";
|
|
11
11
|
import {
|
|
12
12
|
atLeastRail
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-NK4T624E.js";
|
|
14
14
|
import {
|
|
15
15
|
withDefaults
|
|
16
16
|
} from "./chunk-HPK33ACY.js";
|
|
@@ -29,6 +29,12 @@ var DEFAULTS = {
|
|
|
29
29
|
atIndex: false,
|
|
30
30
|
backLabel: "Back"
|
|
31
31
|
};
|
|
32
|
+
function railLookOf({
|
|
33
|
+
searchable = true,
|
|
34
|
+
railVariant = "divided"
|
|
35
|
+
}) {
|
|
36
|
+
return { searchable, railVariant };
|
|
37
|
+
}
|
|
32
38
|
function shellSx(breakpoint, fillHeight) {
|
|
33
39
|
return (theme) => ({
|
|
34
40
|
display: "flex",
|
|
@@ -101,6 +107,7 @@ var SettingsLayout = (props) => {
|
|
|
101
107
|
onNavigate: () => setNavOpen(false),
|
|
102
108
|
testIdPrefix,
|
|
103
109
|
variant: navVariant,
|
|
110
|
+
...railLookOf(props),
|
|
104
111
|
breakpoint: railBreakpoint,
|
|
105
112
|
atIndex,
|
|
106
113
|
fillHeight
|
|
@@ -135,4 +142,4 @@ SettingsLayout.displayName = "SettingsLayout";
|
|
|
135
142
|
export {
|
|
136
143
|
SettingsLayout
|
|
137
144
|
};
|
|
138
|
-
//# sourceMappingURL=chunk-
|
|
145
|
+
//# sourceMappingURL=chunk-6KM3TL4Q.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/layout/SettingsLayout/SettingsLayout.tsx"],"sourcesContent":["'use client';\n\nimport Box from '@mui/material/Box/index.js';\nimport type { SxProps, Theme } from '@mui/material/styles/index.js';\nimport React, { useMemo, useState } from 'react';\n\nimport { withDefaults } from '../../../utils/withDefaults';\nimport { activeItemLabel, filterGroups } from './SettingsLayout.filters';\nimport { SettingsRail } from './SettingsLayout.rail';\nimport { atLeastRail } from './SettingsLayout.styles';\nimport { SettingsPanel } from './SettingsPanel';\nimport type { SettingsLayoutProps } from './SettingsLayout.types';\n\n/**\n * The props with every default already applied.\n *\n * A table through `withDefaults` rather than a `= default` per destructured\n * prop: each of those is a branch, and seven of them put the component over the\n * complexity bar before it renders anything. The single cast is what buys the\n * body non-optional values — without it every use site would restate the\n * default as a `??`, which is the same default written twice and free to drift.\n */\ntype ResolvedProps = SettingsLayoutProps &\n Required<\n Pick<\n SettingsLayoutProps,\n | 'searchPlaceholder'\n | 'defaultQuery'\n | 'emptySearchLabel'\n | 'testIdPrefix'\n | 'railBreakpoint'\n | 'navVariant'\n | 'atIndex'\n | 'backLabel'\n >\n >;\n\nconst DEFAULTS = {\n searchPlaceholder: 'Search settings',\n defaultQuery: '',\n emptySearchLabel: 'No settings match your search.',\n testIdPrefix: 'settings',\n railBreakpoint: 'md',\n navVariant: 'switcher',\n atIndex: false,\n backLabel: 'Back',\n} satisfies Partial<SettingsLayoutProps>;\n\n/**\n * How the rail looks: its search field, and its frame from the breakpoint up.\n * Both default to the shape every consumer had before they existed.\n */\nfunction railLookOf({\n searchable = true,\n railVariant = 'divided',\n}: SettingsLayoutProps): Required<Pick<SettingsLayoutProps, 'searchable' | 'railVariant'>> {\n return { searchable, railVariant };\n}\n\n/** Stacked below the rail's breakpoint, two columns at and above it. */\nfunction shellSx(breakpoint: SettingsLayoutProps['railBreakpoint'], fillHeight: boolean): SxProps<Theme> {\n return (theme: Theme) => ({\n display: 'flex',\n flexDirection: 'column' as const,\n alignItems: 'stretch',\n gap: 1.5,\n width: '100%',\n minWidth: 0,\n // Only ever at the wide shape. Narrow, the rail is a disclosure or the page\n // itself, and two independent scrollbars on a phone is a trap rather than a\n // convenience.\n [atLeastRail(theme, breakpoint ?? 'md')]: {\n flexDirection: 'row',\n gap: 3,\n ...(fillHeight ? { height: '100%', minHeight: 0 } : {}),\n },\n });\n}\n\n/**\n * A reusable, agnostic Facebook-style settings shell: a searchable left rail of\n * grouped categories/subcategories and a central panel that renders the selected\n * configuration screen (`children`). Navigation is data-driven via `groups`; the\n * host owns routing (pass `linkComponent` + item `href`, or handle `onSelectItem`).\n *\n * ## Two narrow-width shapes\n *\n * `navVariant=\"switcher\"` (the default) folds the rail into a disclosure above\n * the panel. `navVariant=\"drilldown\"` gives the phone shape instead: at the\n * area's index the LIST is the page, and inside a section the panel is the page\n * with a back link and a scrollable strip of sibling sections above it.\n *\n * ## Why the width decision is CSS and not JavaScript\n *\n * Every part that changes between the two shapes does it through a `display`\n * pair keyed on `railBreakpoint`. Nothing here asks a media query in JS and\n * renders one branch.\n *\n * That is not a performance preference. A layout that RENDERS one navigation and\n * not the other can offer the narrow width less than the wide one, and no test\n * or review catches it — the missing control simply is not in the tree to be\n * asserted about. With both forms always mounted, \"the narrow width reaches\n * everything the wide one does\" holds by construction, and an audit that counts\n * controls per width gets the same answer at both.\n */\nexport const SettingsLayout: React.FC<SettingsLayoutProps> = (props) => {\n const {\n title,\n groups,\n activeItemId,\n onSelectItem,\n searchPlaceholder,\n defaultQuery,\n emptySearchLabel,\n emptySearchAction,\n linkComponent,\n children,\n testIdPrefix,\n railBreakpoint,\n fillHeight = false,\n navVariant,\n atIndex,\n indexHref,\n backLabel,\n sectionChips,\n } = withDefaults(props, DEFAULTS) as ResolvedProps;\n const [query, setQuery] = useState(defaultQuery);\n const [navOpen, setNavOpen] = useState(false);\n const filteredGroups = useMemo(() => filterGroups(groups, query), [groups, query]);\n const activeLabel = useMemo(() => activeItemLabel(groups, activeItemId), [groups, activeItemId]);\n\n const drilldown = navVariant === 'drilldown';\n const ariaLabel = typeof title === 'string' ? title : 'Settings';\n\n return (\n <Box\n data-testid={testIdPrefix}\n data-nav-variant={navVariant}\n data-at-index={atIndex ? 'true' : 'false'}\n sx={shellSx(railBreakpoint, fillHeight)}\n >\n <SettingsRail\n title={title}\n activeLabel={activeLabel}\n navOpen={navOpen}\n onToggleNav={() => setNavOpen((open) => !open)}\n query={query}\n onQueryChange={setQuery}\n searchPlaceholder={searchPlaceholder}\n emptySearchLabel={emptySearchLabel}\n emptySearchAction={emptySearchAction}\n filteredGroups={filteredGroups}\n activeItemId={activeItemId}\n linkComponent={linkComponent}\n onSelectItem={onSelectItem}\n onNavigate={() => setNavOpen(false)}\n testIdPrefix={testIdPrefix}\n variant={navVariant}\n {...railLookOf(props)}\n breakpoint={railBreakpoint}\n atIndex={atIndex}\n fillHeight={fillHeight}\n />\n\n <SettingsPanel\n inSection={drilldown && !atIndex}\n hideOnNarrow={drilldown && atIndex}\n breakpoint={railBreakpoint}\n indexHref={indexHref}\n sectionTitle={props.sectionTitle}\n sectionDescription={props.sectionDescription}\n backLabel={backLabel}\n ariaLabel={ariaLabel}\n sectionChips={sectionChips}\n activeItemId={activeItemId}\n linkComponent={linkComponent}\n onSelectItem={onSelectItem}\n testIdPrefix={testIdPrefix}\n fillHeight={fillHeight}\n >\n {children}\n </SettingsPanel>\n </Box>\n );\n};\n\nSettingsLayout.displayName = 'SettingsLayout';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAEA,OAAO,SAAS;AAEhB,SAAgB,SAAS,gBAAgB;AAmIrC,SAME,KANF;AAlGJ,IAAM,WAAW;AAAA,EACf,mBAAmB;AAAA,EACnB,cAAc;AAAA,EACd,kBAAkB;AAAA,EAClB,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,WAAW;AACb;AAMA,SAAS,WAAW;AAAA,EAClB,aAAa;AAAA,EACb,cAAc;AAChB,GAA2F;AACzF,SAAO,EAAE,YAAY,YAAY;AACnC;AAGA,SAAS,QAAQ,YAAmD,YAAqC;AACvG,SAAO,CAAC,WAAkB;AAAA,IACxB,SAAS;AAAA,IACT,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA;AAAA;AAAA;AAAA,IAIV,CAAC,YAAY,OAAO,cAAc,IAAI,CAAC,GAAG;AAAA,MACxC,eAAe;AAAA,MACf,KAAK;AAAA,MACL,GAAI,aAAa,EAAE,QAAQ,QAAQ,WAAW,EAAE,IAAI,CAAC;AAAA,IACvD;AAAA,EACF;AACF;AA4BO,IAAM,iBAAgD,CAAC,UAAU;AACtE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,aAAa,OAAO,QAAQ;AAChC,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,YAAY;AAC/C,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAC5C,QAAM,iBAAiB,QAAQ,MAAM,aAAa,QAAQ,KAAK,GAAG,CAAC,QAAQ,KAAK,CAAC;AACjF,QAAM,cAAc,QAAQ,MAAM,gBAAgB,QAAQ,YAAY,GAAG,CAAC,QAAQ,YAAY,CAAC;AAE/F,QAAM,YAAY,eAAe;AACjC,QAAM,YAAY,OAAO,UAAU,WAAW,QAAQ;AAEtD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAa;AAAA,MACb,oBAAkB;AAAA,MAClB,iBAAe,UAAU,SAAS;AAAA,MAClC,IAAI,QAAQ,gBAAgB,UAAU;AAAA,MAEtC;AAAA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA,aAAa,MAAM,WAAW,CAAC,SAAS,CAAC,IAAI;AAAA,YAC7C;AAAA,YACA,eAAe;AAAA,YACf;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,YAAY,MAAM,WAAW,KAAK;AAAA,YAClC;AAAA,YACA,SAAS;AAAA,YACR,GAAG,WAAW,KAAK;AAAA,YACpB,YAAY;AAAA,YACZ;AAAA,YACA;AAAA;AAAA,QACF;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW,aAAa,CAAC;AAAA,YACzB,cAAc,aAAa;AAAA,YAC3B,YAAY;AAAA,YACZ;AAAA,YACA,cAAc,MAAM;AAAA,YACpB,oBAAoB,MAAM;AAAA,YAC1B;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YAEC;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,eAAe,cAAc;","names":[]}
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-SNWCT6JN.js";
|
|
4
4
|
import {
|
|
5
5
|
SectionNavBar
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-PMRLFNBT.js";
|
|
7
7
|
|
|
8
8
|
// src/components/navigation/SectionNav/SectionNav.tsx
|
|
9
9
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -55,4 +55,4 @@ function SectionNav({
|
|
|
55
55
|
export {
|
|
56
56
|
SectionNav
|
|
57
57
|
};
|
|
58
|
-
//# sourceMappingURL=chunk-
|
|
58
|
+
//# sourceMappingURL=chunk-7IXXASQ6.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SR_ONLY_SX,
|
|
3
3
|
STATUS_COLOR
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-NK4T624E.js";
|
|
5
5
|
import {
|
|
6
6
|
sxRem
|
|
7
7
|
} from "./chunk-YKCAJ2TN.js";
|
|
@@ -62,4 +62,4 @@ SettingsStatusMarker.displayName = "SettingsStatusMarker";
|
|
|
62
62
|
export {
|
|
63
63
|
SettingsStatusMarker
|
|
64
64
|
};
|
|
65
|
-
//# sourceMappingURL=chunk-
|
|
65
|
+
//# sourceMappingURL=chunk-7Y2VWMGS.js.map
|
|
@@ -122,7 +122,10 @@ var DrawerHeader = ({
|
|
|
122
122
|
sx: {
|
|
123
123
|
display: "flex",
|
|
124
124
|
alignItems: "center",
|
|
125
|
-
|
|
125
|
+
// 12px above and below: the close button is 40px tall, so the header lands on
|
|
126
|
+
// its own 64px minimum instead of 72 — the height of the page header beside
|
|
127
|
+
// a docked drawer (FUT-3476).
|
|
128
|
+
padding: theme.spacing(1.5, 2),
|
|
126
129
|
borderBottom: `1px solid ${theme.palette.divider}`,
|
|
127
130
|
minHeight: rem(theme, 64),
|
|
128
131
|
justifyContent: "space-between"
|
|
@@ -164,4 +167,4 @@ export {
|
|
|
164
167
|
DrawerHeader,
|
|
165
168
|
DrawerContent
|
|
166
169
|
};
|
|
167
|
-
//# sourceMappingURL=chunk-
|
|
170
|
+
//# sourceMappingURL=chunk-F742IMLQ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/layout/Drawer/Drawer.tsx"],"sourcesContent":["import Close from '@mui/icons-material/Close';\nimport type { Theme } from '@mui/material/styles/index.js';\nimport Box from '@mui/material/Box/index.js';\nimport MuiDrawer from '@mui/material/Drawer/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha, useTheme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport type { DrawerContentProps,DrawerHeaderProps, DrawerProps } from './Drawer.types';\nimport { shadowInk } from '../../../tokens/ink';\nimport { rem, rems } from '../../../tokens/relative';\n\ntype DrawerAnchor = 'left' | 'right' | 'top' | 'bottom';\n\n/**\n * A `width`/`height` prop as CSS. `sx` reads a number of 1 or less as a\n * fraction of the parent, and that stays so; any other number is design px,\n * through the type scale; a string is as given.\n */\nconst drawerLength = (theme: Theme, value: number | string | undefined): string | undefined => {\n if (typeof value !== 'number') return value;\n return value <= 1 && value !== 0 ? `${value * 100}%` : rem(theme, value);\n};\n\n// `variant` doubles as a position preset, but an explicit `anchor` always wins.\nconst resolveAnchor = (\n anchor: DrawerProps['anchor'],\n variant: DrawerProps['variant'],\n): DrawerAnchor => {\n if (anchor) return anchor;\n\n // Map variant to anchor position\n switch (variant) {\n case 'right':\n return 'right';\n case 'top':\n return 'top';\n case 'bottom':\n return 'bottom';\n case 'glass':\n return 'right';\n case 'left':\n default:\n return 'left';\n }\n};\n\nconst buildDrawerStyles = (\n theme: Theme,\n anchor: DrawerAnchor,\n variant: DrawerProps['variant'],\n width: DrawerProps['width'],\n height: DrawerProps['height'],\n // Merged LAST into the surface's own rules, so a caller can shape the sliding\n // surface itself (rounded corners on a bottom sheet, a docked panel's offset)\n // without reaching for the MUI paper class from outside. Undefined by default:\n // omit it and the drawer styles exactly as it always has.\n paperSx?: DrawerProps['paperSx'],\n) => {\n const widthCss = drawerLength(theme, width);\n const heightCss = drawerLength(theme, height);\n const baseStyles = {\n width: ['left', 'right'].includes(anchor) ? widthCss : '100%',\n height: ['top', 'bottom'].includes(anchor) ? heightCss : '100%',\n flexShrink: 0,\n };\n\n if (variant === 'glass') {\n return {\n ...baseStyles,\n '& .MuiDrawer-paper': {\n width: widthCss,\n height: '100%',\n backgroundColor: alpha(theme.palette.background.paper, 0.1),\n backdropFilter: `blur(${rem(theme, 20)})`,\n border: `1px solid ${alpha(theme.palette.primary.main, 0.2)}`,\n boxShadow: `${rems(theme, 0, 8, 32)} ${shadowInk(theme, 0.1)}`,\n ...paperSx,\n },\n };\n }\n\n return {\n ...baseStyles,\n '& .MuiDrawer-paper': {\n width: ['left', 'right'].includes(anchor) ? widthCss : '100%',\n height: ['top', 'bottom'].includes(anchor) ? heightCss : '100%',\n boxSizing: 'border-box',\n ...paperSx,\n },\n };\n};\n\nexport const Drawer: React.FC<DrawerProps> = ({\n children,\n open,\n onClose,\n variant = 'left',\n anchor,\n width,\n height = '100%',\n persistent = false,\n backdrop = true,\n hideBackdrop = false,\n keepMounted = false,\n paperSx,\n className,\n dataTestId,\n ...rest\n}) => {\n const theme = useTheme();\n const drawerAnchor = resolveAnchor(anchor, variant);\n\n return (\n <MuiDrawer\n anchor={drawerAnchor}\n open={open}\n onClose={onClose}\n variant={persistent ? 'persistent' : 'temporary'}\n ModalProps={{\n keepMounted,\n hideBackdrop,\n BackdropProps: {\n invisible: !backdrop,\n },\n }}\n sx={buildDrawerStyles(theme, drawerAnchor, variant, width ?? 280, height, paperSx)}\n className={className}\n data-testid={dataTestId || 'drawer'}\n {...rest}\n >\n {children}\n </MuiDrawer>\n );\n};\n\nexport const DrawerHeader: React.FC<DrawerHeaderProps> = ({\n children,\n onClose,\n showCloseButton = true,\n closeLabel,\n dataTestId,\n}) => {\n const theme = useTheme();\n\n return (\n <Box\n data-testid={dataTestId || 'drawer-header'}\n sx={{\n display: 'flex',\n alignItems: 'center',\n padding: theme.spacing(2),\n borderBottom: `1px solid ${theme.palette.divider}`,\n minHeight: rem(theme, 64),\n justifyContent: 'space-between',\n }}\n >\n <Box sx={{ flex: 1 }} data-testid={dataTestId ? `${dataTestId}-title` : 'drawer-title'}>\n {typeof children === 'string' ? <Typography variant=\"h6\">{children}</Typography> : children}\n </Box>\n {showCloseButton && onClose && (\n <IconButton\n onClick={onClose}\n edge=\"end\"\n aria-label={closeLabel ?? 'Close drawer'}\n data-testid={dataTestId ? `${dataTestId}-close` : 'drawer-close'}\n >\n <Close />\n </IconButton>\n )}\n </Box>\n );\n};\n\nexport const DrawerContent: React.FC<DrawerContentProps> = ({ children, padding = true, dataTestId }) => {\n const theme = useTheme();\n\n return (\n <Box\n data-testid={dataTestId || 'drawer-content'}\n sx={{\n flex: 1,\n overflow: 'auto',\n padding: padding ? theme.spacing(2) : 0,\n }}\n >\n {children}\n </Box>\n );\n};\n"],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../src/components/layout/Drawer/Drawer.tsx"],"sourcesContent":["import Close from '@mui/icons-material/Close';\nimport type { Theme } from '@mui/material/styles/index.js';\nimport Box from '@mui/material/Box/index.js';\nimport MuiDrawer from '@mui/material/Drawer/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha, useTheme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport type { DrawerContentProps,DrawerHeaderProps, DrawerProps } from './Drawer.types';\nimport { shadowInk } from '../../../tokens/ink';\nimport { rem, rems } from '../../../tokens/relative';\n\ntype DrawerAnchor = 'left' | 'right' | 'top' | 'bottom';\n\n/**\n * A `width`/`height` prop as CSS. `sx` reads a number of 1 or less as a\n * fraction of the parent, and that stays so; any other number is design px,\n * through the type scale; a string is as given.\n */\nconst drawerLength = (theme: Theme, value: number | string | undefined): string | undefined => {\n if (typeof value !== 'number') return value;\n return value <= 1 && value !== 0 ? `${value * 100}%` : rem(theme, value);\n};\n\n// `variant` doubles as a position preset, but an explicit `anchor` always wins.\nconst resolveAnchor = (\n anchor: DrawerProps['anchor'],\n variant: DrawerProps['variant'],\n): DrawerAnchor => {\n if (anchor) return anchor;\n\n // Map variant to anchor position\n switch (variant) {\n case 'right':\n return 'right';\n case 'top':\n return 'top';\n case 'bottom':\n return 'bottom';\n case 'glass':\n return 'right';\n case 'left':\n default:\n return 'left';\n }\n};\n\nconst buildDrawerStyles = (\n theme: Theme,\n anchor: DrawerAnchor,\n variant: DrawerProps['variant'],\n width: DrawerProps['width'],\n height: DrawerProps['height'],\n // Merged LAST into the surface's own rules, so a caller can shape the sliding\n // surface itself (rounded corners on a bottom sheet, a docked panel's offset)\n // without reaching for the MUI paper class from outside. Undefined by default:\n // omit it and the drawer styles exactly as it always has.\n paperSx?: DrawerProps['paperSx'],\n) => {\n const widthCss = drawerLength(theme, width);\n const heightCss = drawerLength(theme, height);\n const baseStyles = {\n width: ['left', 'right'].includes(anchor) ? widthCss : '100%',\n height: ['top', 'bottom'].includes(anchor) ? heightCss : '100%',\n flexShrink: 0,\n };\n\n if (variant === 'glass') {\n return {\n ...baseStyles,\n '& .MuiDrawer-paper': {\n width: widthCss,\n height: '100%',\n backgroundColor: alpha(theme.palette.background.paper, 0.1),\n backdropFilter: `blur(${rem(theme, 20)})`,\n border: `1px solid ${alpha(theme.palette.primary.main, 0.2)}`,\n boxShadow: `${rems(theme, 0, 8, 32)} ${shadowInk(theme, 0.1)}`,\n ...paperSx,\n },\n };\n }\n\n return {\n ...baseStyles,\n '& .MuiDrawer-paper': {\n width: ['left', 'right'].includes(anchor) ? widthCss : '100%',\n height: ['top', 'bottom'].includes(anchor) ? heightCss : '100%',\n boxSizing: 'border-box',\n ...paperSx,\n },\n };\n};\n\nexport const Drawer: React.FC<DrawerProps> = ({\n children,\n open,\n onClose,\n variant = 'left',\n anchor,\n width,\n height = '100%',\n persistent = false,\n backdrop = true,\n hideBackdrop = false,\n keepMounted = false,\n paperSx,\n className,\n dataTestId,\n ...rest\n}) => {\n const theme = useTheme();\n const drawerAnchor = resolveAnchor(anchor, variant);\n\n return (\n <MuiDrawer\n anchor={drawerAnchor}\n open={open}\n onClose={onClose}\n variant={persistent ? 'persistent' : 'temporary'}\n ModalProps={{\n keepMounted,\n hideBackdrop,\n BackdropProps: {\n invisible: !backdrop,\n },\n }}\n sx={buildDrawerStyles(theme, drawerAnchor, variant, width ?? 280, height, paperSx)}\n className={className}\n data-testid={dataTestId || 'drawer'}\n {...rest}\n >\n {children}\n </MuiDrawer>\n );\n};\n\nexport const DrawerHeader: React.FC<DrawerHeaderProps> = ({\n children,\n onClose,\n showCloseButton = true,\n closeLabel,\n dataTestId,\n}) => {\n const theme = useTheme();\n\n return (\n <Box\n data-testid={dataTestId || 'drawer-header'}\n sx={{\n display: 'flex',\n alignItems: 'center',\n // 12px above and below: the close button is 40px tall, so the header lands on\n // its own 64px minimum instead of 72 — the height of the page header beside\n // a docked drawer (FUT-3476).\n padding: theme.spacing(1.5, 2),\n borderBottom: `1px solid ${theme.palette.divider}`,\n minHeight: rem(theme, 64),\n justifyContent: 'space-between',\n }}\n >\n <Box sx={{ flex: 1 }} data-testid={dataTestId ? `${dataTestId}-title` : 'drawer-title'}>\n {typeof children === 'string' ? <Typography variant=\"h6\">{children}</Typography> : children}\n </Box>\n {showCloseButton && onClose && (\n <IconButton\n onClick={onClose}\n edge=\"end\"\n aria-label={closeLabel ?? 'Close drawer'}\n data-testid={dataTestId ? `${dataTestId}-close` : 'drawer-close'}\n >\n <Close />\n </IconButton>\n )}\n </Box>\n );\n};\n\nexport const DrawerContent: React.FC<DrawerContentProps> = ({ children, padding = true, dataTestId }) => {\n const theme = useTheme();\n\n return (\n <Box\n data-testid={dataTestId || 'drawer-content'}\n sx={{\n flex: 1,\n overflow: 'auto',\n padding: padding ? theme.spacing(2) : 0,\n }}\n >\n {children}\n </Box>\n );\n};\n"],"mappings":"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","names":[]}
|
|
@@ -5,10 +5,10 @@ import {
|
|
|
5
5
|
} from "./chunk-AJUSBPWG.js";
|
|
6
6
|
import {
|
|
7
7
|
SettingsStatusMarker
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-7Y2VWMGS.js";
|
|
9
9
|
import {
|
|
10
10
|
TOUCH_TARGET
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-NK4T624E.js";
|
|
12
12
|
import {
|
|
13
13
|
rem,
|
|
14
14
|
sxRem
|
|
@@ -186,4 +186,4 @@ SettingsSectionChips.displayName = "SettingsSectionChips";
|
|
|
186
186
|
export {
|
|
187
187
|
SettingsSectionChips
|
|
188
188
|
};
|
|
189
|
-
//# sourceMappingURL=chunk-
|
|
189
|
+
//# sourceMappingURL=chunk-GBVNY2LG.js.map
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
Drawer,
|
|
10
10
|
DrawerContent,
|
|
11
11
|
DrawerHeader
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-F742IMLQ.js";
|
|
13
13
|
import {
|
|
14
14
|
rem
|
|
15
15
|
} from "./chunk-YKCAJ2TN.js";
|
|
@@ -175,4 +175,4 @@ function SectionNavSheet({
|
|
|
175
175
|
export {
|
|
176
176
|
SectionNavSheet
|
|
177
177
|
};
|
|
178
|
-
//# sourceMappingURL=chunk-
|
|
178
|
+
//# sourceMappingURL=chunk-J26ZWYQI.js.map
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SettingsSectionChips
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-GBVNY2LG.js";
|
|
4
4
|
import {
|
|
5
5
|
SettingsSectionHeader
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-WOXNVM52.js";
|
|
7
7
|
import {
|
|
8
8
|
TOUCH_TARGET,
|
|
9
9
|
atLeastRail,
|
|
10
10
|
displayAcrossRail
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-NK4T624E.js";
|
|
12
12
|
import {
|
|
13
13
|
rem
|
|
14
14
|
} from "./chunk-YKCAJ2TN.js";
|
|
@@ -167,4 +167,4 @@ function SettingsPanel({
|
|
|
167
167
|
export {
|
|
168
168
|
SettingsPanel
|
|
169
169
|
};
|
|
170
|
-
//# sourceMappingURL=chunk-
|
|
170
|
+
//# sourceMappingURL=chunk-LY5I3ZSV.js.map
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
|
|
6
6
|
// src/components/layout/SettingsLayout/SettingsLayout.styles.ts
|
|
7
7
|
var railWidth = (theme) => rem(theme, 300);
|
|
8
|
+
var railCardWidth = (theme) => rem(theme, 200);
|
|
8
9
|
var SR_ONLY_SX = {
|
|
9
10
|
position: "absolute",
|
|
10
11
|
width: sxRem(1),
|
|
@@ -31,10 +32,11 @@ var STATUS_COLOR = {
|
|
|
31
32
|
|
|
32
33
|
export {
|
|
33
34
|
railWidth,
|
|
35
|
+
railCardWidth,
|
|
34
36
|
SR_ONLY_SX,
|
|
35
37
|
atLeastRail,
|
|
36
38
|
displayAcrossRail,
|
|
37
39
|
TOUCH_TARGET,
|
|
38
40
|
STATUS_COLOR
|
|
39
41
|
};
|
|
40
|
-
//# sourceMappingURL=chunk-
|
|
42
|
+
//# sourceMappingURL=chunk-NK4T624E.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/layout/SettingsLayout/SettingsLayout.styles.ts"],"sourcesContent":["import type { CSSObject, SxProps, Theme } from '@mui/material/styles/index.js';\n\nimport { rem, sxRem } from '../../../tokens/relative';\n\nimport type { SettingsNavStatus, SettingsRailBreakpoint } from './SettingsLayout.types';\n\n/** Fixed width of the left navigation rail once it has its own column (300 design px). */\nexport const railWidth = (theme: Theme): string => rem(theme, 300);\n\n/** Width of the rail drawn as a card (`railVariant=\"card\"`, 200 design px). */\nexport const railCardWidth = (theme: Theme): string => rem(theme, 200);\n\n/** Visually hidden, still read aloud — for text a marker's colour cannot carry. */\nexport const SR_ONLY_SX: SxProps<Theme> = {\n position: 'absolute',\n width: sxRem(1),\n height: sxRem(1),\n padding: 0,\n margin: sxRem(-1),\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n whiteSpace: 'nowrap',\n border: 0,\n};\n\n/**\n * The media query for \"the rail has its own column\".\n *\n * `theme.breakpoints.up` takes a NUMBER as happily as a name, which is why\n * `railBreakpoint` accepts one: a settings area whose structural switch is at\n * 1024px has no MUI breakpoint to name (the default `lg` is 1200), and rounding\n * the design to the nearest named breakpoint moves 176px of behaviour to keep a\n * string tidy.\n */\nexport function atLeastRail(theme: Theme, breakpoint: SettingsRailBreakpoint): string {\n return theme.breakpoints.up(breakpoint);\n}\n\n/**\n * A `display` pair across that query: `narrow` below it, `wide` at and above.\n *\n * Everything that changes shape between the two navigation modes goes through\n * this, so \"which width am I?\" is answered once, in CSS, for every part at\n * once — rather than by each part asking a media query in JavaScript and\n * answering slightly differently.\n */\nexport function displayAcrossRail(\n theme: Theme,\n breakpoint: SettingsRailBreakpoint,\n narrow: string,\n wide: string,\n): CSSObject {\n return { display: narrow, [atLeastRail(theme, breakpoint)]: { display: wide } };\n}\n\n/** Minimum touch target, in px. Held down to 320px-wide phones, deliberately. */\nexport const TOUCH_TARGET = 44;\n\n/**\n * Palette role per situation.\n *\n * Returned as theme keys rather than hex so a marker follows the host's theme —\n * and so light and dark do not need two copies of this table.\n */\nexport const STATUS_COLOR: Record<Exclude<SettingsNavStatus, 'locked'>, string> = {\n ok: 'success.main',\n off: 'text.disabled',\n new: 'error.main',\n};\n"],"mappings":";;;;;;AAOO,IAAM,YAAY,CAAC,UAAyB,IAAI,OAAO,GAAG;AAG1D,IAAM,gBAAgB,CAAC,UAAyB,IAAI,OAAO,GAAG;AAG9D,IAAM,aAA6B;AAAA,EACxC,UAAU;AAAA,EACV,OAAO,MAAM,CAAC;AAAA,EACd,QAAQ,MAAM,CAAC;AAAA,EACf,SAAS;AAAA,EACT,QAAQ,MAAM,EAAE;AAAA,EAChB,UAAU;AAAA,EACV,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,QAAQ;AACV;AAWO,SAAS,YAAY,OAAc,YAA4C;AACpF,SAAO,MAAM,YAAY,GAAG,UAAU;AACxC;AAUO,SAAS,kBACd,OACA,YACA,QACA,MACW;AACX,SAAO,EAAE,SAAS,QAAQ,CAAC,YAAY,OAAO,UAAU,CAAC,GAAG,EAAE,SAAS,KAAK,EAAE;AAChF;AAGO,IAAM,eAAe;AAQrB,IAAM,eAAqE;AAAA,EAChF,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AACP;","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SectionNavSheet
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-J26ZWYQI.js";
|
|
4
4
|
import {
|
|
5
5
|
RaisedActionButton,
|
|
6
6
|
raisedLift
|
|
@@ -327,4 +327,4 @@ export {
|
|
|
327
327
|
sectionNavSheetOffset,
|
|
328
328
|
SectionNavBar
|
|
329
329
|
};
|
|
330
|
-
//# sourceMappingURL=chunk-
|
|
330
|
+
//# sourceMappingURL=chunk-PMRLFNBT.js.map
|
|
@@ -49,11 +49,11 @@ var StyledTextarea = styled(TextareaAutosize, {
|
|
|
49
49
|
const colorPalette = getColorFromTheme(theme, customColor);
|
|
50
50
|
const errorColor = theme.palette.error;
|
|
51
51
|
const sizeMap = {
|
|
52
|
-
xs: { padding: rems(theme, 6, 8), fontSize: rem(theme, 12)
|
|
53
|
-
sm: { padding: rems(theme, 8, 10), fontSize: rem(theme, 14)
|
|
54
|
-
md: { padding: rems(theme, 10, 12), fontSize: rem(theme, 16)
|
|
55
|
-
lg: { padding: rems(theme, 12, 14), fontSize: rem(theme, 18)
|
|
56
|
-
xl: { padding: rems(theme, 14, 16), fontSize: rem(theme, 20)
|
|
52
|
+
xs: { padding: rems(theme, 6, 8), fontSize: rem(theme, 12) },
|
|
53
|
+
sm: { padding: rems(theme, 8, 10), fontSize: rem(theme, 14) },
|
|
54
|
+
md: { padding: rems(theme, 10, 12), fontSize: rem(theme, 16) },
|
|
55
|
+
lg: { padding: rems(theme, 12, 14), fontSize: rem(theme, 18) },
|
|
56
|
+
xl: { padding: rems(theme, 14, 16), fontSize: rem(theme, 20) }
|
|
57
57
|
};
|
|
58
58
|
const baseStyles = {
|
|
59
59
|
width: "100%",
|
|
@@ -112,7 +112,9 @@ var TEXTAREA_DEFAULTS = {
|
|
|
112
112
|
glass: false,
|
|
113
113
|
gradient: false,
|
|
114
114
|
iconPosition: "start",
|
|
115
|
-
|
|
115
|
+
// Four lines of its own text, whatever the variant or size (FUT-3534); a
|
|
116
|
+
// screen that wants another height passes `minRows`.
|
|
117
|
+
minRows: 4
|
|
116
118
|
};
|
|
117
119
|
var definedProps = (props) => Object.fromEntries(
|
|
118
120
|
Object.entries(props).filter(([, value]) => value !== void 0)
|
|
@@ -210,7 +212,7 @@ var Textarea = (textareaProps) => {
|
|
|
210
212
|
glass,
|
|
211
213
|
gradient,
|
|
212
214
|
error,
|
|
213
|
-
minRows
|
|
215
|
+
minRows,
|
|
214
216
|
maxRows: variant === "autosize" ? maxRows : void 0,
|
|
215
217
|
style: textareaStyle,
|
|
216
218
|
"aria-label": label || props["aria-label"],
|
|
@@ -225,4 +227,4 @@ Textarea.displayName = "Textarea";
|
|
|
225
227
|
export {
|
|
226
228
|
Textarea
|
|
227
229
|
};
|
|
228
|
-
//# sourceMappingURL=chunk-
|
|
230
|
+
//# sourceMappingURL=chunk-Q6MZHT2F.js.map
|