@plumile/ui 0.1.120 → 0.1.122

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 (286) hide show
  1. package/README.md +12 -0
  2. package/lib/esm/admin/organisms/admin_sidebar/AdminSidebar.js +1 -1
  3. package/lib/esm/admin/organisms/admin_sidebar/adminSidebar.css.js +3 -2
  4. package/lib/esm/admin/organisms/admin_topbar/adminTopbar.css.js +1 -1
  5. package/lib/esm/admin/theme/adminDensity.css.js.map +1 -1
  6. package/lib/esm/admin/theme/adminSurface.css.js.map +1 -1
  7. package/lib/esm/atomic/atoms/badge/badge.css.js +7 -7
  8. package/lib/esm/atomic/atoms/badge/badge.css.js.map +1 -1
  9. package/lib/esm/atomic/atoms/button/button.css.js +38 -38
  10. package/lib/esm/atomic/atoms/button/button.css.js.map +1 -1
  11. package/lib/esm/atomic/atoms/checkbox/checkbox.css.js +8 -8
  12. package/lib/esm/atomic/atoms/checkbox/checkbox.css.js.map +1 -1
  13. package/lib/esm/atomic/atoms/error_message/errorMessage.css.js +1 -1
  14. package/lib/esm/atomic/atoms/input/input.css.js +9 -9
  15. package/lib/esm/atomic/atoms/input/input.css.js.map +1 -1
  16. package/lib/esm/atomic/atoms/label/label.css.js +7 -7
  17. package/lib/esm/atomic/atoms/modal/Modal.js +1 -1
  18. package/lib/esm/atomic/atoms/modal/modal.css.js +1 -1
  19. package/lib/esm/atomic/atoms/modal/modal.css.js.map +1 -1
  20. package/lib/esm/atomic/atoms/overlay/overlay.css.js +1 -1
  21. package/lib/esm/atomic/atoms/textarea/textarea.css.js +8 -8
  22. package/lib/esm/atomic/atoms/textarea/textarea.css.js.map +1 -1
  23. package/lib/esm/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuPopover.js +1 -1
  24. package/lib/esm/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.js +1 -1
  25. package/lib/esm/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.js.map +1 -1
  26. package/lib/esm/atomic/molecules/card/Card.css.js +1 -1
  27. package/lib/esm/atomic/molecules/checkbox_field/checkboxField.css.js +1 -1
  28. package/lib/esm/atomic/molecules/checkbox_field/checkboxField.css.js.map +1 -1
  29. package/lib/esm/atomic/molecules/dropdown/dropdown.css.js +1 -1
  30. package/lib/esm/atomic/molecules/empty-state/EmptyState.css.js +1 -1
  31. package/lib/esm/atomic/molecules/form/FormErrorBanner.css.js +1 -1
  32. package/lib/esm/atomic/molecules/form/formStyles.css.js +1 -1
  33. package/lib/esm/atomic/molecules/form_error/formError.css.js +1 -1
  34. package/lib/esm/atomic/molecules/form_field/formField.css.js +1 -1
  35. package/lib/esm/atomic/molecules/highlight/HighlightCode.css.js +1 -1
  36. package/lib/esm/atomic/molecules/highlight/highlightStyles.css.js +1 -1
  37. package/lib/esm/atomic/molecules/markdown/LazyMarkdownRenderer.css.js +1 -1
  38. package/lib/esm/atomic/molecules/markdown/components/MarkdownArticleContainer.css.js +1 -1
  39. package/lib/esm/atomic/molecules/markdown/components/MarkdownArticleContainer.css.js.map +1 -1
  40. package/lib/esm/atomic/molecules/markdown/components/MarkdownBlockquote.css.js +1 -1
  41. package/lib/esm/atomic/molecules/markdown/components/MarkdownCodeCopyButton.css.js +1 -1
  42. package/lib/esm/atomic/molecules/markdown/components/MarkdownCodeCopyButton.css.js.map +1 -1
  43. package/lib/esm/atomic/molecules/markdown/components/MarkdownDelete.css.js +1 -1
  44. package/lib/esm/atomic/molecules/markdown/components/MarkdownDelete.css.js.map +1 -1
  45. package/lib/esm/atomic/molecules/markdown/components/MarkdownEmphasis.css.js.map +1 -1
  46. package/lib/esm/atomic/molecules/markdown/components/MarkdownFootnoteDefinition.css.js +1 -1
  47. package/lib/esm/atomic/molecules/markdown/components/MarkdownFootnoteReference.css.js +1 -2
  48. package/lib/esm/atomic/molecules/markdown/components/MarkdownFootnoteReference.css.js.map +1 -1
  49. package/lib/esm/atomic/molecules/markdown/components/MarkdownFootnotesSection.css.js +1 -1
  50. package/lib/esm/atomic/molecules/markdown/components/MarkdownHeading.css.js +7 -7
  51. package/lib/esm/atomic/molecules/markdown/components/MarkdownHeading.css.js.map +1 -1
  52. package/lib/esm/atomic/molecules/markdown/components/MarkdownHtmlFallback.css.js +1 -1
  53. package/lib/esm/atomic/molecules/markdown/components/MarkdownImage.css.js +1 -1
  54. package/lib/esm/atomic/molecules/markdown/components/MarkdownInlineCode.css.js +1 -1
  55. package/lib/esm/atomic/molecules/markdown/components/MarkdownInlineCode.css.js.map +1 -1
  56. package/lib/esm/atomic/molecules/markdown/components/MarkdownLink.css.js +1 -1
  57. package/lib/esm/atomic/molecules/markdown/components/MarkdownLink.css.js.map +1 -1
  58. package/lib/esm/atomic/molecules/markdown/components/MarkdownList.css.js +1 -1
  59. package/lib/esm/atomic/molecules/markdown/components/MarkdownList.css.js.map +1 -1
  60. package/lib/esm/atomic/molecules/markdown/components/MarkdownListItem.css.js +1 -1
  61. package/lib/esm/atomic/molecules/markdown/components/MarkdownListItem.css.js.map +1 -1
  62. package/lib/esm/atomic/molecules/markdown/components/MarkdownMark.css.js +1 -1
  63. package/lib/esm/atomic/molecules/markdown/components/MarkdownMark.css.js.map +1 -1
  64. package/lib/esm/atomic/molecules/markdown/components/MarkdownMermaidBlock.css.js +1 -1
  65. package/lib/esm/atomic/molecules/markdown/components/MarkdownParagraph.css.js +1 -1
  66. package/lib/esm/atomic/molecules/markdown/components/MarkdownParagraph.css.js.map +1 -1
  67. package/lib/esm/atomic/molecules/markdown/components/MarkdownStrong.css.js +1 -1
  68. package/lib/esm/atomic/molecules/markdown/components/MarkdownStrong.css.js.map +1 -1
  69. package/lib/esm/atomic/molecules/markdown/components/MarkdownSubscript.css.js +1 -1
  70. package/lib/esm/atomic/molecules/markdown/components/MarkdownSubscript.css.js.map +1 -1
  71. package/lib/esm/atomic/molecules/markdown/components/MarkdownSuperscript.css.js +1 -1
  72. package/lib/esm/atomic/molecules/markdown/components/MarkdownSuperscript.css.js.map +1 -1
  73. package/lib/esm/atomic/molecules/markdown/components/MarkdownTable.css.js +2 -1
  74. package/lib/esm/atomic/molecules/markdown/components/MarkdownTable.css.js.map +1 -1
  75. package/lib/esm/atomic/molecules/markdown/components/MarkdownTableCaption.css.js +1 -1
  76. package/lib/esm/atomic/molecules/markdown/components/MarkdownTableCell.css.js +1 -1
  77. package/lib/esm/atomic/molecules/markdown/components/MarkdownTableCell.css.js.map +1 -1
  78. package/lib/esm/atomic/molecules/markdown/components/MarkdownTableHead.css.js +1 -1
  79. package/lib/esm/atomic/molecules/markdown/components/MarkdownTableHeaderCell.css.js +1 -1
  80. package/lib/esm/atomic/molecules/markdown/components/MarkdownTaskListItem.css.js +1 -1
  81. package/lib/esm/atomic/molecules/markdown/components/MarkdownTaskListItem.css.js.map +1 -1
  82. package/lib/esm/atomic/molecules/markdown/components/MarkdownText.css.js +1 -1
  83. package/lib/esm/atomic/molecules/markdown/components/MarkdownText.css.js.map +1 -1
  84. package/lib/esm/atomic/molecules/markdown/components/MarkdownThematicBreak.css.js +1 -1
  85. package/lib/esm/atomic/molecules/tabs/tabs.css.js +4 -4
  86. package/lib/esm/atomic/molecules/toast/toast.css.js +2 -2
  87. package/lib/esm/atomic/molecules/toast/toast.css.js.map +1 -1
  88. package/lib/esm/atomic/organisms/login_form/loginForm.css.js +1 -1
  89. package/lib/esm/atomic/organisms/sidebar/SidebarContainer.js +2 -2
  90. package/lib/esm/atomic/organisms/sidebar/navigationSidebar.css.js +13 -13
  91. package/lib/esm/atomic/organisms/sidebar/sidebar.css.js +2 -2
  92. package/lib/esm/atomic/templates/auth_layout/authLayout.css.js +1 -1
  93. package/lib/esm/atomic/templates/detail-page/DetailPage.js +4 -4
  94. package/lib/esm/atomic/templates/detail-page/detailPage.css.js +1 -1
  95. package/lib/esm/atomic/templates/page-container/PageContainer.js +3 -3
  96. package/lib/esm/atomic/templates/page-container/pageContainer.css.js +1 -1
  97. package/lib/esm/backoffice/atoms/backoffice_id_badge/backofficeIdBadge.css.js +1 -1
  98. package/lib/esm/backoffice/atoms/copyable_text/copyableText.css.js +1 -1
  99. package/lib/esm/backoffice/atoms/environment_badge/environmentBadge.css.js +1 -1
  100. package/lib/esm/backoffice/atoms/shortcut_hint/shortcutHint.css.js +1 -1
  101. package/lib/esm/backoffice/atoms/skeleton/skeleton.css.js +5 -5
  102. package/lib/esm/backoffice/atoms/skeleton/skeleton.css.js.map +1 -1
  103. package/lib/esm/backoffice/atoms/spinner/spinner.css.js +1 -1
  104. package/lib/esm/backoffice/atoms/spinner/spinner.css.js.map +1 -1
  105. package/lib/esm/backoffice/atoms/status_badge/statusBadge.css.js +1 -1
  106. package/lib/esm/backoffice/atoms/tag/tag.css.js +7 -7
  107. package/lib/esm/backoffice/atoms/tag/tag.css.js.map +1 -1
  108. package/lib/esm/backoffice/molecules/backoffice_detail_layout/backofficeDetailLayout.css.js +1 -1
  109. package/lib/esm/backoffice/molecules/backoffice_empty_state/backofficeEmptyState.css.js +1 -1
  110. package/lib/esm/backoffice/molecules/backoffice_filter_drawer/BackofficeFilterDrawer.js +7 -7
  111. package/lib/esm/backoffice/molecules/backoffice_filter_drawer/backofficeFilterDrawer.css.js +1 -1
  112. package/lib/esm/backoffice/molecules/backoffice_filter_drawer/backofficeFilterDrawer.css.js.map +1 -1
  113. package/lib/esm/backoffice/molecules/backoffice_filter_field/backofficeFilterField.css.js +1 -1
  114. package/lib/esm/backoffice/molecules/backoffice_filters_bar/backofficeFiltersBar.css.js +1 -1
  115. package/lib/esm/backoffice/molecules/backoffice_form_section/BackofficeFormSection.js +3 -3
  116. package/lib/esm/backoffice/molecules/backoffice_form_section/backofficeFormSection.css.js +1 -1
  117. package/lib/esm/backoffice/molecules/backoffice_infinite_list_status/BackofficeInfiniteListStatus.js +2 -2
  118. package/lib/esm/backoffice/molecules/backoffice_infinite_list_status/backofficeInfiniteListStatus.css.js +1 -1
  119. package/lib/esm/backoffice/molecules/backoffice_json_viewer/LazyBackofficeJsonViewer.css.js +1 -1
  120. package/lib/esm/backoffice/molecules/backoffice_json_viewer/LazyBackofficeJsonViewer.js +1 -1
  121. package/lib/esm/backoffice/molecules/backoffice_json_viewer/backofficeJsonViewer.css.js +1 -1
  122. package/lib/esm/backoffice/molecules/backoffice_key_value_list/backofficeKeyValueList.css.js +1 -1
  123. package/lib/esm/backoffice/molecules/backoffice_load_more/backofficeLoadMore.css.js +1 -1
  124. package/lib/esm/backoffice/molecules/backoffice_load_more/backofficeLoadMore.css.js.map +1 -1
  125. package/lib/esm/backoffice/molecules/backoffice_page_header/BackofficePageHeader.js +4 -4
  126. package/lib/esm/backoffice/molecules/backoffice_page_header/backofficePageHeader.css.js +1 -1
  127. package/lib/esm/backoffice/molecules/backoffice_relations_menu/BackofficeRelationsMenu.js +4 -4
  128. package/lib/esm/backoffice/molecules/backoffice_relations_menu/backofficeRelationsMenu.css.js +1 -1
  129. package/lib/esm/backoffice/molecules/backoffice_relations_menu/backofficeRelationsMenu.css.js.map +1 -1
  130. package/lib/esm/backoffice/molecules/backoffice_table_skeleton/backofficeTableSkeleton.css.js +4 -4
  131. package/lib/esm/backoffice/molecules/backoffice_table_toolbar/BackofficeTableToolbar.js +8 -8
  132. package/lib/esm/backoffice/molecules/backoffice_table_toolbar/backofficeTableToolbar.css.js +1 -1
  133. package/lib/esm/backoffice/molecules/backoffice_table_toolbar/backofficeTableToolbar.css.js.map +1 -1
  134. package/lib/esm/backoffice/molecules/backoffice_tabs/backofficeTabs.css.js +8 -8
  135. package/lib/esm/backoffice/molecules/backoffice_tabs/backofficeTabs.css.js.map +1 -1
  136. package/lib/esm/backoffice/molecules/bulk_actions_bar/bulkActionsBar.css.js +1 -1
  137. package/lib/esm/backoffice/molecules/confirm_dialog/confirmDialog.css.js +1 -1
  138. package/lib/esm/backoffice/molecules/filter_chip_row/filterChipRow.css.js +1 -1
  139. package/lib/esm/backoffice/molecules/filter_chip_row/filterChipRow.css.js.map +1 -1
  140. package/lib/esm/backoffice/molecules/global_search_input/globalSearchInput.css.js +1 -1
  141. package/lib/esm/backoffice/molecules/global_search_input/globalSearchInput.css.js.map +1 -1
  142. package/lib/esm/backoffice/molecules/inline_banner/inlineBanner.css.js +6 -6
  143. package/lib/esm/backoffice/molecules/inline_banner/inlineBanner.css.js.map +1 -1
  144. package/lib/esm/backoffice/molecules/sidebar_collapse_toggle/sidebarCollapseToggle.css.js +1 -1
  145. package/lib/esm/backoffice/molecules/sidebar_collapse_toggle/sidebarCollapseToggle.css.js.map +1 -1
  146. package/lib/esm/backoffice/molecules/sidebar_nav_item/sidebarNavItem.css.js +1 -1
  147. package/lib/esm/backoffice/molecules/sidebar_nav_item/sidebarNavItem.css.js.map +1 -1
  148. package/lib/esm/backoffice/molecules/sidebar_nav_section/SidebarNavSection.js +5 -5
  149. package/lib/esm/backoffice/molecules/sidebar_nav_section/sidebarNavSection.css.js +1 -1
  150. package/lib/esm/backoffice/molecules/sidebar_nav_section/sidebarNavSection.css.js.map +1 -1
  151. package/lib/esm/backoffice/molecules/sidebar_profile_menu/BackofficeSidebarProfileMenu.js +4 -4
  152. package/lib/esm/backoffice/molecules/sidebar_profile_menu/BackofficeSidebarProfileMenu.js.map +1 -1
  153. package/lib/esm/backoffice/molecules/sidebar_profile_menu/sidebarProfileMenu.css.js +5 -5
  154. package/lib/esm/backoffice/molecules/table_toolbar/tableToolbar.css.js +1 -1
  155. package/lib/esm/backoffice/organisms/audit_timeline/auditTimeline.css.js +1 -1
  156. package/lib/esm/backoffice/organisms/backoffice_data_table/backofficeDataTable.css.js +1 -1
  157. package/lib/esm/backoffice/organisms/backoffice_virtualized_connection_table/backofficeVirtualizedConnectionTable.css.js +1 -1
  158. package/lib/esm/backoffice/organisms/entity_header/entityHeader.css.js +1 -1
  159. package/lib/esm/backoffice/templates/detail_page_template/DetailPageTemplate.js +2 -2
  160. package/lib/esm/backoffice/templates/detail_page_template/detailPageTemplate.css.js +2 -2
  161. package/lib/esm/backoffice/templates/detail_page_template/detailPageTemplate.css.js.map +1 -1
  162. package/lib/esm/backoffice/templates/list_page_template/ListPageTemplate.js +1 -1
  163. package/lib/esm/backoffice/templates/list_page_template/ListPageTemplate.js.map +1 -1
  164. package/lib/esm/backoffice/templates/list_page_template/listPageTemplate.css.js +10 -10
  165. package/lib/esm/backoffice/templates/list_page_template/listPageTemplate.css.js.map +1 -1
  166. package/lib/esm/components/agent/AgentMarkdownCard.css.js +1 -1
  167. package/lib/esm/components/charts/metricHistoryChart.css.js +1 -1
  168. package/lib/esm/components/charts/timeSeriesLineChart.css.js +1 -1
  169. package/lib/esm/components/dashboard/activity_card/ActivityCard.css.js +1 -1
  170. package/lib/esm/components/dashboard/activity_card/ActivityCard.js +2 -2
  171. package/lib/esm/components/dashboard/activity_feed/ActivityFeed.css.js +1 -1
  172. package/lib/esm/components/dashboard/dashboard_grid/DashboardGrid.css.js +21 -21
  173. package/lib/esm/components/dashboard/dashboard_grid/DashboardGrid.css.js.map +1 -1
  174. package/lib/esm/components/dashboard/metadata_strip/MetadataStrip.css.js +1 -1
  175. package/lib/esm/components/dashboard/metric_card/MetricCard.css.js +1 -1
  176. package/lib/esm/components/dashboard/metric_card/MetricCard.js +2 -2
  177. package/lib/esm/components/dashboard/metric_tile_group/MetricTileGroup.css.js +1 -1
  178. package/lib/esm/components/dashboard/page_hero/PageHero.css.js +1 -1
  179. package/lib/esm/components/dashboard/page_hero/PageHero.js +3 -3
  180. package/lib/esm/components/dashboard/section_nav/SectionNav.css.js +1 -1
  181. package/lib/esm/components/dashboard/section_nav/SectionNav.css.js.map +1 -1
  182. package/lib/esm/components/dashboard/segmented_nav/SegmentedNav.css.js +1 -1
  183. package/lib/esm/components/dashboard/segmented_nav/SegmentedNav.css.js.map +1 -1
  184. package/lib/esm/components/dashboard/selectable_card/SelectableCard.css.js +1 -1
  185. package/lib/esm/components/dashboard/selectable_card/SelectableCard.css.js.map +1 -1
  186. package/lib/esm/components/dashboard/selectable_card/SelectableCard.js +2 -2
  187. package/lib/esm/components/dashboard/status_summary_panel/StatusSummaryPanel.css.js +1 -1
  188. package/lib/esm/components/dashboard/status_summary_panel/StatusSummaryPanel.js +1 -1
  189. package/lib/esm/components/dashboard/timeline_event_row/TimelineEventRow.css.js +1 -1
  190. package/lib/esm/components/dashboard/timeline_event_row/TimelineEventRow.js +2 -2
  191. package/lib/esm/components/data-table/DataTable.css.js +28 -28
  192. package/lib/esm/components/data-table/DataTable.css.js.map +1 -1
  193. package/lib/esm/components/data-table/ResponsiveRecordList.css.js +6 -6
  194. package/lib/esm/components/data-table/TableCell.css.js +2 -2
  195. package/lib/esm/components/data-table/VirtualizedConnectionTable.css.js +1 -1
  196. package/lib/esm/components/data-table/VirtualizedConnectionTable.js +1 -1
  197. package/lib/esm/components/data-table/VirtualizedConnectionTable.js.map +1 -1
  198. package/lib/esm/components/feedback/OperationFeedback.css.js +1 -1
  199. package/lib/esm/components/feedback/OperationFeedback.js +1 -1
  200. package/lib/esm/components/infinite/InfiniteScrollTrigger.js +1 -1
  201. package/lib/esm/components/infinite/infiniteScrollTrigger.css.js +1 -1
  202. package/lib/esm/components/layout/ActionPanel.css.js +1 -1
  203. package/lib/esm/components/layout/ActionPanel.js +3 -3
  204. package/lib/esm/components/layout/ActionPanel.js.map +1 -1
  205. package/lib/esm/components/layout/AppHeader.css.js +1 -1
  206. package/lib/esm/components/layout/AppHeader.js +4 -4
  207. package/lib/esm/components/layout/ContentLayout.css.js +1 -1
  208. package/lib/esm/components/layout/ContentLayout.js +2 -2
  209. package/lib/esm/components/layout/DetailSummaryHeader.css.js +1 -1
  210. package/lib/esm/components/layout/DetailSummaryHeader.js +3 -3
  211. package/lib/esm/components/layout/PageShell.css.js +4 -4
  212. package/lib/esm/components/layout/PageShell.js +5 -5
  213. package/lib/esm/components/layout/PageShell.js.map +1 -1
  214. package/lib/esm/components/layout/SettingsLayout.css.js +1 -1
  215. package/lib/esm/components/layout/SplitViewLayout.css.js +1 -1
  216. package/lib/esm/components/layout/TabsContentLayout.css.js +1 -1
  217. package/lib/esm/components/layout/ToolbarRow.css.js +1 -1
  218. package/lib/esm/components/media/imagePreviewModal.css.js +5 -5
  219. package/lib/esm/components/responsive/ResponsiveCollectionRenderer.css.js +1 -1
  220. package/lib/esm/components/responsive/ResponsiveCollectionRenderer.css.js.map +1 -1
  221. package/lib/esm/components/routing/routeFallback.css.js +1 -1
  222. package/lib/esm/components/routing/routeFallback.css.js.map +1 -1
  223. package/lib/esm/components/routing/routePendingBar.css.js +1 -1
  224. package/lib/esm/components/routing/routePendingBar.css.js.map +1 -1
  225. package/lib/esm/components/select/SimpleSelect.css.js +14 -14
  226. package/lib/esm/components/select/SimpleSelect.css.js.map +1 -1
  227. package/lib/esm/components/subscriptions/RefetchNeededBanner.css.js +1 -1
  228. package/lib/esm/components/tile/InfoTile.css.js +1 -1
  229. package/lib/esm/components/tile/InfoTile.css.js.map +1 -1
  230. package/lib/esm/components/tile/InfoTile.js +3 -3
  231. package/lib/esm/index.js +257 -255
  232. package/lib/esm/shared/backofficeTableDensity.css.js.map +1 -1
  233. package/lib/esm/style.css +1 -1
  234. package/lib/esm/theme/accessibility.css.js +1 -1
  235. package/lib/esm/theme/accessibility.css.js.map +1 -1
  236. package/lib/esm/theme/index.js +12 -10
  237. package/lib/esm/theme/sprinkles.css.js +73323 -51658
  238. package/lib/esm/theme/sprinkles.css.js.map +1 -1
  239. package/lib/esm/theme/styleRecipes.css.js +19 -0
  240. package/lib/esm/theme/styleRecipes.css.js.map +1 -0
  241. package/lib/esm/theme/theme-dark.css.js.map +1 -1
  242. package/lib/esm/theme/theme-light.css.js +23 -2
  243. package/lib/esm/theme/theme-light.css.js.map +1 -1
  244. package/lib/esm/theme/theme.css.js +23 -2
  245. package/lib/esm/theme/themeContract.js +23 -2
  246. package/lib/esm/theme/themeContract.js.map +1 -1
  247. package/lib/types/atomic/atoms/button/button.css.d.ts.map +1 -1
  248. package/lib/types/atomic/atoms/checkbox/checkbox.css.d.ts.map +1 -1
  249. package/lib/types/atomic/atoms/input/input.css.d.ts.map +1 -1
  250. package/lib/types/atomic/atoms/modal/modal.css.d.ts.map +1 -1
  251. package/lib/types/atomic/atoms/textarea/textarea.css.d.ts.map +1 -1
  252. package/lib/types/atomic/molecules/markdown/components/MarkdownCodeCopyButton.css.d.ts.map +1 -1
  253. package/lib/types/atomic/molecules/toast/toast.css.d.ts.map +1 -1
  254. package/lib/types/backoffice/atoms/tag/tag.css.d.ts.map +1 -1
  255. package/lib/types/backoffice/molecules/backoffice_filter_drawer/backofficeFilterDrawer.css.d.ts.map +1 -1
  256. package/lib/types/backoffice/molecules/backoffice_load_more/backofficeLoadMore.css.d.ts.map +1 -1
  257. package/lib/types/backoffice/molecules/backoffice_relations_menu/backofficeRelationsMenu.css.d.ts.map +1 -1
  258. package/lib/types/backoffice/molecules/backoffice_table_toolbar/backofficeTableToolbar.css.d.ts.map +1 -1
  259. package/lib/types/backoffice/molecules/backoffice_tabs/backofficeTabs.css.d.ts.map +1 -1
  260. package/lib/types/backoffice/molecules/filter_chip_row/filterChipRow.css.d.ts.map +1 -1
  261. package/lib/types/backoffice/molecules/global_search_input/globalSearchInput.css.d.ts.map +1 -1
  262. package/lib/types/backoffice/molecules/inline_banner/inlineBanner.css.d.ts.map +1 -1
  263. package/lib/types/backoffice/molecules/sidebar_collapse_toggle/sidebarCollapseToggle.css.d.ts.map +1 -1
  264. package/lib/types/backoffice/molecules/sidebar_nav_item/sidebarNavItem.css.d.ts.map +1 -1
  265. package/lib/types/backoffice/molecules/sidebar_nav_section/sidebarNavSection.css.d.ts.map +1 -1
  266. package/lib/types/backoffice/templates/detail_page_template/detailPageTemplate.css.d.ts.map +1 -1
  267. package/lib/types/backoffice/templates/list_page_template/listPageTemplate.css.d.ts.map +1 -1
  268. package/lib/types/components/dashboard/dashboard_grid/DashboardGrid.css.d.ts.map +1 -1
  269. package/lib/types/components/dashboard/section_nav/SectionNav.css.d.ts.map +1 -1
  270. package/lib/types/components/dashboard/segmented_nav/SegmentedNav.css.d.ts.map +1 -1
  271. package/lib/types/components/dashboard/selectable_card/SelectableCard.css.d.ts.map +1 -1
  272. package/lib/types/components/select/SimpleSelect.css.d.ts.map +1 -1
  273. package/lib/types/components/tile/InfoTile.css.d.ts.map +1 -1
  274. package/lib/types/shared/backofficeTableDensity.css.d.ts.map +1 -1
  275. package/lib/types/theme/index.d.ts +2 -0
  276. package/lib/types/theme/index.d.ts.map +1 -1
  277. package/lib/types/theme/sprinkles.css.d.ts +684 -60
  278. package/lib/types/theme/sprinkles.css.d.ts.map +1 -1
  279. package/lib/types/theme/styleRecipes.css.d.ts +29 -0
  280. package/lib/types/theme/styleRecipes.css.d.ts.map +1 -0
  281. package/lib/types/theme/theme-dark.css.d.ts.map +1 -1
  282. package/lib/types/theme/theme-light.css.d.ts +21 -0
  283. package/lib/types/theme/theme-light.css.d.ts.map +1 -1
  284. package/lib/types/theme/themeContract.d.ts +21 -0
  285. package/lib/types/theme/themeContract.d.ts.map +1 -1
  286. package/package.json +2 -2
@@ -28,7 +28,7 @@ var i = ({ enabled: i, hasNext: a, isLoading: o, onTrigger: s, thresholdPx: c =
28
28
  className: e,
29
29
  "aria-hidden": "true",
30
30
  children: o && /* @__PURE__ */ r("span", {
31
- className: "_14q3b2q1 txvbqb8y txvbqbva1",
31
+ className: "_14q3b2q1 txvbqb9j txvbqb19cb",
32
32
  children: l
33
33
  })
34
34
  });
@@ -1,7 +1,7 @@
1
1
  /* empty css */
2
2
  /* empty css */
3
3
  //#region src/components/infinite/infiniteScrollTrigger.css.ts
4
- var e = "_14q3b2q0 txvbqbp6g txvbqbly7 txvbqbu7g txvbqb9ip txvbqbdoy", t = "_14q3b2q1 txvbqb8y txvbqbva1";
4
+ var e = "_14q3b2q0 txvbqb10jb txvbqbvve txvbqb17w0 txvbqbdr8 txvbqbjtp", t = "_14q3b2q1 txvbqb9j txvbqb19cb";
5
5
  //#endregion
6
6
  export { t as loadingText, e as trigger };
7
7
 
@@ -1,7 +1,7 @@
1
1
  /* empty css */
2
2
  /* empty css */
3
3
  //#region src/components/layout/ActionPanel.css.ts
4
- var e = "_13wai4x0 txvbqb9ip txvbqbai7 txvbqbaog", t = "_13wai4x1 txvbqb9ip txvbqbai7 txvbqbany", n = "_13wai4x2 txvbqbfcp txvbqb8y txvbqbamp txvbqbv9z", r = "_13wai4x3 txvbqbfcp txvbqb8y txvbqbva1", i = "_13wai4x4 txvbqb9ip txvbqbai7 txvbqbaog", a = "_13wai4x5 txvbqb9ip txvbqbajy txvbqbao7", o = "_13wai4x6 txvbqb8y txvbqbva1";
4
+ var e = "_13wai4x0 txvbqbdr8 txvbqbf6i txvbqbffj", t = "_13wai4x1 txvbqbdr8 txvbqbf6i txvbqbfet", n = "_13wai4x2 txvbqbm9g txvbqb9j txvbqbfd0 txvbqb19c9", r = "_13wai4x3 txvbqbm9g txvbqb9j txvbqb19cb", i = "_13wai4x4 txvbqbdr8 txvbqbf6i txvbqbffj", a = "_13wai4x5 txvbqbdr8 txvbqbf91 txvbqbff6", o = "_13wai4x6 txvbqb9j txvbqb19cb";
5
5
  //#endregion
6
6
  export { a as actions, i as content, r as description, o as feedback, t as header, e as root, n as title };
7
7
 
@@ -14,7 +14,7 @@ var c = ({ actions: c, children: l, className: u, description: d, feedback: f, t
14
14
  className: a,
15
15
  children: p
16
16
  }), d != null && /* @__PURE__ */ o("div", {
17
- className: "_13wai4x3 txvbqbfcp txvbqb8y txvbqbva1",
17
+ className: "_13wai4x3 txvbqbm9g txvbqb9j txvbqb19cb",
18
18
  children: d
19
19
  })]
20
20
  }),
@@ -23,11 +23,11 @@ var c = ({ actions: c, children: l, className: u, description: d, feedback: f, t
23
23
  children: l
24
24
  }),
25
25
  c != null && /* @__PURE__ */ o("div", {
26
- className: "_13wai4x5 txvbqb9ip txvbqbajy txvbqbao7",
26
+ className: "_13wai4x5 txvbqbdr8 txvbqbf91 txvbqbff6",
27
27
  children: c
28
28
  }),
29
29
  f != null && /* @__PURE__ */ o("div", {
30
- className: e("_13wai4x6 txvbqb8y txvbqbva1"),
30
+ className: e("_13wai4x6 txvbqb9j txvbqb19cb"),
31
31
  children: f
32
32
  })
33
33
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"ActionPanel.js","names":[],"sources":["../../../../src/components/layout/ActionPanel.tsx"],"sourcesContent":["import { type JSX, type ReactNode } from 'react';\n\nimport { cx } from '../../theme/tools.js';\nimport { PanelShell } from './PanelShell.js';\nimport * as styles from './ActionPanel.css.js';\n\nexport type ActionPanelProps = {\n title: ReactNode;\n description?: ReactNode;\n children: ReactNode;\n actions?: ReactNode;\n feedback?: ReactNode;\n className?: string;\n};\n\nexport const ActionPanel = ({\n actions,\n children,\n className,\n description,\n feedback,\n title,\n}: ActionPanelProps): JSX.Element => {\n return (\n <PanelShell className={className}>\n <div className={styles.root}>\n <div className={styles.header}>\n <h3 className={styles.title}>{title}</h3>\n {description != null && (\n <div className={styles.description}>{description}</div>\n )}\n </div>\n <div className={styles.content}>{children}</div>\n {actions != null && <div className={styles.actions}>{actions}</div>}\n {feedback != null && (\n <div className={cx(styles.feedback)}>{feedback}</div>\n )}\n </div>\n </PanelShell>\n );\n};\n\nexport default ActionPanel;\n"],"mappings":";;;;;AAeA,IAAa,KAAe,EAC1B,SAAA,GACA,aACA,cACA,aAAA,GACA,UAAA,GACA,OAAA,QAGE,kBAAC,GAAD;CAAuB;WACrB,kBAAC,OAAD;EAAK,WAAW;YAAhB;GACE,kBAAC,OAAD;IAAK,WAAW;cAAhB,CACE,kBAAC,MAAD;KAAI,WAAW;eAAe;KAAW,CAAA,EACxC,KAAe,QACd,kBAAC,OAAD;KAAK,WAAW;eAAqB;KAAkB,CAAA,CAErD;;GACN,kBAAC,OAAD;IAAK,WAAW;IAAiB;IAAe,CAAA;GAC/C,KAAW,QAAQ,kBAAC,OAAD;IAAK,WAAW;cAAiB;IAAc,CAAA;GAClE,KAAY,QACX,kBAAC,OAAD;IAAK,WAAW,EAAG,+BAAgB;cAAG;IAAe,CAAA;GAEnD;;CACK,CAAA"}
1
+ {"version":3,"file":"ActionPanel.js","names":[],"sources":["../../../../src/components/layout/ActionPanel.tsx"],"sourcesContent":["import { type JSX, type ReactNode } from 'react';\n\nimport { cx } from '../../theme/tools.js';\nimport { PanelShell } from './PanelShell.js';\nimport * as styles from './ActionPanel.css.js';\n\nexport type ActionPanelProps = {\n title: ReactNode;\n description?: ReactNode;\n children: ReactNode;\n actions?: ReactNode;\n feedback?: ReactNode;\n className?: string;\n};\n\nexport const ActionPanel = ({\n actions,\n children,\n className,\n description,\n feedback,\n title,\n}: ActionPanelProps): JSX.Element => {\n return (\n <PanelShell className={className}>\n <div className={styles.root}>\n <div className={styles.header}>\n <h3 className={styles.title}>{title}</h3>\n {description != null && (\n <div className={styles.description}>{description}</div>\n )}\n </div>\n <div className={styles.content}>{children}</div>\n {actions != null && <div className={styles.actions}>{actions}</div>}\n {feedback != null && (\n <div className={cx(styles.feedback)}>{feedback}</div>\n )}\n </div>\n </PanelShell>\n );\n};\n\nexport default ActionPanel;\n"],"mappings":";;;;;AAeA,IAAa,KAAe,EAC1B,SAAA,GACA,aACA,cACA,aAAA,GACA,UAAA,GACA,OAAA,QAGE,kBAAC,GAAD;CAAuB;WACrB,kBAAC,OAAD;EAAK,WAAW;YAAhB;GACE,kBAAC,OAAD;IAAK,WAAW;cAAhB,CACE,kBAAC,MAAD;KAAI,WAAW;eAAe;KAAW,CAAA,EACxC,KAAe,QACd,kBAAC,OAAD;KAAK,WAAW;eAAqB;KAAkB,CAAA,CAErD;;GACN,kBAAC,OAAD;IAAK,WAAW;IAAiB;IAAe,CAAA;GAC/C,KAAW,QAAQ,kBAAC,OAAD;IAAK,WAAW;cAAiB;IAAc,CAAA;GAClE,KAAY,QACX,kBAAC,OAAD;IAAK,WAAW,EAAG,gCAAgB;cAAG;IAAe,CAAA;GAEnD;;CACK,CAAA"}
@@ -1,7 +1,7 @@
1
1
  /* empty css */
2
2
  /* empty css */
3
3
  //#region src/components/layout/AppHeader.css.ts
4
- var e = "_1e6xs5y0 txvbqbnwy txvbqbok7 txvbqbp6y txvbqblyp txvbqb9ip txvbqbai7 txvbqbaog txvbqbu7g", t = "_1e6xs5y1 txvbqb9ip txvbqbai7 txvbqbai0 txvbqbcg txvbqbcr txvbqbdpp txvbqbaop", n = "_1e6xs5y2 txvbqb9ip txvbqbai7 txvbqbb9p txvbqbk5y", r = "_1e6xs5y3 txvbqbfcp txvbqb9y txvbqba9 txvbqbamy txvbqbv9z", i = "_1e6xs5y4 txvbqbfcp txvbqb8y txvbqbva1 txvbqbjay", a = "_1e6xs5y5 txvbqb9ip txvbqbcp txvbqbajy txvbqbao7 txvbqbva1 txvbqb8y", o = "_1e6xs5y6 txvbqb9ip txvbqbcp txvbqbajy txvbqbao7", s = "_1e6xs5y7 txvbqb9ip txvbqbai7 txvbqbao7";
4
+ var e = "_1e6xs5y0 txvbqbypl txvbqbzn6 txvbqb10k1 txvbqbvw4 txvbqbdr8 txvbqbf6i txvbqbffj txvbqb17w0", t = "_1e6xs5y1 txvbqbdr8 txvbqbf6i txvbqbf67 txvbqbel txvbqbf0 txvbqbjus txvbqbffw", n = "_1e6xs5y2 txvbqbdr8 txvbqbf6i txvbqbga8 txvbqbt9i", r = "_1e6xs5y3 txvbqbm9g txvbqbaz txvbqbbe txvbqbfdd txvbqb19c9", i = "_1e6xs5y4 txvbqbm9g txvbqb9j txvbqb19cb txvbqbryx", a = "_1e6xs5y5 txvbqbdr8 txvbqbey txvbqbf91 txvbqbff6 txvbqb19cb txvbqb9j", o = "_1e6xs5y6 txvbqbdr8 txvbqbey txvbqbf91 txvbqbff6", s = "_1e6xs5y7 txvbqbdr8 txvbqbf6i txvbqbff6";
5
5
  //#endregion
6
6
  export { o as actions, n as body, a as meta, s as navStack, e as root, i as subtitle, r as title, t as top };
7
7
 
@@ -14,20 +14,20 @@ var s = ({ actions: s, className: c, meta: l, primaryNav: u, secondaryNav: d, su
14
14
  children: p
15
15
  }),
16
16
  f != null && /* @__PURE__ */ a("div", {
17
- className: "_1e6xs5y4 txvbqbfcp txvbqb8y txvbqbva1 txvbqbjay",
17
+ className: "_1e6xs5y4 txvbqbm9g txvbqb9j txvbqb19cb txvbqbryx",
18
18
  children: f
19
19
  }),
20
20
  l != null && /* @__PURE__ */ a("div", {
21
- className: "_1e6xs5y5 txvbqb9ip txvbqbcp txvbqbajy txvbqbao7 txvbqbva1 txvbqb8y",
21
+ className: "_1e6xs5y5 txvbqbdr8 txvbqbey txvbqbf91 txvbqbff6 txvbqb19cb txvbqb9j",
22
22
  children: l
23
23
  })
24
24
  ]
25
25
  }), s != null && /* @__PURE__ */ a("div", {
26
- className: "_1e6xs5y6 txvbqb9ip txvbqbcp txvbqbajy txvbqbao7",
26
+ className: "_1e6xs5y6 txvbqbdr8 txvbqbey txvbqbf91 txvbqbff6",
27
27
  children: s
28
28
  })]
29
29
  }), (u != null || d != null) && /* @__PURE__ */ o("div", {
30
- className: "_1e6xs5y7 txvbqb9ip txvbqbai7 txvbqbao7",
30
+ className: "_1e6xs5y7 txvbqbdr8 txvbqbf6i txvbqbff6",
31
31
  children: [u, d]
32
32
  })]
33
33
  });
@@ -1,7 +1,7 @@
1
1
  /* empty css */
2
2
  /* empty css */
3
3
  //#region src/components/layout/ContentLayout.css.ts
4
- var e = "_17ichq70 txvbqbu7g txvbqb9ip txvbqbdpg", t = "_17ichq71 txvbqbu7g txvbqb9ip txvbqbai7 txvbqbap7", n = "_17ichq72 txvbqb9ip txvbqbajy txvbqbaop txvbqbcg txvbqbdpp", r = "_17ichq73 txvbqb9ip txvbqbai7 txvbqbany txvbqbk5y", i = "_17ichq74 txvbqb9y txvbqbf87 txvbqbamp txvbqbv9z txvbqbfcp", a = "_17ichq75 txvbqb97 txvbqbva1 txvbqbfcp", o = "_17ichq76 txvbqb9ip txvbqbcp txvbqbajy txvbqbao7", s = "_17ichq77 txvbqb9ip txvbqbajy txvbqbao7 txvbqbdp7", c = "_17ichq78 txvbqb9jg", l = "_17ichq79 txvbqb9ip txvbqbai7 txvbqbap7", u = "_17ichq7a txvbqbptp txvbqbdqg txvbqb83p txvbqbu7g txvbqb9ip txvbqbdoy txvbqb2k txvbqbn97", d = "_17ichq7b txvbqb2l";
4
+ var e = "_17ichq70 txvbqb17w0 txvbqbdr8 txvbqbjuf", t = "_17ichq71 txvbqb17w0 txvbqbdr8 txvbqbf6i txvbqbfgm", n = "_17ichq72 txvbqbdr8 txvbqbf91 txvbqbffw txvbqbel txvbqbjus", r = "_17ichq73 txvbqbdr8 txvbqbf6i txvbqbfet txvbqbt9i", i = "_17ichq74 txvbqbaz txvbqbm2y txvbqbfd0 txvbqb19c9 txvbqbm9g", a = "_17ichq75 txvbqb9w txvbqb19cb txvbqbm9g", o = "_17ichq76 txvbqbdr8 txvbqbey txvbqbf91 txvbqbff6", s = "_17ichq77 txvbqbdr8 txvbqbf91 txvbqbff6 txvbqbju2", c = "_17ichq78 txvbqbdsb", l = "_17ichq79 txvbqbdr8 txvbqbf6i txvbqbfgm", u = "_17ichq7a txvbqb11k5 txvbqbjxb txvbqbbnr txvbqb17w0 txvbqbdr8 txvbqbjtp txvbqb2o txvbqbxra", d = "_17ichq7b txvbqb2p";
5
5
  //#endregion
6
6
  export { s as actionCluster, c as actionClusterItem, l as body, u as bottomFloatArea, d as bottomFloatContent, n as header, r as headingGroup, t as inner, o as metaRow, e as section, a as subheader, i as title };
7
7
 
@@ -47,9 +47,9 @@ var p = 320, m = 48, h = (e, t) => e == null ? null : d(typeof e == "string" ||
47
47
  children: [/* @__PURE__ */ f("div", {
48
48
  className: e(o, y?.inner, S),
49
49
  children: [(D != null || E != null || w != null || A) && /* @__PURE__ */ f("div", {
50
- className: e("_17ichq72 txvbqb9ip txvbqbajy txvbqbaop txvbqbcg txvbqbdpp", y?.header),
50
+ className: e("_17ichq72 txvbqbdr8 txvbqbf91 txvbqbffw txvbqbel txvbqbjus", y?.header),
51
51
  children: [/* @__PURE__ */ f("div", {
52
- className: e("_17ichq73 txvbqb9ip txvbqbai7 txvbqbany txvbqbk5y", y?.headingGroup),
52
+ className: e("_17ichq73 txvbqbdr8 txvbqbf6i txvbqbfet txvbqbt9i", y?.headingGroup),
53
53
  children: [
54
54
  h(D, P),
55
55
  g(E, F),
@@ -1,7 +1,7 @@
1
1
  /* empty css */
2
2
  /* empty css */
3
3
  //#region src/components/layout/DetailSummaryHeader.css.ts
4
- var e = "_1baunl10 txvbqb9ip txvbqbai7 txvbqbai0 txvbqbdpp txvbqbcg txvbqbcr txvbqbaog", t = "_1baunl11 txvbqb9ip txvbqbai7 txvbqbany txvbqbk5y", n = "_1baunl12 txvbqbfcp txvbqb9g txvbqbamp txvbqbv9z", r = "_1baunl13 txvbqbfcp txvbqb8y txvbqbva1", i = "_1baunl14 txvbqb9ip txvbqbajy txvbqbcp txvbqbao7 txvbqb8y txvbqbva1", a = "_1baunl15 txvbqb9ip txvbqbajy txvbqbcp txvbqbao7";
4
+ var e = "_1baunl10 txvbqbdr8 txvbqbf6i txvbqbf67 txvbqbjus txvbqbel txvbqbf0 txvbqbffj", t = "_1baunl11 txvbqbdr8 txvbqbf6i txvbqbfet txvbqbt9i", n = "_1baunl12 txvbqbm9g txvbqba9 txvbqbfd0 txvbqb19c9", r = "_1baunl13 txvbqbm9g txvbqb9j txvbqb19cb", i = "_1baunl14 txvbqbdr8 txvbqbf91 txvbqbey txvbqbff6 txvbqb9j txvbqb19cb", a = "_1baunl15 txvbqbdr8 txvbqbf91 txvbqbey txvbqbff6";
5
5
  //#endregion
6
6
  export { a as actions, t as body, i as meta, e as root, r as subtitle, n as title };
7
7
 
@@ -12,16 +12,16 @@ var o = ({ actions: o, className: s, meta: c, subtitle: l, title: u }) => /* @__
12
12
  children: u
13
13
  }),
14
14
  l != null && /* @__PURE__ */ i("div", {
15
- className: "_1baunl13 txvbqbfcp txvbqb8y txvbqbva1",
15
+ className: "_1baunl13 txvbqbm9g txvbqb9j txvbqb19cb",
16
16
  children: l
17
17
  }),
18
18
  c != null && /* @__PURE__ */ i("div", {
19
- className: "_1baunl14 txvbqb9ip txvbqbajy txvbqbcp txvbqbao7 txvbqb8y txvbqbva1",
19
+ className: "_1baunl14 txvbqbdr8 txvbqbf91 txvbqbey txvbqbff6 txvbqb9j txvbqb19cb",
20
20
  children: c
21
21
  })
22
22
  ]
23
23
  }), o != null && /* @__PURE__ */ i("div", {
24
- className: "_1baunl15 txvbqb9ip txvbqbajy txvbqbcp txvbqbao7",
24
+ className: "_1baunl15 txvbqbdr8 txvbqbf91 txvbqbey txvbqbff6",
25
25
  children: o
26
26
  })]
27
27
  });
@@ -2,12 +2,12 @@
2
2
  /* empty css */
3
3
  import { createRuntimeFn as e } from "@vanilla-extract/recipes/createRuntimeFn";
4
4
  //#region src/components/layout/PageShell.css.ts
5
- var t = "_1kley2d0 txvbqb9ip txvbqbu7g txvbqbv49 txvbqbv07", n = "_1kley2d1 txvbqbnvy txvbqboj7 txvbqbp6g txvbqbly7 txvbqbcx7 txvbqbcge txvbqb9my txvbqbk5y", r = "_1kley2d2 txvbqbcx7 txvbqbjh7 txvbqbl7g", i = "_1kley2d3 txvbqb9ip txvbqbc7 txvbqbanp txvbqbaon txvbqbk5y txvbqbahy txvbqbaie txvbqbcgg txvbqbcge", a = "_1kley2d4 txvbqbpty txvbqbt7y txvbqbcx7 txvbqbaj7 txvbqb9ip txvbqbl7g", o = "_1kley2d5", s = "_1kley2d6", c = "_1kley2d8 _1kley2d7 txvbqb9ip txvbqbcgg", l = "_1kley2d9", u = "_1kley2da", d = "_1kley2db txvbqb9hy txvbqb9jn txvbqbcp txvbqbdoy txvbqbtyp txvbqbc7p txvbqb1rp txvbqb1qg txvbqb1cp txvbqbwg txvbqbv41 txvbqbv9z txvbqbv txvbqbaj7", f = "_1kley2dd _1kley2dc txvbqb9jg txvbqb9i5 txvbqbcp txvbqbdoy txvbqbtyp txvbqbc7p txvbqb1rp txvbqb1qg txvbqb1cp txvbqbwg txvbqbv41 txvbqbv9z txvbqbv txvbqbaj7 txvbqb77 txvbqb6x txvbqb7k", p = "_1kley2de txvbqb9hy txvbqb9jn txvbqbpu7 txvbqbpte txvbqbpug txvbqbpve txvbqbt7y txvbqbt8w txvbqbuwg txvbqbcp txvbqbdoy txvbqbtyp txvbqbc7p txvbqb1rp txvbqb1qg txvbqb1cp txvbqbwg txvbqbv41 txvbqbv9z txvbqbv", m = "_1kley2df txvbqb9my txvbqbcgg txvbqbk5y txvbqbjh7 txvbqb9ip txvbqbai7 txvbqbv41 txvbqbl7g txvbqb1rp txvbqb1cp txvbqb1qg txvbqbwp txvbqb8qy", h = "_1kley2dg txvbqbjh7 txvbqbl7g", g = "_1kley2dh txvbqbcgg txvbqbcge", _ = "_1kley2di txvbqb9ip txvbqbai7 txvbqbjh7 txvbqbcgg txvbqbcge", v = "_1kley2dj txvbqb9np txvbqbv41 txvbqb1ry txvbqb1cp txvbqb1qg txvbqbwp", y = "_1kley2dk", b = "_1kley2dm _1kley2dl txvbqbeg txvbqbv0t txvbqbb txvbqb9np txvbqbk6y txvbqbptg txvbqbtx7", x = "_1kley2dn txvbqb9i7 txvbqb9i5", S = "_1kley2do txvbqbpty txvbqbt7y txvbqbuvp txvbqb9ip txvbqbai7 txvbqbaog txvbqbv41 txvbqb12g txvbqb1qg txvbqb62p txvbqb3ny txvbqbnwp txvbqbojy txvbqbly7 txvbqbp6p", C = "_1kley2dp txvbqb9ip txvbqbajy txvbqbcg txvbqbdpp txvbqbaop txvbqbu7g", w = "_1kley2dq txvbqb9ip txvbqbcp txvbqbaog txvbqb9my txvbqbk5y", T = "_1kley2dr txvbqb9ip txvbqbai7 txvbqbao7 txvbqbk5y", E = "_1kley2ds txvbqb9ip txvbqbajy txvbqbcp txvbqb8v7 txvbqbqhy txvbqbfby txvbqbfcp txvbqblag txvbqbva1 txvbqb8p", D = "_1kley2dt txvbqb9ip txvbqbcp txvbqbany txvbqbjd7", O = "_1kley2dv _1kley2du txvbqbv9z txvbqb3b txvbqbamg txvbqbl7g txvbqbt7g txvbqbuxg", k = "_1kley2dw txvbqbv9z txvbqbamp txvbqbl7g txvbqbt7g txvbqbuxg", A = "_1kley2dx txvbqbvab txvbqb8p", j = "_1kley2dy txvbqb9ip txvbqbajy txvbqbao7 txvbqbdp7", M = "_1kley2dz txvbqb9jg", N = "_1kley2d10 txvbqbu7g txvbqb9ip txvbqbajy txvbqbao7", P = e({
6
- defaultClassName: "_1kley2d15 _1kley2d12 _1kley2d11 txvbqbcp txvbqbv45 txvbqb1rp txvbqbva1 txvbqb9jg txvbqb8y txvbqbamg txvbqbn6y txvbqbn8y txvbqb3b txvbqb77 txvbqb6x txvbqb7k",
5
+ var t = "_1kley2d0 txvbqbdr8 txvbqb17w0 txvbqb196j txvbqb191j", n = "_1kley2d1 txvbqbyo5 txvbqbzlq txvbqb10jb txvbqbvve txvbqbipm txvbqbi1c txvbqbdxd txvbqbt9i", r = "_1kley2d2 txvbqbipm txvbqbs9r txvbqbusr", i = "_1kley2d3 txvbqbdr8 txvbqbe8 txvbqbfeg txvbqbfft txvbqbt9i txvbqbf65 txvbqbf6s txvbqbi1f txvbqbi1c", a = "_1kley2d4 txvbqb11ki txvbqb16gq txvbqbipm txvbqbf7y txvbqbdr8 txvbqbusr", o = "_1kley2d5", s = "_1kley2d6", c = "_1kley2d8 _1kley2d7 txvbqbdr8 txvbqbi1f", l = "_1kley2d9", u = "_1kley2da", d = "_1kley2db txvbqbdq5 txvbqbdsl txvbqbey txvbqbjtp txvbqb17jd txvbqbhos txvbqb2gm txvbqb2et txvbqb1uy txvbqb17h txvbqb196b txvbqb19c9 txvbqbv txvbqbf7y", f = "_1kley2dd _1kley2dc txvbqbdsb txvbqbdqf txvbqbey txvbqbjtp txvbqb17jd txvbqbhos txvbqb2gm txvbqb2et txvbqb1uy txvbqb17h txvbqb196b txvbqb19c9 txvbqbv txvbqbf7y txvbqb7g txvbqb76 txvbqb7t", p = "_1kley2de txvbqbdq5 txvbqbdsl txvbqb11kv txvbqb11jp txvbqb11l8 txvbqb11ml txvbqb16gq txvbqb16i3 txvbqb18w4 txvbqbey txvbqbjtp txvbqb17jd txvbqbhos txvbqb2gm txvbqb2et txvbqb1uy txvbqb17h txvbqb196b txvbqb19c9 txvbqbv", m = "_1kley2df txvbqbdxd txvbqbi1f txvbqbt9i txvbqbs9r txvbqbdr8 txvbqbf6i txvbqb196b txvbqbusr txvbqb2gm txvbqb1uy txvbqb2et txvbqb17u txvbqbclc", h = "_1kley2dg txvbqbs9r txvbqbusr", g = "_1kley2dh txvbqbi1f txvbqbi1c", _ = "_1kley2di txvbqbdr8 txvbqbf6i txvbqbs9r txvbqbi1f txvbqbi1c", v = "_1kley2dj txvbqbdyg txvbqb196b txvbqb2gz txvbqb1uy txvbqb2et txvbqb17u", y = "_1kley2dk", b = "_1kley2dm _1kley2dl txvbqbhh txvbqb1933 txvbqbb txvbqbdyg txvbqbtay txvbqb11js txvbqb17h7", x = "_1kley2dn txvbqbdqi txvbqbdqf", S = "_1kley2do txvbqb11ki txvbqb16gq txvbqb18v1 txvbqbdr8 txvbqbf6i txvbqbffj txvbqb196b txvbqb1g5 txvbqb2et txvbqb8oi txvbqb577 txvbqbyp8 txvbqbzmt txvbqbvve txvbqb10jo", C = "_1kley2dp txvbqbdr8 txvbqbf91 txvbqbel txvbqbjus txvbqbffw txvbqb17w0", w = "_1kley2dq txvbqbdr8 txvbqbey txvbqbffj txvbqbdxd txvbqbt9i", T = "_1kley2dr txvbqbdr8 txvbqbf6i txvbqbff6 txvbqbt9i", E = "_1kley2ds txvbqbdr8 txvbqbf91 txvbqbey txvbqbcta txvbqb12j6 txvbqbm8d txvbqbm9g txvbqbux3 txvbqb19cb txvbqb96", D = "_1kley2dt txvbqbdr8 txvbqbey txvbqbfet txvbqbs26", O = "_1kley2dv _1kley2du txvbqb19c9 txvbqb3f txvbqbfcn txvbqbusr txvbqb16g0 txvbqb18xk", k = "_1kley2dw txvbqb19c9 txvbqbfd0 txvbqbusr txvbqb16g0 txvbqb18xk", A = "_1kley2dx txvbqb19cl txvbqb96", j = "_1kley2dy txvbqbdr8 txvbqbf91 txvbqbff6 txvbqbju2", M = "_1kley2dz txvbqbdsb", N = "_1kley2d10 txvbqb17w0 txvbqbdr8 txvbqbf91 txvbqbff6", P = e({
6
+ defaultClassName: "_1kley2d15 _1kley2d12 _1kley2d11 txvbqbey txvbqb196f txvbqb2gm txvbqb19cb txvbqbdsb txvbqb9j txvbqbfcn txvbqbxo1 txvbqbxqx txvbqb3f txvbqb7g txvbqb76 txvbqb7t",
7
7
  variantClassNames: {
8
8
  state: {
9
9
  default: "_1kley2d16",
10
- active: "_1kley2d17 _1kley2d13 txvbqbv2z txvbqbv6f txvbqb8pg"
10
+ active: "_1kley2d17 _1kley2d13 txvbqb1959 txvbqb198p txvbqbcj6"
11
11
  },
12
12
  mode: {
13
13
  link: "_1kley2d18",
@@ -19,7 +19,7 @@ var t = "_1kley2d0 txvbqb9ip txvbqbu7g txvbqbv49 txvbqbv07", n = "_1kley2d1 txvb
19
19
  mode: "link"
20
20
  },
21
21
  compoundVariants: []
22
- }), F = "_1kley2d1a txvbqb9my txvbqbjh7 txvbqb9ip txvbqbai7 txvbqbl77 txvbqblbg txvbqblbe", I = "_1kley2d1b txvbqbl7g txvbqbjh7";
22
+ }), F = "_1kley2d1a txvbqbdxd txvbqbs9r txvbqbdr8 txvbqbf6i txvbqbuse txvbqbuyj txvbqbuyg", I = "_1kley2d1b txvbqbusr txvbqbs9r";
23
23
  //#endregion
24
24
  export { j as actionGroup, k as breadcrumbCurrent, D as breadcrumbItem, O as breadcrumbLink, E as breadcrumbList, T as breadcrumbNav, A as breadcrumbSeparator, F as content, I as contentContained, f as desktopSidebarToggle, S as header, w as headerLeading, C as headerRow, m as mainColumn, h as mainColumnContained, g as mainColumnWithSidePanel, l as mobileSidebarBackdrop, u as mobileSidebarBackdropOpen, p as mobileSidebarClose, d as mobileSidebarToggle, n as page, r as pageContained, i as pageWithSidePanel, M as secondaryAction, t as shell, _ as sidePanel, y as sidePanelResizable, b as sidePanelResizer, x as sidePanelResizerHiddenOnMobile, v as sidePanelSurface, a as sidebarColumn, o as sidebarColumnMobile, s as sidebarColumnMobileOpen, c as sidebarInner, P as tabRecipe, N as tabsRow };
25
25
 
@@ -261,13 +261,13 @@ var Se = 520, v = 360, y = .5, b = 480, Ce = 1024, x = "plumile:page-shell:side-
261
261
  }),
262
262
  Be && /* @__PURE__ */ g("div", {
263
263
  ref: L,
264
- className: e("_1kley2d4 txvbqbpty txvbqbt7y txvbqbcx7 txvbqbaj7 txvbqb9ip txvbqbl7g", "_1kley2d5", { _1kley2d6: K && q }),
264
+ className: e("_1kley2d4 txvbqb11ki txvbqb16gq txvbqbipm txvbqbf7y txvbqbdr8 txvbqbusr", "_1kley2d5", { _1kley2d6: K && q }),
265
265
  "aria-hidden": K && !q,
266
266
  inert: K && !q,
267
267
  children: [/* @__PURE__ */ h("button", {
268
268
  ref: z,
269
269
  type: "button",
270
- className: "_1kley2de txvbqb9hy txvbqb9jn txvbqbpu7 txvbqbpte txvbqbpug txvbqbpve txvbqbt7y txvbqbt8w txvbqbuwg txvbqbcp txvbqbdoy txvbqbtyp txvbqbc7p txvbqb1rp txvbqb1qg txvbqb1cp txvbqbwg txvbqbv41 txvbqbv9z txvbqbv",
270
+ className: "_1kley2de txvbqbdq5 txvbqbdsl txvbqb11kv txvbqb11jp txvbqb11l8 txvbqb11ml txvbqb16gq txvbqb16i3 txvbqb18w4 txvbqbey txvbqbjtp txvbqb17jd txvbqbhos txvbqb2gm txvbqb2et txvbqb1uy txvbqb17h txvbqb196b txvbqb19c9 txvbqbv",
271
271
  onClick: Y,
272
272
  "aria-label": M("navigation.pageShell.closeNavigation"),
273
273
  children: /* @__PURE__ */ h(n, {
@@ -276,7 +276,7 @@ var Se = 520, v = 360, y = .5, b = 480, Ce = 1024, x = "plumile:page-shell:side-
276
276
  "aria-hidden": "true"
277
277
  })
278
278
  }), /* @__PURE__ */ h("div", {
279
- className: "_1kley2d8 _1kley2d7 txvbqb9ip txvbqbcgg",
279
+ className: "_1kley2d8 _1kley2d7 txvbqbdr8 txvbqbi1f",
280
280
  children: ze
281
281
  })]
282
282
  }),
@@ -303,7 +303,7 @@ var Se = 520, v = 360, y = .5, b = 480, Ce = 1024, x = "plumile:page-shell:side-
303
303
  children: [
304
304
  !K && !O && /* @__PURE__ */ h("button", {
305
305
  type: "button",
306
- className: "_1kley2dd _1kley2dc txvbqb9jg txvbqb9i5 txvbqbcp txvbqbdoy txvbqbtyp txvbqbc7p txvbqb1rp txvbqb1qg txvbqb1cp txvbqbwg txvbqbv41 txvbqbv9z txvbqbv txvbqbaj7 txvbqb77 txvbqb6x txvbqb7k",
306
+ className: "_1kley2dd _1kley2dc txvbqbdsb txvbqbdqf txvbqbey txvbqbjtp txvbqb17jd txvbqbhos txvbqb2gm txvbqb2et txvbqb1uy txvbqb17h txvbqb196b txvbqb19c9 txvbqbv txvbqbf7y txvbqb7g txvbqb76 txvbqb7t",
307
307
  onClick: Oe,
308
308
  "aria-label": $,
309
309
  title: $,
@@ -316,7 +316,7 @@ var Se = 520, v = 360, y = .5, b = 480, Ce = 1024, x = "plumile:page-shell:side-
316
316
  K && /* @__PURE__ */ h("button", {
317
317
  ref: R,
318
318
  type: "button",
319
- className: "_1kley2db txvbqb9hy txvbqb9jn txvbqbcp txvbqbdoy txvbqbtyp txvbqbc7p txvbqb1rp txvbqb1qg txvbqb1cp txvbqbwg txvbqbv41 txvbqbv9z txvbqbv txvbqbaj7",
319
+ className: "_1kley2db txvbqbdq5 txvbqbdsl txvbqbey txvbqbjtp txvbqb17jd txvbqbhos txvbqb2gm txvbqb2et txvbqb1uy txvbqb17h txvbqb196b txvbqb19c9 txvbqbv txvbqbf7y",
320
320
  onClick: Me,
321
321
  "aria-expanded": q,
322
322
  "aria-label": M("navigation.pageShell.openNavigation"),
@@ -1 +1 @@
1
- {"version":3,"file":"PageShell.js","names":[],"sources":["../../../../src/components/layout/PageShell.tsx"],"sourcesContent":["import Link from '@plumile/router/routing/Link.js';\nimport {\n useCallback,\n useEffect,\n useRef,\n useState,\n type JSX,\n type ReactNode,\n type KeyboardEvent,\n type CSSProperties,\n} from 'react';\n\nimport * as styles from './PageShell.css.js';\nimport { MenuSvg } from '../../icons/MenuSvg.js';\nimport { ModalCloseSvg } from '../../icons/ModalCloseSvg.js';\nimport { cx } from '../../theme/tools.js';\nimport { useUiTranslation } from '../../i18n/useUiTranslation.js';\n\nexport type BreadcrumbItem = {\n label: ReactNode;\n href?: string;\n};\n\nexport type PageShellTab = {\n id: string;\n label: ReactNode;\n href?: string;\n isActive?: boolean;\n};\n\nexport type PageShellActions = {\n main?: ReactNode;\n secondary?: ReactNode[];\n};\n\nexport type PageShellContentScrollMode = 'page' | 'contained';\n\nconst DEFAULT_SIDE_PANEL_WIDTH = 520;\nconst MIN_SIDE_PANEL_WIDTH = 360;\nconst MAX_SIDE_PANEL_RATIO = 0.5;\nconst MIN_MAIN_WIDTH = 480;\nconst SPLIT_BREAKPOINT = 1024;\nconst SIDE_PANEL_WIDTH_STORAGE_KEY = 'plumile:page-shell:side-panel-width';\nconst FOCUSABLE_SELECTOR =\n 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\nconst readStoredSidePanelWidth = (): number | null => {\n if (typeof window === 'undefined') {\n return null;\n }\n\n try {\n const stored = window.localStorage.getItem(SIDE_PANEL_WIDTH_STORAGE_KEY);\n if (stored == null) {\n return null;\n }\n const parsed = Number(stored);\n if (!Number.isFinite(parsed) || parsed <= 0) {\n return null;\n }\n return parsed;\n } catch {\n return null;\n }\n};\n\nconst persistSidePanelWidth = (width: number): void => {\n if (typeof window === 'undefined') {\n return;\n }\n\n try {\n window.localStorage.setItem(SIDE_PANEL_WIDTH_STORAGE_KEY, String(width));\n } catch {\n // ignore quota / permission errors\n }\n};\n\nconst resolveMaxSidePanelWidth = (containerWidth: number): number => {\n let viewWidth = containerWidth;\n if (typeof window !== 'undefined') {\n viewWidth = window.innerWidth;\n }\n return viewWidth * MAX_SIDE_PANEL_RATIO;\n};\n\ntype ResizeMoveHandler = (event: MouseEvent | TouchEvent) => void;\ntype ResizeUpHandler = () => void;\ntype ActiveResizeHandlers = {\n move?: ResizeMoveHandler | null;\n up?: ResizeUpHandler | null;\n};\n\ntype Props = {\n sidebar: ReactNode;\n mobileSidebar?: ReactNode;\n desktopSidebarOpen?: boolean;\n onOpenDesktopSidebar?: () => void;\n openDesktopSidebarLabel?: string;\n children: ReactNode;\n breadcrumb?: BreadcrumbItem[];\n breadcrumbSlot?: ReactNode;\n tabs?: PageShellTab[];\n actions?: PageShellActions;\n sidePanel?: ReactNode;\n contentClassName?: string;\n contentScrollMode?: PageShellContentScrollMode;\n};\n\nconst resolveIsActive = (tab: PageShellTab, pathname?: string): boolean => {\n if (typeof tab.isActive === 'boolean') {\n return tab.isActive;\n }\n\n if (tab.href != null && pathname != null) {\n return pathname === tab.href;\n }\n\n return false;\n};\n\nexport const PageShell = ({\n actions,\n breadcrumb,\n breadcrumbSlot,\n children,\n contentClassName,\n contentScrollMode = 'page',\n desktopSidebarOpen = true,\n mobileSidebar,\n onOpenDesktopSidebar,\n openDesktopSidebarLabel,\n sidebar,\n sidePanel,\n tabs,\n}: Props): JSX.Element => {\n const { t } = useUiTranslation();\n const hasSidePanel = sidePanel != null;\n const isContainedScroll = contentScrollMode === 'contained';\n let containedContentClassName: string | null = null;\n if (isContainedScroll) {\n containedContentClassName = styles.contentContained;\n }\n const pageRef = useRef<HTMLDivElement | null>(null);\n const mobileSidebarRef = useRef<HTMLDivElement | null>(null);\n const mobileSidebarToggleRef = useRef<HTMLButtonElement | null>(null);\n const mobileSidebarCloseRef = useRef<HTMLButtonElement | null>(null);\n const mobileSidebarPreviousFocusRef = useRef<HTMLElement | null>(null);\n const activeResizeHandlersRef = useRef<ActiveResizeHandlers | null>(null);\n const [sidePanelWidth, setSidePanelWidth] = useState(() => {\n const stored = readStoredSidePanelWidth();\n return stored ?? DEFAULT_SIDE_PANEL_WIDTH;\n });\n const sidePanelWidthSnapshotRef = useRef(sidePanelWidth);\n const [isResizingPanel, setIsResizingPanel] = useState(false);\n const [isStackedLayout, setIsStackedLayout] = useState(false);\n const [isMobileSidebarOpen, setIsMobileSidebarOpen] = useState(false);\n\n const closeMobileSidebar = useCallback(() => {\n setIsMobileSidebarOpen(false);\n }, []);\n\n const openMobileSidebar = useCallback(() => {\n if (typeof document !== 'undefined') {\n const { activeElement } = document;\n if (activeElement instanceof HTMLElement) {\n mobileSidebarPreviousFocusRef.current = activeElement;\n }\n }\n setIsMobileSidebarOpen(true);\n }, []);\n\n const clampSidePanelWidth = useCallback((candidateWidth: number): void => {\n const container = pageRef.current;\n if (container == null) {\n return;\n }\n\n const { width } = container.getBoundingClientRect();\n const maxWidth = Math.max(\n 0,\n Math.min(resolveMaxSidePanelWidth(width), width - MIN_MAIN_WIDTH),\n );\n const minWidth = Math.min(MIN_SIDE_PANEL_WIDTH, maxWidth);\n let safeMin = minWidth;\n if (maxWidth <= 0) {\n safeMin = 0;\n }\n const safeMax = Math.max(safeMin, maxWidth);\n const clampedWidth = Math.max(safeMin, Math.min(candidateWidth, safeMax));\n sidePanelWidthSnapshotRef.current = clampedWidth;\n setSidePanelWidth(clampedWidth);\n }, []);\n\n const startResizing = useCallback(\n (startClientX: number): void => {\n if (typeof window === 'undefined') {\n return;\n }\n\n if (!hasSidePanel || isStackedLayout) {\n return;\n }\n\n const container = pageRef.current;\n if (container == null) {\n return;\n }\n\n const rect = container.getBoundingClientRect();\n const currentWidth = sidePanelWidth;\n setIsResizingPanel(true);\n\n const moveHandler: ResizeMoveHandler = (event) => {\n let clientX = 0;\n if ('touches' in event) {\n const touch = event.touches[0];\n if (touch == null) {\n return;\n }\n clientX = touch.clientX;\n } else {\n clientX = event.clientX;\n }\n\n const deltaX = startClientX - clientX;\n const nextWidth = currentWidth + deltaX;\n\n const maxWidth = Math.max(\n 0,\n Math.min(\n resolveMaxSidePanelWidth(rect.width),\n rect.width - MIN_MAIN_WIDTH,\n ),\n );\n const minWidth = Math.min(MIN_SIDE_PANEL_WIDTH, maxWidth);\n let safeMin = minWidth;\n if (maxWidth <= 0) {\n safeMin = 0;\n }\n const safeMax = Math.max(safeMin, maxWidth);\n\n const clampedWidth = Math.max(safeMin, Math.min(nextWidth, safeMax));\n sidePanelWidthSnapshotRef.current = clampedWidth;\n setSidePanelWidth(clampedWidth);\n };\n\n const upHandler: ResizeUpHandler = () => {\n setIsResizingPanel(false);\n persistSidePanelWidth(sidePanelWidthSnapshotRef.current);\n const handlers = activeResizeHandlersRef.current;\n if (handlers?.move != null) {\n window.removeEventListener('mousemove', handlers.move);\n window.removeEventListener('touchmove', handlers.move);\n }\n if (handlers?.up != null) {\n window.removeEventListener('mouseup', handlers.up);\n window.removeEventListener('touchend', handlers.up);\n window.removeEventListener('touchcancel', handlers.up);\n }\n activeResizeHandlersRef.current = null;\n };\n\n activeResizeHandlersRef.current = { move: moveHandler, up: upHandler };\n\n window.addEventListener('mousemove', moveHandler);\n window.addEventListener('touchmove', moveHandler, { passive: false });\n window.addEventListener('mouseup', upHandler);\n window.addEventListener('touchend', upHandler);\n window.addEventListener('touchcancel', upHandler);\n },\n [hasSidePanel, isStackedLayout, sidePanelWidth],\n );\n\n useEffect(() => {\n sidePanelWidthSnapshotRef.current = sidePanelWidth;\n }, [sidePanelWidth]);\n\n useEffect(() => {\n if (typeof window === 'undefined') {\n return () => {};\n }\n const mediaQuery = window.matchMedia(\n `(max-width: ${SPLIT_BREAKPOINT - 1}px)`,\n );\n const handleMediaChange = () => {\n setIsStackedLayout(mediaQuery.matches);\n };\n\n handleMediaChange();\n mediaQuery.addEventListener('change', handleMediaChange);\n\n return () => {\n mediaQuery.removeEventListener('change', handleMediaChange);\n };\n }, []);\n\n useEffect(() => {\n if (hasSidePanel) {\n clampSidePanelWidth(sidePanelWidth);\n }\n }, [hasSidePanel, sidePanelWidth, clampSidePanelWidth]);\n\n useEffect(() => {\n if (!isStackedLayout && isMobileSidebarOpen) {\n closeMobileSidebar();\n }\n }, [closeMobileSidebar, isMobileSidebarOpen, isStackedLayout]);\n\n useEffect(() => {\n if (!isMobileSidebarOpen) {\n return () => {};\n }\n\n const handleEscape = (event: globalThis.KeyboardEvent) => {\n if (event.key === 'Escape') {\n closeMobileSidebar();\n return;\n }\n\n if (event.key !== 'Tab') {\n return;\n }\n\n const sidebarElement = mobileSidebarRef.current;\n if (sidebarElement == null) {\n return;\n }\n\n const focusableElements = Array.from(\n sidebarElement.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR),\n ).filter((element) => {\n return (\n element.offsetParent != null || element === document.activeElement\n );\n });\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (firstElement == null || lastElement == null) {\n event.preventDefault();\n return;\n }\n\n if (event.shiftKey && document.activeElement === firstElement) {\n event.preventDefault();\n lastElement.focus();\n return;\n }\n\n if (!event.shiftKey && document.activeElement === lastElement) {\n event.preventDefault();\n firstElement.focus();\n }\n };\n\n const fallbackFocusElement = mobileSidebarToggleRef.current;\n mobileSidebarCloseRef.current?.focus();\n\n window.addEventListener('keydown', handleEscape);\n return () => {\n window.removeEventListener('keydown', handleEscape);\n const previousFocus = mobileSidebarPreviousFocusRef.current;\n if (previousFocus != null && document.contains(previousFocus)) {\n previousFocus.focus();\n } else {\n fallbackFocusElement?.focus();\n }\n mobileSidebarPreviousFocusRef.current = null;\n };\n }, [closeMobileSidebar, isMobileSidebarOpen]);\n\n useEffect(() => {\n return () => {\n const handlers = activeResizeHandlersRef.current;\n if (handlers?.move != null) {\n window.removeEventListener('mousemove', handlers.move);\n window.removeEventListener('touchmove', handlers.move);\n }\n if (handlers?.up != null) {\n window.removeEventListener('mouseup', handlers.up);\n window.removeEventListener('touchend', handlers.up);\n window.removeEventListener('touchcancel', handlers.up);\n }\n };\n }, []);\n\n let currentPath: string | undefined;\n if (typeof window !== 'undefined') {\n currentPath = window.location.pathname;\n }\n\n const renderBreadcrumb = (): JSX.Element | null => {\n if (breadcrumbSlot != null) {\n return <div className={styles.breadcrumbNav}>{breadcrumbSlot}</div>;\n }\n\n if (breadcrumb == null || breadcrumb.length === 0) {\n return null;\n }\n\n const items = breadcrumb.flatMap((item, index) => {\n const isLast = index === breadcrumb.length - 1;\n const key = `${item.href ?? 'crumb'}-${index}`;\n let content: JSX.Element;\n if (item.href != null && !isLast) {\n content = (\n <Link to={item.href} className={styles.breadcrumbLink}>\n {item.label}\n </Link>\n );\n } else {\n let breadcrumbClass = styles.breadcrumbLink;\n if (isLast) {\n breadcrumbClass = styles.breadcrumbCurrent;\n }\n content = <span className={breadcrumbClass}>{item.label}</span>;\n }\n\n const renderedItem = (\n <li key={key} className={styles.breadcrumbItem}>\n {content}\n </li>\n );\n\n if (isLast) {\n return [renderedItem];\n }\n\n return [\n renderedItem,\n <li\n key={`${key}-sep`}\n className={styles.breadcrumbSeparator}\n aria-hidden=\"true\"\n >\n /\n </li>,\n ];\n });\n\n return (\n <nav\n className={styles.breadcrumbNav}\n aria-label={t('navigation.breadcrumb')}\n >\n <ol className={styles.breadcrumbList}>{items}</ol>\n </nav>\n );\n };\n\n const renderActions = (): JSX.Element | null => {\n if (\n actions == null ||\n (actions.main == null && (actions.secondary ?? []).length === 0)\n ) {\n return null;\n }\n\n const secondaryNodes = actions.secondary ?? [];\n\n let mainActionNode: JSX.Element | null = null;\n if (actions.main != null) {\n mainActionNode = (\n <div className={styles.secondaryAction}>{actions.main}</div>\n );\n }\n\n return (\n <div className={styles.actionGroup}>\n {secondaryNodes.map((node, index) => {\n return (\n <div key={`secondary-${index}`} className={styles.secondaryAction}>\n {node}\n </div>\n );\n })}\n {mainActionNode}\n </div>\n );\n };\n\n const renderTabs = (): JSX.Element | null => {\n if (tabs == null || tabs.length === 0) {\n return null;\n }\n\n return (\n <div className={styles.tabsRow}>\n {tabs.map((tab) => {\n const isActive = resolveIsActive(tab, currentPath);\n let tabState: 'default' | 'active' = 'default';\n if (isActive) {\n tabState = 'active';\n }\n let tabMode: 'static' | 'link' = 'link';\n if (tab.href == null) {\n tabMode = 'static';\n }\n const className = styles.tabRecipe({\n state: tabState,\n mode: tabMode,\n });\n const key = tab.id;\n let ariaCurrent: 'page' | undefined;\n if (isActive) {\n ariaCurrent = 'page';\n }\n\n if (tab.href != null) {\n return (\n <Link\n key={key}\n to={tab.href}\n className={className}\n aria-current={ariaCurrent}\n >\n {tab.label}\n </Link>\n );\n }\n\n return (\n <span key={key} className={className} aria-current={ariaCurrent}>\n {tab.label}\n </span>\n );\n })}\n </div>\n );\n };\n\n const handleResizerKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (isStackedLayout) {\n return;\n }\n if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {\n event.preventDefault();\n let delta = 16;\n if (event.key === 'ArrowRight') {\n delta = -16;\n }\n clampSidePanelWidth(sidePanelWidth + delta);\n persistSidePanelWidth(sidePanelWidthSnapshotRef.current);\n }\n },\n [clampSidePanelWidth, isStackedLayout, sidePanelWidth],\n );\n\n let sidePanelNode: JSX.Element | null = null;\n if (hasSidePanel) {\n const sidePanelClasses = [styles.sidePanel, styles.sidePanelSurface];\n let sidePanelStyle: CSSProperties | undefined;\n if (!isStackedLayout) {\n sidePanelClasses.push(styles.sidePanelResizable);\n sidePanelStyle = {\n width: `${sidePanelWidth}px`,\n };\n }\n sidePanelNode = (\n <aside className={cx(...sidePanelClasses)} style={sidePanelStyle}>\n {sidePanel}\n </aside>\n );\n }\n\n let resizerNode: JSX.Element | null = null;\n if (hasSidePanel) {\n let resizerActive = 'false';\n if (isResizingPanel) {\n resizerActive = 'true';\n }\n let resizerMin = MIN_SIDE_PANEL_WIDTH;\n let resizerMax = Math.max(MIN_SIDE_PANEL_WIDTH, sidePanelWidth);\n const pageElement = pageRef.current;\n if (pageElement != null) {\n const { width } = pageElement.getBoundingClientRect();\n const maxWidth = Math.max(\n 0,\n Math.min(resolveMaxSidePanelWidth(width), width - MIN_MAIN_WIDTH),\n );\n resizerMin = Math.min(MIN_SIDE_PANEL_WIDTH, maxWidth);\n if (maxWidth <= 0) {\n resizerMin = 0;\n }\n resizerMax = Math.max(resizerMin, maxWidth);\n }\n resizerNode = (\n <div\n className={cx(\n styles.sidePanelResizer,\n styles.sidePanelResizerHiddenOnMobile,\n )}\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label={t('layout.pageShell.resizeSidePanel')}\n aria-valuemin={Math.round(resizerMin)}\n aria-valuemax={Math.round(resizerMax)}\n aria-valuenow={Math.round(sidePanelWidth)}\n tabIndex={0}\n data-active={resizerActive}\n onMouseDown={(event) => {\n event.preventDefault();\n startResizing(event.clientX);\n }}\n onTouchStart={(event) => {\n const touch = event.touches[0];\n if (touch != null) {\n startResizing(touch.clientX);\n }\n }}\n onKeyDown={handleResizerKeyDown}\n />\n );\n }\n\n let sidebarContent = sidebar;\n if (isStackedLayout) {\n sidebarContent = mobileSidebar ?? sidebar;\n }\n const shouldRenderDesktopSidebar = desktopSidebarOpen || isStackedLayout;\n let resolvedOpenDesktopSidebarLabel = openDesktopSidebarLabel;\n resolvedOpenDesktopSidebarLabel ??= t('navigation.pageShell.openNavigation');\n\n return (\n <div className={styles.shell}>\n <div\n className={cx(styles.mobileSidebarBackdrop, {\n [styles.mobileSidebarBackdropOpen]:\n isStackedLayout && isMobileSidebarOpen,\n })}\n aria-hidden=\"true\"\n onClick={closeMobileSidebar}\n />\n {shouldRenderDesktopSidebar && (\n <div\n ref={mobileSidebarRef}\n className={cx(styles.sidebarColumn, styles.sidebarColumnMobile, {\n [styles.sidebarColumnMobileOpen]:\n isStackedLayout && isMobileSidebarOpen,\n })}\n aria-hidden={isStackedLayout && !isMobileSidebarOpen}\n inert={isStackedLayout && !isMobileSidebarOpen}\n >\n <button\n ref={mobileSidebarCloseRef}\n type=\"button\"\n className={styles.mobileSidebarClose}\n onClick={closeMobileSidebar}\n aria-label={t('navigation.pageShell.closeNavigation')}\n >\n <ModalCloseSvg width={18} height={18} aria-hidden=\"true\" />\n </button>\n <div className={styles.sidebarInner}>{sidebarContent}</div>\n </div>\n )}\n <div\n ref={pageRef}\n className={cx(styles.page, {\n [styles.pageWithSidePanel]: hasSidePanel,\n [styles.pageContained]: isContainedScroll,\n })}\n aria-hidden={isStackedLayout && isMobileSidebarOpen}\n inert={isStackedLayout && isMobileSidebarOpen}\n >\n <div\n className={cx(styles.mainColumn, {\n [styles.mainColumnWithSidePanel]: hasSidePanel,\n [styles.mainColumnContained]: isContainedScroll,\n })}\n >\n <div className={styles.header}>\n <div className={styles.headerRow}>\n <div className={styles.headerLeading}>\n {!isStackedLayout && !desktopSidebarOpen && (\n <button\n type=\"button\"\n className={styles.desktopSidebarToggle}\n onClick={onOpenDesktopSidebar}\n aria-label={resolvedOpenDesktopSidebarLabel}\n title={resolvedOpenDesktopSidebarLabel}\n >\n <MenuSvg width={18} height={18} aria-hidden=\"true\" />\n </button>\n )}\n {isStackedLayout && (\n <button\n ref={mobileSidebarToggleRef}\n type=\"button\"\n className={styles.mobileSidebarToggle}\n onClick={openMobileSidebar}\n aria-expanded={isMobileSidebarOpen}\n aria-label={t('navigation.pageShell.openNavigation')}\n >\n <MenuSvg width={18} height={18} aria-hidden=\"true\" />\n </button>\n )}\n {renderBreadcrumb()}\n </div>\n {renderActions()}\n </div>\n {renderTabs()}\n </div>\n <div\n className={cx(\n styles.content,\n containedContentClassName,\n contentClassName,\n )}\n >\n {children}\n </div>\n </div>\n {resizerNode}\n {sidePanelNode}\n </div>\n </div>\n );\n};\n\nexport const __test = {\n readStoredSidePanelWidth,\n resolveMaxSidePanelWidth,\n resolveIsActive,\n} as const;\n"],"mappings":"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"}
1
+ {"version":3,"file":"PageShell.js","names":[],"sources":["../../../../src/components/layout/PageShell.tsx"],"sourcesContent":["import Link from '@plumile/router/routing/Link.js';\nimport {\n useCallback,\n useEffect,\n useRef,\n useState,\n type JSX,\n type ReactNode,\n type KeyboardEvent,\n type CSSProperties,\n} from 'react';\n\nimport * as styles from './PageShell.css.js';\nimport { MenuSvg } from '../../icons/MenuSvg.js';\nimport { ModalCloseSvg } from '../../icons/ModalCloseSvg.js';\nimport { cx } from '../../theme/tools.js';\nimport { useUiTranslation } from '../../i18n/useUiTranslation.js';\n\nexport type BreadcrumbItem = {\n label: ReactNode;\n href?: string;\n};\n\nexport type PageShellTab = {\n id: string;\n label: ReactNode;\n href?: string;\n isActive?: boolean;\n};\n\nexport type PageShellActions = {\n main?: ReactNode;\n secondary?: ReactNode[];\n};\n\nexport type PageShellContentScrollMode = 'page' | 'contained';\n\nconst DEFAULT_SIDE_PANEL_WIDTH = 520;\nconst MIN_SIDE_PANEL_WIDTH = 360;\nconst MAX_SIDE_PANEL_RATIO = 0.5;\nconst MIN_MAIN_WIDTH = 480;\nconst SPLIT_BREAKPOINT = 1024;\nconst SIDE_PANEL_WIDTH_STORAGE_KEY = 'plumile:page-shell:side-panel-width';\nconst FOCUSABLE_SELECTOR =\n 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\nconst readStoredSidePanelWidth = (): number | null => {\n if (typeof window === 'undefined') {\n return null;\n }\n\n try {\n const stored = window.localStorage.getItem(SIDE_PANEL_WIDTH_STORAGE_KEY);\n if (stored == null) {\n return null;\n }\n const parsed = Number(stored);\n if (!Number.isFinite(parsed) || parsed <= 0) {\n return null;\n }\n return parsed;\n } catch {\n return null;\n }\n};\n\nconst persistSidePanelWidth = (width: number): void => {\n if (typeof window === 'undefined') {\n return;\n }\n\n try {\n window.localStorage.setItem(SIDE_PANEL_WIDTH_STORAGE_KEY, String(width));\n } catch {\n // ignore quota / permission errors\n }\n};\n\nconst resolveMaxSidePanelWidth = (containerWidth: number): number => {\n let viewWidth = containerWidth;\n if (typeof window !== 'undefined') {\n viewWidth = window.innerWidth;\n }\n return viewWidth * MAX_SIDE_PANEL_RATIO;\n};\n\ntype ResizeMoveHandler = (event: MouseEvent | TouchEvent) => void;\ntype ResizeUpHandler = () => void;\ntype ActiveResizeHandlers = {\n move?: ResizeMoveHandler | null;\n up?: ResizeUpHandler | null;\n};\n\ntype Props = {\n sidebar: ReactNode;\n mobileSidebar?: ReactNode;\n desktopSidebarOpen?: boolean;\n onOpenDesktopSidebar?: () => void;\n openDesktopSidebarLabel?: string;\n children: ReactNode;\n breadcrumb?: BreadcrumbItem[];\n breadcrumbSlot?: ReactNode;\n tabs?: PageShellTab[];\n actions?: PageShellActions;\n sidePanel?: ReactNode;\n contentClassName?: string;\n contentScrollMode?: PageShellContentScrollMode;\n};\n\nconst resolveIsActive = (tab: PageShellTab, pathname?: string): boolean => {\n if (typeof tab.isActive === 'boolean') {\n return tab.isActive;\n }\n\n if (tab.href != null && pathname != null) {\n return pathname === tab.href;\n }\n\n return false;\n};\n\nexport const PageShell = ({\n actions,\n breadcrumb,\n breadcrumbSlot,\n children,\n contentClassName,\n contentScrollMode = 'page',\n desktopSidebarOpen = true,\n mobileSidebar,\n onOpenDesktopSidebar,\n openDesktopSidebarLabel,\n sidebar,\n sidePanel,\n tabs,\n}: Props): JSX.Element => {\n const { t } = useUiTranslation();\n const hasSidePanel = sidePanel != null;\n const isContainedScroll = contentScrollMode === 'contained';\n let containedContentClassName: string | null = null;\n if (isContainedScroll) {\n containedContentClassName = styles.contentContained;\n }\n const pageRef = useRef<HTMLDivElement | null>(null);\n const mobileSidebarRef = useRef<HTMLDivElement | null>(null);\n const mobileSidebarToggleRef = useRef<HTMLButtonElement | null>(null);\n const mobileSidebarCloseRef = useRef<HTMLButtonElement | null>(null);\n const mobileSidebarPreviousFocusRef = useRef<HTMLElement | null>(null);\n const activeResizeHandlersRef = useRef<ActiveResizeHandlers | null>(null);\n const [sidePanelWidth, setSidePanelWidth] = useState(() => {\n const stored = readStoredSidePanelWidth();\n return stored ?? DEFAULT_SIDE_PANEL_WIDTH;\n });\n const sidePanelWidthSnapshotRef = useRef(sidePanelWidth);\n const [isResizingPanel, setIsResizingPanel] = useState(false);\n const [isStackedLayout, setIsStackedLayout] = useState(false);\n const [isMobileSidebarOpen, setIsMobileSidebarOpen] = useState(false);\n\n const closeMobileSidebar = useCallback(() => {\n setIsMobileSidebarOpen(false);\n }, []);\n\n const openMobileSidebar = useCallback(() => {\n if (typeof document !== 'undefined') {\n const { activeElement } = document;\n if (activeElement instanceof HTMLElement) {\n mobileSidebarPreviousFocusRef.current = activeElement;\n }\n }\n setIsMobileSidebarOpen(true);\n }, []);\n\n const clampSidePanelWidth = useCallback((candidateWidth: number): void => {\n const container = pageRef.current;\n if (container == null) {\n return;\n }\n\n const { width } = container.getBoundingClientRect();\n const maxWidth = Math.max(\n 0,\n Math.min(resolveMaxSidePanelWidth(width), width - MIN_MAIN_WIDTH),\n );\n const minWidth = Math.min(MIN_SIDE_PANEL_WIDTH, maxWidth);\n let safeMin = minWidth;\n if (maxWidth <= 0) {\n safeMin = 0;\n }\n const safeMax = Math.max(safeMin, maxWidth);\n const clampedWidth = Math.max(safeMin, Math.min(candidateWidth, safeMax));\n sidePanelWidthSnapshotRef.current = clampedWidth;\n setSidePanelWidth(clampedWidth);\n }, []);\n\n const startResizing = useCallback(\n (startClientX: number): void => {\n if (typeof window === 'undefined') {\n return;\n }\n\n if (!hasSidePanel || isStackedLayout) {\n return;\n }\n\n const container = pageRef.current;\n if (container == null) {\n return;\n }\n\n const rect = container.getBoundingClientRect();\n const currentWidth = sidePanelWidth;\n setIsResizingPanel(true);\n\n const moveHandler: ResizeMoveHandler = (event) => {\n let clientX = 0;\n if ('touches' in event) {\n const touch = event.touches[0];\n if (touch == null) {\n return;\n }\n clientX = touch.clientX;\n } else {\n clientX = event.clientX;\n }\n\n const deltaX = startClientX - clientX;\n const nextWidth = currentWidth + deltaX;\n\n const maxWidth = Math.max(\n 0,\n Math.min(\n resolveMaxSidePanelWidth(rect.width),\n rect.width - MIN_MAIN_WIDTH,\n ),\n );\n const minWidth = Math.min(MIN_SIDE_PANEL_WIDTH, maxWidth);\n let safeMin = minWidth;\n if (maxWidth <= 0) {\n safeMin = 0;\n }\n const safeMax = Math.max(safeMin, maxWidth);\n\n const clampedWidth = Math.max(safeMin, Math.min(nextWidth, safeMax));\n sidePanelWidthSnapshotRef.current = clampedWidth;\n setSidePanelWidth(clampedWidth);\n };\n\n const upHandler: ResizeUpHandler = () => {\n setIsResizingPanel(false);\n persistSidePanelWidth(sidePanelWidthSnapshotRef.current);\n const handlers = activeResizeHandlersRef.current;\n if (handlers?.move != null) {\n window.removeEventListener('mousemove', handlers.move);\n window.removeEventListener('touchmove', handlers.move);\n }\n if (handlers?.up != null) {\n window.removeEventListener('mouseup', handlers.up);\n window.removeEventListener('touchend', handlers.up);\n window.removeEventListener('touchcancel', handlers.up);\n }\n activeResizeHandlersRef.current = null;\n };\n\n activeResizeHandlersRef.current = { move: moveHandler, up: upHandler };\n\n window.addEventListener('mousemove', moveHandler);\n window.addEventListener('touchmove', moveHandler, { passive: false });\n window.addEventListener('mouseup', upHandler);\n window.addEventListener('touchend', upHandler);\n window.addEventListener('touchcancel', upHandler);\n },\n [hasSidePanel, isStackedLayout, sidePanelWidth],\n );\n\n useEffect(() => {\n sidePanelWidthSnapshotRef.current = sidePanelWidth;\n }, [sidePanelWidth]);\n\n useEffect(() => {\n if (typeof window === 'undefined') {\n return () => {};\n }\n const mediaQuery = window.matchMedia(\n `(max-width: ${SPLIT_BREAKPOINT - 1}px)`,\n );\n const handleMediaChange = () => {\n setIsStackedLayout(mediaQuery.matches);\n };\n\n handleMediaChange();\n mediaQuery.addEventListener('change', handleMediaChange);\n\n return () => {\n mediaQuery.removeEventListener('change', handleMediaChange);\n };\n }, []);\n\n useEffect(() => {\n if (hasSidePanel) {\n clampSidePanelWidth(sidePanelWidth);\n }\n }, [hasSidePanel, sidePanelWidth, clampSidePanelWidth]);\n\n useEffect(() => {\n if (!isStackedLayout && isMobileSidebarOpen) {\n closeMobileSidebar();\n }\n }, [closeMobileSidebar, isMobileSidebarOpen, isStackedLayout]);\n\n useEffect(() => {\n if (!isMobileSidebarOpen) {\n return () => {};\n }\n\n const handleEscape = (event: globalThis.KeyboardEvent) => {\n if (event.key === 'Escape') {\n closeMobileSidebar();\n return;\n }\n\n if (event.key !== 'Tab') {\n return;\n }\n\n const sidebarElement = mobileSidebarRef.current;\n if (sidebarElement == null) {\n return;\n }\n\n const focusableElements = Array.from(\n sidebarElement.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR),\n ).filter((element) => {\n return (\n element.offsetParent != null || element === document.activeElement\n );\n });\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (firstElement == null || lastElement == null) {\n event.preventDefault();\n return;\n }\n\n if (event.shiftKey && document.activeElement === firstElement) {\n event.preventDefault();\n lastElement.focus();\n return;\n }\n\n if (!event.shiftKey && document.activeElement === lastElement) {\n event.preventDefault();\n firstElement.focus();\n }\n };\n\n const fallbackFocusElement = mobileSidebarToggleRef.current;\n mobileSidebarCloseRef.current?.focus();\n\n window.addEventListener('keydown', handleEscape);\n return () => {\n window.removeEventListener('keydown', handleEscape);\n const previousFocus = mobileSidebarPreviousFocusRef.current;\n if (previousFocus != null && document.contains(previousFocus)) {\n previousFocus.focus();\n } else {\n fallbackFocusElement?.focus();\n }\n mobileSidebarPreviousFocusRef.current = null;\n };\n }, [closeMobileSidebar, isMobileSidebarOpen]);\n\n useEffect(() => {\n return () => {\n const handlers = activeResizeHandlersRef.current;\n if (handlers?.move != null) {\n window.removeEventListener('mousemove', handlers.move);\n window.removeEventListener('touchmove', handlers.move);\n }\n if (handlers?.up != null) {\n window.removeEventListener('mouseup', handlers.up);\n window.removeEventListener('touchend', handlers.up);\n window.removeEventListener('touchcancel', handlers.up);\n }\n };\n }, []);\n\n let currentPath: string | undefined;\n if (typeof window !== 'undefined') {\n currentPath = window.location.pathname;\n }\n\n const renderBreadcrumb = (): JSX.Element | null => {\n if (breadcrumbSlot != null) {\n return <div className={styles.breadcrumbNav}>{breadcrumbSlot}</div>;\n }\n\n if (breadcrumb == null || breadcrumb.length === 0) {\n return null;\n }\n\n const items = breadcrumb.flatMap((item, index) => {\n const isLast = index === breadcrumb.length - 1;\n const key = `${item.href ?? 'crumb'}-${index}`;\n let content: JSX.Element;\n if (item.href != null && !isLast) {\n content = (\n <Link to={item.href} className={styles.breadcrumbLink}>\n {item.label}\n </Link>\n );\n } else {\n let breadcrumbClass = styles.breadcrumbLink;\n if (isLast) {\n breadcrumbClass = styles.breadcrumbCurrent;\n }\n content = <span className={breadcrumbClass}>{item.label}</span>;\n }\n\n const renderedItem = (\n <li key={key} className={styles.breadcrumbItem}>\n {content}\n </li>\n );\n\n if (isLast) {\n return [renderedItem];\n }\n\n return [\n renderedItem,\n <li\n key={`${key}-sep`}\n className={styles.breadcrumbSeparator}\n aria-hidden=\"true\"\n >\n /\n </li>,\n ];\n });\n\n return (\n <nav\n className={styles.breadcrumbNav}\n aria-label={t('navigation.breadcrumb')}\n >\n <ol className={styles.breadcrumbList}>{items}</ol>\n </nav>\n );\n };\n\n const renderActions = (): JSX.Element | null => {\n if (\n actions == null ||\n (actions.main == null && (actions.secondary ?? []).length === 0)\n ) {\n return null;\n }\n\n const secondaryNodes = actions.secondary ?? [];\n\n let mainActionNode: JSX.Element | null = null;\n if (actions.main != null) {\n mainActionNode = (\n <div className={styles.secondaryAction}>{actions.main}</div>\n );\n }\n\n return (\n <div className={styles.actionGroup}>\n {secondaryNodes.map((node, index) => {\n return (\n <div key={`secondary-${index}`} className={styles.secondaryAction}>\n {node}\n </div>\n );\n })}\n {mainActionNode}\n </div>\n );\n };\n\n const renderTabs = (): JSX.Element | null => {\n if (tabs == null || tabs.length === 0) {\n return null;\n }\n\n return (\n <div className={styles.tabsRow}>\n {tabs.map((tab) => {\n const isActive = resolveIsActive(tab, currentPath);\n let tabState: 'default' | 'active' = 'default';\n if (isActive) {\n tabState = 'active';\n }\n let tabMode: 'static' | 'link' = 'link';\n if (tab.href == null) {\n tabMode = 'static';\n }\n const className = styles.tabRecipe({\n state: tabState,\n mode: tabMode,\n });\n const key = tab.id;\n let ariaCurrent: 'page' | undefined;\n if (isActive) {\n ariaCurrent = 'page';\n }\n\n if (tab.href != null) {\n return (\n <Link\n key={key}\n to={tab.href}\n className={className}\n aria-current={ariaCurrent}\n >\n {tab.label}\n </Link>\n );\n }\n\n return (\n <span key={key} className={className} aria-current={ariaCurrent}>\n {tab.label}\n </span>\n );\n })}\n </div>\n );\n };\n\n const handleResizerKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (isStackedLayout) {\n return;\n }\n if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {\n event.preventDefault();\n let delta = 16;\n if (event.key === 'ArrowRight') {\n delta = -16;\n }\n clampSidePanelWidth(sidePanelWidth + delta);\n persistSidePanelWidth(sidePanelWidthSnapshotRef.current);\n }\n },\n [clampSidePanelWidth, isStackedLayout, sidePanelWidth],\n );\n\n let sidePanelNode: JSX.Element | null = null;\n if (hasSidePanel) {\n const sidePanelClasses = [styles.sidePanel, styles.sidePanelSurface];\n let sidePanelStyle: CSSProperties | undefined;\n if (!isStackedLayout) {\n sidePanelClasses.push(styles.sidePanelResizable);\n sidePanelStyle = {\n width: `${sidePanelWidth}px`,\n };\n }\n sidePanelNode = (\n <aside className={cx(...sidePanelClasses)} style={sidePanelStyle}>\n {sidePanel}\n </aside>\n );\n }\n\n let resizerNode: JSX.Element | null = null;\n if (hasSidePanel) {\n let resizerActive = 'false';\n if (isResizingPanel) {\n resizerActive = 'true';\n }\n let resizerMin = MIN_SIDE_PANEL_WIDTH;\n let resizerMax = Math.max(MIN_SIDE_PANEL_WIDTH, sidePanelWidth);\n const pageElement = pageRef.current;\n if (pageElement != null) {\n const { width } = pageElement.getBoundingClientRect();\n const maxWidth = Math.max(\n 0,\n Math.min(resolveMaxSidePanelWidth(width), width - MIN_MAIN_WIDTH),\n );\n resizerMin = Math.min(MIN_SIDE_PANEL_WIDTH, maxWidth);\n if (maxWidth <= 0) {\n resizerMin = 0;\n }\n resizerMax = Math.max(resizerMin, maxWidth);\n }\n resizerNode = (\n <div\n className={cx(\n styles.sidePanelResizer,\n styles.sidePanelResizerHiddenOnMobile,\n )}\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label={t('layout.pageShell.resizeSidePanel')}\n aria-valuemin={Math.round(resizerMin)}\n aria-valuemax={Math.round(resizerMax)}\n aria-valuenow={Math.round(sidePanelWidth)}\n tabIndex={0}\n data-active={resizerActive}\n onMouseDown={(event) => {\n event.preventDefault();\n startResizing(event.clientX);\n }}\n onTouchStart={(event) => {\n const touch = event.touches[0];\n if (touch != null) {\n startResizing(touch.clientX);\n }\n }}\n onKeyDown={handleResizerKeyDown}\n />\n );\n }\n\n let sidebarContent = sidebar;\n if (isStackedLayout) {\n sidebarContent = mobileSidebar ?? sidebar;\n }\n const shouldRenderDesktopSidebar = desktopSidebarOpen || isStackedLayout;\n let resolvedOpenDesktopSidebarLabel = openDesktopSidebarLabel;\n resolvedOpenDesktopSidebarLabel ??= t('navigation.pageShell.openNavigation');\n\n return (\n <div className={styles.shell}>\n <div\n className={cx(styles.mobileSidebarBackdrop, {\n [styles.mobileSidebarBackdropOpen]:\n isStackedLayout && isMobileSidebarOpen,\n })}\n aria-hidden=\"true\"\n onClick={closeMobileSidebar}\n />\n {shouldRenderDesktopSidebar && (\n <div\n ref={mobileSidebarRef}\n className={cx(styles.sidebarColumn, styles.sidebarColumnMobile, {\n [styles.sidebarColumnMobileOpen]:\n isStackedLayout && isMobileSidebarOpen,\n })}\n aria-hidden={isStackedLayout && !isMobileSidebarOpen}\n inert={isStackedLayout && !isMobileSidebarOpen}\n >\n <button\n ref={mobileSidebarCloseRef}\n type=\"button\"\n className={styles.mobileSidebarClose}\n onClick={closeMobileSidebar}\n aria-label={t('navigation.pageShell.closeNavigation')}\n >\n <ModalCloseSvg width={18} height={18} aria-hidden=\"true\" />\n </button>\n <div className={styles.sidebarInner}>{sidebarContent}</div>\n </div>\n )}\n <div\n ref={pageRef}\n className={cx(styles.page, {\n [styles.pageWithSidePanel]: hasSidePanel,\n [styles.pageContained]: isContainedScroll,\n })}\n aria-hidden={isStackedLayout && isMobileSidebarOpen}\n inert={isStackedLayout && isMobileSidebarOpen}\n >\n <div\n className={cx(styles.mainColumn, {\n [styles.mainColumnWithSidePanel]: hasSidePanel,\n [styles.mainColumnContained]: isContainedScroll,\n })}\n >\n <div className={styles.header}>\n <div className={styles.headerRow}>\n <div className={styles.headerLeading}>\n {!isStackedLayout && !desktopSidebarOpen && (\n <button\n type=\"button\"\n className={styles.desktopSidebarToggle}\n onClick={onOpenDesktopSidebar}\n aria-label={resolvedOpenDesktopSidebarLabel}\n title={resolvedOpenDesktopSidebarLabel}\n >\n <MenuSvg width={18} height={18} aria-hidden=\"true\" />\n </button>\n )}\n {isStackedLayout && (\n <button\n ref={mobileSidebarToggleRef}\n type=\"button\"\n className={styles.mobileSidebarToggle}\n onClick={openMobileSidebar}\n aria-expanded={isMobileSidebarOpen}\n aria-label={t('navigation.pageShell.openNavigation')}\n >\n <MenuSvg width={18} height={18} aria-hidden=\"true\" />\n </button>\n )}\n {renderBreadcrumb()}\n </div>\n {renderActions()}\n </div>\n {renderTabs()}\n </div>\n <div\n className={cx(\n styles.content,\n containedContentClassName,\n contentClassName,\n )}\n >\n {children}\n </div>\n </div>\n {resizerNode}\n {sidePanelNode}\n </div>\n </div>\n );\n};\n\nexport const __test = {\n readStoredSidePanelWidth,\n resolveMaxSidePanelWidth,\n resolveIsActive,\n} as const;\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /* empty css */
2
2
  /* empty css */
3
3
  //#region src/components/layout/SettingsLayout.css.ts
4
- var e = "j42upe0 txvbqb9iy txvbqbaop txvbqblby txvbqbbxg txvbqbbws", t = "j42upe1 txvbqb1rp txvbqbv49 txvbqb1cp txvbqb1qg txvbqbwg txvbqbl7g", n = "j42upe2 txvbqb1rp txvbqbv49 txvbqb1cp txvbqb1qg txvbqbwg txvbqbl7g";
4
+ var e = "j42upe0 txvbqbdrl txvbqbffw txvbqbuz9 txvbqbh9z txvbqbh7j", t = "j42upe1 txvbqb2gm txvbqb196j txvbqb1uy txvbqb2et txvbqb17h txvbqbusr", n = "j42upe2 txvbqb2gm txvbqb196j txvbqb1uy txvbqb2et txvbqb17h txvbqbusr";
5
5
  //#endregion
6
6
  export { e as container, n as content, t as sidebar };
7
7
 
@@ -1,7 +1,7 @@
1
1
  /* empty css */
2
2
  /* empty css */
3
3
  //#region src/components/layout/SplitViewLayout.css.ts
4
- var e = "_1dcntij0 txvbqb9iy txvbqbaop txvbqblby txvbqbbxp txvbqbbws", t = "_1dcntij1 txvbqb1rp txvbqbv49 txvbqb1cp txvbqb1qg txvbqbwg txvbqbl7g";
4
+ var e = "_1dcntij0 txvbqbdrl txvbqbffw txvbqbuz9 txvbqbhac txvbqbh7j", t = "_1dcntij1 txvbqb2gm txvbqb196j txvbqb1uy txvbqb2et txvbqb17h txvbqbusr";
5
5
  //#endregion
6
6
  export { e as container, t as panel };
7
7
 
@@ -1,7 +1,7 @@
1
1
  /* empty css */
2
2
  /* empty css */
3
3
  //#region src/components/layout/TabsContentLayout.css.ts
4
- var e = "b55nf40 txvbqb9ip txvbqbai7 txvbqbaop txvbqbu7g", t = "b55nf41 txvbqbu7g txvbqb9ip txvbqbdoy", n = "b55nf42 txvbqbu7g txvbqb9ip txvbqbdoy", r = "b55nf43 txvbqbu7g", i = "b55nf44 txvbqbu7g";
4
+ var e = "b55nf40 txvbqbdr8 txvbqbf6i txvbqbffw txvbqb17w0", t = "b55nf41 txvbqb17w0 txvbqbdr8 txvbqbjtp", n = "b55nf42 txvbqb17w0 txvbqbdr8 txvbqbjtp", r = "b55nf43 txvbqb17w0", i = "b55nf44 txvbqb17w0";
5
5
  //#endregion
6
6
  export { i as panel, r as panels, t as tabsBar, n as tabsInner, e as wrapper };
7
7
 
@@ -1,7 +1,7 @@
1
1
  /* empty css */
2
2
  /* empty css */
3
3
  //#region src/components/layout/ToolbarRow.css.ts
4
- var e = "vkvkqj0 txvbqb9ip txvbqbcp txvbqbdpp txvbqbajy txvbqbaog txvbqbu7g";
4
+ var e = "vkvkqj0 txvbqbdr8 txvbqbey txvbqbjus txvbqbf91 txvbqbffj txvbqb17w0";
5
5
  //#endregion
6
6
  export { e as row };
7
7
 
@@ -3,15 +3,15 @@
3
3
  import { createRuntimeFn as e } from "@vanilla-extract/recipes/createRuntimeFn";
4
4
  //#region src/components/media/imagePreviewModal.css.ts
5
5
  var t = e({
6
- defaultClassName: "_1xsy8p94 _1xsy8p90 txvbqb9jg txvbqbcp txvbqbdoy txvbqb1rp txvbqbl7g txvbqb1cp txvbqb1qg txvbqbwg txvbqbv0x txvbqbv txvbqblag",
6
+ defaultClassName: "_1xsy8p94 _1xsy8p90 txvbqbdsb txvbqbey txvbqbjtp txvbqb2gm txvbqbusr txvbqb1uy txvbqb2et txvbqb17h txvbqb1937 txvbqbv txvbqbux3",
7
7
  variantClassNames: { size: {
8
- sm: "_1xsy8p95 _1xsy8p91 txvbqbu17 txvbqbca7",
9
- md: "_1xsy8p96 _1xsy8p92 txvbqbu1y txvbqbcay",
10
- lg: "_1xsy8p97 _1xsy8p93 txvbqbu2p txvbqbcbp"
8
+ sm: "_1xsy8p95 _1xsy8p91 txvbqb17mz txvbqbhse",
9
+ md: "_1xsy8p96 _1xsy8p92 txvbqb17o2 txvbqbhth",
10
+ lg: "_1xsy8p97 _1xsy8p93 txvbqb17p5 txvbqbhuk"
11
11
  } },
12
12
  defaultVariants: { size: "md" },
13
13
  compoundVariants: []
14
- }), n = "_1xsy8p98 txvbqb9i7 txvbqbu7g txvbqbcgg txvbqb20", r = "_1xsy8p99 txvbqb9ip txvbqbcp txvbqbdoy", i = "_1xsy8p9a txvbqb9i7 txvbqbjep txvbqbj8g txvbqb1z";
14
+ }), n = "_1xsy8p98 txvbqbdqi txvbqb17w0 txvbqbi1f txvbqb24", r = "_1xsy8p99 txvbqbdr8 txvbqbey txvbqbjtp", i = "_1xsy8p9a txvbqbdqi txvbqbs65 txvbqbrvb txvbqb23";
15
15
  //#endregion
16
16
  export { r as modalBody, i as modalImage, t as previewButton, n as previewImage };
17
17
 
@@ -1,7 +1,7 @@
1
1
  /* empty css */
2
2
  /* empty css */
3
3
  //#region src/components/responsive/ResponsiveCollectionRenderer.css.ts
4
- var e = "vaohr92 vaohr91 txvbqbu7g txvbqbk5y", t = "vaohr93", n = "vaohr95 vaohr94 txvbqb9hy";
4
+ var e = "vaohr92 vaohr91 txvbqb17w0 txvbqbt9i", t = "vaohr93", n = "vaohr95 vaohr94 txvbqbdq5";
5
5
  //#endregion
6
6
  export { n as cardsMode, e as root, t as tableMode };
7
7
 
@@ -1 +1 @@
1
- {"version":3,"file":"ResponsiveCollectionRenderer.css.js","names":[],"sources":["../../../../src/components/responsive/ResponsiveCollectionRenderer.css.ts"],"sourcesContent":["import { createContainer, style } from '@vanilla-extract/css';\n\nimport { sprinkles } from '../../theme/sprinkles.css.js';\n\nconst collectionContainer = createContainer();\n\nexport const root = style([\n sprinkles({\n width: 'full',\n minWidth: 0,\n }),\n {\n containerName: collectionContainer,\n containerType: 'inline-size',\n },\n]);\n\nexport const tableMode = style({\n display: 'block',\n '@container': {\n [`${collectionContainer} (max-width: 860px)`]: {\n display: 'none',\n },\n },\n});\n\nexport const cardsMode = style([\n sprinkles({\n display: 'none',\n }),\n {\n '@container': {\n [`${collectionContainer} (max-width: 860px)`]: {\n display: 'block',\n },\n },\n },\n]);\n"],"mappings":""}
1
+ {"version":3,"file":"ResponsiveCollectionRenderer.css.js","names":[],"sources":["../../../../src/components/responsive/ResponsiveCollectionRenderer.css.ts"],"sourcesContent":["import { style, createContainer } from '@vanilla-extract/css';\n\nimport { sprinkles } from '../../theme/sprinkles.css.js';\n\nconst collectionContainer = createContainer();\n\nexport const root = style([\n sprinkles({\n width: 'full',\n minWidth: 0,\n }),\n {\n containerName: collectionContainer,\n containerType: 'inline-size',\n },\n]);\n\nexport const tableMode = style({\n display: 'block',\n '@container': {\n [`${collectionContainer} (max-width: 860px)`]: {\n display: 'none',\n },\n },\n});\n\nexport const cardsMode = style([\n sprinkles({\n display: 'none',\n }),\n {\n '@container': {\n [`${collectionContainer} (max-width: 860px)`]: {\n display: 'block',\n },\n },\n },\n]);\n"],"mappings":""}
@@ -1,7 +1,7 @@
1
1
  /* empty css */
2
2
  /* empty css */
3
3
  //#region src/components/routing/routeFallback.css.ts
4
- var e = "_16yu4q33 _16yu4q31 txvbqb9ip txvbqbai7 txvbqbcp txvbqbdoy txvbqbu7g _16yu4q32 txvbqbaog txvbqbp8g txvbqbm07 txvbqb1s7 txvbqbv45", t = "_16yu4q35 _16yu4q31 txvbqb9ip txvbqbai7 txvbqbcp txvbqbdoy txvbqbu7g _16yu4q34 txvbqbk5p txvbqbaop txvbqbv43", n = "_16yu4q37 _16yu4q36 txvbqbv4t txvbqb1t7", r = "_16yu4q39 _16yu4q38 txvbqbv45 txvbqb1t7", i = "_16yu4q3a txvbqbva1 txvbqb8y txvbqbfcp";
4
+ var e = "_16yu4q33 _16yu4q31 txvbqbdr8 txvbqbf6i txvbqbey txvbqbjtp txvbqb17w0 _16yu4q32 txvbqbffj txvbqb10m7 txvbqbvya txvbqb2hc txvbqb196f", t = "_16yu4q35 _16yu4q31 txvbqbdr8 txvbqbf6i txvbqbey txvbqbjtp txvbqb17w0 _16yu4q34 txvbqbt95 txvbqbffw txvbqb196d", n = "_16yu4q37 _16yu4q36 txvbqb1973 txvbqb2is", r = "_16yu4q39 _16yu4q38 txvbqb196f txvbqb2is", i = "_16yu4q3a txvbqb19cb txvbqb9j txvbqbm9g";
5
5
  //#endregion
6
6
  export { n as contentPulse, e as contentRoot, i as label, r as pagePulse, t as pageRoot };
7
7
 
@@ -1 +1 @@
1
- {"version":3,"file":"routeFallback.css.js","names":[],"sources":["../../../../src/components/routing/routeFallback.css.ts"],"sourcesContent":["import { keyframes, style } from '@vanilla-extract/css';\n\nimport { sprinkles } from '../../theme/sprinkles.css.js';\n\nconst pulseAnimation = keyframes({\n '0%': { opacity: 0.45, transform: 'scaleX(0.94)' },\n '50%': { opacity: 1, transform: 'scaleX(1)' },\n '100%': { opacity: 0.45, transform: 'scaleX(0.94)' },\n});\n\nconst baseRoot = sprinkles({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n width: 'full',\n});\n\nexport const contentRoot = style([\n baseRoot,\n sprinkles({\n gap: 3,\n paddingTop: 10,\n paddingBottom: 10,\n borderRadius: '2xl',\n backgroundColor: 'surfaceMuted',\n }),\n {\n minHeight: '220px',\n },\n]);\n\nexport const pageRoot = style([\n baseRoot,\n sprinkles({\n minHeight: 'screen',\n gap: 4,\n backgroundColor: 'surfaceSecondary',\n }),\n]);\n\nexport const contentPulse = style([\n sprinkles({\n backgroundColor: 'borderLight',\n borderRadius: 'full',\n }),\n {\n width: '72px',\n height: '8px',\n animation: `${pulseAnimation} 1.1s ease-in-out infinite`,\n },\n]);\n\nexport const pagePulse = style([\n sprinkles({\n backgroundColor: 'surfaceMuted',\n borderRadius: 'full',\n }),\n {\n width: '96px',\n height: '10px',\n animation: `${pulseAnimation} 1.1s ease-in-out infinite`,\n },\n]);\n\nexport const label = sprinkles({\n color: 'textSecondary',\n fontSize: 'sm',\n margin: 0,\n});\n"],"mappings":""}
1
+ {"version":3,"file":"routeFallback.css.js","names":[],"sources":["../../../../src/components/routing/routeFallback.css.ts"],"sourcesContent":["import { style, keyframes } from '@vanilla-extract/css';\n\nimport { sprinkles } from '../../theme/sprinkles.css.js';\n\nconst pulseAnimation = keyframes({\n '0%': { opacity: 0.45, transform: 'scaleX(0.94)' },\n '50%': { opacity: 1, transform: 'scaleX(1)' },\n '100%': { opacity: 0.45, transform: 'scaleX(0.94)' },\n});\n\nconst baseRoot = sprinkles({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n width: 'full',\n});\n\nexport const contentRoot = style([\n baseRoot,\n sprinkles({\n gap: 3,\n paddingTop: 10,\n paddingBottom: 10,\n borderRadius: '2xl',\n backgroundColor: 'surfaceMuted',\n }),\n {\n minHeight: '220px',\n },\n]);\n\nexport const pageRoot = style([\n baseRoot,\n sprinkles({\n minHeight: 'screen',\n gap: 4,\n backgroundColor: 'surfaceSecondary',\n }),\n]);\n\nexport const contentPulse = style([\n sprinkles({\n backgroundColor: 'borderLight',\n borderRadius: 'full',\n }),\n {\n width: '72px',\n height: '8px',\n animation: `${pulseAnimation} 1.1s ease-in-out infinite`,\n },\n]);\n\nexport const pagePulse = style([\n sprinkles({\n backgroundColor: 'surfaceMuted',\n borderRadius: 'full',\n }),\n {\n width: '96px',\n height: '10px',\n animation: `${pulseAnimation} 1.1s ease-in-out infinite`,\n },\n]);\n\nexport const label = sprinkles({\n color: 'textSecondary',\n fontSize: 'sm',\n margin: 0,\n});\n"],"mappings":""}
@@ -1,7 +1,7 @@
1
1
  /* empty css */
2
2
  /* empty css */
3
3
  //#region src/components/routing/routePendingBar.css.ts
4
- var e = "_1cjlm662 _1cjlm661 txvbqbv45 txvbqbptp txvbqbt7y txvbqbdqg txvbqbl7g txvbqb2k txvbqbu7g txvbqbuwp", t = "_1cjlm664 _1cjlm663 txvbqbcgg txvbqbuog";
4
+ var e = "_1cjlm662 _1cjlm661 txvbqb196f txvbqb11k5 txvbqb16gq txvbqbjxb txvbqbusr txvbqb2o txvbqb17w0 txvbqb18wh", t = "_1cjlm664 _1cjlm663 txvbqbi1f txvbqb18kk";
5
5
  //#endregion
6
6
  export { t as bar, e as root };
7
7
 
@@ -1 +1 @@
1
- {"version":3,"file":"routePendingBar.css.js","names":[],"sources":["../../../../src/components/routing/routePendingBar.css.ts"],"sourcesContent":["import { keyframes, style } from '@vanilla-extract/css';\n\nimport { sprinkles } from '../../theme/sprinkles.css.js';\nimport { vars } from '../../theme/themeContract.js';\n\nconst slide = keyframes({\n '0%': { transform: 'translateX(-120%)' },\n '60%': { transform: 'translateX(30%)' },\n '100%': { transform: 'translateX(120%)' },\n});\n\nexport const root = style([\n sprinkles({\n backgroundColor: 'surfaceMuted',\n position: 'fixed',\n top: 0,\n left: 0,\n overflow: 'hidden',\n pointerEvents: 'none',\n width: 'full',\n zIndex: 50,\n }),\n {\n height: '3px',\n },\n]);\n\nexport const bar = style([\n sprinkles({\n height: 'full',\n width: '2/5',\n }),\n {\n background: `linear-gradient(90deg, ${vars.colors.primaryLight} 0%, ${vars.colors.primary} 60%, ${vars.colors.primaryLight} 100%)`,\n animation: `${slide} 1.1s ease-in-out infinite`,\n },\n]);\n"],"mappings":""}
1
+ {"version":3,"file":"routePendingBar.css.js","names":[],"sources":["../../../../src/components/routing/routePendingBar.css.ts"],"sourcesContent":["import { style, keyframes } from '@vanilla-extract/css';\n\nimport { sprinkles } from '../../theme/sprinkles.css.js';\nimport { vars } from '../../theme/themeContract.js';\n\nconst slide = keyframes({\n '0%': { transform: 'translateX(-120%)' },\n '60%': { transform: 'translateX(30%)' },\n '100%': { transform: 'translateX(120%)' },\n});\n\nexport const root = style([\n sprinkles({\n backgroundColor: 'surfaceMuted',\n position: 'fixed',\n top: 0,\n left: 0,\n overflow: 'hidden',\n pointerEvents: 'none',\n width: 'full',\n zIndex: 50,\n }),\n {\n height: '3px',\n },\n]);\n\nexport const bar = style([\n sprinkles({\n height: 'full',\n width: '2/5',\n }),\n {\n background: `linear-gradient(90deg, ${vars.colors.primaryLight} 0%, ${vars.colors.primary} 60%, ${vars.colors.primaryLight} 100%)`,\n animation: `${slide} 1.1s ease-in-out infinite`,\n },\n]);\n"],"mappings":""}