@ojiepermana/angular 22.1.13 → 22.2.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 (252) hide show
  1. package/README.md +8 -6
  2. package/SUPPORT.md +3 -3
  3. package/chart/README.md +1 -1
  4. package/component/README.md +2 -2
  5. package/component/calendar/README.md +3 -15
  6. package/component/drawer/README.md +1 -2
  7. package/fesm2022/ojiepermana-angular-chart-area.mjs +352 -137
  8. package/fesm2022/ojiepermana-angular-chart-bar.mjs +744 -524
  9. package/fesm2022/ojiepermana-angular-chart-core.mjs +1140 -1344
  10. package/fesm2022/ojiepermana-angular-chart-line.mjs +393 -147
  11. package/fesm2022/ojiepermana-angular-chart-pie.mjs +408 -179
  12. package/fesm2022/ojiepermana-angular-chart-primitives.mjs +1262 -920
  13. package/fesm2022/ojiepermana-angular-chart-radar.mjs +473 -205
  14. package/fesm2022/ojiepermana-angular-chart-radial.mjs +425 -182
  15. package/fesm2022/ojiepermana-angular-chart-scatter.mjs +386 -210
  16. package/fesm2022/ojiepermana-angular-chart.mjs +3 -19
  17. package/fesm2022/ojiepermana-angular-component-accordion.mjs +485 -243
  18. package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs +963 -325
  19. package/fesm2022/ojiepermana-angular-component-alert.mjs +266 -103
  20. package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs +80 -35
  21. package/fesm2022/ojiepermana-angular-component-avatar.mjs +402 -135
  22. package/fesm2022/ojiepermana-angular-component-badge.mjs +109 -59
  23. package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs +410 -142
  24. package/fesm2022/ojiepermana-angular-component-button-group.mjs +249 -96
  25. package/fesm2022/ojiepermana-angular-component-button.mjs +153 -75
  26. package/fesm2022/ojiepermana-angular-component-calendar.mjs +531 -418
  27. package/fesm2022/ojiepermana-angular-component-card.mjs +457 -171
  28. package/fesm2022/ojiepermana-angular-component-carousel.mjs +642 -272
  29. package/fesm2022/ojiepermana-angular-component-checkbox.mjs +312 -108
  30. package/fesm2022/ojiepermana-angular-component-collapsible.mjs +299 -115
  31. package/fesm2022/ojiepermana-angular-component-combobox.mjs +396 -183
  32. package/fesm2022/ojiepermana-angular-component-command.mjs +807 -347
  33. package/fesm2022/ojiepermana-angular-component-composer.mjs +807 -330
  34. package/fesm2022/ojiepermana-angular-component-context-menu.mjs +196 -161
  35. package/fesm2022/ojiepermana-angular-component-date-picker.mjs +650 -338
  36. package/fesm2022/ojiepermana-angular-component-dialog.mjs +710 -316
  37. package/fesm2022/ojiepermana-angular-component-drawer.mjs +2 -5
  38. package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs +1212 -646
  39. package/fesm2022/ojiepermana-angular-component-editor.mjs +987 -502
  40. package/fesm2022/ojiepermana-angular-component-empty.mjs +350 -137
  41. package/fesm2022/ojiepermana-angular-component-form.mjs +813 -434
  42. package/fesm2022/ojiepermana-angular-component-hover-card.mjs +486 -277
  43. package/fesm2022/ojiepermana-angular-component-icon.mjs +241 -140
  44. package/fesm2022/ojiepermana-angular-component-input-group.mjs +449 -176
  45. package/fesm2022/ojiepermana-angular-component-input-otp.mjs +891 -488
  46. package/fesm2022/ojiepermana-angular-component-input.mjs +86 -55
  47. package/fesm2022/ojiepermana-angular-component-item.mjs +713 -261
  48. package/fesm2022/ojiepermana-angular-component-kanban.mjs +714 -216
  49. package/fesm2022/ojiepermana-angular-component-kbd.mjs +124 -52
  50. package/fesm2022/ojiepermana-angular-component-label.mjs +82 -31
  51. package/fesm2022/ojiepermana-angular-component-menubar.mjs +479 -329
  52. package/fesm2022/ojiepermana-angular-component-native-select.mjs +167 -65
  53. package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs +683 -380
  54. package/fesm2022/ojiepermana-angular-component-pagination.mjs +277 -94
  55. package/fesm2022/ojiepermana-angular-component-pillbox.mjs +1283 -607
  56. package/fesm2022/ojiepermana-angular-component-popover.mjs +291 -204
  57. package/fesm2022/ojiepermana-angular-component-progress.mjs +176 -53
  58. package/fesm2022/ojiepermana-angular-component-radio.mjs +449 -142
  59. package/fesm2022/ojiepermana-angular-component-resizable.mjs +659 -453
  60. package/fesm2022/ojiepermana-angular-component-scroll-area.mjs +117 -39
  61. package/fesm2022/ojiepermana-angular-component-segmented-control.mjs +351 -172
  62. package/fesm2022/ojiepermana-angular-component-select.mjs +475 -345
  63. package/fesm2022/ojiepermana-angular-component-separator.mjs +102 -35
  64. package/fesm2022/ojiepermana-angular-component-sheet.mjs +797 -347
  65. package/fesm2022/ojiepermana-angular-component-skeleton.mjs +62 -29
  66. package/fesm2022/ojiepermana-angular-component-slider.mjs +592 -376
  67. package/fesm2022/ojiepermana-angular-component-spinner.mjs +135 -38
  68. package/fesm2022/ojiepermana-angular-component-switch.mjs +315 -103
  69. package/fesm2022/ojiepermana-angular-component-table.mjs +440 -153
  70. package/fesm2022/ojiepermana-angular-component-tabs.mjs +590 -317
  71. package/fesm2022/ojiepermana-angular-component-textarea.mjs +85 -50
  72. package/fesm2022/ojiepermana-angular-component-timeline.mjs +609 -231
  73. package/fesm2022/ojiepermana-angular-component-toast.mjs +229 -243
  74. package/fesm2022/ojiepermana-angular-component-toggle-group.mjs +573 -288
  75. package/fesm2022/ojiepermana-angular-component-toggle.mjs +187 -78
  76. package/fesm2022/ojiepermana-angular-component-tooltip.mjs +798 -517
  77. package/fesm2022/ojiepermana-angular-component-utils-core.mjs +159 -292
  78. package/fesm2022/ojiepermana-angular-component-utils-overlay.mjs +46 -58
  79. package/fesm2022/ojiepermana-angular-component-utils-scale.mjs +76 -38
  80. package/fesm2022/ojiepermana-angular-component-utils.mjs +2 -8
  81. package/fesm2022/ojiepermana-angular-component.mjs +0 -10
  82. package/fesm2022/ojiepermana-angular-navigation-core.mjs +13 -23
  83. package/fesm2022/ojiepermana-angular-navigation-icon.mjs +35 -24
  84. package/fesm2022/ojiepermana-angular-navigation-navigation-badge-count.component-BKCeWzml.mjs +129 -0
  85. package/fesm2022/ojiepermana-angular-navigation-navigation-dockbar-menu.component-DFEJK2jD.mjs +811 -0
  86. package/fesm2022/{ojiepermana-angular-navigation-navigation-entry-grid.component-Cd-jh6tg.mjs → ojiepermana-angular-navigation-navigation-entry-grid.component-mpK9Ar08.mjs} +387 -183
  87. package/fesm2022/ojiepermana-angular-navigation-navigation-flyout-menu.component-BPgH7FJk.mjs +650 -0
  88. package/fesm2022/ojiepermana-angular-navigation-navigation-horizontal.component-DMpYcD9t.mjs +662 -0
  89. package/fesm2022/ojiepermana-angular-navigation-navigation-item.component-Basp5SIk.mjs +1228 -0
  90. package/fesm2022/ojiepermana-angular-navigation-navigation-list.component-YUzHI9Pj.mjs +311 -0
  91. package/fesm2022/ojiepermana-angular-navigation-service.mjs +542 -724
  92. package/fesm2022/ojiepermana-angular-navigation-types.mjs +27 -56
  93. package/fesm2022/ojiepermana-angular-navigation.mjs +3052 -4
  94. package/fesm2022/ojiepermana-angular-sdk.mjs +91 -201
  95. package/fesm2022/ojiepermana-angular-theme-component-settings.mjs +1115 -737
  96. package/fesm2022/ojiepermana-angular-theme-layout-services.mjs +245 -328
  97. package/fesm2022/ojiepermana-angular-theme-layout-types.mjs +35 -38
  98. package/fesm2022/ojiepermana-angular-theme-layout-wrapper.mjs +1719 -552
  99. package/fesm2022/ojiepermana-angular-theme-layout.mjs +847 -491
  100. package/fesm2022/ojiepermana-angular-theme-page-core.mjs +288 -358
  101. package/fesm2022/ojiepermana-angular-theme-page-filter.mjs +362 -224
  102. package/fesm2022/ojiepermana-angular-theme-page-overview.mjs +88 -0
  103. package/fesm2022/ojiepermana-angular-theme-page-root.mjs +576 -254
  104. package/fesm2022/ojiepermana-angular-theme-page-side.mjs +317 -177
  105. package/fesm2022/ojiepermana-angular-theme-page-slots.mjs +256 -112
  106. package/fesm2022/ojiepermana-angular-theme-page.mjs +7 -12
  107. package/fesm2022/ojiepermana-angular-theme-shell-services.mjs +215 -326
  108. package/fesm2022/ojiepermana-angular-theme-shell-types.mjs +68 -129
  109. package/fesm2022/ojiepermana-angular-theme-shell.mjs +907 -378
  110. package/fesm2022/ojiepermana-angular-theme-styles.mjs +521 -720
  111. package/fesm2022/ojiepermana-angular-theme.mjs +0 -10
  112. package/fesm2022/ojiepermana-angular.mjs +5 -24
  113. package/navigation/README.md +1 -1
  114. package/package.json +16 -12
  115. package/sdk/README.md +1 -1
  116. package/sdk/src/writer/index.js +2 -2
  117. package/theme/README.md +1 -1
  118. package/theme/layout/README.md +2 -4
  119. package/theme/page/README.md +50 -0
  120. package/theme/styles/README.md +10 -10
  121. package/theme/styles/css/base/prefers-dark.css +1 -1
  122. package/theme/styles/css/base/status.css +1 -1
  123. package/theme/styles/css/color/amber.css +1 -1
  124. package/theme/styles/css/color/blue.css +1 -1
  125. package/theme/styles/css/color/cyan.css +1 -1
  126. package/theme/styles/css/color/emerald.css +1 -1
  127. package/theme/styles/css/color/fuchsia.css +1 -1
  128. package/theme/styles/css/color/green.css +1 -1
  129. package/theme/styles/css/color/indigo.css +1 -1
  130. package/theme/styles/css/color/lime.css +1 -1
  131. package/theme/styles/css/color/orange.css +1 -1
  132. package/theme/styles/css/color/pink.css +1 -1
  133. package/theme/styles/css/color/purple.css +1 -1
  134. package/theme/styles/css/color/red.css +1 -1
  135. package/theme/styles/css/color/rose.css +1 -1
  136. package/theme/styles/css/color/sky.css +1 -1
  137. package/theme/styles/css/color/teal.css +1 -1
  138. package/theme/styles/css/color/violet.css +1 -1
  139. package/theme/styles/css/color/yellow.css +1 -1
  140. package/theme/styles/css/neutral/gray.css +1 -1
  141. package/theme/styles/css/neutral/mauve.css +1 -1
  142. package/theme/styles/css/neutral/mist.css +1 -1
  143. package/theme/styles/css/neutral/neutral.css +1 -1
  144. package/theme/styles/css/neutral/olive.css +1 -1
  145. package/theme/styles/css/neutral/slate.css +1 -1
  146. package/theme/styles/css/neutral/stone.css +1 -1
  147. package/theme/styles/css/neutral/taupe.css +1 -1
  148. package/theme/styles/css/neutral/zinc.css +1 -1
  149. package/types/ojiepermana-angular-chart-area.d.ts +126 -63
  150. package/types/ojiepermana-angular-chart-bar.d.ts +244 -154
  151. package/types/ojiepermana-angular-chart-core.d.ts +409 -398
  152. package/types/ojiepermana-angular-chart-line.d.ts +141 -68
  153. package/types/ojiepermana-angular-chart-pie.d.ts +192 -121
  154. package/types/ojiepermana-angular-chart-primitives.d.ts +283 -214
  155. package/types/ojiepermana-angular-chart-radar.d.ts +189 -108
  156. package/types/ojiepermana-angular-chart-radial.d.ts +177 -106
  157. package/types/ojiepermana-angular-chart-scatter.d.ts +166 -110
  158. package/types/ojiepermana-angular-chart.d.ts +3 -2
  159. package/types/ojiepermana-angular-component-accordion.d.ts +135 -81
  160. package/types/ojiepermana-angular-component-alert-dialog.d.ts +271 -123
  161. package/types/ojiepermana-angular-component-alert.d.ts +69 -39
  162. package/types/ojiepermana-angular-component-aspect-ratio.d.ts +20 -12
  163. package/types/ojiepermana-angular-component-avatar.d.ts +103 -49
  164. package/types/ojiepermana-angular-component-badge.d.ts +36 -24
  165. package/types/ojiepermana-angular-component-breadcrumb.d.ts +79 -40
  166. package/types/ojiepermana-angular-component-button-group.d.ts +48 -24
  167. package/types/ojiepermana-angular-component-button.d.ts +44 -27
  168. package/types/ojiepermana-angular-component-calendar.d.ts +145 -107
  169. package/types/ojiepermana-angular-component-card.d.ts +112 -63
  170. package/types/ojiepermana-angular-component-carousel.d.ts +150 -81
  171. package/types/ojiepermana-angular-component-checkbox.d.ts +96 -38
  172. package/types/ojiepermana-angular-component-collapsible.d.ts +65 -39
  173. package/types/ojiepermana-angular-component-combobox.d.ts +100 -55
  174. package/types/ojiepermana-angular-component-command.d.ts +206 -121
  175. package/types/ojiepermana-angular-component-composer.d.ts +184 -84
  176. package/types/ojiepermana-angular-component-context-menu.d.ts +51 -41
  177. package/types/ojiepermana-angular-component-date-picker.d.ts +199 -109
  178. package/types/ojiepermana-angular-component-dialog.d.ts +200 -105
  179. package/types/ojiepermana-angular-component-drawer.d.ts +2 -1
  180. package/types/ojiepermana-angular-component-dropdown-menu.d.ts +324 -202
  181. package/types/ojiepermana-angular-component-editor.d.ts +215 -117
  182. package/types/ojiepermana-angular-component-empty.d.ts +80 -45
  183. package/types/ojiepermana-angular-component-form.d.ts +185 -121
  184. package/types/ojiepermana-angular-component-hover-card.d.ts +130 -72
  185. package/types/ojiepermana-angular-component-icon.d.ts +87 -57
  186. package/types/ojiepermana-angular-component-input-group.d.ts +93 -46
  187. package/types/ojiepermana-angular-component-input-otp.d.ts +243 -150
  188. package/types/ojiepermana-angular-component-input.d.ts +27 -17
  189. package/types/ojiepermana-angular-component-item.d.ts +160 -84
  190. package/types/ojiepermana-angular-component-kanban.d.ts +157 -62
  191. package/types/ojiepermana-angular-component-kbd.d.ts +24 -15
  192. package/types/ojiepermana-angular-component-label.d.ts +19 -11
  193. package/types/ojiepermana-angular-component-menubar.d.ts +120 -90
  194. package/types/ojiepermana-angular-component-native-select.d.ts +37 -24
  195. package/types/ojiepermana-angular-component-navigation-menu.d.ts +157 -98
  196. package/types/ojiepermana-angular-component-pagination.d.ts +78 -28
  197. package/types/ojiepermana-angular-component-pillbox.d.ts +361 -204
  198. package/types/ojiepermana-angular-component-popover.d.ts +94 -64
  199. package/types/ojiepermana-angular-component-progress.d.ts +45 -17
  200. package/types/ojiepermana-angular-component-radio.d.ts +129 -53
  201. package/types/ojiepermana-angular-component-resizable.d.ts +160 -112
  202. package/types/ojiepermana-angular-component-scroll-area.d.ts +33 -15
  203. package/types/ojiepermana-angular-component-segmented-control.d.ts +94 -50
  204. package/types/ojiepermana-angular-component-select.d.ts +94 -77
  205. package/types/ojiepermana-angular-component-separator.d.ts +26 -14
  206. package/types/ojiepermana-angular-component-sheet.d.ts +226 -116
  207. package/types/ojiepermana-angular-component-skeleton.d.ts +13 -10
  208. package/types/ojiepermana-angular-component-slider.d.ts +140 -75
  209. package/types/ojiepermana-angular-component-spinner.d.ts +31 -13
  210. package/types/ojiepermana-angular-component-switch.d.ts +97 -40
  211. package/types/ojiepermana-angular-component-table.d.ts +102 -50
  212. package/types/ojiepermana-angular-component-tabs.d.ts +174 -115
  213. package/types/ojiepermana-angular-component-textarea.d.ts +27 -17
  214. package/types/ojiepermana-angular-component-timeline.d.ts +141 -59
  215. package/types/ojiepermana-angular-component-toast.d.ts +51 -55
  216. package/types/ojiepermana-angular-component-toggle-group.d.ts +159 -88
  217. package/types/ojiepermana-angular-component-toggle.d.ts +47 -25
  218. package/types/ojiepermana-angular-component-tooltip.d.ts +222 -132
  219. package/types/ojiepermana-angular-component-utils-core.d.ts +81 -90
  220. package/types/ojiepermana-angular-component-utils-overlay.d.ts +7 -11
  221. package/types/ojiepermana-angular-component-utils-scale.d.ts +20 -12
  222. package/types/ojiepermana-angular-component-utils.d.ts +2 -2
  223. package/types/ojiepermana-angular-component.d.ts +1 -2
  224. package/types/ojiepermana-angular-navigation-core.d.ts +46 -50
  225. package/types/ojiepermana-angular-navigation-icon.d.ts +9 -12
  226. package/types/ojiepermana-angular-navigation-service.d.ts +112 -115
  227. package/types/ojiepermana-angular-navigation-types.d.ts +121 -125
  228. package/types/ojiepermana-angular-navigation.d.ts +663 -374
  229. package/types/ojiepermana-angular-sdk.d.ts +69 -71
  230. package/types/ojiepermana-angular-theme-component-settings.d.ts +115 -83
  231. package/types/ojiepermana-angular-theme-layout-services.d.ts +119 -124
  232. package/types/ojiepermana-angular-theme-layout-types.d.ts +27 -31
  233. package/types/ojiepermana-angular-theme-layout-wrapper.d.ts +399 -187
  234. package/types/ojiepermana-angular-theme-layout.d.ts +201 -112
  235. package/types/ojiepermana-angular-theme-page-core.d.ts +136 -142
  236. package/types/ojiepermana-angular-theme-page-filter.d.ts +112 -62
  237. package/types/ojiepermana-angular-theme-page-overview.d.ts +28 -0
  238. package/types/ojiepermana-angular-theme-page-root.d.ts +172 -88
  239. package/types/ojiepermana-angular-theme-page-side.d.ts +89 -49
  240. package/types/ojiepermana-angular-theme-page-slots.d.ts +58 -37
  241. package/types/ojiepermana-angular-theme-page.d.ts +7 -5
  242. package/types/ojiepermana-angular-theme-shell-services.d.ts +119 -125
  243. package/types/ojiepermana-angular-theme-shell-types.d.ts +38 -41
  244. package/types/ojiepermana-angular-theme-shell.d.ts +139 -61
  245. package/types/ojiepermana-angular-theme-styles.d.ts +184 -196
  246. package/types/ojiepermana-angular-theme.d.ts +1 -2
  247. package/types/ojiepermana-angular.d.ts +5 -5
  248. package/fesm2022/ojiepermana-angular-navigation-navigation-badge-count.component-CDBxQ8rk.mjs +0 -91
  249. package/fesm2022/ojiepermana-angular-navigation-navigation-dockbar-menu.component-DBQHdvGa.mjs +0 -512
  250. package/fesm2022/ojiepermana-angular-navigation-navigation-flyout-menu.component-BCGvhoYj.mjs +0 -404
  251. package/fesm2022/ojiepermana-angular-navigation-navigation-horizontal.component-Dk_03e-6.mjs +0 -466
  252. package/fesm2022/ojiepermana-angular-navigation-ojiepermana-angular-navigation-DNKU6viC.mjs +0 -2642
@@ -1,45 +1,71 @@
1
- import * as i0 from '@angular/core';
2
- import { inject, input, computed, Component, booleanAttribute } from '@angular/core';
3
- import { cn } from '@ojiepermana/angular/component/utils/core';
4
- import { ShellService } from '@ojiepermana/angular/theme/shell/services';
5
- export { SHELL_WINDOW_BRIDGE, ShellService, WEB_SHELL_WINDOW_BRIDGE, createTauriShellWindowBridge, isTauriRuntime, provideShellWindowBridge, provideTauriShellWindowBridge } from '@ojiepermana/angular/theme/shell/services';
6
- import { SHELL_DEFAULT_DEVICE, SHELL_DEFAULT_COLOR, SHELL_DEFAULT_FRAME, resolveShellDeviceForMode, resolveShellFrameForMode } from '@ojiepermana/angular/theme/shell/types';
7
- export { SHELL_COLORS, SHELL_COLOR_STORAGE_KEY, SHELL_DEFAULT_COLOR, SHELL_DEFAULT_DEVICE, SHELL_DEFAULT_FRAME, SHELL_DEFAULT_MODE, SHELL_DEFAULT_PLATFORM, SHELL_DEFAULT_WINDOW_STATE, SHELL_DEVICES, SHELL_DEVICE_STORAGE_KEY, SHELL_FRAMES, SHELL_FRAME_STORAGE_KEY, SHELL_MODES, SHELL_MODE_DEVICES, SHELL_MODE_STORAGE_KEY, SHELL_PLATFORMS, SHELL_WINDOW_STATES, defaultShellDeviceForMode, isShellColor, isShellDevice, isShellDeviceForMode, isShellFrame, isShellMode, isShellPlatform, isShellWindowState, normalizeShellColor, normalizeShellDevice, normalizeShellFrame, normalizeShellMode, resolveShellDeviceForMode, resolveShellFrameForMode, shellDevicesForMode } from '@ojiepermana/angular/theme/shell/types';
8
- import { NavigationContainerComponent, NavigationFlyoutComponent, NavigationHeaderComponent, NavigationFooterComponent } from '@ojiepermana/angular/navigation';
9
- import { NAVIGATION_ADAPTER } from '@ojiepermana/angular/navigation/core';
10
- import { LayoutService } from '@ojiepermana/angular/theme/layout/services';
11
- import { LayoutIdentityService, LAYOUT_DESKTOP_NAVIGATION_DATA_ID, LayoutBrand, LayoutUser } from '@ojiepermana/angular/theme/layout/wrapper';
12
-
1
+ import * as i0 from "@angular/core";
2
+ import { Component, booleanAttribute, computed, inject, input } from "@angular/core";
3
+ import { cn } from "@ojiepermana/angular/component/utils/core";
4
+ import { SHELL_WINDOW_BRIDGE, ShellService, ShellService as ShellService$1, WEB_SHELL_WINDOW_BRIDGE, createTauriShellWindowBridge, isTauriRuntime, provideShellWindowBridge, provideTauriShellWindowBridge } from "@ojiepermana/angular/theme/shell/services";
5
+ import { SHELL_COLORS, SHELL_COLOR_STORAGE_KEY, SHELL_DEFAULT_COLOR, SHELL_DEFAULT_COLOR as SHELL_DEFAULT_COLOR$1, SHELL_DEFAULT_DEVICE, SHELL_DEFAULT_DEVICE as SHELL_DEFAULT_DEVICE$1, SHELL_DEFAULT_FRAME, SHELL_DEFAULT_FRAME as SHELL_DEFAULT_FRAME$1, SHELL_DEFAULT_MODE, SHELL_DEFAULT_PLATFORM, SHELL_DEFAULT_WINDOW_STATE, SHELL_DEVICES, SHELL_DEVICE_STORAGE_KEY, SHELL_FRAMES, SHELL_FRAME_STORAGE_KEY, SHELL_MODES, SHELL_MODE_DEVICES, SHELL_MODE_STORAGE_KEY, SHELL_PLATFORMS, SHELL_WINDOW_STATES, defaultShellDeviceForMode, isShellColor, isShellDevice, isShellDeviceForMode, isShellFrame, isShellMode, isShellPlatform, isShellWindowState, normalizeShellColor, normalizeShellDevice, normalizeShellFrame, normalizeShellMode, resolveShellDeviceForMode, resolveShellDeviceForMode as resolveShellDeviceForMode$1, resolveShellFrameForMode, resolveShellFrameForMode as resolveShellFrameForMode$1, shellDevicesForMode } from "@ojiepermana/angular/theme/shell/types";
6
+ import { NavigationContainerComponent, NavigationFlyoutComponent, NavigationFooterComponent, NavigationHeaderComponent } from "@ojiepermana/angular/navigation";
7
+ import { NAVIGATION_ADAPTER } from "@ojiepermana/angular/navigation/core";
8
+ import { LayoutService } from "@ojiepermana/angular/theme/layout/services";
9
+ import { LAYOUT_DESKTOP_NAVIGATION_DATA_ID, LayoutBrand, LayoutIdentityService, LayoutUser } from "@ojiepermana/angular/theme/layout/wrapper";
13
10
  let shellNavigationFlyoutInstanceId = 0;
14
- /**
15
- * Internal desktop-titlebar launcher. `LayoutWrapperDefault` publishes the
16
- * navigation data only while its desktop nav is active, so this component stays
17
- * absent for desktop windows that still render a navbar, flyout, or side rail.
18
- */
19
- class ShellNavigationFlyoutComponent {
20
- navigation = inject(NAVIGATION_ADAPTER);
21
- layout = inject(LayoutService, { optional: true });
22
- identity = inject(LayoutIdentityService, { optional: true });
23
- enabled = input(true, /* @ts-ignore */
24
- ...(ngDevMode ? [{ debugName: "enabled" }] : /* istanbul ignore next */ []));
25
- icon = input('apps', /* @ts-ignore */
26
- ...(ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []));
27
- label = input('Open navigation', /* @ts-ignore */
28
- ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
29
- navigationId = `__shell-navigation-${(shellNavigationFlyoutInstanceId += 1)}`;
30
- navigationSource = this.navigation.data(LAYOUT_DESKTOP_NAVIGATION_DATA_ID);
31
- navigationData = computed(() => this.navigationSource(), /* @ts-ignore */
32
- ...(ngDevMode ? [{ debugName: "navigationData" }] : /* istanbul ignore next */ []));
33
- showsFlyout = computed(() => this.enabled() && this.navigationData().length > 0, /* @ts-ignore */
34
- ...(ngDevMode ? [{ debugName: "showsFlyout" }] : /* istanbul ignore next */ []));
35
- appearance = computed(() => this.layout?.appearance() ?? 'flat', /* @ts-ignore */
36
- ...(ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []));
37
- brand = computed(() => this.identity?.brand() ?? null, /* @ts-ignore */
38
- ...(ngDevMode ? [{ debugName: "brand" }] : /* istanbul ignore next */ []));
39
- user = computed(() => this.identity?.user() ?? null, /* @ts-ignore */
40
- ...(ngDevMode ? [{ debugName: "user" }] : /* istanbul ignore next */ []));
41
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: ShellNavigationFlyoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
42
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: ShellNavigationFlyoutComponent, isStandalone: true, selector: "ShellNavigationFlyout", inputs: { enabled: { classPropertyName: "enabled", publicName: "enabled", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-shell-navigation-flyout": "showsFlyout() ? \"\" : null" }, styleAttribute: "--nav-flyout-floating-width: 100vw; --nav-flyout-floating-max-width: 100vw; --nav-flyout-floating-radius: 0 0 var(--shell-frame-radius) var(--shell-frame-radius);", classAttribute: "contents" }, ngImport: i0, template: `
11
+ var ShellNavigationFlyoutComponent = class ShellNavigationFlyoutComponent {
12
+ navigation = inject(NAVIGATION_ADAPTER);
13
+ layout = inject(LayoutService, { optional: true });
14
+ identity = inject(LayoutIdentityService, { optional: true });
15
+ enabled = input(true, ...ngDevMode ? [{ debugName: "enabled" }] : /* istanbul ignore next */ []);
16
+ icon = input("apps", ...ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []);
17
+ label = input("Open navigation", ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
18
+ navigationId = `__shell-navigation-${shellNavigationFlyoutInstanceId += 1}`;
19
+ navigationSource = this.navigation.data(LAYOUT_DESKTOP_NAVIGATION_DATA_ID);
20
+ navigationData = computed(() => this.navigationSource(), ...ngDevMode ? [{ debugName: "navigationData" }] : /* istanbul ignore next */ []);
21
+ showsFlyout = computed(() => this.enabled() && this.navigationData().length > 0, ...ngDevMode ? [{ debugName: "showsFlyout" }] : /* istanbul ignore next */ []);
22
+ appearance = computed(() => this.layout?.appearance() ?? "flat", ...ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []);
23
+ brand = computed(() => this.identity?.brand() ?? null, ...ngDevMode ? [{ debugName: "brand" }] : /* istanbul ignore next */ []);
24
+ user = computed(() => this.identity?.user() ?? null, ...ngDevMode ? [{ debugName: "user" }] : /* istanbul ignore next */ []);
25
+ static ɵfac = i0.ɵɵngDeclareFactory({
26
+ minVersion: "12.0.0",
27
+ version: "22.2.0",
28
+ ngImport: i0,
29
+ type: ShellNavigationFlyoutComponent,
30
+ deps: [],
31
+ target: i0.ɵɵFactoryTarget.Component
32
+ });
33
+ static ɵcmp = i0.ɵɵngDeclareComponent({
34
+ minVersion: "17.0.0",
35
+ version: "22.2.0",
36
+ type: ShellNavigationFlyoutComponent,
37
+ isStandalone: true,
38
+ selector: "ShellNavigationFlyout",
39
+ inputs: {
40
+ enabled: {
41
+ classPropertyName: "enabled",
42
+ publicName: "enabled",
43
+ isSignal: true,
44
+ isRequired: false,
45
+ transformFunction: null
46
+ },
47
+ icon: {
48
+ classPropertyName: "icon",
49
+ publicName: "icon",
50
+ isSignal: true,
51
+ isRequired: false,
52
+ transformFunction: null
53
+ },
54
+ label: {
55
+ classPropertyName: "label",
56
+ publicName: "label",
57
+ isSignal: true,
58
+ isRequired: false,
59
+ transformFunction: null
60
+ }
61
+ },
62
+ host: {
63
+ properties: { "attr.data-shell-navigation-flyout": "showsFlyout() ? \"\" : null" },
64
+ styleAttribute: "--nav-flyout-floating-width: 100vw; --nav-flyout-floating-max-width: 100vw; --nav-flyout-floating-radius: 0 0 var(--shell-frame-radius) var(--shell-frame-radius);",
65
+ classAttribute: "contents"
66
+ },
67
+ ngImport: i0,
68
+ template: `
43
69
  @if (showsFlyout()) {
44
70
  <Navigation
45
71
  [id]="navigationId"
@@ -71,26 +97,104 @@ class ShellNavigationFlyoutComponent {
71
97
  </NavigationFlyout>
72
98
  </Navigation>
73
99
  }
74
- `, isInline: true, dependencies: [{ kind: "component", type: NavigationContainerComponent, selector: "Navigation", inputs: ["id", "data-id", "data", "ariaLabel", "compact", "collapse-tree", "class", "itemClass", "nav-group-class", "activeIds", "activeUrl", "openedIds"], outputs: ["openedIdsChange", "itemSelected"] }, { kind: "component", type: NavigationFlyoutComponent, selector: "NavigationFlyout", inputs: ["label", "icon", "icon-only", "icon-position", "trigger-variant", "trigger-floating", "panel-viewport", "trigger-class", "trigger-button-class", "nav-position", "nav-type-style", "class"] }, { kind: "component", type: NavigationHeaderComponent, selector: "NavigationHeader", inputs: ["toggle", "class"] }, { kind: "component", type: NavigationFooterComponent, selector: "NavigationFooter", inputs: ["class"] }, { kind: "component", type: LayoutBrand, selector: "LayoutBrand", inputs: ["brand", "compact"] }, { kind: "component", type: LayoutUser, selector: "LayoutUser", inputs: ["user", "detailed", "logoutLabel", "logoutIcon"], outputs: ["logout"] }] });
75
- }
76
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: ShellNavigationFlyoutComponent, decorators: [{
77
- type: Component,
78
- args: [{
79
- selector: 'ShellNavigationFlyout',
80
- imports: [
81
- NavigationContainerComponent,
82
- NavigationFlyoutComponent,
83
- NavigationHeaderComponent,
84
- NavigationFooterComponent,
85
- LayoutBrand,
86
- LayoutUser,
87
- ],
88
- host: {
89
- class: 'contents',
90
- style: '--nav-flyout-floating-width: 100vw; --nav-flyout-floating-max-width: 100vw; --nav-flyout-floating-radius: 0 0 var(--shell-frame-radius) var(--shell-frame-radius);',
91
- '[attr.data-shell-navigation-flyout]': 'showsFlyout() ? "" : null',
92
- },
93
- template: `
100
+ `,
101
+ isInline: true,
102
+ dependencies: [
103
+ {
104
+ kind: "component",
105
+ type: NavigationContainerComponent,
106
+ selector: "Navigation",
107
+ inputs: [
108
+ "id",
109
+ "data-id",
110
+ "data",
111
+ "ariaLabel",
112
+ "compact",
113
+ "collapse-tree",
114
+ "class",
115
+ "itemClass",
116
+ "nav-group-class",
117
+ "activeIds",
118
+ "activeUrl",
119
+ "openedIds"
120
+ ],
121
+ outputs: ["openedIdsChange", "itemSelected"]
122
+ },
123
+ {
124
+ kind: "component",
125
+ type: NavigationFlyoutComponent,
126
+ selector: "NavigationFlyout",
127
+ inputs: [
128
+ "label",
129
+ "icon",
130
+ "icon-only",
131
+ "icon-position",
132
+ "trigger-variant",
133
+ "trigger-floating",
134
+ "panel-viewport",
135
+ "trigger-class",
136
+ "trigger-button-class",
137
+ "nav-position",
138
+ "nav-type-style",
139
+ "class"
140
+ ]
141
+ },
142
+ {
143
+ kind: "component",
144
+ type: NavigationHeaderComponent,
145
+ selector: "NavigationHeader",
146
+ inputs: ["toggle", "class"]
147
+ },
148
+ {
149
+ kind: "component",
150
+ type: NavigationFooterComponent,
151
+ selector: "NavigationFooter",
152
+ inputs: ["class"]
153
+ },
154
+ {
155
+ kind: "component",
156
+ type: LayoutBrand,
157
+ selector: "LayoutBrand",
158
+ inputs: ["brand", "compact"]
159
+ },
160
+ {
161
+ kind: "component",
162
+ type: LayoutUser,
163
+ selector: "LayoutUser",
164
+ inputs: [
165
+ "user",
166
+ "detailed",
167
+ "logoutLabel",
168
+ "logoutIcon"
169
+ ],
170
+ outputs: ["logout"]
171
+ }
172
+ ]
173
+ });
174
+ };
175
+ i0.ɵɵngDeclareClassMetadata({
176
+ minVersion: "12.0.0",
177
+ version: "22.2.0",
178
+ ngImport: i0,
179
+ type: ShellNavigationFlyoutComponent,
180
+ decorators: [{
181
+ type: Component,
182
+ args: [{
183
+ selector: "ShellNavigationFlyout",
184
+ imports: [
185
+ NavigationContainerComponent,
186
+ NavigationFlyoutComponent,
187
+ NavigationHeaderComponent,
188
+ NavigationFooterComponent,
189
+ LayoutBrand,
190
+ LayoutUser
191
+ ],
192
+ host: {
193
+ class: "contents",
194
+ style: "--nav-flyout-floating-width: 100vw; --nav-flyout-floating-max-width: 100vw; --nav-flyout-floating-radius: 0 0 var(--shell-frame-radius) var(--shell-frame-radius);",
195
+ "[attr.data-shell-navigation-flyout]": "showsFlyout() ? \"\" : null"
196
+ },
197
+ template: `
94
198
  @if (showsFlyout()) {
95
199
  <Navigation
96
200
  [id]="navigationId"
@@ -122,142 +226,225 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
122
226
  </NavigationFlyout>
123
227
  </Navigation>
124
228
  }
125
- `,
126
- }]
127
- }], propDecorators: { enabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "enabled", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }] } });
128
-
129
- /**
130
- * The titlebar of a `<Shell>` — the app's own window chrome, and its bridge to
131
- * the desktop runtime.
132
- *
133
- * **Internal to the library.** It is not exported from
134
- * `@ojiepermana/angular/theme/shell`: `<Shell>` decides when a titlebar exists
135
- * (only `mode='desktop'` has window chrome to draw) and renders this itself,
136
- * forwarding the `[shellBarStart]` / `[shellBarTitle]` / `[shellBarEnd]` slots.
137
- * Consumers configure it through `<Shell>`, never directly.
138
- *
139
- * Window dragging is declarative, so no JavaScript runs on pointer-down: the host
140
- * carries `data-tauri-drag-region` for Tauri. Electron uses Shell's frame-wide
141
- * drag layer below this bar; interactive chrome opts out with `shell-no-drag`,
142
- * which the slot wrappers and buttons apply for you.
143
- *
144
- * Window buttons follow the `device`, not the runtime: macOS keeps painting its
145
- * own traffic lights over a decoration-less window, so the bar draws none of its
146
- * own and reserves a leading inset for them instead. Whether those buttons *do*
147
- * anything is the bridge's business — the shape of the chrome is the device's.
148
- */
149
- class ShellBarComponent {
150
- shell = inject(ShellService);
151
- device = input(SHELL_DEFAULT_DEVICE, /* @ts-ignore */
152
- ...(ngDevMode ? [{ debugName: "device" }] : /* istanbul ignore next */ []));
153
- color = input(SHELL_DEFAULT_COLOR, /* @ts-ignore */
154
- ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
155
- frame = input(SHELL_DEFAULT_FRAME, /* @ts-ignore */
156
- ...(ngDevMode ? [{ debugName: "frame" }] : /* istanbul ignore next */ []));
157
- /**
158
- * `true` when the runtime still draws its own window buttons, so the app must
159
- * not: macOS reserves the leading run for the OS traffic lights and Windows /
160
- * Linux draw nothing. Default `false` — a decoration-less window.
161
- */
162
- nativeWindowControls = input(false, { ...(ngDevMode ? { debugName: "nativeWindowControls" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
163
- drag = input(true, { ...(ngDevMode ? { debugName: "drag" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
164
- landmark = input(true, { ...(ngDevMode ? { debugName: "landmark" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
165
- ariaLabel = input('Application title bar', /* @ts-ignore */
166
- ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
167
- minimizeLabel = input('Minimize window', /* @ts-ignore */
168
- ...(ngDevMode ? [{ debugName: "minimizeLabel" }] : /* istanbul ignore next */ []));
169
- maximizeLabel = input('Maximize window', /* @ts-ignore */
170
- ...(ngDevMode ? [{ debugName: "maximizeLabel" }] : /* istanbul ignore next */ []));
171
- restoreLabel = input('Restore window', /* @ts-ignore */
172
- ...(ngDevMode ? [{ debugName: "restoreLabel" }] : /* istanbul ignore next */ []));
173
- closeLabel = input('Close window', /* @ts-ignore */
174
- ...(ngDevMode ? [{ debugName: "closeLabel" }] : /* istanbul ignore next */ []));
175
- /** Show the automatic desktop navigation flyout when a desktop layout publishes data. */
176
- navigationFlyout = input(true, /* @ts-ignore */
177
- ...(ngDevMode ? [{ debugName: "navigationFlyout" }] : /* istanbul ignore next */ []));
178
- navigationFlyoutIcon = input('apps', /* @ts-ignore */
179
- ...(ngDevMode ? [{ debugName: "navigationFlyoutIcon" }] : /* istanbul ignore next */ []));
180
- navigationFlyoutLabel = input('Open navigation', /* @ts-ignore */
181
- ...(ngDevMode ? [{ debugName: "navigationFlyoutLabel" }] : /* istanbul ignore next */ []));
182
- class = input('', /* @ts-ignore */
183
- ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
184
- maximizeToggleLabel = computed(() => this.shell.isMaximized() ? this.restoreLabel() : this.maximizeLabel(), /* @ts-ignore */
185
- ...(ngDevMode ? [{ debugName: "maximizeToggleLabel" }] : /* istanbul ignore next */ []));
186
- isMacOs = computed(() => this.device() === 'macos', /* @ts-ignore */
187
- ...(ngDevMode ? [{ debugName: "isMacOs" }] : /* istanbul ignore next */ []));
188
- /**
189
- * macOS traffic lights, which the app draws itself — the default, because a
190
- * `decorations: false` window has no other way to be closed.
191
- */
192
- showsTrafficLights = computed(() => this.isMacOs() && !this.nativeWindowControls(), /* @ts-ignore */
193
- ...(ngDevMode ? [{ debugName: "showsTrafficLights" }] : /* istanbul ignore next */ []));
194
- /** Windows/Linux buttons, on the trailing edge. */
195
- showsWindowControls = computed(() => !this.isMacOs() && !this.nativeWindowControls(), /* @ts-ignore */
196
- ...(ngDevMode ? [{ debugName: "showsWindowControls" }] : /* istanbul ignore next */ []));
197
- /**
198
- * Only reserve an empty leading run when the OS is painting its own lights into
199
- * it — Tauri's macOS `titleBarStyle: 'Overlay'`. Drawing ours there instead
200
- * occupies the space for real, so no padding is needed.
201
- */
202
- reservesTrafficLights = computed(() => this.isMacOs() && this.nativeWindowControls(), /* @ts-ignore */
203
- ...(ngDevMode ? [{ debugName: "reservesTrafficLights" }] : /* istanbul ignore next */ []));
204
- classes = computed(() => cn(
205
- // 1fr auto 1fr keeps the title optically centred in the window no matter
206
- // how much chrome either flank carries.
207
- 'relative z-20 grid h-(--shell-bar-height) min-h-(--shell-bar-height) shrink-0', 'grid-cols-[minmax(0,1fr)_auto_minmax(0,1fr)] items-center gap-(--shell-bar-gap)',
208
- // Surface tokens, not raw colors: `color='sync'` maps them onto the design
209
- // system, `color='default'` onto the device's native chrome (base/tokens.css).
210
- 'bg-[hsl(var(--shell-bar-background))] px-(--shell-bar-inline)', 'text-[hsl(var(--shell-bar-foreground))]',
211
- // `classic` stacks a bordered bar on the app. `modern` shares its background
212
- // with the surround, so a divider would draw a seam through what is meant to
213
- // read as one continuous frame.
214
- this.frame() === 'classic' && 'border-b border-[hsl(var(--shell-bar-border))]',
215
- // Physically top-left on macOS regardless of text direction, so this is
216
- // deliberately `pl-`, not the logical `ps-`.
217
- this.reservesTrafficLights() && 'pl-(--shell-traffic-light-inset)', this.class()), /* @ts-ignore */
218
- ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
219
- startSlotClasses = computed(() => cn('shell-no-drag flex min-w-0 items-center gap-(--shell-bar-gap)'), /* @ts-ignore */
220
- ...(ngDevMode ? [{ debugName: "startSlotClasses" }] : /* istanbul ignore next */ []));
221
- endSlotClasses = computed(() => cn('shell-no-drag flex min-w-0 items-center justify-end gap-(--shell-bar-gap)'), /* @ts-ignore */
222
- ...(ngDevMode ? [{ debugName: "endSlotClasses" }] : /* istanbul ignore next */ []));
223
- titleClasses = computed(() => cn('min-w-0 truncate text-center text-xs font-medium',
224
- // An unfocused window recedes — the OS convention for background windows.
225
- this.shell.focused() ? 'opacity-100' : 'opacity-60'), /* @ts-ignore */
226
- ...(ngDevMode ? [{ debugName: "titleClasses" }] : /* istanbul ignore next */ []));
227
- controlClasses = computed(() => cn('shell-no-drag inline-grid size-(--shell-control-size) shrink-0 place-items-center rounded-sm', 'opacity-70 transition-[background-color,opacity] hover:opacity-100', 'hover:bg-[hsl(var(--shell-bar-foreground)/0.12)]', 'focus-visible:outline-none focus-visible:ring-2', 'focus-visible:ring-[hsl(var(--shell-bar-foreground))]', 'focus-visible:ring-offset-1 focus-visible:ring-offset-[hsl(var(--shell-bar-background))]'), /* @ts-ignore */
228
- ...(ngDevMode ? [{ debugName: "controlClasses" }] : /* istanbul ignore next */ []));
229
- /**
230
- * One macOS traffic light. The fills are that platform's own constants rather
231
- * than theme tokens — a traffic light that recolored with the accent would stop
232
- * reading as a traffic light. The hairline ring keeps them defined against a
233
- * light titlebar and survives forced-colors mode, and each carries an
234
- * `aria-label`, so the colour is never the only way to tell them apart.
235
- */
236
- trafficLightClasses(control) {
237
- return cn('shell-no-drag group inline-grid size-(--shell-traffic-light-size) shrink-0', 'cursor-pointer place-items-center rounded-full', 'ring-1 ring-black/15 transition-colors', 'focus-visible:outline-none focus-visible:ring-2', 'focus-visible:ring-[hsl(var(--shell-bar-foreground))]', 'focus-visible:ring-offset-1 focus-visible:ring-offset-[hsl(var(--shell-bar-background))]',
238
- // Each light darkens to its own pressed shade on hover — the same per-light
239
- // colour shift macOS uses, so the feedback reads as "this specific control"
240
- // rather than a generic highlight. Paired with the glyph appearing below, the
241
- // hover state never relies on colour alone.
242
- control === 'close' && 'bg-[#ff5f57] hover:bg-[#e0443e]', control === 'minimize' && 'bg-[#febc2e] hover:bg-[#dea123]', control === 'zoom' && 'bg-[#28c840] hover:bg-[#1aad2b]');
243
- }
244
- /** macOS reveals the glyph inside each light only on hover — and on focus, for keyboards. */
245
- trafficGlyphClasses() {
246
- return cn('size-(--shell-traffic-light-size) opacity-0 transition-opacity', 'group-hover:opacity-70 group-focus-visible:opacity-70', 'stroke-black/70 [stroke-linecap:round] [stroke-width:1.5] [fill:none]');
247
- }
248
- closeControlClasses = computed(() => cn(this.controlClasses(), 'hover:bg-destructive hover:text-destructive-foreground'), /* @ts-ignore */
249
- ...(ngDevMode ? [{ debugName: "closeControlClasses" }] : /* istanbul ignore next */ []));
250
- minimize() {
251
- void this.shell.minimize();
252
- }
253
- toggleMaximize() {
254
- void this.shell.toggleMaximize();
255
- }
256
- close() {
257
- void this.shell.close();
258
- }
259
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: ShellBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
260
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: ShellBarComponent, isStandalone: true, selector: "ShellBar", inputs: { device: { classPropertyName: "device", publicName: "device", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, frame: { classPropertyName: "frame", publicName: "frame", isSignal: true, isRequired: false, transformFunction: null }, nativeWindowControls: { classPropertyName: "nativeWindowControls", publicName: "nativeWindowControls", isSignal: true, isRequired: false, transformFunction: null }, drag: { classPropertyName: "drag", publicName: "drag", isSignal: true, isRequired: false, transformFunction: null }, landmark: { classPropertyName: "landmark", publicName: "landmark", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, minimizeLabel: { classPropertyName: "minimizeLabel", publicName: "minimizeLabel", isSignal: true, isRequired: false, transformFunction: null }, maximizeLabel: { classPropertyName: "maximizeLabel", publicName: "maximizeLabel", isSignal: true, isRequired: false, transformFunction: null }, restoreLabel: { classPropertyName: "restoreLabel", publicName: "restoreLabel", isSignal: true, isRequired: false, transformFunction: null }, closeLabel: { classPropertyName: "closeLabel", publicName: "closeLabel", isSignal: true, isRequired: false, transformFunction: null }, navigationFlyout: { classPropertyName: "navigationFlyout", publicName: "navigationFlyout", isSignal: true, isRequired: false, transformFunction: null }, navigationFlyoutIcon: { classPropertyName: "navigationFlyoutIcon", publicName: "navigationFlyoutIcon", isSignal: true, isRequired: false, transformFunction: null }, navigationFlyoutLabel: { classPropertyName: "navigationFlyoutLabel", publicName: "navigationFlyoutLabel", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-shell-bar": "" }, properties: { "class": "classes()", "attr.data-shell-device": "device()", "attr.data-shell-color": "color()", "attr.data-shell-frame": "frame()", "attr.data-tauri-drag-region": "drag() ? \"\" : null", "attr.data-shell-window": "shell.windowState()", "attr.data-shell-focused": "shell.focused()", "attr.role": "landmark() ? \"banner\" : null", "attr.aria-label": "landmark() ? ariaLabel() || null : null" } }, ngImport: i0, template: `
229
+ `
230
+ }]
231
+ }],
232
+ propDecorators: {
233
+ enabled: [{
234
+ type: i0.Input,
235
+ args: [{
236
+ isSignal: true,
237
+ alias: "enabled",
238
+ required: false
239
+ }]
240
+ }],
241
+ icon: [{
242
+ type: i0.Input,
243
+ args: [{
244
+ isSignal: true,
245
+ alias: "icon",
246
+ required: false
247
+ }]
248
+ }],
249
+ label: [{
250
+ type: i0.Input,
251
+ args: [{
252
+ isSignal: true,
253
+ alias: "label",
254
+ required: false
255
+ }]
256
+ }]
257
+ }
258
+ });
259
+ var ShellBarComponent = class ShellBarComponent {
260
+ shell = inject(ShellService$1);
261
+ device = input(SHELL_DEFAULT_DEVICE$1, ...ngDevMode ? [{ debugName: "device" }] : /* istanbul ignore next */ []);
262
+ color = input(SHELL_DEFAULT_COLOR$1, ...ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []);
263
+ frame = input(SHELL_DEFAULT_FRAME$1, ...ngDevMode ? [{ debugName: "frame" }] : /* istanbul ignore next */ []);
264
+ nativeWindowControls = input(false, {
265
+ ...ngDevMode ? { debugName: "nativeWindowControls" } : /* istanbul ignore next */ {},
266
+ transform: booleanAttribute
267
+ });
268
+ drag = input(true, {
269
+ ...ngDevMode ? { debugName: "drag" } : /* istanbul ignore next */ {},
270
+ transform: booleanAttribute
271
+ });
272
+ landmark = input(true, {
273
+ ...ngDevMode ? { debugName: "landmark" } : /* istanbul ignore next */ {},
274
+ transform: booleanAttribute
275
+ });
276
+ ariaLabel = input("Application title bar", ...ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []);
277
+ minimizeLabel = input("Minimize window", ...ngDevMode ? [{ debugName: "minimizeLabel" }] : /* istanbul ignore next */ []);
278
+ maximizeLabel = input("Maximize window", ...ngDevMode ? [{ debugName: "maximizeLabel" }] : /* istanbul ignore next */ []);
279
+ restoreLabel = input("Restore window", ...ngDevMode ? [{ debugName: "restoreLabel" }] : /* istanbul ignore next */ []);
280
+ closeLabel = input("Close window", ...ngDevMode ? [{ debugName: "closeLabel" }] : /* istanbul ignore next */ []);
281
+ navigationFlyout = input(true, ...ngDevMode ? [{ debugName: "navigationFlyout" }] : /* istanbul ignore next */ []);
282
+ navigationFlyoutIcon = input("apps", ...ngDevMode ? [{ debugName: "navigationFlyoutIcon" }] : /* istanbul ignore next */ []);
283
+ navigationFlyoutLabel = input("Open navigation", ...ngDevMode ? [{ debugName: "navigationFlyoutLabel" }] : /* istanbul ignore next */ []);
284
+ class = input("", ...ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []);
285
+ maximizeToggleLabel = computed(() => this.shell.isMaximized() ? this.restoreLabel() : this.maximizeLabel(), ...ngDevMode ? [{ debugName: "maximizeToggleLabel" }] : /* istanbul ignore next */ []);
286
+ isMacOs = computed(() => this.device() === "macos", ...ngDevMode ? [{ debugName: "isMacOs" }] : /* istanbul ignore next */ []);
287
+ showsTrafficLights = computed(() => this.isMacOs() && !this.nativeWindowControls(), ...ngDevMode ? [{ debugName: "showsTrafficLights" }] : /* istanbul ignore next */ []);
288
+ showsWindowControls = computed(() => !this.isMacOs() && !this.nativeWindowControls(), ...ngDevMode ? [{ debugName: "showsWindowControls" }] : /* istanbul ignore next */ []);
289
+ reservesTrafficLights = computed(() => this.isMacOs() && this.nativeWindowControls(), ...ngDevMode ? [{ debugName: "reservesTrafficLights" }] : /* istanbul ignore next */ []);
290
+ classes = computed(() => cn("relative z-20 grid h-(--shell-bar-height) min-h-(--shell-bar-height) shrink-0", "grid-cols-[minmax(0,1fr)_auto_minmax(0,1fr)] items-center gap-(--shell-bar-gap)", "bg-[hsl(var(--shell-bar-background))] px-(--shell-bar-inline)", "text-[hsl(var(--shell-bar-foreground))]", this.frame() === "classic" && "border-b border-[hsl(var(--shell-bar-border))]", this.reservesTrafficLights() && "pl-(--shell-traffic-light-inset)", this.class()), ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
291
+ startSlotClasses = computed(() => cn("shell-no-drag flex min-w-0 items-center gap-(--shell-bar-gap)"), ...ngDevMode ? [{ debugName: "startSlotClasses" }] : /* istanbul ignore next */ []);
292
+ endSlotClasses = computed(() => cn("shell-no-drag flex min-w-0 items-center justify-end gap-(--shell-bar-gap)"), ...ngDevMode ? [{ debugName: "endSlotClasses" }] : /* istanbul ignore next */ []);
293
+ titleClasses = computed(() => cn("min-w-0 truncate text-center text-xs font-medium", this.shell.focused() ? "opacity-100" : "opacity-60"), ...ngDevMode ? [{ debugName: "titleClasses" }] : /* istanbul ignore next */ []);
294
+ controlClasses = computed(() => cn("shell-no-drag inline-grid size-(--shell-control-size) shrink-0 place-items-center rounded-sm", "opacity-70 transition-[background-color,opacity] hover:opacity-100", "hover:bg-[hsl(var(--shell-bar-foreground)/0.12)]", "focus-visible:outline-none focus-visible:ring-2", "focus-visible:ring-[hsl(var(--shell-bar-foreground))]", "focus-visible:ring-offset-1 focus-visible:ring-offset-[hsl(var(--shell-bar-background))]"), ...ngDevMode ? [{ debugName: "controlClasses" }] : /* istanbul ignore next */ []);
295
+ trafficLightClasses(control) {
296
+ return cn("shell-no-drag group inline-grid size-(--shell-traffic-light-size) shrink-0", "cursor-pointer place-items-center rounded-full", "ring-1 ring-black/15 transition-colors", "focus-visible:outline-none focus-visible:ring-2", "focus-visible:ring-[hsl(var(--shell-bar-foreground))]", "focus-visible:ring-offset-1 focus-visible:ring-offset-[hsl(var(--shell-bar-background))]", control === "close" && "bg-[#ff5f57] hover:bg-[#e0443e]", control === "minimize" && "bg-[#febc2e] hover:bg-[#dea123]", control === "zoom" && "bg-[#28c840] hover:bg-[#1aad2b]");
297
+ }
298
+ trafficGlyphClasses() {
299
+ return cn("size-(--shell-traffic-light-size) opacity-0 transition-opacity", "group-hover:opacity-70 group-focus-visible:opacity-70", "stroke-black/70 [stroke-linecap:round] [stroke-width:1.5] [fill:none]");
300
+ }
301
+ closeControlClasses = computed(() => cn(this.controlClasses(), "hover:bg-destructive hover:text-destructive-foreground"), ...ngDevMode ? [{ debugName: "closeControlClasses" }] : /* istanbul ignore next */ []);
302
+ minimize() {
303
+ this.shell.minimize();
304
+ }
305
+ toggleMaximize() {
306
+ this.shell.toggleMaximize();
307
+ }
308
+ close() {
309
+ this.shell.close();
310
+ }
311
+ static ɵfac = i0.ɵɵngDeclareFactory({
312
+ minVersion: "12.0.0",
313
+ version: "22.2.0",
314
+ ngImport: i0,
315
+ type: ShellBarComponent,
316
+ deps: [],
317
+ target: i0.ɵɵFactoryTarget.Component
318
+ });
319
+ static ɵcmp = i0.ɵɵngDeclareComponent({
320
+ minVersion: "17.0.0",
321
+ version: "22.2.0",
322
+ type: ShellBarComponent,
323
+ isStandalone: true,
324
+ selector: "ShellBar",
325
+ inputs: {
326
+ device: {
327
+ classPropertyName: "device",
328
+ publicName: "device",
329
+ isSignal: true,
330
+ isRequired: false,
331
+ transformFunction: null
332
+ },
333
+ color: {
334
+ classPropertyName: "color",
335
+ publicName: "color",
336
+ isSignal: true,
337
+ isRequired: false,
338
+ transformFunction: null
339
+ },
340
+ frame: {
341
+ classPropertyName: "frame",
342
+ publicName: "frame",
343
+ isSignal: true,
344
+ isRequired: false,
345
+ transformFunction: null
346
+ },
347
+ nativeWindowControls: {
348
+ classPropertyName: "nativeWindowControls",
349
+ publicName: "nativeWindowControls",
350
+ isSignal: true,
351
+ isRequired: false,
352
+ transformFunction: null
353
+ },
354
+ drag: {
355
+ classPropertyName: "drag",
356
+ publicName: "drag",
357
+ isSignal: true,
358
+ isRequired: false,
359
+ transformFunction: null
360
+ },
361
+ landmark: {
362
+ classPropertyName: "landmark",
363
+ publicName: "landmark",
364
+ isSignal: true,
365
+ isRequired: false,
366
+ transformFunction: null
367
+ },
368
+ ariaLabel: {
369
+ classPropertyName: "ariaLabel",
370
+ publicName: "ariaLabel",
371
+ isSignal: true,
372
+ isRequired: false,
373
+ transformFunction: null
374
+ },
375
+ minimizeLabel: {
376
+ classPropertyName: "minimizeLabel",
377
+ publicName: "minimizeLabel",
378
+ isSignal: true,
379
+ isRequired: false,
380
+ transformFunction: null
381
+ },
382
+ maximizeLabel: {
383
+ classPropertyName: "maximizeLabel",
384
+ publicName: "maximizeLabel",
385
+ isSignal: true,
386
+ isRequired: false,
387
+ transformFunction: null
388
+ },
389
+ restoreLabel: {
390
+ classPropertyName: "restoreLabel",
391
+ publicName: "restoreLabel",
392
+ isSignal: true,
393
+ isRequired: false,
394
+ transformFunction: null
395
+ },
396
+ closeLabel: {
397
+ classPropertyName: "closeLabel",
398
+ publicName: "closeLabel",
399
+ isSignal: true,
400
+ isRequired: false,
401
+ transformFunction: null
402
+ },
403
+ navigationFlyout: {
404
+ classPropertyName: "navigationFlyout",
405
+ publicName: "navigationFlyout",
406
+ isSignal: true,
407
+ isRequired: false,
408
+ transformFunction: null
409
+ },
410
+ navigationFlyoutIcon: {
411
+ classPropertyName: "navigationFlyoutIcon",
412
+ publicName: "navigationFlyoutIcon",
413
+ isSignal: true,
414
+ isRequired: false,
415
+ transformFunction: null
416
+ },
417
+ navigationFlyoutLabel: {
418
+ classPropertyName: "navigationFlyoutLabel",
419
+ publicName: "navigationFlyoutLabel",
420
+ isSignal: true,
421
+ isRequired: false,
422
+ transformFunction: null
423
+ },
424
+ class: {
425
+ classPropertyName: "class",
426
+ publicName: "class",
427
+ isSignal: true,
428
+ isRequired: false,
429
+ transformFunction: null
430
+ }
431
+ },
432
+ host: {
433
+ attributes: { "data-shell-bar": "" },
434
+ properties: {
435
+ "class": "classes()",
436
+ "attr.data-shell-device": "device()",
437
+ "attr.data-shell-color": "color()",
438
+ "attr.data-shell-frame": "frame()",
439
+ "attr.data-tauri-drag-region": "drag() ? \"\" : null",
440
+ "attr.data-shell-window": "shell.windowState()",
441
+ "attr.data-shell-focused": "shell.focused()",
442
+ "attr.role": "landmark() ? \"banner\" : null",
443
+ "attr.aria-label": "landmark() ? ariaLabel() || null : null"
444
+ }
445
+ },
446
+ ngImport: i0,
447
+ template: `
261
448
  <div data-shell-bar-start [class]="startSlotClasses()">
262
449
  @if (!isMacOs()) {
263
450
  <ShellNavigationFlyout
@@ -412,26 +599,43 @@ class ShellBarComponent {
412
599
  </button>
413
600
  }
414
601
  </div>
415
- `, isInline: true, dependencies: [{ kind: "component", type: ShellNavigationFlyoutComponent, selector: "ShellNavigationFlyout", inputs: ["enabled", "icon", "label"] }] });
416
- }
417
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: ShellBarComponent, decorators: [{
418
- type: Component,
419
- args: [{
420
- selector: 'ShellBar',
421
- imports: [ShellNavigationFlyoutComponent],
422
- host: {
423
- '[class]': 'classes()',
424
- 'data-shell-bar': '',
425
- '[attr.data-shell-device]': 'device()',
426
- '[attr.data-shell-color]': 'color()',
427
- '[attr.data-shell-frame]': 'frame()',
428
- '[attr.data-tauri-drag-region]': 'drag() ? "" : null',
429
- '[attr.data-shell-window]': 'shell.windowState()',
430
- '[attr.data-shell-focused]': 'shell.focused()',
431
- '[attr.role]': 'landmark() ? "banner" : null',
432
- '[attr.aria-label]': 'landmark() ? ariaLabel() || null : null',
433
- },
434
- template: `
602
+ `,
603
+ isInline: true,
604
+ dependencies: [{
605
+ kind: "component",
606
+ type: ShellNavigationFlyoutComponent,
607
+ selector: "ShellNavigationFlyout",
608
+ inputs: [
609
+ "enabled",
610
+ "icon",
611
+ "label"
612
+ ]
613
+ }]
614
+ });
615
+ };
616
+ i0.ɵɵngDeclareClassMetadata({
617
+ minVersion: "12.0.0",
618
+ version: "22.2.0",
619
+ ngImport: i0,
620
+ type: ShellBarComponent,
621
+ decorators: [{
622
+ type: Component,
623
+ args: [{
624
+ selector: "ShellBar",
625
+ imports: [ShellNavigationFlyoutComponent],
626
+ host: {
627
+ "[class]": "classes()",
628
+ "data-shell-bar": "",
629
+ "[attr.data-shell-device]": "device()",
630
+ "[attr.data-shell-color]": "color()",
631
+ "[attr.data-shell-frame]": "frame()",
632
+ "[attr.data-tauri-drag-region]": "drag() ? \"\" : null",
633
+ "[attr.data-shell-window]": "shell.windowState()",
634
+ "[attr.data-shell-focused]": "shell.focused()",
635
+ "[attr.role]": "landmark() ? \"banner\" : null",
636
+ "[attr.aria-label]": "landmark() ? ariaLabel() || null : null"
637
+ },
638
+ template: `
435
639
  <div data-shell-bar-start [class]="startSlotClasses()">
436
640
  @if (!isMacOs()) {
437
641
  <ShellNavigationFlyout
@@ -586,130 +790,310 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
586
790
  </button>
587
791
  }
588
792
  </div>
589
- `,
590
- }]
591
- }], propDecorators: { device: [{ type: i0.Input, args: [{ isSignal: true, alias: "device", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], frame: [{ type: i0.Input, args: [{ isSignal: true, alias: "frame", required: false }] }], nativeWindowControls: [{ type: i0.Input, args: [{ isSignal: true, alias: "nativeWindowControls", required: false }] }], drag: [{ type: i0.Input, args: [{ isSignal: true, alias: "drag", required: false }] }], landmark: [{ type: i0.Input, args: [{ isSignal: true, alias: "landmark", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], minimizeLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "minimizeLabel", required: false }] }], maximizeLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "maximizeLabel", required: false }] }], restoreLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "restoreLabel", required: false }] }], closeLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeLabel", required: false }] }], navigationFlyout: [{ type: i0.Input, args: [{ isSignal: true, alias: "navigationFlyout", required: false }] }], navigationFlyoutIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "navigationFlyoutIcon", required: false }] }], navigationFlyoutLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "navigationFlyoutLabel", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
592
-
593
- /**
594
- * Root of an application shell: the element that owns the whole surface, whether
595
- * that is a browser tab, an OS window, a tablet, or a phone.
596
- *
597
- * A `<Shell>` holds the app directly — normally a `<Layout>` — plus, on
598
- * `mode='desktop'`, a titlebar it renders itself:
599
- *
600
- * ```html
601
- * <Shell mode="desktop" device="macos">
602
- * <span shellBarTitle>Acme Studio</span>
603
- *
604
- * <Layout>
605
- * <LayoutVertical>…</LayoutVertical>
606
- * </Layout>
607
- * </Shell>
608
- * ```
609
- *
610
- * ## Fallback chain
611
- *
612
- * Every axis is optional, and each falls back rather than demanding a value:
613
- *
614
- * - `mode` — this input, else the stored `shell-mode`, else `desktop` when a
615
- * desktop runtime is registered, else `web`.
616
- * - `device` — this input, else the stored `shell-device`, else whatever the
617
- * window bridge reports, else the mode's default device.
618
- * - `color` — this input, else the stored `shell-color`, else `sync`.
619
- * - `frame` — this input, else the stored `shell-frame`, else `classic`; only
620
- * `desktop` can be `modern`.
621
- *
622
- * `mode` and `device` are always resolved as a coherent pair: a device that
623
- * belongs to another form factor (`mode='desktop' device='ipad'`) is corrected to
624
- * the mode's default, so `data-shell-device` never describes something the mode
625
- * cannot be.
626
- *
627
- * Inputs are host declarations, not user preferences, so setting them never
628
- * writes to storage — use `ShellService.setMode()` / `setDevice()` for a choice
629
- * that should persist.
630
- */
631
- class ShellComponent {
632
- shell = inject(ShellService);
633
- /** Delivery target. `null` follows the stored/derived mode — see the class note. */
634
- mode = input(null, /* @ts-ignore */
635
- ...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
636
- /** Host OS. `null` follows the stored/reported device, corrected to fit `mode`. */
637
- device = input(null, /* @ts-ignore */
638
- ...(ngDevMode ? [{ debugName: "device" }] : /* istanbul ignore next */ []));
639
- /**
640
- * Where the shell's own chrome takes its colors from. `sync` keeps the titlebar
641
- * inside the design system; `default` paints the native look of the active
642
- * device.
643
- */
644
- color = input(null, /* @ts-ignore */
645
- ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
646
- /**
647
- * How the app sits in its window. `classic` keeps it flush to the window edge
648
- * under a bordered titlebar; `modern` insets it as a panel and fuses the titlebar
649
- * with the surround into one continuous frame. Only meaningful on
650
- * `mode='desktop'` — anything else resolves to `classic`.
651
- */
652
- frame = input(null, /* @ts-ignore */
653
- ...(ngDevMode ? [{ debugName: "frame" }] : /* istanbul ignore next */ []));
654
- /**
655
- * `true` when the runtime still draws its own window buttons, so the shell must
656
- * not draw them: on macOS the titlebar reserves the leading run for the OS
657
- * traffic lights (Tauri's `titleBarStyle: 'Overlay'`), and Windows / Linux draw
658
- * nothing. Leave `false` for a `decorations: false` window, where the app owns
659
- * the buttons — otherwise there would be no way to close it.
660
- */
661
- nativeWindowControls = input(false, { ...(ngDevMode ? { debugName: "nativeWindowControls" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
662
- /** Mark the exposed desktop frame and titlebar as drag surfaces below interactive content. */
663
- drag = input(true, { ...(ngDevMode ? { debugName: "drag" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
664
- /** Expose the titlebar as the `banner` landmark. Turn off for a nested preview. */
665
- landmark = input(true, { ...(ngDevMode ? { debugName: "landmark" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
666
- barAriaLabel = input('Application title bar', /* @ts-ignore */
667
- ...(ngDevMode ? [{ debugName: "barAriaLabel" }] : /* istanbul ignore next */ []));
668
- minimizeLabel = input('Minimize window', /* @ts-ignore */
669
- ...(ngDevMode ? [{ debugName: "minimizeLabel" }] : /* istanbul ignore next */ []));
670
- maximizeLabel = input('Maximize window', /* @ts-ignore */
671
- ...(ngDevMode ? [{ debugName: "maximizeLabel" }] : /* istanbul ignore next */ []));
672
- restoreLabel = input('Restore window', /* @ts-ignore */
673
- ...(ngDevMode ? [{ debugName: "restoreLabel" }] : /* istanbul ignore next */ []));
674
- closeLabel = input('Close window', /* @ts-ignore */
675
- ...(ngDevMode ? [{ debugName: "closeLabel" }] : /* istanbul ignore next */ []));
676
- /**
677
- * Automatically surface the desktop layout's primary navigation as an icon
678
- * flyout in the titlebar. macOS places it at the trailing edge; Windows and
679
- * Linux place it at the leading edge.
680
- */
681
- navigationFlyout = input(true, { ...(ngDevMode ? { debugName: "navigationFlyout" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
682
- navigationFlyoutIcon = input('apps', /* @ts-ignore */
683
- ...(ngDevMode ? [{ debugName: "navigationFlyoutIcon" }] : /* istanbul ignore next */ []));
684
- navigationFlyoutLabel = input('Open navigation', /* @ts-ignore */
685
- ...(ngDevMode ? [{ debugName: "navigationFlyoutLabel" }] : /* istanbul ignore next */ []));
686
- class = input('', /* @ts-ignore */
687
- ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
688
- resolvedMode = computed(() => this.mode() ?? this.shell.mode(), /* @ts-ignore */
689
- ...(ngDevMode ? [{ debugName: "resolvedMode" }] : /* istanbul ignore next */ []));
690
- resolvedDevice = computed(() => resolveShellDeviceForMode(this.resolvedMode(), this.device() ?? this.shell.device()), /* @ts-ignore */
691
- ...(ngDevMode ? [{ debugName: "resolvedDevice" }] : /* istanbul ignore next */ []));
692
- resolvedColor = computed(() => this.color() ?? this.shell.color(), /* @ts-ignore */
693
- ...(ngDevMode ? [{ debugName: "resolvedColor" }] : /* istanbul ignore next */ []));
694
- resolvedFrame = computed(() => resolveShellFrameForMode(this.resolvedMode(), this.frame() ?? this.shell.frame()), /* @ts-ignore */
695
- ...(ngDevMode ? [{ debugName: "resolvedFrame" }] : /* istanbul ignore next */ []));
696
- /** Only a desktop window has chrome of its own to draw. */
697
- showsBar = computed(() => this.resolvedMode() === 'desktop', /* @ts-ignore */
698
- ...(ngDevMode ? [{ debugName: "showsBar" }] : /* istanbul ignore next */ []));
699
- hostClasses = computed(() => cn(
700
- // h-dvh, not h-full: the shell is the whole surface. `isolate` keeps the
701
- // titlebar's stacking context out of the app's, so a bar menu can never be
702
- // painted over by content below it.
703
- 'relative isolate flex h-dvh w-full min-w-0 flex-col overflow-hidden text-foreground', this.showsBar() && this.drag() && 'shell-drag-region',
704
- // A synchronized shell promotes the selected Theme color to the whole shell
705
- // background. `modern` also shares the titlebar token with its inset surround,
706
- // including when `color='default'` maps that token to native device chrome.
707
- this.resolvedColor() === 'sync' || this.resolvedFrame() === 'modern'
708
- ? 'bg-[hsl(var(--shell-bar-background))]'
709
- : 'bg-layout-canvas', this.class()), /* @ts-ignore */
710
- ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
711
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: ShellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
712
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: ShellComponent, isStandalone: true, selector: "Shell", inputs: { mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, device: { classPropertyName: "device", publicName: "device", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, frame: { classPropertyName: "frame", publicName: "frame", isSignal: true, isRequired: false, transformFunction: null }, nativeWindowControls: { classPropertyName: "nativeWindowControls", publicName: "nativeWindowControls", isSignal: true, isRequired: false, transformFunction: null }, drag: { classPropertyName: "drag", publicName: "drag", isSignal: true, isRequired: false, transformFunction: null }, landmark: { classPropertyName: "landmark", publicName: "landmark", isSignal: true, isRequired: false, transformFunction: null }, barAriaLabel: { classPropertyName: "barAriaLabel", publicName: "barAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, minimizeLabel: { classPropertyName: "minimizeLabel", publicName: "minimizeLabel", isSignal: true, isRequired: false, transformFunction: null }, maximizeLabel: { classPropertyName: "maximizeLabel", publicName: "maximizeLabel", isSignal: true, isRequired: false, transformFunction: null }, restoreLabel: { classPropertyName: "restoreLabel", publicName: "restoreLabel", isSignal: true, isRequired: false, transformFunction: null }, closeLabel: { classPropertyName: "closeLabel", publicName: "closeLabel", isSignal: true, isRequired: false, transformFunction: null }, navigationFlyout: { classPropertyName: "navigationFlyout", publicName: "navigationFlyout", isSignal: true, isRequired: false, transformFunction: null }, navigationFlyoutIcon: { classPropertyName: "navigationFlyoutIcon", publicName: "navigationFlyoutIcon", isSignal: true, isRequired: false, transformFunction: null }, navigationFlyoutLabel: { classPropertyName: "navigationFlyoutLabel", publicName: "navigationFlyoutLabel", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-shell-root": "" }, properties: { "class": "hostClasses()", "attr.data-shell-mode": "resolvedMode()", "attr.data-shell-device": "resolvedDevice()", "attr.data-shell-color": "resolvedColor()", "attr.data-shell-frame": "resolvedFrame()", "attr.data-shell-platform": "shell.platform", "attr.data-shell-window": "shell.windowState()" } }, ngImport: i0, template: `
793
+ `
794
+ }]
795
+ }],
796
+ propDecorators: {
797
+ device: [{
798
+ type: i0.Input,
799
+ args: [{
800
+ isSignal: true,
801
+ alias: "device",
802
+ required: false
803
+ }]
804
+ }],
805
+ color: [{
806
+ type: i0.Input,
807
+ args: [{
808
+ isSignal: true,
809
+ alias: "color",
810
+ required: false
811
+ }]
812
+ }],
813
+ frame: [{
814
+ type: i0.Input,
815
+ args: [{
816
+ isSignal: true,
817
+ alias: "frame",
818
+ required: false
819
+ }]
820
+ }],
821
+ nativeWindowControls: [{
822
+ type: i0.Input,
823
+ args: [{
824
+ isSignal: true,
825
+ alias: "nativeWindowControls",
826
+ required: false
827
+ }]
828
+ }],
829
+ drag: [{
830
+ type: i0.Input,
831
+ args: [{
832
+ isSignal: true,
833
+ alias: "drag",
834
+ required: false
835
+ }]
836
+ }],
837
+ landmark: [{
838
+ type: i0.Input,
839
+ args: [{
840
+ isSignal: true,
841
+ alias: "landmark",
842
+ required: false
843
+ }]
844
+ }],
845
+ ariaLabel: [{
846
+ type: i0.Input,
847
+ args: [{
848
+ isSignal: true,
849
+ alias: "ariaLabel",
850
+ required: false
851
+ }]
852
+ }],
853
+ minimizeLabel: [{
854
+ type: i0.Input,
855
+ args: [{
856
+ isSignal: true,
857
+ alias: "minimizeLabel",
858
+ required: false
859
+ }]
860
+ }],
861
+ maximizeLabel: [{
862
+ type: i0.Input,
863
+ args: [{
864
+ isSignal: true,
865
+ alias: "maximizeLabel",
866
+ required: false
867
+ }]
868
+ }],
869
+ restoreLabel: [{
870
+ type: i0.Input,
871
+ args: [{
872
+ isSignal: true,
873
+ alias: "restoreLabel",
874
+ required: false
875
+ }]
876
+ }],
877
+ closeLabel: [{
878
+ type: i0.Input,
879
+ args: [{
880
+ isSignal: true,
881
+ alias: "closeLabel",
882
+ required: false
883
+ }]
884
+ }],
885
+ navigationFlyout: [{
886
+ type: i0.Input,
887
+ args: [{
888
+ isSignal: true,
889
+ alias: "navigationFlyout",
890
+ required: false
891
+ }]
892
+ }],
893
+ navigationFlyoutIcon: [{
894
+ type: i0.Input,
895
+ args: [{
896
+ isSignal: true,
897
+ alias: "navigationFlyoutIcon",
898
+ required: false
899
+ }]
900
+ }],
901
+ navigationFlyoutLabel: [{
902
+ type: i0.Input,
903
+ args: [{
904
+ isSignal: true,
905
+ alias: "navigationFlyoutLabel",
906
+ required: false
907
+ }]
908
+ }],
909
+ class: [{
910
+ type: i0.Input,
911
+ args: [{
912
+ isSignal: true,
913
+ alias: "class",
914
+ required: false
915
+ }]
916
+ }]
917
+ }
918
+ });
919
+ var ShellComponent = class ShellComponent {
920
+ shell = inject(ShellService$1);
921
+ mode = input(null, ...ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []);
922
+ device = input(null, ...ngDevMode ? [{ debugName: "device" }] : /* istanbul ignore next */ []);
923
+ color = input(null, ...ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []);
924
+ frame = input(null, ...ngDevMode ? [{ debugName: "frame" }] : /* istanbul ignore next */ []);
925
+ nativeWindowControls = input(false, {
926
+ ...ngDevMode ? { debugName: "nativeWindowControls" } : /* istanbul ignore next */ {},
927
+ transform: booleanAttribute
928
+ });
929
+ drag = input(true, {
930
+ ...ngDevMode ? { debugName: "drag" } : /* istanbul ignore next */ {},
931
+ transform: booleanAttribute
932
+ });
933
+ landmark = input(true, {
934
+ ...ngDevMode ? { debugName: "landmark" } : /* istanbul ignore next */ {},
935
+ transform: booleanAttribute
936
+ });
937
+ barAriaLabel = input("Application title bar", ...ngDevMode ? [{ debugName: "barAriaLabel" }] : /* istanbul ignore next */ []);
938
+ minimizeLabel = input("Minimize window", ...ngDevMode ? [{ debugName: "minimizeLabel" }] : /* istanbul ignore next */ []);
939
+ maximizeLabel = input("Maximize window", ...ngDevMode ? [{ debugName: "maximizeLabel" }] : /* istanbul ignore next */ []);
940
+ restoreLabel = input("Restore window", ...ngDevMode ? [{ debugName: "restoreLabel" }] : /* istanbul ignore next */ []);
941
+ closeLabel = input("Close window", ...ngDevMode ? [{ debugName: "closeLabel" }] : /* istanbul ignore next */ []);
942
+ navigationFlyout = input(true, {
943
+ ...ngDevMode ? { debugName: "navigationFlyout" } : /* istanbul ignore next */ {},
944
+ transform: booleanAttribute
945
+ });
946
+ navigationFlyoutIcon = input("apps", ...ngDevMode ? [{ debugName: "navigationFlyoutIcon" }] : /* istanbul ignore next */ []);
947
+ navigationFlyoutLabel = input("Open navigation", ...ngDevMode ? [{ debugName: "navigationFlyoutLabel" }] : /* istanbul ignore next */ []);
948
+ class = input("", ...ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []);
949
+ resolvedMode = computed(() => this.mode() ?? this.shell.mode(), ...ngDevMode ? [{ debugName: "resolvedMode" }] : /* istanbul ignore next */ []);
950
+ resolvedDevice = computed(() => resolveShellDeviceForMode$1(this.resolvedMode(), this.device() ?? this.shell.device()), ...ngDevMode ? [{ debugName: "resolvedDevice" }] : /* istanbul ignore next */ []);
951
+ resolvedColor = computed(() => this.color() ?? this.shell.color(), ...ngDevMode ? [{ debugName: "resolvedColor" }] : /* istanbul ignore next */ []);
952
+ resolvedFrame = computed(() => resolveShellFrameForMode$1(this.resolvedMode(), this.frame() ?? this.shell.frame()), ...ngDevMode ? [{ debugName: "resolvedFrame" }] : /* istanbul ignore next */ []);
953
+ showsBar = computed(() => this.resolvedMode() === "desktop", ...ngDevMode ? [{ debugName: "showsBar" }] : /* istanbul ignore next */ []);
954
+ hostClasses = computed(() => cn("relative isolate flex h-dvh w-full min-w-0 flex-col overflow-hidden text-foreground", this.showsBar() && this.drag() && "shell-drag-region", this.resolvedColor() === "sync" || this.resolvedFrame() === "modern" ? "bg-[hsl(var(--shell-bar-background))]" : "bg-layout-canvas", this.class()), ...ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []);
955
+ static ɵfac = i0.ɵɵngDeclareFactory({
956
+ minVersion: "12.0.0",
957
+ version: "22.2.0",
958
+ ngImport: i0,
959
+ type: ShellComponent,
960
+ deps: [],
961
+ target: i0.ɵɵFactoryTarget.Component
962
+ });
963
+ static ɵcmp = i0.ɵɵngDeclareComponent({
964
+ minVersion: "17.0.0",
965
+ version: "22.2.0",
966
+ type: ShellComponent,
967
+ isStandalone: true,
968
+ selector: "Shell",
969
+ inputs: {
970
+ mode: {
971
+ classPropertyName: "mode",
972
+ publicName: "mode",
973
+ isSignal: true,
974
+ isRequired: false,
975
+ transformFunction: null
976
+ },
977
+ device: {
978
+ classPropertyName: "device",
979
+ publicName: "device",
980
+ isSignal: true,
981
+ isRequired: false,
982
+ transformFunction: null
983
+ },
984
+ color: {
985
+ classPropertyName: "color",
986
+ publicName: "color",
987
+ isSignal: true,
988
+ isRequired: false,
989
+ transformFunction: null
990
+ },
991
+ frame: {
992
+ classPropertyName: "frame",
993
+ publicName: "frame",
994
+ isSignal: true,
995
+ isRequired: false,
996
+ transformFunction: null
997
+ },
998
+ nativeWindowControls: {
999
+ classPropertyName: "nativeWindowControls",
1000
+ publicName: "nativeWindowControls",
1001
+ isSignal: true,
1002
+ isRequired: false,
1003
+ transformFunction: null
1004
+ },
1005
+ drag: {
1006
+ classPropertyName: "drag",
1007
+ publicName: "drag",
1008
+ isSignal: true,
1009
+ isRequired: false,
1010
+ transformFunction: null
1011
+ },
1012
+ landmark: {
1013
+ classPropertyName: "landmark",
1014
+ publicName: "landmark",
1015
+ isSignal: true,
1016
+ isRequired: false,
1017
+ transformFunction: null
1018
+ },
1019
+ barAriaLabel: {
1020
+ classPropertyName: "barAriaLabel",
1021
+ publicName: "barAriaLabel",
1022
+ isSignal: true,
1023
+ isRequired: false,
1024
+ transformFunction: null
1025
+ },
1026
+ minimizeLabel: {
1027
+ classPropertyName: "minimizeLabel",
1028
+ publicName: "minimizeLabel",
1029
+ isSignal: true,
1030
+ isRequired: false,
1031
+ transformFunction: null
1032
+ },
1033
+ maximizeLabel: {
1034
+ classPropertyName: "maximizeLabel",
1035
+ publicName: "maximizeLabel",
1036
+ isSignal: true,
1037
+ isRequired: false,
1038
+ transformFunction: null
1039
+ },
1040
+ restoreLabel: {
1041
+ classPropertyName: "restoreLabel",
1042
+ publicName: "restoreLabel",
1043
+ isSignal: true,
1044
+ isRequired: false,
1045
+ transformFunction: null
1046
+ },
1047
+ closeLabel: {
1048
+ classPropertyName: "closeLabel",
1049
+ publicName: "closeLabel",
1050
+ isSignal: true,
1051
+ isRequired: false,
1052
+ transformFunction: null
1053
+ },
1054
+ navigationFlyout: {
1055
+ classPropertyName: "navigationFlyout",
1056
+ publicName: "navigationFlyout",
1057
+ isSignal: true,
1058
+ isRequired: false,
1059
+ transformFunction: null
1060
+ },
1061
+ navigationFlyoutIcon: {
1062
+ classPropertyName: "navigationFlyoutIcon",
1063
+ publicName: "navigationFlyoutIcon",
1064
+ isSignal: true,
1065
+ isRequired: false,
1066
+ transformFunction: null
1067
+ },
1068
+ navigationFlyoutLabel: {
1069
+ classPropertyName: "navigationFlyoutLabel",
1070
+ publicName: "navigationFlyoutLabel",
1071
+ isSignal: true,
1072
+ isRequired: false,
1073
+ transformFunction: null
1074
+ },
1075
+ class: {
1076
+ classPropertyName: "class",
1077
+ publicName: "class",
1078
+ isSignal: true,
1079
+ isRequired: false,
1080
+ transformFunction: null
1081
+ }
1082
+ },
1083
+ host: {
1084
+ attributes: { "data-shell-root": "" },
1085
+ properties: {
1086
+ "class": "hostClasses()",
1087
+ "attr.data-shell-mode": "resolvedMode()",
1088
+ "attr.data-shell-device": "resolvedDevice()",
1089
+ "attr.data-shell-color": "resolvedColor()",
1090
+ "attr.data-shell-frame": "resolvedFrame()",
1091
+ "attr.data-shell-platform": "shell.platform",
1092
+ "attr.data-shell-window": "shell.windowState()"
1093
+ }
1094
+ },
1095
+ ngImport: i0,
1096
+ template: `
713
1097
  @if (showsBar() && drag()) {
714
1098
  <div
715
1099
  aria-hidden="true"
@@ -743,24 +1127,53 @@ class ShellComponent {
743
1127
  }
744
1128
 
745
1129
  <ng-content />
746
- `, isInline: true, dependencies: [{ kind: "component", type: ShellBarComponent, selector: "ShellBar", inputs: ["device", "color", "frame", "nativeWindowControls", "drag", "landmark", "ariaLabel", "minimizeLabel", "maximizeLabel", "restoreLabel", "closeLabel", "navigationFlyout", "navigationFlyoutIcon", "navigationFlyoutLabel", "class"] }] });
747
- }
748
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: ShellComponent, decorators: [{
749
- type: Component,
750
- args: [{
751
- selector: 'Shell',
752
- imports: [ShellBarComponent],
753
- host: {
754
- '[class]': 'hostClasses()',
755
- 'data-shell-root': '',
756
- '[attr.data-shell-mode]': 'resolvedMode()',
757
- '[attr.data-shell-device]': 'resolvedDevice()',
758
- '[attr.data-shell-color]': 'resolvedColor()',
759
- '[attr.data-shell-frame]': 'resolvedFrame()',
760
- '[attr.data-shell-platform]': 'shell.platform',
761
- '[attr.data-shell-window]': 'shell.windowState()',
762
- },
763
- template: `
1130
+ `,
1131
+ isInline: true,
1132
+ dependencies: [{
1133
+ kind: "component",
1134
+ type: ShellBarComponent,
1135
+ selector: "ShellBar",
1136
+ inputs: [
1137
+ "device",
1138
+ "color",
1139
+ "frame",
1140
+ "nativeWindowControls",
1141
+ "drag",
1142
+ "landmark",
1143
+ "ariaLabel",
1144
+ "minimizeLabel",
1145
+ "maximizeLabel",
1146
+ "restoreLabel",
1147
+ "closeLabel",
1148
+ "navigationFlyout",
1149
+ "navigationFlyoutIcon",
1150
+ "navigationFlyoutLabel",
1151
+ "class"
1152
+ ]
1153
+ }]
1154
+ });
1155
+ };
1156
+ i0.ɵɵngDeclareClassMetadata({
1157
+ minVersion: "12.0.0",
1158
+ version: "22.2.0",
1159
+ ngImport: i0,
1160
+ type: ShellComponent,
1161
+ decorators: [{
1162
+ type: Component,
1163
+ args: [{
1164
+ selector: "Shell",
1165
+ imports: [ShellBarComponent],
1166
+ host: {
1167
+ "[class]": "hostClasses()",
1168
+ "data-shell-root": "",
1169
+ "[attr.data-shell-mode]": "resolvedMode()",
1170
+ "[attr.data-shell-device]": "resolvedDevice()",
1171
+ "[attr.data-shell-color]": "resolvedColor()",
1172
+ "[attr.data-shell-frame]": "resolvedFrame()",
1173
+ "[attr.data-shell-platform]": "shell.platform",
1174
+ "[attr.data-shell-window]": "shell.windowState()"
1175
+ },
1176
+ template: `
764
1177
  @if (showsBar() && drag()) {
765
1178
  <div
766
1179
  aria-hidden="true"
@@ -794,22 +1207,138 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
794
1207
  }
795
1208
 
796
1209
  <ng-content />
797
- `,
798
- }]
799
- }], propDecorators: { mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], device: [{ type: i0.Input, args: [{ isSignal: true, alias: "device", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], frame: [{ type: i0.Input, args: [{ isSignal: true, alias: "frame", required: false }] }], nativeWindowControls: [{ type: i0.Input, args: [{ isSignal: true, alias: "nativeWindowControls", required: false }] }], drag: [{ type: i0.Input, args: [{ isSignal: true, alias: "drag", required: false }] }], landmark: [{ type: i0.Input, args: [{ isSignal: true, alias: "landmark", required: false }] }], barAriaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "barAriaLabel", required: false }] }], minimizeLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "minimizeLabel", required: false }] }], maximizeLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "maximizeLabel", required: false }] }], restoreLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "restoreLabel", required: false }] }], closeLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeLabel", required: false }] }], navigationFlyout: [{ type: i0.Input, args: [{ isSignal: true, alias: "navigationFlyout", required: false }] }], navigationFlyoutIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "navigationFlyoutIcon", required: false }] }], navigationFlyoutLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "navigationFlyoutLabel", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
800
-
801
- /*
802
- * Public API of @ojiepermana/angular/theme/shell
803
- *
804
- * The application shell root: <Shell> owns the whole surface and holds the app
805
- * (normally a <Layout>) directly. On mode='desktop' it also renders its own
806
- * titlebar — <ShellBar> is deliberately NOT exported, because when a titlebar
807
- * exists is <Shell>'s decision, not the consumer's. Configure it through <Shell>
808
- * and its [shellBarStart] / [shellBarTitle] / [shellBarEnd] slots.
809
- */
810
-
811
- /**
812
- * Generated bundle index. Do not edit.
813
- */
814
-
815
- export { ShellComponent };
1210
+ `
1211
+ }]
1212
+ }],
1213
+ propDecorators: {
1214
+ mode: [{
1215
+ type: i0.Input,
1216
+ args: [{
1217
+ isSignal: true,
1218
+ alias: "mode",
1219
+ required: false
1220
+ }]
1221
+ }],
1222
+ device: [{
1223
+ type: i0.Input,
1224
+ args: [{
1225
+ isSignal: true,
1226
+ alias: "device",
1227
+ required: false
1228
+ }]
1229
+ }],
1230
+ color: [{
1231
+ type: i0.Input,
1232
+ args: [{
1233
+ isSignal: true,
1234
+ alias: "color",
1235
+ required: false
1236
+ }]
1237
+ }],
1238
+ frame: [{
1239
+ type: i0.Input,
1240
+ args: [{
1241
+ isSignal: true,
1242
+ alias: "frame",
1243
+ required: false
1244
+ }]
1245
+ }],
1246
+ nativeWindowControls: [{
1247
+ type: i0.Input,
1248
+ args: [{
1249
+ isSignal: true,
1250
+ alias: "nativeWindowControls",
1251
+ required: false
1252
+ }]
1253
+ }],
1254
+ drag: [{
1255
+ type: i0.Input,
1256
+ args: [{
1257
+ isSignal: true,
1258
+ alias: "drag",
1259
+ required: false
1260
+ }]
1261
+ }],
1262
+ landmark: [{
1263
+ type: i0.Input,
1264
+ args: [{
1265
+ isSignal: true,
1266
+ alias: "landmark",
1267
+ required: false
1268
+ }]
1269
+ }],
1270
+ barAriaLabel: [{
1271
+ type: i0.Input,
1272
+ args: [{
1273
+ isSignal: true,
1274
+ alias: "barAriaLabel",
1275
+ required: false
1276
+ }]
1277
+ }],
1278
+ minimizeLabel: [{
1279
+ type: i0.Input,
1280
+ args: [{
1281
+ isSignal: true,
1282
+ alias: "minimizeLabel",
1283
+ required: false
1284
+ }]
1285
+ }],
1286
+ maximizeLabel: [{
1287
+ type: i0.Input,
1288
+ args: [{
1289
+ isSignal: true,
1290
+ alias: "maximizeLabel",
1291
+ required: false
1292
+ }]
1293
+ }],
1294
+ restoreLabel: [{
1295
+ type: i0.Input,
1296
+ args: [{
1297
+ isSignal: true,
1298
+ alias: "restoreLabel",
1299
+ required: false
1300
+ }]
1301
+ }],
1302
+ closeLabel: [{
1303
+ type: i0.Input,
1304
+ args: [{
1305
+ isSignal: true,
1306
+ alias: "closeLabel",
1307
+ required: false
1308
+ }]
1309
+ }],
1310
+ navigationFlyout: [{
1311
+ type: i0.Input,
1312
+ args: [{
1313
+ isSignal: true,
1314
+ alias: "navigationFlyout",
1315
+ required: false
1316
+ }]
1317
+ }],
1318
+ navigationFlyoutIcon: [{
1319
+ type: i0.Input,
1320
+ args: [{
1321
+ isSignal: true,
1322
+ alias: "navigationFlyoutIcon",
1323
+ required: false
1324
+ }]
1325
+ }],
1326
+ navigationFlyoutLabel: [{
1327
+ type: i0.Input,
1328
+ args: [{
1329
+ isSignal: true,
1330
+ alias: "navigationFlyoutLabel",
1331
+ required: false
1332
+ }]
1333
+ }],
1334
+ class: [{
1335
+ type: i0.Input,
1336
+ args: [{
1337
+ isSignal: true,
1338
+ alias: "class",
1339
+ required: false
1340
+ }]
1341
+ }]
1342
+ }
1343
+ });
1344
+ export { SHELL_COLORS, SHELL_COLOR_STORAGE_KEY, SHELL_DEFAULT_COLOR, SHELL_DEFAULT_DEVICE, SHELL_DEFAULT_FRAME, SHELL_DEFAULT_MODE, SHELL_DEFAULT_PLATFORM, SHELL_DEFAULT_WINDOW_STATE, SHELL_DEVICES, SHELL_DEVICE_STORAGE_KEY, SHELL_FRAMES, SHELL_FRAME_STORAGE_KEY, SHELL_MODES, SHELL_MODE_DEVICES, SHELL_MODE_STORAGE_KEY, SHELL_PLATFORMS, SHELL_WINDOW_BRIDGE, SHELL_WINDOW_STATES, ShellComponent, ShellService, WEB_SHELL_WINDOW_BRIDGE, createTauriShellWindowBridge, defaultShellDeviceForMode, isShellColor, isShellDevice, isShellDeviceForMode, isShellFrame, isShellMode, isShellPlatform, isShellWindowState, isTauriRuntime, normalizeShellColor, normalizeShellDevice, normalizeShellFrame, normalizeShellMode, provideShellWindowBridge, provideTauriShellWindowBridge, resolveShellDeviceForMode, resolveShellFrameForMode, shellDevicesForMode };