@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.
Files changed (277) hide show
  1. package/README.md +4 -1
  2. package/dist/components/card/Card.d.ts +7 -5
  3. package/dist/components/card/Card.d.ts.map +1 -1
  4. package/dist/components/surface/Surface.d.ts +16 -0
  5. package/dist/components/surface/Surface.d.ts.map +1 -0
  6. package/dist/components/toolbar/Toolbar.d.ts +13 -0
  7. package/dist/components/toolbar/Toolbar.d.ts.map +1 -0
  8. package/dist/index.cjs +36 -31
  9. package/dist/index.d.ts +4 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +34 -32
  12. package/dist/index10.cjs.map +1 -1
  13. package/dist/index10.js +19 -15
  14. package/dist/index10.js.map +1 -1
  15. package/dist/index11.cjs +21 -18
  16. package/dist/index11.cjs.map +1 -1
  17. package/dist/index11.js +8 -15
  18. package/dist/index11.js.map +1 -1
  19. package/dist/index12.cjs +7 -14
  20. package/dist/index12.cjs.map +1 -1
  21. package/dist/index12.js +15 -37
  22. package/dist/index12.js.map +1 -1
  23. package/dist/index13.cjs +18 -52
  24. package/dist/index13.cjs.map +1 -1
  25. package/dist/index13.js +15 -77
  26. package/dist/index13.js.map +1 -1
  27. package/dist/index14.cjs +15 -80
  28. package/dist/index14.cjs.map +1 -1
  29. package/dist/index14.js +37 -13
  30. package/dist/index14.js.map +1 -1
  31. package/dist/index15.cjs +52 -18
  32. package/dist/index15.cjs.map +1 -1
  33. package/dist/index15.js +77 -9
  34. package/dist/index15.js.map +1 -1
  35. package/dist/index16.cjs +79 -8
  36. package/dist/index16.cjs.map +1 -1
  37. package/dist/index16.js +13 -41
  38. package/dist/index16.js.map +1 -1
  39. package/dist/index17.cjs +18 -60
  40. package/dist/index17.cjs.map +1 -1
  41. package/dist/index17.js +9 -428
  42. package/dist/index17.js.map +1 -1
  43. package/dist/index18.cjs +8 -430
  44. package/dist/index18.cjs.map +1 -1
  45. package/dist/index18.js +42 -4
  46. package/dist/index18.js.map +1 -1
  47. package/dist/index19.cjs +61 -5
  48. package/dist/index19.cjs.map +1 -1
  49. package/dist/index19.js +430 -13
  50. package/dist/index19.js.map +1 -1
  51. package/dist/index20.cjs +430 -12
  52. package/dist/index20.cjs.map +1 -1
  53. package/dist/index20.js +4 -4
  54. package/dist/index20.js.map +1 -1
  55. package/dist/index21.cjs +5 -5
  56. package/dist/index21.cjs.map +1 -1
  57. package/dist/index21.js +12 -9
  58. package/dist/index21.js.map +1 -1
  59. package/dist/index22.cjs +12 -9
  60. package/dist/index22.cjs.map +1 -1
  61. package/dist/index22.js +4 -4
  62. package/dist/index22.js.map +1 -1
  63. package/dist/index23.cjs +5 -5
  64. package/dist/index23.cjs.map +1 -1
  65. package/dist/index23.js +9 -12
  66. package/dist/index23.js.map +1 -1
  67. package/dist/index24.cjs +9 -12
  68. package/dist/index24.cjs.map +1 -1
  69. package/dist/index24.js +4 -38
  70. package/dist/index24.js.map +1 -1
  71. package/dist/index25.cjs +5 -55
  72. package/dist/index25.cjs.map +1 -1
  73. package/dist/index25.js +11 -116
  74. package/dist/index25.js.map +1 -1
  75. package/dist/index26.cjs +10 -116
  76. package/dist/index26.cjs.map +1 -1
  77. package/dist/index26.js +31 -19
  78. package/dist/index26.js.map +1 -1
  79. package/dist/index27.cjs +42 -24
  80. package/dist/index27.cjs.map +1 -1
  81. package/dist/index27.js +106 -93
  82. package/dist/index27.js.map +1 -1
  83. package/dist/index28.cjs +106 -93
  84. package/dist/index28.cjs.map +1 -1
  85. package/dist/index28.js +26 -23
  86. package/dist/index28.js.map +1 -1
  87. package/dist/index29.cjs +37 -25
  88. package/dist/index29.cjs.map +1 -1
  89. package/dist/index29.js +107 -26
  90. package/dist/index29.js.map +1 -1
  91. package/dist/index30.cjs +110 -37
  92. package/dist/index30.cjs.map +1 -1
  93. package/dist/index30.js +21 -113
  94. package/dist/index30.js.map +1 -1
  95. package/dist/index31.cjs +19 -125
  96. package/dist/index31.cjs.map +1 -1
  97. package/dist/index31.js +26 -17
  98. package/dist/index31.js.map +1 -1
  99. package/dist/index32.cjs +37 -20
  100. package/dist/index32.cjs.map +1 -1
  101. package/dist/index32.js +108 -104
  102. package/dist/index32.js.map +1 -1
  103. package/dist/index33.cjs +122 -103
  104. package/dist/index33.cjs.map +1 -1
  105. package/dist/index33.js +17 -4
  106. package/dist/index33.js.map +1 -1
  107. package/dist/index34.cjs +20 -5
  108. package/dist/index34.cjs.map +1 -1
  109. package/dist/index34.js +106 -58
  110. package/dist/index34.js.map +1 -1
  111. package/dist/index35.cjs +106 -57
  112. package/dist/index35.cjs.map +1 -1
  113. package/dist/index35.js +4 -22
  114. package/dist/index35.js.map +1 -1
  115. package/dist/index36.cjs +5 -31
  116. package/dist/index36.cjs.map +1 -1
  117. package/dist/index36.js +55 -44
  118. package/dist/index36.js.map +1 -1
  119. package/dist/index37.cjs +55 -44
  120. package/dist/index37.cjs.map +1 -1
  121. package/dist/index37.js +21 -31
  122. package/dist/index37.js.map +1 -1
  123. package/dist/index38.cjs +30 -45
  124. package/dist/index38.cjs.map +1 -1
  125. package/dist/index38.js +46 -141
  126. package/dist/index38.js.map +1 -1
  127. package/dist/index39.cjs +46 -141
  128. package/dist/index39.cjs.map +1 -1
  129. package/dist/index39.js +31 -41
  130. package/dist/index39.js.map +1 -1
  131. package/dist/index40.cjs +45 -60
  132. package/dist/index40.cjs.map +1 -1
  133. package/dist/index40.js +139 -163
  134. package/dist/index40.js.map +1 -1
  135. package/dist/index41.cjs +137 -161
  136. package/dist/index41.cjs.map +1 -1
  137. package/dist/index41.js +41 -12
  138. package/dist/index41.js.map +1 -1
  139. package/dist/index42.cjs +60 -14
  140. package/dist/index42.cjs.map +1 -1
  141. package/dist/index42.js +167 -15
  142. package/dist/index42.js.map +1 -1
  143. package/dist/index43.cjs +166 -14
  144. package/dist/index43.cjs.map +1 -1
  145. package/dist/index43.js +12 -15
  146. package/dist/index43.js.map +1 -1
  147. package/dist/index44.cjs +14 -21
  148. package/dist/index44.cjs.map +1 -1
  149. package/dist/index44.js +15 -28
  150. package/dist/index44.js.map +1 -1
  151. package/dist/index45.cjs +14 -27
  152. package/dist/index45.cjs.map +1 -1
  153. package/dist/index45.js +10 -8
  154. package/dist/index45.js.map +1 -1
  155. package/dist/index46.cjs +11 -8
  156. package/dist/index46.cjs.map +1 -1
  157. package/dist/index46.js +22 -15
  158. package/dist/index46.js.map +1 -1
  159. package/dist/index47.cjs +22 -15
  160. package/dist/index47.cjs.map +1 -1
  161. package/dist/index47.js +9 -13
  162. package/dist/index47.js.map +1 -1
  163. package/dist/index48.cjs +10 -16
  164. package/dist/index48.cjs.map +1 -1
  165. package/dist/index48.js +18 -25
  166. package/dist/index48.js.map +1 -1
  167. package/dist/index49.cjs +18 -25
  168. package/dist/index49.cjs.map +1 -1
  169. package/dist/index49.js +17 -14
  170. package/dist/index49.js.map +1 -1
  171. package/dist/index50.cjs +24 -17
  172. package/dist/index50.cjs.map +1 -1
  173. package/dist/index50.js +28 -28
  174. package/dist/index50.js.map +1 -1
  175. package/dist/index51.cjs +27 -28
  176. package/dist/index51.cjs.map +1 -1
  177. package/dist/index51.js +14 -17
  178. package/dist/index51.js.map +1 -1
  179. package/dist/index52.cjs +17 -22
  180. package/dist/index52.cjs.map +1 -1
  181. package/dist/index52.js +23 -23
  182. package/dist/index52.js.map +1 -1
  183. package/dist/index53.cjs +23 -23
  184. package/dist/index53.cjs.map +1 -1
  185. package/dist/index53.js +17 -10
  186. package/dist/index53.js.map +1 -1
  187. package/dist/index54.cjs +22 -11
  188. package/dist/index54.cjs.map +1 -1
  189. package/dist/index54.js +28 -14
  190. package/dist/index54.js.map +1 -1
  191. package/dist/index55.cjs +28 -13
  192. package/dist/index55.cjs.map +1 -1
  193. package/dist/index55.js +17 -11
  194. package/dist/index55.js.map +1 -1
  195. package/dist/index56.cjs +23 -13
  196. package/dist/index56.cjs.map +1 -1
  197. package/dist/index56.js +24 -16
  198. package/dist/index56.js.map +1 -1
  199. package/dist/index57.cjs +24 -15
  200. package/dist/index57.cjs.map +1 -1
  201. package/dist/index57.js +10 -9
  202. package/dist/index57.js.map +1 -1
  203. package/dist/index58.cjs +11 -12
  204. package/dist/index58.cjs.map +1 -1
  205. package/dist/index58.js +12 -87
  206. package/dist/index58.js.map +1 -1
  207. package/dist/index59.cjs +12 -89
  208. package/dist/index59.cjs.map +1 -1
  209. package/dist/index59.js +11 -21
  210. package/dist/index59.js.map +1 -1
  211. package/dist/index60.cjs +13 -30
  212. package/dist/index60.cjs.map +1 -1
  213. package/dist/index60.js +17 -43
  214. package/dist/index60.js.map +1 -1
  215. package/dist/index61.cjs +16 -44
  216. package/dist/index61.cjs.map +1 -1
  217. package/dist/index61.js +9 -57
  218. package/dist/index61.js.map +1 -1
  219. package/dist/index62.cjs +11 -83
  220. package/dist/index62.cjs.map +1 -1
  221. package/dist/index62.js +83 -426
  222. package/dist/index62.js.map +1 -1
  223. package/dist/index63.cjs +82 -427
  224. package/dist/index63.cjs.map +1 -1
  225. package/dist/index63.js +21 -59
  226. package/dist/index63.js.map +1 -1
  227. package/dist/index64.cjs +30 -87
  228. package/dist/index64.cjs.map +1 -1
  229. package/dist/index64.js +44 -240
  230. package/dist/index64.js.map +1 -1
  231. package/dist/index65.cjs +43 -239
  232. package/dist/index65.cjs.map +1 -1
  233. package/dist/index65.js +57 -43
  234. package/dist/index65.js.map +1 -1
  235. package/dist/index66.cjs +84 -63
  236. package/dist/index66.cjs.map +1 -1
  237. package/dist/index66.js +426 -73
  238. package/dist/index66.js.map +1 -1
  239. package/dist/index67.cjs +426 -71
  240. package/dist/index67.cjs.map +1 -1
  241. package/dist/index67.js +59 -21
  242. package/dist/index67.js.map +1 -1
  243. package/dist/index68.cjs +87 -30
  244. package/dist/index68.cjs.map +1 -1
  245. package/dist/index68.js +233 -88
  246. package/dist/index68.js.map +1 -1
  247. package/dist/index69.cjs +232 -89
  248. package/dist/index69.cjs.map +1 -1
  249. package/dist/index69.js +40 -16
  250. package/dist/index69.js.map +1 -1
  251. package/dist/index70.cjs +56 -20
  252. package/dist/index70.cjs.map +1 -1
  253. package/dist/index70.js +72 -145
  254. package/dist/index70.js.map +1 -1
  255. package/dist/index71.cjs +72 -145
  256. package/dist/index71.cjs.map +1 -1
  257. package/dist/index71.js +25 -0
  258. package/dist/index71.js.map +1 -0
  259. package/dist/index72.cjs +34 -0
  260. package/dist/index72.cjs.map +1 -0
  261. package/dist/index72.js +101 -0
  262. package/dist/index72.js.map +1 -0
  263. package/dist/index73.cjs +105 -0
  264. package/dist/index73.cjs.map +1 -0
  265. package/dist/index73.js +23 -0
  266. package/dist/index73.js.map +1 -0
  267. package/dist/index74.cjs +31 -0
  268. package/dist/index74.cjs.map +1 -0
  269. package/dist/index74.js +159 -0
  270. package/dist/index74.js.map +1 -0
  271. package/dist/index75.cjs +161 -0
  272. package/dist/index75.cjs.map +1 -0
  273. package/dist/index8.js.map +1 -1
  274. package/dist/index9.cjs.map +1 -1
  275. package/dist/index9.js.map +1 -1
  276. package/dist/style.css +215 -45
  277. package/package.json +2 -2
package/dist/index37.js CHANGED
@@ -1,35 +1,25 @@
1
- //#region src/components/app-shell/app-shell.module.css
2
- var appShell = "uzi-app-shell-module__appShell__S0cVI";
3
- var appShellAnimated = "uzi-app-shell-module__appShellAnimated__-CRIl";
4
- var appShellOpen = "uzi-app-shell-module__appShellOpen__1rZUl";
5
- var appShellCollapsed = "uzi-app-shell-module__appShellCollapsed__fSasN";
6
- var appShellTopbar = "uzi-app-shell-module__appShellTopbar__rgXsW";
7
- var appShellTopbarLeft = "uzi-app-shell-module__appShellTopbarLeft__-EVuB";
8
- var appShellTopbarStart = "uzi-app-shell-module__appShellTopbarStart__XXQpq";
9
- var appShellTopbarRight = "uzi-app-shell-module__appShellTopbarRight__l1G57";
10
- var appShellBrand = "uzi-app-shell-module__appShellBrand__TXwyN";
11
- var appShellHamburger = "uzi-app-shell-module__appShellHamburger__BciFA";
12
- var appShellSidebar = "uzi-app-shell-module__appShellSidebar__oY7uj";
13
- var appShellMain = "uzi-app-shell-module__appShellMain__eHP2r";
14
- var appShellBackdrop = "uzi-app-shell-module__appShellBackdrop__y31xs";
15
- var appShellSidebarOpen = "uzi-app-shell-module__appShellSidebarOpen__Z5AIo";
16
- var app_shell_module_default = {
17
- appShell,
18
- appShellAnimated,
19
- appShellOpen,
20
- appShellCollapsed,
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 { appShell, appShellAnimated, appShellBackdrop, appShellBrand, appShellCollapsed, appShellHamburger, appShellMain, appShellOpen, appShellSidebar, appShellSidebarOpen, appShellTopbar, appShellTopbarLeft, appShellTopbarRight, appShellTopbarStart, app_shell_module_default as default };
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
@@ -1 +1 @@
1
- {"version":3,"file":"index37.js","names":[],"sources":["../src/components/app-shell/app-shell.module.css"],"sourcesContent":[".appShell {\n display: grid;\n grid-template-rows: calc(var(--app-shell-topbar-height, 64px) + env(safe-area-inset-top)) 1fr;\n grid-template-columns: var(--app-shell-sidebar-width, 240px) 1fr;\n height: 100vh;\n height: 100dvh;\n}\n\n.appShellAnimated {\n transition: grid-template-columns 200ms ease;\n}\n\n.appShell.appShellOpen {\n grid-template-columns: var(--app-shell-sidebar-width, 240px) 1fr;\n}\n\n.appShell.appShellCollapsed {\n grid-template-columns: 0 1fr;\n}\n\n.appShellTopbar {\n --ts-topbar-bg: var(--surface-topbar, color-mix(in srgb, var(--background) 92%, transparent));\n --ts-topbar-border: var(--border);\n --ts-topbar-brand-fg: var(--foreground);\n grid-column: 1 / -1;\n min-height: calc(var(--app-shell-topbar-height, 64px) + env(safe-area-inset-top));\n padding-left: 0;\n padding-right: 0;\n box-shadow: none;\n}\n\n.appShellTopbarLeft {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.appShellTopbarStart {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: center;\n}\n\n.appShellTopbarRight {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n flex-shrink: 0;\n}\n\n.appShellTopbarRight > * {\n min-width: 0;\n}\n\n.appShellBrand {\n font-size: 26px;\n color: var(--foreground);\n text-decoration: none;\n display: flex;\n align-items: center;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.appShellHamburger {\n background: transparent;\n border: none;\n padding: 0;\n width: 40px;\n height: 40px;\n border-radius: 8px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--foreground);\n cursor: pointer;\n transition: background 120ms ease;\n}\n\n.appShellHamburger:hover {\n background: var(--accent);\n}\n\n.appShellHamburger:focus-visible {\n outline: var(--focus-ring);\n outline-offset: var(--focus-ring-offset);\n}\n\n.appShellHamburger svg {\n width: 28px;\n height: 28px;\n}\n\n.appShellSidebar {\n border-right: 1px solid var(--border);\n background: var(--panel);\n padding: 24px;\n overflow-y: auto;\n}\n\n.appShellAnimated .appShellSidebar {\n transition: transform 200ms ease, opacity 200ms ease;\n}\n\n.appShell.appShellCollapsed .appShellSidebar {\n transform: translateX(-110%);\n opacity: 0;\n pointer-events: none;\n}\n\n.appShellMain {\n overflow-y: auto;\n min-height: 0;\n flex: 1 1 0;\n}\n\n.appShellBackdrop {\n display: none;\n}\n\n@media (max-width: 960px) {\n .appShellBackdrop {\n display: block;\n position: fixed;\n inset: 0;\n top: calc(var(--app-shell-topbar-height, 56px) + env(safe-area-inset-top));\n background: rgba(0, 0, 0, 0.5);\n z-index: 14;\n }\n\n .appShell {\n --app-shell-topbar-height: 56px;\n grid-template-columns: 1fr;\n grid-template-rows: calc(var(--app-shell-topbar-height, 56px) + env(safe-area-inset-top)) 1fr;\n }\n\n .appShell.appShellOpen,\n .appShell.appShellCollapsed {\n grid-template-columns: 1fr;\n }\n\n .appShellSidebar {\n display: block;\n position: fixed;\n top: calc(var(--app-shell-topbar-height, 56px) + env(safe-area-inset-top));\n left: 0;\n bottom: 0;\n width: var(--app-shell-sidebar-width, 240px);\n max-width: 80vw;\n background: var(--panel);\n padding: 16px 12px;\n transform: translateX(-105%);\n z-index: 15;\n box-shadow: 0 20px 40px rgba(0, 0, 0, 0.35);\n }\n\n .appShellSidebar.appShellSidebarOpen {\n transform: translateX(0);\n }\n\n .appShellTopbar {\n padding-left: max(12px, env(safe-area-inset-left));\n padding-right: max(12px, env(safe-area-inset-right));\n gap: 10px;\n }\n\n .appShellTopbarLeft {\n gap: 10px;\n flex: 1;\n }\n\n .appShellTopbarStart {\n min-width: 0;\n }\n\n .appShellTopbarRight {\n gap: 6px;\n }\n\n .appShellBrand {\n font-size: 24px;\n max-width: 50vw;\n }\n\n .appShellHamburger {\n width: 40px;\n height: 40px;\n border-radius: 8px;\n }\n\n .appShellHamburger svg {\n width: 24px;\n height: 24px;\n }\n}\n\n@media (max-width: 640px) {\n .appShellTopbar {\n gap: 8px;\n }\n\n .appShellBrand {\n font-size: 22px;\n max-width: 34vw;\n }\n\n .appShellTopbarRight {\n max-width: 44vw;\n }\n}\n\n@media (max-width: 480px) {\n .appShellBrand {\n font-size: 20px;\n max-width: 30vw;\n }\n}\n"],"mappings":""}
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/app-shell/app-shell.module.css
2
- var appShell = "uzi-app-shell-module__appShell__S0cVI";
3
- var appShellAnimated = "uzi-app-shell-module__appShellAnimated__-CRIl";
4
- var appShellOpen = "uzi-app-shell-module__appShellOpen__1rZUl";
5
- var appShellCollapsed = "uzi-app-shell-module__appShellCollapsed__fSasN";
6
- var appShellTopbar = "uzi-app-shell-module__appShellTopbar__rgXsW";
7
- var appShellTopbarLeft = "uzi-app-shell-module__appShellTopbarLeft__-EVuB";
8
- var appShellTopbarStart = "uzi-app-shell-module__appShellTopbarStart__XXQpq";
9
- var appShellTopbarRight = "uzi-app-shell-module__appShellTopbarRight__l1G57";
10
- var appShellBrand = "uzi-app-shell-module__appShellBrand__TXwyN";
11
- var appShellHamburger = "uzi-app-shell-module__appShellHamburger__BciFA";
12
- var appShellSidebar = "uzi-app-shell-module__appShellSidebar__oY7uj";
13
- var appShellMain = "uzi-app-shell-module__appShellMain__eHP2r";
14
- var appShellBackdrop = "uzi-app-shell-module__appShellBackdrop__y31xs";
15
- var appShellSidebarOpen = "uzi-app-shell-module__appShellSidebarOpen__Z5AIo";
16
- var app_shell_module_default = {
17
- appShell,
18
- appShellAnimated,
19
- appShellOpen,
20
- appShellCollapsed,
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.appShell = appShell;
34
- exports.appShellAnimated = appShellAnimated;
35
- exports.appShellBackdrop = appShellBackdrop;
36
- exports.appShellBrand = appShellBrand;
37
- exports.appShellCollapsed = appShellCollapsed;
38
- exports.appShellHamburger = appShellHamburger;
39
- exports.appShellMain = appShellMain;
40
- exports.appShellOpen = appShellOpen;
41
- exports.appShellSidebar = appShellSidebar;
42
- exports.appShellSidebarOpen = appShellSidebarOpen;
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
@@ -1 +1 @@
1
- {"version":3,"file":"index38.cjs","names":[],"sources":["../src/components/app-shell/app-shell.module.css"],"sourcesContent":[".appShell {\n display: grid;\n grid-template-rows: calc(var(--app-shell-topbar-height, 64px) + env(safe-area-inset-top)) 1fr;\n grid-template-columns: var(--app-shell-sidebar-width, 240px) 1fr;\n height: 100vh;\n height: 100dvh;\n}\n\n.appShellAnimated {\n transition: grid-template-columns 200ms ease;\n}\n\n.appShell.appShellOpen {\n grid-template-columns: var(--app-shell-sidebar-width, 240px) 1fr;\n}\n\n.appShell.appShellCollapsed {\n grid-template-columns: 0 1fr;\n}\n\n.appShellTopbar {\n --ts-topbar-bg: var(--surface-topbar, color-mix(in srgb, var(--background) 92%, transparent));\n --ts-topbar-border: var(--border);\n --ts-topbar-brand-fg: var(--foreground);\n grid-column: 1 / -1;\n min-height: calc(var(--app-shell-topbar-height, 64px) + env(safe-area-inset-top));\n padding-left: 0;\n padding-right: 0;\n box-shadow: none;\n}\n\n.appShellTopbarLeft {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.appShellTopbarStart {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: center;\n}\n\n.appShellTopbarRight {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n flex-shrink: 0;\n}\n\n.appShellTopbarRight > * {\n min-width: 0;\n}\n\n.appShellBrand {\n font-size: 26px;\n color: var(--foreground);\n text-decoration: none;\n display: flex;\n align-items: center;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.appShellHamburger {\n background: transparent;\n border: none;\n padding: 0;\n width: 40px;\n height: 40px;\n border-radius: 8px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--foreground);\n cursor: pointer;\n transition: background 120ms ease;\n}\n\n.appShellHamburger:hover {\n background: var(--accent);\n}\n\n.appShellHamburger:focus-visible {\n outline: var(--focus-ring);\n outline-offset: var(--focus-ring-offset);\n}\n\n.appShellHamburger svg {\n width: 28px;\n height: 28px;\n}\n\n.appShellSidebar {\n border-right: 1px solid var(--border);\n background: var(--panel);\n padding: 24px;\n overflow-y: auto;\n}\n\n.appShellAnimated .appShellSidebar {\n transition: transform 200ms ease, opacity 200ms ease;\n}\n\n.appShell.appShellCollapsed .appShellSidebar {\n transform: translateX(-110%);\n opacity: 0;\n pointer-events: none;\n}\n\n.appShellMain {\n overflow-y: auto;\n min-height: 0;\n flex: 1 1 0;\n}\n\n.appShellBackdrop {\n display: none;\n}\n\n@media (max-width: 960px) {\n .appShellBackdrop {\n display: block;\n position: fixed;\n inset: 0;\n top: calc(var(--app-shell-topbar-height, 56px) + env(safe-area-inset-top));\n background: rgba(0, 0, 0, 0.5);\n z-index: 14;\n }\n\n .appShell {\n --app-shell-topbar-height: 56px;\n grid-template-columns: 1fr;\n grid-template-rows: calc(var(--app-shell-topbar-height, 56px) + env(safe-area-inset-top)) 1fr;\n }\n\n .appShell.appShellOpen,\n .appShell.appShellCollapsed {\n grid-template-columns: 1fr;\n }\n\n .appShellSidebar {\n display: block;\n position: fixed;\n top: calc(var(--app-shell-topbar-height, 56px) + env(safe-area-inset-top));\n left: 0;\n bottom: 0;\n width: var(--app-shell-sidebar-width, 240px);\n max-width: 80vw;\n background: var(--panel);\n padding: 16px 12px;\n transform: translateX(-105%);\n z-index: 15;\n box-shadow: 0 20px 40px rgba(0, 0, 0, 0.35);\n }\n\n .appShellSidebar.appShellSidebarOpen {\n transform: translateX(0);\n }\n\n .appShellTopbar {\n padding-left: max(12px, env(safe-area-inset-left));\n padding-right: max(12px, env(safe-area-inset-right));\n gap: 10px;\n }\n\n .appShellTopbarLeft {\n gap: 10px;\n flex: 1;\n }\n\n .appShellTopbarStart {\n min-width: 0;\n }\n\n .appShellTopbarRight {\n gap: 6px;\n }\n\n .appShellBrand {\n font-size: 24px;\n max-width: 50vw;\n }\n\n .appShellHamburger {\n width: 40px;\n height: 40px;\n border-radius: 8px;\n }\n\n .appShellHamburger svg {\n width: 24px;\n height: 24px;\n }\n}\n\n@media (max-width: 640px) {\n .appShellTopbar {\n gap: 8px;\n }\n\n .appShellBrand {\n font-size: 22px;\n max-width: 34vw;\n }\n\n .appShellTopbarRight {\n max-width: 44vw;\n }\n}\n\n@media (max-width: 480px) {\n .appShellBrand {\n font-size: 20px;\n max-width: 30vw;\n }\n}\n"],"mappings":""}
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 { TopBar } from "./index36.js";
4
- import app_shell_module_default from "./index37.js";
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/app-shell/AppShell.tsx
8
- var DESKTOP_BREAKPOINT = 960;
9
- function getIsDesktop() {
10
- if (typeof window === "undefined") return false;
11
- return window.innerWidth >= DESKTOP_BREAKPOINT;
12
- }
13
- /**
14
- * Responsive application shell with a collapsible sidebar and sticky top bar.
15
- *
16
- * - Sidebar opens by default on desktop, collapses on mobile.
17
- * - Closes on outside click/scroll/touch when in mobile mode.
18
- * - Provides optional hook to close the sidebar when a prop value changes
19
- * (e.g., route transitions).
20
- */
21
- function AppShell({ children, sidebar, brand, brandHref, topbarStart, topbarEnd, showThemeToggle = false, themeToggleProps, topBarBrandingLocation = "left", className, sidebarClassName, topbarClassName, mainClassName, sidebarWidth, closeSidebarOnChangeKey, hamburgerLabel = "Toggle navigation", onSidebarToggle }) {
22
- const [isDesktop, setIsDesktop] = useState(false);
23
- const [sidebarOpen, setSidebarOpen] = useState(false);
24
- const [transitionsReady, setTransitionsReady] = useState(false);
25
- const prevIsDesktopRef = useRef(false);
26
- const closeKeyRef = useRef(closeSidebarOnChangeKey);
27
- const sidebarRef = useRef(null);
28
- const hamburgerRef = useRef(null);
29
- const mainRef = useRef(null);
30
- const sidebarId = useId();
31
- useEffect(() => {
32
- const desktop = getIsDesktop();
33
- setIsDesktop(desktop);
34
- setSidebarOpen(desktop);
35
- prevIsDesktopRef.current = desktop;
36
- const transitionFrame = window.requestAnimationFrame(() => {
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
- brand,
119
- brandHref,
120
- brandingLocation: topBarBrandingLocation,
121
- start: topbarStart,
122
- actions: topbarEnd,
123
- showThemeToggle,
124
- themeToggleProps
125
- }),
126
- !isDesktop && sidebarOpen && /* @__PURE__ */ jsx("div", {
127
- className: app_shell_module_default.appShellBackdrop,
128
- onClick: () => setSidebarOpen(false),
129
- onTouchStart: () => setSidebarOpen(false),
130
- "aria-hidden": "true"
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 { AppShell };
53
+ export { TopBar };
149
54
 
150
55
  //# sourceMappingURL=index38.js.map
@@ -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 require_TopBar = require("./index37.cjs");
4
- const require_app_shell_module = require("./index38.cjs");
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/app-shell/AppShell.tsx
8
- var DESKTOP_BREAKPOINT = 960;
9
- function getIsDesktop() {
10
- if (typeof window === "undefined") return false;
11
- return window.innerWidth >= DESKTOP_BREAKPOINT;
12
- }
13
- /**
14
- * Responsive application shell with a collapsible sidebar and sticky top bar.
15
- *
16
- * - Sidebar opens by default on desktop, collapses on mobile.
17
- * - Closes on outside click/scroll/touch when in mobile mode.
18
- * - Provides optional hook to close the sidebar when a prop value changes
19
- * (e.g., route transitions).
20
- */
21
- function AppShell({ children, sidebar, brand, brandHref, topbarStart, topbarEnd, showThemeToggle = false, themeToggleProps, topBarBrandingLocation = "left", className, sidebarClassName, topbarClassName, mainClassName, sidebarWidth, closeSidebarOnChangeKey, hamburgerLabel = "Toggle navigation", onSidebarToggle }) {
22
- const [isDesktop, setIsDesktop] = (0, react.useState)(false);
23
- const [sidebarOpen, setSidebarOpen] = (0, react.useState)(false);
24
- const [transitionsReady, setTransitionsReady] = (0, react.useState)(false);
25
- const prevIsDesktopRef = (0, react.useRef)(false);
26
- const closeKeyRef = (0, react.useRef)(closeSidebarOnChangeKey);
27
- const sidebarRef = (0, react.useRef)(null);
28
- const hamburgerRef = (0, react.useRef)(null);
29
- const mainRef = (0, react.useRef)(null);
30
- const sidebarId = (0, react.useId)();
31
- (0, react.useEffect)(() => {
32
- const desktop = getIsDesktop();
33
- setIsDesktop(desktop);
34
- setSidebarOpen(desktop);
35
- prevIsDesktopRef.current = desktop;
36
- const transitionFrame = window.requestAnimationFrame(() => {
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
- brand,
119
- brandHref,
120
- brandingLocation: topBarBrandingLocation,
121
- start: topbarStart,
122
- actions: topbarEnd,
123
- showThemeToggle,
124
- themeToggleProps
125
- }),
126
- !isDesktop && sidebarOpen && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
127
- className: require_app_shell_module.default.appShellBackdrop,
128
- onClick: () => setSidebarOpen(false),
129
- onTouchStart: () => setSidebarOpen(false),
130
- "aria-hidden": "true"
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.AppShell = AppShell;
53
+ exports.TopBar = TopBar;
149
54
 
150
55
  //# sourceMappingURL=index39.cjs.map