@tomny-dev/uzi 0.5.0 → 0.6.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/README.md +4 -1
- package/dist/components/card/Card.d.ts +7 -5
- package/dist/components/card/Card.d.ts.map +1 -1
- package/dist/components/surface/Surface.d.ts +16 -0
- package/dist/components/surface/Surface.d.ts.map +1 -0
- package/dist/components/toolbar/Toolbar.d.ts +13 -0
- package/dist/components/toolbar/Toolbar.d.ts.map +1 -0
- package/dist/index.cjs +36 -31
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -32
- package/dist/index10.cjs.map +1 -1
- package/dist/index10.js +19 -15
- package/dist/index10.js.map +1 -1
- package/dist/index11.cjs +21 -18
- package/dist/index11.cjs.map +1 -1
- package/dist/index11.js +8 -15
- package/dist/index11.js.map +1 -1
- package/dist/index12.cjs +7 -14
- package/dist/index12.cjs.map +1 -1
- package/dist/index12.js +15 -37
- package/dist/index12.js.map +1 -1
- package/dist/index13.cjs +18 -52
- package/dist/index13.cjs.map +1 -1
- package/dist/index13.js +15 -77
- package/dist/index13.js.map +1 -1
- package/dist/index14.cjs +15 -80
- package/dist/index14.cjs.map +1 -1
- package/dist/index14.js +37 -13
- package/dist/index14.js.map +1 -1
- package/dist/index15.cjs +52 -18
- package/dist/index15.cjs.map +1 -1
- package/dist/index15.js +77 -9
- package/dist/index15.js.map +1 -1
- package/dist/index16.cjs +79 -8
- package/dist/index16.cjs.map +1 -1
- package/dist/index16.js +13 -41
- package/dist/index16.js.map +1 -1
- package/dist/index17.cjs +18 -60
- package/dist/index17.cjs.map +1 -1
- package/dist/index17.js +9 -428
- package/dist/index17.js.map +1 -1
- package/dist/index18.cjs +8 -430
- package/dist/index18.cjs.map +1 -1
- package/dist/index18.js +42 -4
- package/dist/index18.js.map +1 -1
- package/dist/index19.cjs +61 -5
- package/dist/index19.cjs.map +1 -1
- package/dist/index19.js +430 -13
- package/dist/index19.js.map +1 -1
- package/dist/index20.cjs +430 -12
- package/dist/index20.cjs.map +1 -1
- package/dist/index20.js +4 -4
- package/dist/index20.js.map +1 -1
- package/dist/index21.cjs +5 -5
- package/dist/index21.cjs.map +1 -1
- package/dist/index21.js +12 -9
- package/dist/index21.js.map +1 -1
- package/dist/index22.cjs +12 -9
- package/dist/index22.cjs.map +1 -1
- package/dist/index22.js +4 -4
- package/dist/index22.js.map +1 -1
- package/dist/index23.cjs +5 -5
- package/dist/index23.cjs.map +1 -1
- package/dist/index23.js +9 -12
- package/dist/index23.js.map +1 -1
- package/dist/index24.cjs +9 -12
- package/dist/index24.cjs.map +1 -1
- package/dist/index24.js +4 -38
- package/dist/index24.js.map +1 -1
- package/dist/index25.cjs +5 -55
- package/dist/index25.cjs.map +1 -1
- package/dist/index25.js +11 -116
- package/dist/index25.js.map +1 -1
- package/dist/index26.cjs +10 -116
- package/dist/index26.cjs.map +1 -1
- package/dist/index26.js +31 -19
- package/dist/index26.js.map +1 -1
- package/dist/index27.cjs +42 -24
- package/dist/index27.cjs.map +1 -1
- package/dist/index27.js +106 -93
- package/dist/index27.js.map +1 -1
- package/dist/index28.cjs +106 -93
- package/dist/index28.cjs.map +1 -1
- package/dist/index28.js +26 -23
- package/dist/index28.js.map +1 -1
- package/dist/index29.cjs +37 -25
- package/dist/index29.cjs.map +1 -1
- package/dist/index29.js +107 -26
- package/dist/index29.js.map +1 -1
- package/dist/index30.cjs +110 -37
- package/dist/index30.cjs.map +1 -1
- package/dist/index30.js +21 -113
- package/dist/index30.js.map +1 -1
- package/dist/index31.cjs +19 -125
- package/dist/index31.cjs.map +1 -1
- package/dist/index31.js +26 -17
- package/dist/index31.js.map +1 -1
- package/dist/index32.cjs +37 -20
- package/dist/index32.cjs.map +1 -1
- package/dist/index32.js +108 -104
- package/dist/index32.js.map +1 -1
- package/dist/index33.cjs +122 -103
- package/dist/index33.cjs.map +1 -1
- package/dist/index33.js +17 -4
- package/dist/index33.js.map +1 -1
- package/dist/index34.cjs +20 -5
- package/dist/index34.cjs.map +1 -1
- package/dist/index34.js +106 -58
- package/dist/index34.js.map +1 -1
- package/dist/index35.cjs +106 -57
- package/dist/index35.cjs.map +1 -1
- package/dist/index35.js +4 -22
- package/dist/index35.js.map +1 -1
- package/dist/index36.cjs +5 -31
- package/dist/index36.cjs.map +1 -1
- package/dist/index36.js +55 -44
- package/dist/index36.js.map +1 -1
- package/dist/index37.cjs +55 -44
- package/dist/index37.cjs.map +1 -1
- package/dist/index37.js +21 -31
- package/dist/index37.js.map +1 -1
- package/dist/index38.cjs +30 -45
- package/dist/index38.cjs.map +1 -1
- package/dist/index38.js +46 -141
- package/dist/index38.js.map +1 -1
- package/dist/index39.cjs +46 -141
- package/dist/index39.cjs.map +1 -1
- package/dist/index39.js +31 -41
- package/dist/index39.js.map +1 -1
- package/dist/index40.cjs +45 -60
- package/dist/index40.cjs.map +1 -1
- package/dist/index40.js +139 -163
- package/dist/index40.js.map +1 -1
- package/dist/index41.cjs +137 -161
- package/dist/index41.cjs.map +1 -1
- package/dist/index41.js +41 -12
- package/dist/index41.js.map +1 -1
- package/dist/index42.cjs +60 -14
- package/dist/index42.cjs.map +1 -1
- package/dist/index42.js +167 -15
- package/dist/index42.js.map +1 -1
- package/dist/index43.cjs +166 -14
- package/dist/index43.cjs.map +1 -1
- package/dist/index43.js +12 -15
- package/dist/index43.js.map +1 -1
- package/dist/index44.cjs +14 -21
- package/dist/index44.cjs.map +1 -1
- package/dist/index44.js +15 -28
- package/dist/index44.js.map +1 -1
- package/dist/index45.cjs +14 -27
- package/dist/index45.cjs.map +1 -1
- package/dist/index45.js +10 -8
- package/dist/index45.js.map +1 -1
- package/dist/index46.cjs +11 -8
- package/dist/index46.cjs.map +1 -1
- package/dist/index46.js +22 -15
- package/dist/index46.js.map +1 -1
- package/dist/index47.cjs +22 -15
- package/dist/index47.cjs.map +1 -1
- package/dist/index47.js +9 -13
- package/dist/index47.js.map +1 -1
- package/dist/index48.cjs +10 -16
- package/dist/index48.cjs.map +1 -1
- package/dist/index48.js +18 -25
- package/dist/index48.js.map +1 -1
- package/dist/index49.cjs +18 -25
- package/dist/index49.cjs.map +1 -1
- package/dist/index49.js +17 -14
- package/dist/index49.js.map +1 -1
- package/dist/index50.cjs +24 -17
- package/dist/index50.cjs.map +1 -1
- package/dist/index50.js +28 -28
- package/dist/index50.js.map +1 -1
- package/dist/index51.cjs +27 -28
- package/dist/index51.cjs.map +1 -1
- package/dist/index51.js +14 -17
- package/dist/index51.js.map +1 -1
- package/dist/index52.cjs +17 -22
- package/dist/index52.cjs.map +1 -1
- package/dist/index52.js +23 -23
- package/dist/index52.js.map +1 -1
- package/dist/index53.cjs +23 -23
- package/dist/index53.cjs.map +1 -1
- package/dist/index53.js +17 -10
- package/dist/index53.js.map +1 -1
- package/dist/index54.cjs +22 -11
- package/dist/index54.cjs.map +1 -1
- package/dist/index54.js +28 -14
- package/dist/index54.js.map +1 -1
- package/dist/index55.cjs +28 -13
- package/dist/index55.cjs.map +1 -1
- package/dist/index55.js +17 -11
- package/dist/index55.js.map +1 -1
- package/dist/index56.cjs +23 -13
- package/dist/index56.cjs.map +1 -1
- package/dist/index56.js +24 -16
- package/dist/index56.js.map +1 -1
- package/dist/index57.cjs +24 -15
- package/dist/index57.cjs.map +1 -1
- package/dist/index57.js +10 -9
- package/dist/index57.js.map +1 -1
- package/dist/index58.cjs +11 -12
- package/dist/index58.cjs.map +1 -1
- package/dist/index58.js +12 -87
- package/dist/index58.js.map +1 -1
- package/dist/index59.cjs +12 -89
- package/dist/index59.cjs.map +1 -1
- package/dist/index59.js +11 -21
- package/dist/index59.js.map +1 -1
- package/dist/index60.cjs +13 -30
- package/dist/index60.cjs.map +1 -1
- package/dist/index60.js +17 -43
- package/dist/index60.js.map +1 -1
- package/dist/index61.cjs +16 -44
- package/dist/index61.cjs.map +1 -1
- package/dist/index61.js +9 -57
- package/dist/index61.js.map +1 -1
- package/dist/index62.cjs +11 -83
- package/dist/index62.cjs.map +1 -1
- package/dist/index62.js +83 -426
- package/dist/index62.js.map +1 -1
- package/dist/index63.cjs +82 -427
- package/dist/index63.cjs.map +1 -1
- package/dist/index63.js +21 -59
- package/dist/index63.js.map +1 -1
- package/dist/index64.cjs +30 -87
- package/dist/index64.cjs.map +1 -1
- package/dist/index64.js +44 -240
- package/dist/index64.js.map +1 -1
- package/dist/index65.cjs +43 -239
- package/dist/index65.cjs.map +1 -1
- package/dist/index65.js +57 -43
- package/dist/index65.js.map +1 -1
- package/dist/index66.cjs +84 -63
- package/dist/index66.cjs.map +1 -1
- package/dist/index66.js +426 -73
- package/dist/index66.js.map +1 -1
- package/dist/index67.cjs +426 -71
- package/dist/index67.cjs.map +1 -1
- package/dist/index67.js +59 -21
- package/dist/index67.js.map +1 -1
- package/dist/index68.cjs +87 -30
- package/dist/index68.cjs.map +1 -1
- package/dist/index68.js +233 -88
- package/dist/index68.js.map +1 -1
- package/dist/index69.cjs +232 -89
- package/dist/index69.cjs.map +1 -1
- package/dist/index69.js +40 -16
- package/dist/index69.js.map +1 -1
- package/dist/index70.cjs +56 -20
- package/dist/index70.cjs.map +1 -1
- package/dist/index70.js +72 -145
- package/dist/index70.js.map +1 -1
- package/dist/index71.cjs +72 -145
- package/dist/index71.cjs.map +1 -1
- package/dist/index71.js +25 -0
- package/dist/index71.js.map +1 -0
- package/dist/index72.cjs +34 -0
- package/dist/index72.cjs.map +1 -0
- package/dist/index72.js +101 -0
- package/dist/index72.js.map +1 -0
- package/dist/index73.cjs +105 -0
- package/dist/index73.cjs.map +1 -0
- package/dist/index73.js +23 -0
- package/dist/index73.js.map +1 -0
- package/dist/index74.cjs +31 -0
- package/dist/index74.cjs.map +1 -0
- package/dist/index74.js +159 -0
- package/dist/index74.js.map +1 -0
- package/dist/index75.cjs +161 -0
- package/dist/index75.cjs.map +1 -0
- package/dist/index8.js.map +1 -1
- package/dist/index9.cjs.map +1 -1
- package/dist/index9.js.map +1 -1
- package/dist/style.css +215 -45
- package/package.json +2 -2
package/dist/index37.js
CHANGED
|
@@ -1,35 +1,25 @@
|
|
|
1
|
-
//#region src/components/
|
|
2
|
-
var
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
appShellTopbar,
|
|
22
|
-
appShellTopbarLeft,
|
|
23
|
-
appShellTopbarStart,
|
|
24
|
-
appShellTopbarRight,
|
|
25
|
-
appShellBrand,
|
|
26
|
-
appShellHamburger,
|
|
27
|
-
appShellSidebar,
|
|
28
|
-
appShellMain,
|
|
29
|
-
appShellBackdrop,
|
|
30
|
-
appShellSidebarOpen
|
|
1
|
+
//#region src/components/top-bar/top-bar.module.css
|
|
2
|
+
var topBar = "uzi-top-bar-module__topBar__MJ-7S";
|
|
3
|
+
var topBarStatic = "uzi-top-bar-module__topBarStatic__JvEwt";
|
|
4
|
+
var topBarInner = "uzi-top-bar-module__topBarInner__PBbi8";
|
|
5
|
+
var topBarStart = "uzi-top-bar-module__topBarStart__DrdN2";
|
|
6
|
+
var topBarBrand = "uzi-top-bar-module__topBarBrand__80VV3";
|
|
7
|
+
var topBarBrandContent = "uzi-top-bar-module__topBarBrandContent__O4Uto";
|
|
8
|
+
var topBarCenter = "uzi-top-bar-module__topBarCenter__Kwxg-";
|
|
9
|
+
var topBarCenterGroup = "uzi-top-bar-module__topBarCenterGroup__7Ishp";
|
|
10
|
+
var topBarActions = "uzi-top-bar-module__topBarActions__mgMd8";
|
|
11
|
+
var top_bar_module_default = {
|
|
12
|
+
topBar,
|
|
13
|
+
topBarStatic,
|
|
14
|
+
topBarInner,
|
|
15
|
+
topBarStart,
|
|
16
|
+
topBarBrand,
|
|
17
|
+
topBarBrandContent,
|
|
18
|
+
topBarCenter,
|
|
19
|
+
topBarCenterGroup,
|
|
20
|
+
topBarActions
|
|
31
21
|
};
|
|
32
22
|
//#endregion
|
|
33
|
-
export {
|
|
23
|
+
export { top_bar_module_default as default, topBar, topBarActions, topBarBrand, topBarBrandContent, topBarCenter, topBarCenterGroup, topBarInner, topBarStart, topBarStatic };
|
|
34
24
|
|
|
35
25
|
//# sourceMappingURL=index37.js.map
|
package/dist/index37.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index37.js","names":[],"sources":["../src/components/
|
|
1
|
+
{"version":3,"file":"index37.js","names":[],"sources":["../src/components/top-bar/top-bar.module.css"],"sourcesContent":[".topBar {\n position: sticky;\n top: 0;\n z-index: 30;\n border-bottom: 1px solid var(--ts-topbar-border, var(--border));\n background: var(--ts-topbar-bg, color-mix(in srgb, var(--background) 92%, transparent));\n box-shadow: var(--ts-topbar-shadow, 0 1px 2px rgba(0, 0, 0, 0.06));\n backdrop-filter: blur(12px);\n}\n\n.topBarStatic {\n position: relative;\n}\n\n.topBarInner {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 1rem;\n min-height: 4.25rem;\n padding: env(safe-area-inset-top, 0) 1rem 0 1rem;\n}\n\n.topBarStart {\n display: flex;\n align-items: center;\n gap: 0.875rem;\n min-width: 0;\n flex: 1 1 auto;\n}\n\n.topBarBrand {\n display: inline-flex;\n align-items: center;\n gap: 0.625rem;\n min-width: 0;\n color: var(--ts-topbar-brand-fg, var(--foreground));\n text-decoration: none;\n}\n\n.topBarBrandContent {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.topBarCenter {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 0 1 auto;\n min-width: 0;\n}\n\n.topBarCenterGroup {\n display: inline-flex;\n align-items: center;\n gap: 1rem;\n min-width: 0;\n}\n\n.topBarActions {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 0.75rem;\n min-width: 0;\n flex: 1 1 auto;\n}\n\n@media (max-width: 768px) {\n .topBarInner {\n min-height: 4rem;\n gap: 0.75rem;\n padding-left: max(0.75rem, env(safe-area-inset-left));\n padding-right: max(0.75rem, env(safe-area-inset-right));\n }\n\n .topBarStart {\n gap: 0.75rem;\n }\n\n .topBarActions {\n gap: 0.5rem;\n }\n}\n"],"mappings":""}
|
package/dist/index38.cjs
CHANGED
|
@@ -1,49 +1,34 @@
|
|
|
1
|
-
//#region src/components/
|
|
2
|
-
var
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
appShellTopbar,
|
|
22
|
-
appShellTopbarLeft,
|
|
23
|
-
appShellTopbarStart,
|
|
24
|
-
appShellTopbarRight,
|
|
25
|
-
appShellBrand,
|
|
26
|
-
appShellHamburger,
|
|
27
|
-
appShellSidebar,
|
|
28
|
-
appShellMain,
|
|
29
|
-
appShellBackdrop,
|
|
30
|
-
appShellSidebarOpen
|
|
1
|
+
//#region src/components/top-bar/top-bar.module.css
|
|
2
|
+
var topBar = "uzi-top-bar-module__topBar__MJ-7S";
|
|
3
|
+
var topBarStatic = "uzi-top-bar-module__topBarStatic__JvEwt";
|
|
4
|
+
var topBarInner = "uzi-top-bar-module__topBarInner__PBbi8";
|
|
5
|
+
var topBarStart = "uzi-top-bar-module__topBarStart__DrdN2";
|
|
6
|
+
var topBarBrand = "uzi-top-bar-module__topBarBrand__80VV3";
|
|
7
|
+
var topBarBrandContent = "uzi-top-bar-module__topBarBrandContent__O4Uto";
|
|
8
|
+
var topBarCenter = "uzi-top-bar-module__topBarCenter__Kwxg-";
|
|
9
|
+
var topBarCenterGroup = "uzi-top-bar-module__topBarCenterGroup__7Ishp";
|
|
10
|
+
var topBarActions = "uzi-top-bar-module__topBarActions__mgMd8";
|
|
11
|
+
var top_bar_module_default = {
|
|
12
|
+
topBar,
|
|
13
|
+
topBarStatic,
|
|
14
|
+
topBarInner,
|
|
15
|
+
topBarStart,
|
|
16
|
+
topBarBrand,
|
|
17
|
+
topBarBrandContent,
|
|
18
|
+
topBarCenter,
|
|
19
|
+
topBarCenterGroup,
|
|
20
|
+
topBarActions
|
|
31
21
|
};
|
|
32
22
|
//#endregion
|
|
33
|
-
exports.
|
|
34
|
-
exports.
|
|
35
|
-
exports.
|
|
36
|
-
exports.
|
|
37
|
-
exports.
|
|
38
|
-
exports.
|
|
39
|
-
exports.
|
|
40
|
-
exports.
|
|
41
|
-
exports.
|
|
42
|
-
exports.
|
|
43
|
-
exports.appShellTopbar = appShellTopbar;
|
|
44
|
-
exports.appShellTopbarLeft = appShellTopbarLeft;
|
|
45
|
-
exports.appShellTopbarRight = appShellTopbarRight;
|
|
46
|
-
exports.appShellTopbarStart = appShellTopbarStart;
|
|
47
|
-
exports.default = app_shell_module_default;
|
|
23
|
+
exports.default = top_bar_module_default;
|
|
24
|
+
exports.topBar = topBar;
|
|
25
|
+
exports.topBarActions = topBarActions;
|
|
26
|
+
exports.topBarBrand = topBarBrand;
|
|
27
|
+
exports.topBarBrandContent = topBarBrandContent;
|
|
28
|
+
exports.topBarCenter = topBarCenter;
|
|
29
|
+
exports.topBarCenterGroup = topBarCenterGroup;
|
|
30
|
+
exports.topBarInner = topBarInner;
|
|
31
|
+
exports.topBarStart = topBarStart;
|
|
32
|
+
exports.topBarStatic = topBarStatic;
|
|
48
33
|
|
|
49
34
|
//# sourceMappingURL=index38.cjs.map
|
package/dist/index38.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index38.cjs","names":[],"sources":["../src/components/
|
|
1
|
+
{"version":3,"file":"index38.cjs","names":[],"sources":["../src/components/top-bar/top-bar.module.css"],"sourcesContent":[".topBar {\n position: sticky;\n top: 0;\n z-index: 30;\n border-bottom: 1px solid var(--ts-topbar-border, var(--border));\n background: var(--ts-topbar-bg, color-mix(in srgb, var(--background) 92%, transparent));\n box-shadow: var(--ts-topbar-shadow, 0 1px 2px rgba(0, 0, 0, 0.06));\n backdrop-filter: blur(12px);\n}\n\n.topBarStatic {\n position: relative;\n}\n\n.topBarInner {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 1rem;\n min-height: 4.25rem;\n padding: env(safe-area-inset-top, 0) 1rem 0 1rem;\n}\n\n.topBarStart {\n display: flex;\n align-items: center;\n gap: 0.875rem;\n min-width: 0;\n flex: 1 1 auto;\n}\n\n.topBarBrand {\n display: inline-flex;\n align-items: center;\n gap: 0.625rem;\n min-width: 0;\n color: var(--ts-topbar-brand-fg, var(--foreground));\n text-decoration: none;\n}\n\n.topBarBrandContent {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.topBarCenter {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 0 1 auto;\n min-width: 0;\n}\n\n.topBarCenterGroup {\n display: inline-flex;\n align-items: center;\n gap: 1rem;\n min-width: 0;\n}\n\n.topBarActions {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 0.75rem;\n min-width: 0;\n flex: 1 1 auto;\n}\n\n@media (max-width: 768px) {\n .topBarInner {\n min-height: 4rem;\n gap: 0.75rem;\n padding-left: max(0.75rem, env(safe-area-inset-left));\n padding-right: max(0.75rem, env(safe-area-inset-right));\n }\n\n .topBarStart {\n gap: 0.75rem;\n }\n\n .topBarActions {\n gap: 0.5rem;\n }\n}\n"],"mappings":""}
|
package/dist/index38.js
CHANGED
|
@@ -1,150 +1,55 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cx } from "./index3.js";
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import { useEffect, useId, useRef, useState } from "react";
|
|
3
|
+
import { ThemeToggleButton } from "./index36.js";
|
|
4
|
+
import top_bar_module_default from "./index37.js";
|
|
6
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
-
//#region src/components/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
setTransitionsReady(true);
|
|
38
|
-
});
|
|
39
|
-
const handleResize = () => {
|
|
40
|
-
const nowDesktop = getIsDesktop();
|
|
41
|
-
setIsDesktop(nowDesktop);
|
|
42
|
-
if (nowDesktop !== prevIsDesktopRef.current) {
|
|
43
|
-
setSidebarOpen(nowDesktop);
|
|
44
|
-
prevIsDesktopRef.current = nowDesktop;
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
window.addEventListener("resize", handleResize);
|
|
48
|
-
return () => {
|
|
49
|
-
window.cancelAnimationFrame(transitionFrame);
|
|
50
|
-
window.removeEventListener("resize", handleResize);
|
|
51
|
-
};
|
|
52
|
-
}, []);
|
|
53
|
-
useEffect(() => {
|
|
54
|
-
if (isDesktop || !sidebarOpen) return;
|
|
55
|
-
const mainElement = mainRef.current;
|
|
56
|
-
const closeSidebar = () => setSidebarOpen(false);
|
|
57
|
-
const onPointerDown = (e) => {
|
|
58
|
-
const target = e.target;
|
|
59
|
-
if (!target) return;
|
|
60
|
-
if (sidebarRef.current?.contains(target)) return;
|
|
61
|
-
if (hamburgerRef.current?.contains(target)) return;
|
|
62
|
-
closeSidebar();
|
|
63
|
-
};
|
|
64
|
-
const timeoutId = window.setTimeout(() => {
|
|
65
|
-
document.addEventListener("pointerdown", onPointerDown);
|
|
66
|
-
window.addEventListener("scroll", closeSidebar, { passive: true });
|
|
67
|
-
mainElement?.addEventListener("scroll", closeSidebar, { passive: true });
|
|
68
|
-
document.addEventListener("touchmove", closeSidebar, { passive: true });
|
|
69
|
-
}, 10);
|
|
70
|
-
return () => {
|
|
71
|
-
window.clearTimeout(timeoutId);
|
|
72
|
-
document.removeEventListener("pointerdown", onPointerDown);
|
|
73
|
-
window.removeEventListener("scroll", closeSidebar);
|
|
74
|
-
mainElement?.removeEventListener("scroll", closeSidebar);
|
|
75
|
-
document.removeEventListener("touchmove", closeSidebar);
|
|
76
|
-
};
|
|
77
|
-
}, [sidebarOpen, isDesktop]);
|
|
78
|
-
useEffect(() => {
|
|
79
|
-
if (!isDesktop && closeKeyRef.current !== closeSidebarOnChangeKey) setSidebarOpen(false);
|
|
80
|
-
closeKeyRef.current = closeSidebarOnChangeKey;
|
|
81
|
-
}, [closeSidebarOnChangeKey, isDesktop]);
|
|
82
|
-
useEffect(() => {
|
|
83
|
-
onSidebarToggle?.(sidebarOpen);
|
|
84
|
-
}, [sidebarOpen, onSidebarToggle]);
|
|
85
|
-
const toggleSidebar = () => setSidebarOpen((open) => !open);
|
|
86
|
-
const sidebarWidthValue = sidebarWidth === void 0 ? void 0 : typeof sidebarWidth === "number" ? `${sidebarWidth}px` : sidebarWidth;
|
|
87
|
-
const shellStyle = sidebarWidthValue ? { ["--app-shell-sidebar-width"]: sidebarWidthValue } : void 0;
|
|
88
|
-
const shellClasses = cx(app_shell_module_default.appShell, transitionsReady && app_shell_module_default.appShellAnimated, sidebarOpen ? app_shell_module_default.appShellOpen : app_shell_module_default.appShellCollapsed, className);
|
|
89
|
-
const sidebarClasses = cx(app_shell_module_default.appShellSidebar, sidebarOpen && app_shell_module_default.appShellSidebarOpen, sidebarClassName);
|
|
90
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
91
|
-
className: shellClasses,
|
|
92
|
-
style: shellStyle,
|
|
93
|
-
"data-app-shell": true,
|
|
94
|
-
"data-desktop": isDesktop ? "true" : "false",
|
|
95
|
-
"data-sidebar-open": sidebarOpen ? "true" : "false",
|
|
96
|
-
children: [
|
|
97
|
-
/* @__PURE__ */ jsx(TopBar, {
|
|
98
|
-
className: cx(app_shell_module_default.appShellTopbar, topbarClassName),
|
|
99
|
-
leading: /* @__PURE__ */ jsx("button", {
|
|
100
|
-
ref: hamburgerRef,
|
|
101
|
-
type: "button",
|
|
102
|
-
className: app_shell_module_default.appShellHamburger,
|
|
103
|
-
onClick: toggleSidebar,
|
|
104
|
-
"aria-label": hamburgerLabel,
|
|
105
|
-
"aria-expanded": sidebarOpen,
|
|
106
|
-
"aria-controls": sidebarId,
|
|
107
|
-
children: /* @__PURE__ */ jsx("svg", {
|
|
108
|
-
viewBox: "0 0 24 24",
|
|
109
|
-
"aria-hidden": "true",
|
|
110
|
-
children: /* @__PURE__ */ jsx("path", {
|
|
111
|
-
d: "M3 6h18M3 12h18M3 18h18",
|
|
112
|
-
stroke: "currentColor",
|
|
113
|
-
strokeWidth: "2.5",
|
|
114
|
-
strokeLinecap: "round"
|
|
115
|
-
})
|
|
116
|
-
})
|
|
6
|
+
//#region src/components/top-bar/TopBar.tsx
|
|
7
|
+
function TopBar({ leading, brand, brandHref, brandingLocation = "left", start, center, actions, showThemeToggle = false, themeToggleProps, className, innerClassName, isSticky, sticky = true, children, ...rest }) {
|
|
8
|
+
const shouldStick = isSticky ?? sticky;
|
|
9
|
+
const brandNode = !brand ? null : brandHref ? /* @__PURE__ */ jsx("a", {
|
|
10
|
+
href: brandHref,
|
|
11
|
+
className: top_bar_module_default.topBarBrand,
|
|
12
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
13
|
+
className: top_bar_module_default.topBarBrandContent,
|
|
14
|
+
children: brand
|
|
15
|
+
})
|
|
16
|
+
}) : /* @__PURE__ */ jsx("div", {
|
|
17
|
+
className: top_bar_module_default.topBarBrand,
|
|
18
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
19
|
+
className: top_bar_module_default.topBarBrandContent,
|
|
20
|
+
children: brand
|
|
21
|
+
})
|
|
22
|
+
});
|
|
23
|
+
return /* @__PURE__ */ jsx("header", {
|
|
24
|
+
className: cx(top_bar_module_default.topBar, !shouldStick && top_bar_module_default.topBarStatic, className),
|
|
25
|
+
...rest,
|
|
26
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
27
|
+
className: cx(top_bar_module_default.topBarInner, innerClassName),
|
|
28
|
+
children: [
|
|
29
|
+
/* @__PURE__ */ jsxs("div", {
|
|
30
|
+
className: top_bar_module_default.topBarStart,
|
|
31
|
+
children: [
|
|
32
|
+
leading,
|
|
33
|
+
brandingLocation === "left" && brandNode,
|
|
34
|
+
start
|
|
35
|
+
]
|
|
117
36
|
}),
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
}),
|
|
132
|
-
/* @__PURE__ */ jsx("aside", {
|
|
133
|
-
ref: sidebarRef,
|
|
134
|
-
id: sidebarId,
|
|
135
|
-
className: sidebarClasses,
|
|
136
|
-
"aria-label": "Sidebar navigation",
|
|
137
|
-
children: sidebar
|
|
138
|
-
}),
|
|
139
|
-
/* @__PURE__ */ jsx("main", {
|
|
140
|
-
ref: mainRef,
|
|
141
|
-
className: cx(app_shell_module_default.appShellMain, mainClassName),
|
|
142
|
-
children
|
|
143
|
-
})
|
|
144
|
-
]
|
|
37
|
+
brandNode && brandingLocation === "center" || center || children ? /* @__PURE__ */ jsx("div", {
|
|
38
|
+
className: top_bar_module_default.topBarCenter,
|
|
39
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
40
|
+
className: top_bar_module_default.topBarCenterGroup,
|
|
41
|
+
children: [brandingLocation === "center" && brandNode, center ?? children]
|
|
42
|
+
})
|
|
43
|
+
}) : null,
|
|
44
|
+
/* @__PURE__ */ jsxs("div", {
|
|
45
|
+
className: top_bar_module_default.topBarActions,
|
|
46
|
+
children: [showThemeToggle && /* @__PURE__ */ jsx(ThemeToggleButton, { ...themeToggleProps }), actions]
|
|
47
|
+
})
|
|
48
|
+
]
|
|
49
|
+
})
|
|
145
50
|
});
|
|
146
51
|
}
|
|
147
52
|
//#endregion
|
|
148
|
-
export {
|
|
53
|
+
export { TopBar };
|
|
149
54
|
|
|
150
55
|
//# sourceMappingURL=index38.js.map
|
package/dist/index38.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index38.js","names":[],"sources":["../src/components/app-shell/AppShell.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n useEffect,\n useId,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { TopBar, type TopBarProps } from \"../top-bar/TopBar\";\nimport styles from \"./app-shell.module.css\";\n\nconst DESKTOP_BREAKPOINT = 960;\n\nfunction getIsDesktop() {\n if (typeof window === \"undefined\") return false;\n return window.innerWidth >= DESKTOP_BREAKPOINT;\n}\n\nexport type AppShellProps = {\n /** Primary page content rendered in the main area. */\n children: ReactNode;\n /** Sidebar navigation or custom content. */\n sidebar: ReactNode;\n /** Brand element rendered next to the hamburger (text or JSX). */\n brand?: ReactNode;\n /** Optional brand href; when provided the brand renders as an anchor. */\n brandHref?: string;\n /** Optional content after the brand on the left side of the top bar. */\n topbarStart?: ReactNode;\n /** Optional content aligned to the right side of the top bar. */\n topbarEnd?: ReactNode;\n /** Optional built-in theme toggle for the top bar. */\n showThemeToggle?: boolean;\n themeToggleProps?: TopBarProps[\"themeToggleProps\"];\n topBarBrandingLocation?: TopBarProps[\"brandingLocation\"];\n /** Custom class names for styling overrides. */\n className?: string;\n sidebarClassName?: string;\n topbarClassName?: string;\n mainClassName?: string;\n /** Sets the sidebar width (e.g., `260`, `\"18rem\"`). */\n sidebarWidth?: number | string;\n /**\n * Closes the sidebar on mobile whenever this value changes.\n * Useful for reacting to route/pathname changes.\n */\n closeSidebarOnChangeKey?: unknown;\n /** Label for the hamburger button (aria-label). */\n hamburgerLabel?: string;\n /** Optional callback fired whenever the sidebar open state changes. */\n onSidebarToggle?: (open: boolean) => void;\n};\n\n/**\n * Responsive application shell with a collapsible sidebar and sticky top bar.\n *\n * - Sidebar opens by default on desktop, collapses on mobile.\n * - Closes on outside click/scroll/touch when in mobile mode.\n * - Provides optional hook to close the sidebar when a prop value changes\n * (e.g., route transitions).\n */\nexport function AppShell({\n children,\n sidebar,\n brand,\n brandHref,\n topbarStart,\n topbarEnd,\n showThemeToggle = false,\n themeToggleProps,\n topBarBrandingLocation = \"left\",\n className,\n sidebarClassName,\n topbarClassName,\n mainClassName,\n sidebarWidth,\n closeSidebarOnChangeKey,\n hamburgerLabel = \"Toggle navigation\",\n onSidebarToggle,\n}: AppShellProps) {\n const [isDesktop, setIsDesktop] = useState(false);\n const [sidebarOpen, setSidebarOpen] = useState(false);\n const [transitionsReady, setTransitionsReady] = useState(false);\n const prevIsDesktopRef = useRef(false);\n const closeKeyRef = useRef(closeSidebarOnChangeKey);\n\n const sidebarRef = useRef<HTMLElement | null>(null);\n const hamburgerRef = useRef<HTMLButtonElement | null>(null);\n const mainRef = useRef<HTMLElement | null>(null);\n const sidebarId = useId();\n\n useEffect(() => {\n const desktop = getIsDesktop();\n setIsDesktop(desktop);\n setSidebarOpen(desktop);\n prevIsDesktopRef.current = desktop;\n const transitionFrame = window.requestAnimationFrame(() => {\n setTransitionsReady(true);\n });\n\n const handleResize = () => {\n const nowDesktop = getIsDesktop();\n setIsDesktop(nowDesktop);\n if (nowDesktop !== prevIsDesktopRef.current) {\n setSidebarOpen(nowDesktop);\n prevIsDesktopRef.current = nowDesktop;\n }\n };\n\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.cancelAnimationFrame(transitionFrame);\n window.removeEventListener(\"resize\", handleResize);\n };\n }, []);\n\n // Close the sidebar when clicking outside or scrolling on mobile.\n useEffect(() => {\n if (isDesktop || !sidebarOpen) return;\n\n const mainElement = mainRef.current;\n const closeSidebar = () => setSidebarOpen(false);\n\n const onPointerDown = (e: PointerEvent) => {\n const target = e.target as Node | null;\n if (!target) return;\n if (sidebarRef.current?.contains(target)) return;\n if (hamburgerRef.current?.contains(target)) return;\n closeSidebar();\n };\n\n const timeoutId = window.setTimeout(() => {\n document.addEventListener(\"pointerdown\", onPointerDown);\n window.addEventListener(\"scroll\", closeSidebar, { passive: true });\n mainElement?.addEventListener(\"scroll\", closeSidebar, { passive: true });\n document.addEventListener(\"touchmove\", closeSidebar, { passive: true });\n }, 10);\n\n return () => {\n window.clearTimeout(timeoutId);\n document.removeEventListener(\"pointerdown\", onPointerDown);\n window.removeEventListener(\"scroll\", closeSidebar);\n mainElement?.removeEventListener(\"scroll\", closeSidebar);\n document.removeEventListener(\"touchmove\", closeSidebar);\n };\n }, [sidebarOpen, isDesktop]);\n\n // Allow consumers to request a mobile sidebar close when a value changes (e.g., pathname).\n useEffect(() => {\n if (!isDesktop && closeKeyRef.current !== closeSidebarOnChangeKey) {\n setSidebarOpen(false);\n }\n closeKeyRef.current = closeSidebarOnChangeKey;\n }, [closeSidebarOnChangeKey, isDesktop]);\n\n useEffect(() => {\n onSidebarToggle?.(sidebarOpen);\n }, [sidebarOpen, onSidebarToggle]);\n\n const toggleSidebar = () => setSidebarOpen((open) => !open);\n\n const sidebarWidthValue =\n sidebarWidth === undefined\n ? undefined\n : typeof sidebarWidth === \"number\"\n ? `${sidebarWidth}px`\n : sidebarWidth;\n\n const shellStyle: CSSProperties | undefined = sidebarWidthValue\n ? { [\"--app-shell-sidebar-width\" as string]: sidebarWidthValue }\n : undefined;\n\n const shellClasses = cx(\n styles.appShell,\n transitionsReady && styles.appShellAnimated,\n sidebarOpen ? styles.appShellOpen : styles.appShellCollapsed,\n className,\n );\n\n const sidebarClasses = cx(\n styles.appShellSidebar,\n sidebarOpen && styles.appShellSidebarOpen,\n sidebarClassName,\n );\n\n return (\n <div\n className={shellClasses}\n style={shellStyle}\n data-app-shell\n data-desktop={isDesktop ? \"true\" : \"false\"}\n data-sidebar-open={sidebarOpen ? \"true\" : \"false\"}\n >\n <TopBar\n className={cx(styles.appShellTopbar, topbarClassName)}\n leading={\n <button\n ref={hamburgerRef}\n type=\"button\"\n className={styles.appShellHamburger}\n onClick={toggleSidebar}\n aria-label={hamburgerLabel}\n aria-expanded={sidebarOpen}\n aria-controls={sidebarId}\n >\n <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path d=\"M3 6h18M3 12h18M3 18h18\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" />\n </svg>\n </button>\n }\n brand={brand}\n brandHref={brandHref}\n brandingLocation={topBarBrandingLocation}\n start={topbarStart}\n actions={topbarEnd}\n showThemeToggle={showThemeToggle}\n themeToggleProps={themeToggleProps}\n />\n {!isDesktop && sidebarOpen && (\n <div\n className={styles.appShellBackdrop}\n onClick={() => setSidebarOpen(false)}\n onTouchStart={() => setSidebarOpen(false)}\n aria-hidden=\"true\"\n />\n )}\n <aside ref={sidebarRef} id={sidebarId} className={sidebarClasses} aria-label=\"Sidebar navigation\">\n {sidebar}\n </aside>\n <main ref={mainRef} className={cx(styles.appShellMain, mainClassName)}>\n {children}\n </main>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index38.js","names":[],"sources":["../src/components/top-bar/TopBar.tsx"],"sourcesContent":["\"use client\";\n\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport {\n ThemeToggleButton,\n type ThemeToggleButtonProps,\n} from \"../theme-toggle-button/ThemeToggleButton\";\nimport styles from \"./top-bar.module.css\";\n\nexport type TopBarProps = HTMLAttributes<HTMLElement> & {\n leading?: ReactNode;\n brand?: ReactNode;\n brandHref?: string;\n brandingLocation?: \"left\" | \"center\";\n /** Content rendered after the brand in the left region (e.g. breadcrumbs, search). */\n start?: ReactNode;\n /** Content rendered in the center region. */\n center?: ReactNode;\n actions?: ReactNode;\n showThemeToggle?: boolean;\n themeToggleProps?: ThemeToggleButtonProps;\n innerClassName?: string;\n isSticky?: boolean;\n sticky?: boolean;\n};\n\nexport function TopBar({\n leading,\n brand,\n brandHref,\n brandingLocation = \"left\",\n start,\n center,\n actions,\n showThemeToggle = false,\n themeToggleProps,\n className,\n innerClassName,\n isSticky,\n sticky = true,\n children,\n ...rest\n}: TopBarProps) {\n const shouldStick = isSticky ?? sticky;\n const brandNode = !brand ? null : brandHref ? (\n <a href={brandHref} className={styles.topBarBrand}>\n <span className={styles.topBarBrandContent}>{brand}</span>\n </a>\n ) : (\n <div className={styles.topBarBrand}>\n <span className={styles.topBarBrandContent}>{brand}</span>\n </div>\n );\n\n return (\n <header\n className={cx(styles.topBar, !shouldStick && styles.topBarStatic, className)}\n {...rest}\n >\n <div className={cx(styles.topBarInner, innerClassName)}>\n <div className={styles.topBarStart}>\n {leading}\n {brandingLocation === \"left\" && brandNode}\n {start}\n </div>\n {(brandNode && brandingLocation === \"center\") || center || children ? (\n <div className={styles.topBarCenter}>\n <div className={styles.topBarCenterGroup}>\n {brandingLocation === \"center\" && brandNode}\n {center ?? children}\n </div>\n </div>\n ) : null}\n <div className={styles.topBarActions}>\n {showThemeToggle && <ThemeToggleButton {...themeToggleProps} />}\n {actions}\n </div>\n </div>\n </header>\n );\n}\n"],"mappings":";;;;;;AA2BA,SAAgB,OAAO,EACrB,SACA,OACA,WACA,mBAAmB,QACnB,OACA,QACA,SACA,kBAAkB,OAClB,kBACA,WACA,gBACA,UACA,SAAS,MACT,UACA,GAAG,QACW;CACd,MAAM,cAAc,YAAY;CAChC,MAAM,YAAY,CAAC,QAAQ,OAAO,YAChC,oBAAC,KAAD;EAAG,MAAM;EAAW,WAAW,uBAAO;YACpC,oBAAC,QAAD;GAAM,WAAW,uBAAO;aAAqB;EAAY,CAAA;CACxD,CAAA,IAEH,oBAAC,OAAD;EAAK,WAAW,uBAAO;YACrB,oBAAC,QAAD;GAAM,WAAW,uBAAO;aAAqB;EAAY,CAAA;CACtD,CAAA;CAGP,OACE,oBAAC,UAAD;EACE,WAAW,GAAG,uBAAO,QAAQ,CAAC,eAAe,uBAAO,cAAc,SAAS;EAC3E,GAAI;YAEJ,qBAAC,OAAD;GAAK,WAAW,GAAG,uBAAO,aAAa,cAAc;aAArD;IACE,qBAAC,OAAD;KAAK,WAAW,uBAAO;eAAvB;MACG;MACA,qBAAqB,UAAU;MAC/B;KACE;;IACH,aAAa,qBAAqB,YAAa,UAAU,WACzD,oBAAC,OAAD;KAAK,WAAW,uBAAO;eACrB,qBAAC,OAAD;MAAK,WAAW,uBAAO;gBAAvB,CACG,qBAAqB,YAAY,WACjC,UAAU,QACR;;IACF,CAAA,IACH;IACJ,qBAAC,OAAD;KAAK,WAAW,uBAAO;eAAvB,CACG,mBAAmB,oBAAC,mBAAD,EAAmB,GAAI,iBAAmB,CAAA,GAC7D,OACE;;GACF;;CACC,CAAA;AAEZ"}
|
package/dist/index39.cjs
CHANGED
|
@@ -1,150 +1,55 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
const require_cx = require("./index4.cjs");
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
let react = require("react");
|
|
3
|
+
const require_ThemeToggleButton = require("./index37.cjs");
|
|
4
|
+
const require_top_bar_module = require("./index38.cjs");
|
|
6
5
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
7
|
-
//#region src/components/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
setTransitionsReady(true);
|
|
38
|
-
});
|
|
39
|
-
const handleResize = () => {
|
|
40
|
-
const nowDesktop = getIsDesktop();
|
|
41
|
-
setIsDesktop(nowDesktop);
|
|
42
|
-
if (nowDesktop !== prevIsDesktopRef.current) {
|
|
43
|
-
setSidebarOpen(nowDesktop);
|
|
44
|
-
prevIsDesktopRef.current = nowDesktop;
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
window.addEventListener("resize", handleResize);
|
|
48
|
-
return () => {
|
|
49
|
-
window.cancelAnimationFrame(transitionFrame);
|
|
50
|
-
window.removeEventListener("resize", handleResize);
|
|
51
|
-
};
|
|
52
|
-
}, []);
|
|
53
|
-
(0, react.useEffect)(() => {
|
|
54
|
-
if (isDesktop || !sidebarOpen) return;
|
|
55
|
-
const mainElement = mainRef.current;
|
|
56
|
-
const closeSidebar = () => setSidebarOpen(false);
|
|
57
|
-
const onPointerDown = (e) => {
|
|
58
|
-
const target = e.target;
|
|
59
|
-
if (!target) return;
|
|
60
|
-
if (sidebarRef.current?.contains(target)) return;
|
|
61
|
-
if (hamburgerRef.current?.contains(target)) return;
|
|
62
|
-
closeSidebar();
|
|
63
|
-
};
|
|
64
|
-
const timeoutId = window.setTimeout(() => {
|
|
65
|
-
document.addEventListener("pointerdown", onPointerDown);
|
|
66
|
-
window.addEventListener("scroll", closeSidebar, { passive: true });
|
|
67
|
-
mainElement?.addEventListener("scroll", closeSidebar, { passive: true });
|
|
68
|
-
document.addEventListener("touchmove", closeSidebar, { passive: true });
|
|
69
|
-
}, 10);
|
|
70
|
-
return () => {
|
|
71
|
-
window.clearTimeout(timeoutId);
|
|
72
|
-
document.removeEventListener("pointerdown", onPointerDown);
|
|
73
|
-
window.removeEventListener("scroll", closeSidebar);
|
|
74
|
-
mainElement?.removeEventListener("scroll", closeSidebar);
|
|
75
|
-
document.removeEventListener("touchmove", closeSidebar);
|
|
76
|
-
};
|
|
77
|
-
}, [sidebarOpen, isDesktop]);
|
|
78
|
-
(0, react.useEffect)(() => {
|
|
79
|
-
if (!isDesktop && closeKeyRef.current !== closeSidebarOnChangeKey) setSidebarOpen(false);
|
|
80
|
-
closeKeyRef.current = closeSidebarOnChangeKey;
|
|
81
|
-
}, [closeSidebarOnChangeKey, isDesktop]);
|
|
82
|
-
(0, react.useEffect)(() => {
|
|
83
|
-
onSidebarToggle?.(sidebarOpen);
|
|
84
|
-
}, [sidebarOpen, onSidebarToggle]);
|
|
85
|
-
const toggleSidebar = () => setSidebarOpen((open) => !open);
|
|
86
|
-
const sidebarWidthValue = sidebarWidth === void 0 ? void 0 : typeof sidebarWidth === "number" ? `${sidebarWidth}px` : sidebarWidth;
|
|
87
|
-
const shellStyle = sidebarWidthValue ? { ["--app-shell-sidebar-width"]: sidebarWidthValue } : void 0;
|
|
88
|
-
const shellClasses = require_cx.cx(require_app_shell_module.default.appShell, transitionsReady && require_app_shell_module.default.appShellAnimated, sidebarOpen ? require_app_shell_module.default.appShellOpen : require_app_shell_module.default.appShellCollapsed, className);
|
|
89
|
-
const sidebarClasses = require_cx.cx(require_app_shell_module.default.appShellSidebar, sidebarOpen && require_app_shell_module.default.appShellSidebarOpen, sidebarClassName);
|
|
90
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
91
|
-
className: shellClasses,
|
|
92
|
-
style: shellStyle,
|
|
93
|
-
"data-app-shell": true,
|
|
94
|
-
"data-desktop": isDesktop ? "true" : "false",
|
|
95
|
-
"data-sidebar-open": sidebarOpen ? "true" : "false",
|
|
96
|
-
children: [
|
|
97
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_TopBar.TopBar, {
|
|
98
|
-
className: require_cx.cx(require_app_shell_module.default.appShellTopbar, topbarClassName),
|
|
99
|
-
leading: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
100
|
-
ref: hamburgerRef,
|
|
101
|
-
type: "button",
|
|
102
|
-
className: require_app_shell_module.default.appShellHamburger,
|
|
103
|
-
onClick: toggleSidebar,
|
|
104
|
-
"aria-label": hamburgerLabel,
|
|
105
|
-
"aria-expanded": sidebarOpen,
|
|
106
|
-
"aria-controls": sidebarId,
|
|
107
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
|
|
108
|
-
viewBox: "0 0 24 24",
|
|
109
|
-
"aria-hidden": "true",
|
|
110
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
111
|
-
d: "M3 6h18M3 12h18M3 18h18",
|
|
112
|
-
stroke: "currentColor",
|
|
113
|
-
strokeWidth: "2.5",
|
|
114
|
-
strokeLinecap: "round"
|
|
115
|
-
})
|
|
116
|
-
})
|
|
6
|
+
//#region src/components/top-bar/TopBar.tsx
|
|
7
|
+
function TopBar({ leading, brand, brandHref, brandingLocation = "left", start, center, actions, showThemeToggle = false, themeToggleProps, className, innerClassName, isSticky, sticky = true, children, ...rest }) {
|
|
8
|
+
const shouldStick = isSticky ?? sticky;
|
|
9
|
+
const brandNode = !brand ? null : brandHref ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("a", {
|
|
10
|
+
href: brandHref,
|
|
11
|
+
className: require_top_bar_module.default.topBarBrand,
|
|
12
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
13
|
+
className: require_top_bar_module.default.topBarBrandContent,
|
|
14
|
+
children: brand
|
|
15
|
+
})
|
|
16
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
17
|
+
className: require_top_bar_module.default.topBarBrand,
|
|
18
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
19
|
+
className: require_top_bar_module.default.topBarBrandContent,
|
|
20
|
+
children: brand
|
|
21
|
+
})
|
|
22
|
+
});
|
|
23
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("header", {
|
|
24
|
+
className: require_cx.cx(require_top_bar_module.default.topBar, !shouldStick && require_top_bar_module.default.topBarStatic, className),
|
|
25
|
+
...rest,
|
|
26
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
27
|
+
className: require_cx.cx(require_top_bar_module.default.topBarInner, innerClassName),
|
|
28
|
+
children: [
|
|
29
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
30
|
+
className: require_top_bar_module.default.topBarStart,
|
|
31
|
+
children: [
|
|
32
|
+
leading,
|
|
33
|
+
brandingLocation === "left" && brandNode,
|
|
34
|
+
start
|
|
35
|
+
]
|
|
117
36
|
}),
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
}),
|
|
132
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("aside", {
|
|
133
|
-
ref: sidebarRef,
|
|
134
|
-
id: sidebarId,
|
|
135
|
-
className: sidebarClasses,
|
|
136
|
-
"aria-label": "Sidebar navigation",
|
|
137
|
-
children: sidebar
|
|
138
|
-
}),
|
|
139
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("main", {
|
|
140
|
-
ref: mainRef,
|
|
141
|
-
className: require_cx.cx(require_app_shell_module.default.appShellMain, mainClassName),
|
|
142
|
-
children
|
|
143
|
-
})
|
|
144
|
-
]
|
|
37
|
+
brandNode && brandingLocation === "center" || center || children ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
38
|
+
className: require_top_bar_module.default.topBarCenter,
|
|
39
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
40
|
+
className: require_top_bar_module.default.topBarCenterGroup,
|
|
41
|
+
children: [brandingLocation === "center" && brandNode, center ?? children]
|
|
42
|
+
})
|
|
43
|
+
}) : null,
|
|
44
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
45
|
+
className: require_top_bar_module.default.topBarActions,
|
|
46
|
+
children: [showThemeToggle && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ThemeToggleButton.ThemeToggleButton, { ...themeToggleProps }), actions]
|
|
47
|
+
})
|
|
48
|
+
]
|
|
49
|
+
})
|
|
145
50
|
});
|
|
146
51
|
}
|
|
147
52
|
//#endregion
|
|
148
|
-
exports.
|
|
53
|
+
exports.TopBar = TopBar;
|
|
149
54
|
|
|
150
55
|
//# sourceMappingURL=index39.cjs.map
|