@plumile/ui 0.1.120 → 0.1.125

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 (335) hide show
  1. package/README.md +12 -0
  2. package/lib/esm/__tests__/reactDomTestUtils.js +48 -0
  3. package/lib/esm/__tests__/reactDomTestUtils.js.map +1 -0
  4. package/lib/esm/admin/organisms/admin_sidebar/AdminSidebar.js +1 -1
  5. package/lib/esm/admin/organisms/admin_sidebar/adminSidebar.css.js +3 -2
  6. package/lib/esm/admin/organisms/admin_topbar/adminTopbar.css.js +1 -1
  7. package/lib/esm/admin/theme/adminDensity.css.js.map +1 -1
  8. package/lib/esm/admin/theme/adminSurface.css.js.map +1 -1
  9. package/lib/esm/atomic/atoms/badge/badge.css.js +7 -7
  10. package/lib/esm/atomic/atoms/badge/badge.css.js.map +1 -1
  11. package/lib/esm/atomic/atoms/button/button.css.js +38 -38
  12. package/lib/esm/atomic/atoms/button/button.css.js.map +1 -1
  13. package/lib/esm/atomic/atoms/checkbox/checkbox.css.js +8 -8
  14. package/lib/esm/atomic/atoms/checkbox/checkbox.css.js.map +1 -1
  15. package/lib/esm/atomic/atoms/error_message/errorMessage.css.js +1 -1
  16. package/lib/esm/atomic/atoms/input/input.css.js +9 -9
  17. package/lib/esm/atomic/atoms/input/input.css.js.map +1 -1
  18. package/lib/esm/atomic/atoms/label/label.css.js +7 -7
  19. package/lib/esm/atomic/atoms/modal/Modal.js +1 -1
  20. package/lib/esm/atomic/atoms/modal/modal.css.js +1 -1
  21. package/lib/esm/atomic/atoms/modal/modal.css.js.map +1 -1
  22. package/lib/esm/atomic/atoms/overlay/overlay.css.js +1 -1
  23. package/lib/esm/atomic/atoms/textarea/textarea.css.js +8 -8
  24. package/lib/esm/atomic/atoms/textarea/textarea.css.js.map +1 -1
  25. package/lib/esm/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuPopover.js +1 -1
  26. package/lib/esm/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.js +1 -1
  27. package/lib/esm/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.js.map +1 -1
  28. package/lib/esm/atomic/molecules/card/Card.css.js +1 -1
  29. package/lib/esm/atomic/molecules/checkbox_field/checkboxField.css.js +1 -1
  30. package/lib/esm/atomic/molecules/checkbox_field/checkboxField.css.js.map +1 -1
  31. package/lib/esm/atomic/molecules/dropdown/dropdown.css.js +1 -1
  32. package/lib/esm/atomic/molecules/empty-state/EmptyState.css.js +1 -1
  33. package/lib/esm/atomic/molecules/form/FormErrorBanner.css.js +1 -1
  34. package/lib/esm/atomic/molecules/form/formStyles.css.js +1 -1
  35. package/lib/esm/atomic/molecules/form_error/formError.css.js +1 -1
  36. package/lib/esm/atomic/molecules/form_field/formField.css.js +1 -1
  37. package/lib/esm/atomic/molecules/highlight/HighlightCode.css.js +1 -1
  38. package/lib/esm/atomic/molecules/highlight/highlightStyles.css.js +1 -1
  39. package/lib/esm/atomic/molecules/markdown/LazyMarkdownRenderer.css.js +1 -1
  40. package/lib/esm/atomic/molecules/markdown/components/MarkdownArticleContainer.css.js +1 -1
  41. package/lib/esm/atomic/molecules/markdown/components/MarkdownArticleContainer.css.js.map +1 -1
  42. package/lib/esm/atomic/molecules/markdown/components/MarkdownBlockquote.css.js +1 -1
  43. package/lib/esm/atomic/molecules/markdown/components/MarkdownCodeCopyButton.css.js +1 -1
  44. package/lib/esm/atomic/molecules/markdown/components/MarkdownCodeCopyButton.css.js.map +1 -1
  45. package/lib/esm/atomic/molecules/markdown/components/MarkdownDelete.css.js +1 -1
  46. package/lib/esm/atomic/molecules/markdown/components/MarkdownDelete.css.js.map +1 -1
  47. package/lib/esm/atomic/molecules/markdown/components/MarkdownEmphasis.css.js.map +1 -1
  48. package/lib/esm/atomic/molecules/markdown/components/MarkdownFootnoteDefinition.css.js +1 -1
  49. package/lib/esm/atomic/molecules/markdown/components/MarkdownFootnoteReference.css.js +1 -2
  50. package/lib/esm/atomic/molecules/markdown/components/MarkdownFootnoteReference.css.js.map +1 -1
  51. package/lib/esm/atomic/molecules/markdown/components/MarkdownFootnotesSection.css.js +1 -1
  52. package/lib/esm/atomic/molecules/markdown/components/MarkdownHeading.css.js +8 -7
  53. package/lib/esm/atomic/molecules/markdown/components/MarkdownHeading.css.js.map +1 -1
  54. package/lib/esm/atomic/molecules/markdown/components/MarkdownHtmlFallback.css.js +1 -1
  55. package/lib/esm/atomic/molecules/markdown/components/MarkdownImage.css.js +1 -1
  56. package/lib/esm/atomic/molecules/markdown/components/MarkdownInlineCode.css.js +1 -1
  57. package/lib/esm/atomic/molecules/markdown/components/MarkdownInlineCode.css.js.map +1 -1
  58. package/lib/esm/atomic/molecules/markdown/components/MarkdownLink.css.js +1 -1
  59. package/lib/esm/atomic/molecules/markdown/components/MarkdownLink.css.js.map +1 -1
  60. package/lib/esm/atomic/molecules/markdown/components/MarkdownList.css.js +1 -1
  61. package/lib/esm/atomic/molecules/markdown/components/MarkdownList.css.js.map +1 -1
  62. package/lib/esm/atomic/molecules/markdown/components/MarkdownListItem.css.js +1 -1
  63. package/lib/esm/atomic/molecules/markdown/components/MarkdownListItem.css.js.map +1 -1
  64. package/lib/esm/atomic/molecules/markdown/components/MarkdownMark.css.js +1 -1
  65. package/lib/esm/atomic/molecules/markdown/components/MarkdownMark.css.js.map +1 -1
  66. package/lib/esm/atomic/molecules/markdown/components/MarkdownMermaidBlock.css.js +1 -1
  67. package/lib/esm/atomic/molecules/markdown/components/MarkdownParagraph.css.js +1 -1
  68. package/lib/esm/atomic/molecules/markdown/components/MarkdownParagraph.css.js.map +1 -1
  69. package/lib/esm/atomic/molecules/markdown/components/MarkdownStrong.css.js +1 -1
  70. package/lib/esm/atomic/molecules/markdown/components/MarkdownStrong.css.js.map +1 -1
  71. package/lib/esm/atomic/molecules/markdown/components/MarkdownSubscript.css.js +1 -1
  72. package/lib/esm/atomic/molecules/markdown/components/MarkdownSubscript.css.js.map +1 -1
  73. package/lib/esm/atomic/molecules/markdown/components/MarkdownSuperscript.css.js +1 -1
  74. package/lib/esm/atomic/molecules/markdown/components/MarkdownSuperscript.css.js.map +1 -1
  75. package/lib/esm/atomic/molecules/markdown/components/MarkdownTable.css.js +1 -1
  76. package/lib/esm/atomic/molecules/markdown/components/MarkdownTable.css.js.map +1 -1
  77. package/lib/esm/atomic/molecules/markdown/components/MarkdownTableCaption.css.js +1 -1
  78. package/lib/esm/atomic/molecules/markdown/components/MarkdownTableCell.css.js +1 -1
  79. package/lib/esm/atomic/molecules/markdown/components/MarkdownTableCell.css.js.map +1 -1
  80. package/lib/esm/atomic/molecules/markdown/components/MarkdownTableHead.css.js +1 -1
  81. package/lib/esm/atomic/molecules/markdown/components/MarkdownTableHeaderCell.css.js +1 -1
  82. package/lib/esm/atomic/molecules/markdown/components/MarkdownTaskListItem.css.js +1 -1
  83. package/lib/esm/atomic/molecules/markdown/components/MarkdownTaskListItem.css.js.map +1 -1
  84. package/lib/esm/atomic/molecules/markdown/components/MarkdownText.css.js +1 -1
  85. package/lib/esm/atomic/molecules/markdown/components/MarkdownText.css.js.map +1 -1
  86. package/lib/esm/atomic/molecules/markdown/components/MarkdownThematicBreak.css.js +1 -1
  87. package/lib/esm/atomic/molecules/tabs/tabs.css.js +4 -4
  88. package/lib/esm/atomic/molecules/toast/toast.css.js +2 -2
  89. package/lib/esm/atomic/molecules/toast/toast.css.js.map +1 -1
  90. package/lib/esm/atomic/organisms/login_form/loginForm.css.js +1 -1
  91. package/lib/esm/atomic/organisms/sidebar/SidebarContainer.js +2 -2
  92. package/lib/esm/atomic/organisms/sidebar/navigationSidebar.css.js +13 -13
  93. package/lib/esm/atomic/organisms/sidebar/sidebar.css.js +2 -2
  94. package/lib/esm/atomic/templates/auth_layout/authLayout.css.js +1 -1
  95. package/lib/esm/atomic/templates/detail-page/DetailPage.js +4 -4
  96. package/lib/esm/atomic/templates/detail-page/detailPage.css.js +1 -1
  97. package/lib/esm/atomic/templates/page-container/PageContainer.js +3 -3
  98. package/lib/esm/atomic/templates/page-container/pageContainer.css.js +1 -1
  99. package/lib/esm/backoffice/atoms/backoffice_id_badge/backofficeIdBadge.css.js +1 -1
  100. package/lib/esm/backoffice/atoms/copyable_text/copyableText.css.js +1 -1
  101. package/lib/esm/backoffice/atoms/environment_badge/environmentBadge.css.js +1 -1
  102. package/lib/esm/backoffice/atoms/shortcut_hint/shortcutHint.css.js +1 -1
  103. package/lib/esm/backoffice/atoms/skeleton/skeleton.css.js +5 -5
  104. package/lib/esm/backoffice/atoms/skeleton/skeleton.css.js.map +1 -1
  105. package/lib/esm/backoffice/atoms/spinner/spinner.css.js +1 -1
  106. package/lib/esm/backoffice/atoms/spinner/spinner.css.js.map +1 -1
  107. package/lib/esm/backoffice/atoms/status_badge/statusBadge.css.js +1 -1
  108. package/lib/esm/backoffice/atoms/tag/tag.css.js +7 -7
  109. package/lib/esm/backoffice/atoms/tag/tag.css.js.map +1 -1
  110. package/lib/esm/backoffice/molecules/backoffice_detail_layout/backofficeDetailLayout.css.js +1 -1
  111. package/lib/esm/backoffice/molecules/backoffice_empty_state/backofficeEmptyState.css.js +1 -1
  112. package/lib/esm/backoffice/molecules/backoffice_filter_drawer/BackofficeFilterDrawer.js +7 -7
  113. package/lib/esm/backoffice/molecules/backoffice_filter_drawer/backofficeFilterDrawer.css.js +1 -1
  114. package/lib/esm/backoffice/molecules/backoffice_filter_drawer/backofficeFilterDrawer.css.js.map +1 -1
  115. package/lib/esm/backoffice/molecules/backoffice_filter_field/backofficeFilterField.css.js +1 -1
  116. package/lib/esm/backoffice/molecules/backoffice_filters_bar/backofficeFiltersBar.css.js +1 -1
  117. package/lib/esm/backoffice/molecules/backoffice_form_section/BackofficeFormSection.js +3 -3
  118. package/lib/esm/backoffice/molecules/backoffice_form_section/backofficeFormSection.css.js +1 -1
  119. package/lib/esm/backoffice/molecules/backoffice_infinite_list_status/BackofficeInfiniteListStatus.js +2 -2
  120. package/lib/esm/backoffice/molecules/backoffice_infinite_list_status/backofficeInfiniteListStatus.css.js +1 -1
  121. package/lib/esm/backoffice/molecules/backoffice_json_viewer/LazyBackofficeJsonViewer.css.js +1 -1
  122. package/lib/esm/backoffice/molecules/backoffice_json_viewer/LazyBackofficeJsonViewer.js +1 -1
  123. package/lib/esm/backoffice/molecules/backoffice_json_viewer/backofficeJsonViewer.css.js +1 -1
  124. package/lib/esm/backoffice/molecules/backoffice_key_value_list/backofficeKeyValueList.css.js +1 -1
  125. package/lib/esm/backoffice/molecules/backoffice_load_more/backofficeLoadMore.css.js +1 -1
  126. package/lib/esm/backoffice/molecules/backoffice_load_more/backofficeLoadMore.css.js.map +1 -1
  127. package/lib/esm/backoffice/molecules/backoffice_page_header/BackofficePageHeader.js +4 -4
  128. package/lib/esm/backoffice/molecules/backoffice_page_header/backofficePageHeader.css.js +1 -1
  129. package/lib/esm/backoffice/molecules/backoffice_relations_menu/BackofficeRelationsMenu.js +4 -4
  130. package/lib/esm/backoffice/molecules/backoffice_relations_menu/backofficeRelationsMenu.css.js +1 -1
  131. package/lib/esm/backoffice/molecules/backoffice_relations_menu/backofficeRelationsMenu.css.js.map +1 -1
  132. package/lib/esm/backoffice/molecules/backoffice_table_skeleton/backofficeTableSkeleton.css.js +4 -4
  133. package/lib/esm/backoffice/molecules/backoffice_table_toolbar/BackofficeTableToolbar.js +8 -8
  134. package/lib/esm/backoffice/molecules/backoffice_table_toolbar/backofficeTableToolbar.css.js +1 -1
  135. package/lib/esm/backoffice/molecules/backoffice_table_toolbar/backofficeTableToolbar.css.js.map +1 -1
  136. package/lib/esm/backoffice/molecules/backoffice_tabs/backofficeTabs.css.js +8 -8
  137. package/lib/esm/backoffice/molecules/backoffice_tabs/backofficeTabs.css.js.map +1 -1
  138. package/lib/esm/backoffice/molecules/bulk_actions_bar/bulkActionsBar.css.js +1 -1
  139. package/lib/esm/backoffice/molecules/confirm_dialog/confirmDialog.css.js +1 -1
  140. package/lib/esm/backoffice/molecules/filter_chip_row/filterChipRow.css.js +1 -1
  141. package/lib/esm/backoffice/molecules/filter_chip_row/filterChipRow.css.js.map +1 -1
  142. package/lib/esm/backoffice/molecules/global_search_input/globalSearchInput.css.js +1 -1
  143. package/lib/esm/backoffice/molecules/global_search_input/globalSearchInput.css.js.map +1 -1
  144. package/lib/esm/backoffice/molecules/inline_banner/inlineBanner.css.js +6 -6
  145. package/lib/esm/backoffice/molecules/inline_banner/inlineBanner.css.js.map +1 -1
  146. package/lib/esm/backoffice/molecules/sidebar_collapse_toggle/sidebarCollapseToggle.css.js +1 -1
  147. package/lib/esm/backoffice/molecules/sidebar_collapse_toggle/sidebarCollapseToggle.css.js.map +1 -1
  148. package/lib/esm/backoffice/molecules/sidebar_nav_item/sidebarNavItem.css.js +1 -1
  149. package/lib/esm/backoffice/molecules/sidebar_nav_item/sidebarNavItem.css.js.map +1 -1
  150. package/lib/esm/backoffice/molecules/sidebar_nav_section/SidebarNavSection.js +5 -5
  151. package/lib/esm/backoffice/molecules/sidebar_nav_section/sidebarNavSection.css.js +1 -1
  152. package/lib/esm/backoffice/molecules/sidebar_nav_section/sidebarNavSection.css.js.map +1 -1
  153. package/lib/esm/backoffice/molecules/sidebar_profile_menu/BackofficeSidebarProfileMenu.js +4 -4
  154. package/lib/esm/backoffice/molecules/sidebar_profile_menu/BackofficeSidebarProfileMenu.js.map +1 -1
  155. package/lib/esm/backoffice/molecules/sidebar_profile_menu/sidebarProfileMenu.css.js +5 -5
  156. package/lib/esm/backoffice/molecules/table_toolbar/tableToolbar.css.js +1 -1
  157. package/lib/esm/backoffice/organisms/audit_timeline/auditTimeline.css.js +1 -1
  158. package/lib/esm/backoffice/organisms/backoffice_data_table/backofficeDataTable.css.js +1 -1
  159. package/lib/esm/backoffice/organisms/backoffice_virtualized_connection_table/backofficeVirtualizedConnectionTable.css.js +1 -1
  160. package/lib/esm/backoffice/organisms/entity_header/entityHeader.css.js +1 -1
  161. package/lib/esm/backoffice/templates/detail_page_template/DetailPageTemplate.js +2 -2
  162. package/lib/esm/backoffice/templates/detail_page_template/detailPageTemplate.css.js +2 -2
  163. package/lib/esm/backoffice/templates/detail_page_template/detailPageTemplate.css.js.map +1 -1
  164. package/lib/esm/backoffice/templates/list_page_template/ListPageTemplate.js +1 -1
  165. package/lib/esm/backoffice/templates/list_page_template/ListPageTemplate.js.map +1 -1
  166. package/lib/esm/backoffice/templates/list_page_template/listPageTemplate.css.js +10 -10
  167. package/lib/esm/backoffice/templates/list_page_template/listPageTemplate.css.js.map +1 -1
  168. package/lib/esm/components/agent/AgentMarkdownCard.css.js +1 -1
  169. package/lib/esm/components/charts/MetricHistoryChart.js +17 -39
  170. package/lib/esm/components/charts/MetricHistoryChart.js.map +1 -1
  171. package/lib/esm/components/charts/TimeSeriesLineChart.js +20 -32
  172. package/lib/esm/components/charts/TimeSeriesLineChart.js.map +1 -1
  173. package/lib/esm/components/charts/metricHistoryChart.css.js +1 -1
  174. package/lib/esm/components/charts/timeSeriesLineChart.css.js +1 -1
  175. package/lib/esm/components/dashboard/activity_card/ActivityCard.css.js +1 -1
  176. package/lib/esm/components/dashboard/activity_card/ActivityCard.js +2 -2
  177. package/lib/esm/components/dashboard/activity_feed/ActivityFeed.css.js +1 -1
  178. package/lib/esm/components/dashboard/dashboard_grid/DashboardGrid.css.js +21 -21
  179. package/lib/esm/components/dashboard/dashboard_grid/DashboardGrid.css.js.map +1 -1
  180. package/lib/esm/components/dashboard/metadata_strip/MetadataStrip.css.js +1 -1
  181. package/lib/esm/components/dashboard/metric_card/MetricCard.css.js +1 -1
  182. package/lib/esm/components/dashboard/metric_card/MetricCard.js +2 -2
  183. package/lib/esm/components/dashboard/metric_tile_group/MetricTileGroup.css.js +1 -1
  184. package/lib/esm/components/dashboard/page_hero/PageHero.css.js +1 -1
  185. package/lib/esm/components/dashboard/page_hero/PageHero.js +3 -3
  186. package/lib/esm/components/dashboard/section_nav/SectionNav.css.js +1 -1
  187. package/lib/esm/components/dashboard/section_nav/SectionNav.css.js.map +1 -1
  188. package/lib/esm/components/dashboard/segmented_nav/SegmentedNav.css.js +1 -1
  189. package/lib/esm/components/dashboard/segmented_nav/SegmentedNav.css.js.map +1 -1
  190. package/lib/esm/components/dashboard/selectable_card/SelectableCard.css.js +1 -1
  191. package/lib/esm/components/dashboard/selectable_card/SelectableCard.css.js.map +1 -1
  192. package/lib/esm/components/dashboard/selectable_card/SelectableCard.js +2 -2
  193. package/lib/esm/components/dashboard/status_summary_panel/StatusSummaryPanel.css.js +1 -1
  194. package/lib/esm/components/dashboard/status_summary_panel/StatusSummaryPanel.js +1 -1
  195. package/lib/esm/components/dashboard/timeline_event_row/TimelineEventRow.css.js +1 -1
  196. package/lib/esm/components/dashboard/timeline_event_row/TimelineEventRow.js +2 -2
  197. package/lib/esm/components/data-table/DataTable.css.js +28 -28
  198. package/lib/esm/components/data-table/DataTable.css.js.map +1 -1
  199. package/lib/esm/components/data-table/DataTable.js +33 -35
  200. package/lib/esm/components/data-table/DataTable.js.map +1 -1
  201. package/lib/esm/components/data-table/ResponsiveRecordList.css.js +6 -6
  202. package/lib/esm/components/data-table/TableCell.css.js +2 -2
  203. package/lib/esm/components/data-table/VirtualizedConnectionTable.css.js +1 -1
  204. package/lib/esm/components/data-table/VirtualizedConnectionTable.js +49 -61
  205. package/lib/esm/components/data-table/VirtualizedConnectionTable.js.map +1 -1
  206. package/lib/esm/components/feedback/OperationFeedback.css.js +1 -1
  207. package/lib/esm/components/feedback/OperationFeedback.js +1 -1
  208. package/lib/esm/components/infinite/InfiniteScrollTrigger.js +1 -1
  209. package/lib/esm/components/infinite/infiniteScrollTrigger.css.js +1 -1
  210. package/lib/esm/components/layout/ActionPanel.css.js +1 -1
  211. package/lib/esm/components/layout/ActionPanel.js +3 -3
  212. package/lib/esm/components/layout/ActionPanel.js.map +1 -1
  213. package/lib/esm/components/layout/AppHeader.css.js +1 -1
  214. package/lib/esm/components/layout/AppHeader.js +4 -4
  215. package/lib/esm/components/layout/ContentLayout.css.js +1 -1
  216. package/lib/esm/components/layout/ContentLayout.js +2 -2
  217. package/lib/esm/components/layout/DetailSummaryHeader.css.js +1 -1
  218. package/lib/esm/components/layout/DetailSummaryHeader.js +3 -3
  219. package/lib/esm/components/layout/PageShell.css.js +4 -4
  220. package/lib/esm/components/layout/PageShell.js +5 -5
  221. package/lib/esm/components/layout/PageShell.js.map +1 -1
  222. package/lib/esm/components/layout/SettingsLayout.css.js +1 -1
  223. package/lib/esm/components/layout/SplitViewLayout.css.js +1 -1
  224. package/lib/esm/components/layout/TabsContentLayout.css.js +1 -1
  225. package/lib/esm/components/layout/ToolbarRow.css.js +1 -1
  226. package/lib/esm/components/media/imagePreviewModal.css.js +5 -5
  227. package/lib/esm/components/responsive/ResponsiveCollectionRenderer.css.js +1 -1
  228. package/lib/esm/components/responsive/ResponsiveCollectionRenderer.css.js.map +1 -1
  229. package/lib/esm/components/routing/routeFallback.css.js +1 -1
  230. package/lib/esm/components/routing/routeFallback.css.js.map +1 -1
  231. package/lib/esm/components/routing/routePendingBar.css.js +1 -1
  232. package/lib/esm/components/routing/routePendingBar.css.js.map +1 -1
  233. package/lib/esm/components/select/SimpleSelect.css.js +14 -14
  234. package/lib/esm/components/select/SimpleSelect.css.js.map +1 -1
  235. package/lib/esm/components/subscriptions/RefetchNeededBanner.css.js +1 -1
  236. package/lib/esm/components/tile/InfoTile.css.js +1 -1
  237. package/lib/esm/components/tile/InfoTile.css.js.map +1 -1
  238. package/lib/esm/components/tile/InfoTile.js +3 -3
  239. package/lib/esm/index.js +257 -255
  240. package/lib/esm/internal/charts/metricHistoryChartHelpers.js +24 -0
  241. package/lib/esm/internal/charts/metricHistoryChartHelpers.js.map +1 -0
  242. package/lib/esm/internal/charts/timeSeriesLineChartHelpers.js +18 -0
  243. package/lib/esm/internal/charts/timeSeriesLineChartHelpers.js.map +1 -0
  244. package/lib/esm/internal/data-table/layout.js +6 -0
  245. package/lib/esm/internal/data-table/layout.js.map +1 -0
  246. package/lib/esm/internal/data-table/virtualization.js +12 -0
  247. package/lib/esm/internal/data-table/virtualization.js.map +1 -0
  248. package/lib/esm/node_modules/@vitest/pretty-format/dist/index.js +614 -0
  249. package/lib/esm/node_modules/@vitest/pretty-format/dist/index.js.map +1 -0
  250. package/lib/esm/node_modules/@vitest/runner/dist/chunk-artifact.js +909 -0
  251. package/lib/esm/node_modules/@vitest/runner/dist/chunk-artifact.js.map +1 -0
  252. package/lib/esm/node_modules/@vitest/runner/dist/index.js +1 -0
  253. package/lib/esm/node_modules/@vitest/utils/dist/chunk-pathe.M-eThtNZ.js +50 -0
  254. package/lib/esm/node_modules/@vitest/utils/dist/chunk-pathe.M-eThtNZ.js.map +1 -0
  255. package/lib/esm/node_modules/@vitest/utils/dist/display.js +424 -0
  256. package/lib/esm/node_modules/@vitest/utils/dist/display.js.map +1 -0
  257. package/lib/esm/node_modules/@vitest/utils/dist/helpers.js +43 -0
  258. package/lib/esm/node_modules/@vitest/utils/dist/helpers.js.map +1 -0
  259. package/lib/esm/node_modules/@vitest/utils/dist/source-map.js +68 -0
  260. package/lib/esm/node_modules/@vitest/utils/dist/source-map.js.map +1 -0
  261. package/lib/esm/node_modules/@vitest/utils/dist/timers.js +19 -0
  262. package/lib/esm/node_modules/@vitest/utils/dist/timers.js.map +1 -0
  263. package/lib/esm/node_modules/tinyrainbow/dist/index.js +85 -0
  264. package/lib/esm/node_modules/tinyrainbow/dist/index.js.map +1 -0
  265. package/lib/esm/shared/backofficeTableDensity.css.js.map +1 -1
  266. package/lib/esm/style.css +1 -1
  267. package/lib/esm/theme/accessibility.css.js +1 -1
  268. package/lib/esm/theme/accessibility.css.js.map +1 -1
  269. package/lib/esm/theme/index.js +12 -10
  270. package/lib/esm/theme/sprinkles.css.js +73323 -51658
  271. package/lib/esm/theme/sprinkles.css.js.map +1 -1
  272. package/lib/esm/theme/styleRecipes.css.js +19 -0
  273. package/lib/esm/theme/styleRecipes.css.js.map +1 -0
  274. package/lib/esm/theme/theme-dark.css.js.map +1 -1
  275. package/lib/esm/theme/theme-light.css.js +23 -2
  276. package/lib/esm/theme/theme-light.css.js.map +1 -1
  277. package/lib/esm/theme/theme.css.js +23 -2
  278. package/lib/esm/theme/themeContract.js +23 -2
  279. package/lib/esm/theme/themeContract.js.map +1 -1
  280. package/lib/types/atomic/atoms/button/button.css.d.ts.map +1 -1
  281. package/lib/types/atomic/atoms/checkbox/checkbox.css.d.ts.map +1 -1
  282. package/lib/types/atomic/atoms/input/input.css.d.ts.map +1 -1
  283. package/lib/types/atomic/atoms/modal/modal.css.d.ts.map +1 -1
  284. package/lib/types/atomic/atoms/textarea/textarea.css.d.ts.map +1 -1
  285. package/lib/types/atomic/molecules/markdown/components/MarkdownCodeCopyButton.css.d.ts.map +1 -1
  286. package/lib/types/atomic/molecules/toast/toast.css.d.ts.map +1 -1
  287. package/lib/types/backoffice/atoms/tag/tag.css.d.ts.map +1 -1
  288. package/lib/types/backoffice/molecules/backoffice_filter_drawer/backofficeFilterDrawer.css.d.ts.map +1 -1
  289. package/lib/types/backoffice/molecules/backoffice_load_more/backofficeLoadMore.css.d.ts.map +1 -1
  290. package/lib/types/backoffice/molecules/backoffice_relations_menu/backofficeRelationsMenu.css.d.ts.map +1 -1
  291. package/lib/types/backoffice/molecules/backoffice_table_toolbar/backofficeTableToolbar.css.d.ts.map +1 -1
  292. package/lib/types/backoffice/molecules/backoffice_tabs/backofficeTabs.css.d.ts.map +1 -1
  293. package/lib/types/backoffice/molecules/filter_chip_row/filterChipRow.css.d.ts.map +1 -1
  294. package/lib/types/backoffice/molecules/global_search_input/globalSearchInput.css.d.ts.map +1 -1
  295. package/lib/types/backoffice/molecules/inline_banner/inlineBanner.css.d.ts.map +1 -1
  296. package/lib/types/backoffice/molecules/sidebar_collapse_toggle/sidebarCollapseToggle.css.d.ts.map +1 -1
  297. package/lib/types/backoffice/molecules/sidebar_nav_item/sidebarNavItem.css.d.ts.map +1 -1
  298. package/lib/types/backoffice/molecules/sidebar_nav_section/sidebarNavSection.css.d.ts.map +1 -1
  299. package/lib/types/backoffice/templates/detail_page_template/detailPageTemplate.css.d.ts.map +1 -1
  300. package/lib/types/backoffice/templates/list_page_template/listPageTemplate.css.d.ts.map +1 -1
  301. package/lib/types/components/charts/MetricHistoryChart.d.ts +0 -8
  302. package/lib/types/components/charts/MetricHistoryChart.d.ts.map +1 -1
  303. package/lib/types/components/charts/TimeSeriesLineChart.d.ts +0 -4
  304. package/lib/types/components/charts/TimeSeriesLineChart.d.ts.map +1 -1
  305. package/lib/types/components/dashboard/dashboard_grid/DashboardGrid.css.d.ts.map +1 -1
  306. package/lib/types/components/dashboard/section_nav/SectionNav.css.d.ts.map +1 -1
  307. package/lib/types/components/dashboard/segmented_nav/SegmentedNav.css.d.ts.map +1 -1
  308. package/lib/types/components/dashboard/selectable_card/SelectableCard.css.d.ts.map +1 -1
  309. package/lib/types/components/data-table/DataTable.d.ts +1 -5
  310. package/lib/types/components/data-table/DataTable.d.ts.map +1 -1
  311. package/lib/types/components/data-table/VirtualizedConnectionTable.d.ts +1 -34
  312. package/lib/types/components/data-table/VirtualizedConnectionTable.d.ts.map +1 -1
  313. package/lib/types/components/select/SimpleSelect.css.d.ts.map +1 -1
  314. package/lib/types/components/tile/InfoTile.css.d.ts.map +1 -1
  315. package/lib/types/internal/charts/metricHistoryChartHelpers.d.ts +4 -0
  316. package/lib/types/internal/charts/metricHistoryChartHelpers.d.ts.map +1 -0
  317. package/lib/types/internal/charts/timeSeriesLineChartHelpers.d.ts +9 -0
  318. package/lib/types/internal/charts/timeSeriesLineChartHelpers.d.ts.map +1 -0
  319. package/lib/types/internal/data-table/layout.d.ts +4 -0
  320. package/lib/types/internal/data-table/layout.d.ts.map +1 -0
  321. package/lib/types/internal/data-table/virtualization.d.ts +29 -0
  322. package/lib/types/internal/data-table/virtualization.d.ts.map +1 -0
  323. package/lib/types/shared/backofficeTableDensity.css.d.ts.map +1 -1
  324. package/lib/types/theme/index.d.ts +2 -0
  325. package/lib/types/theme/index.d.ts.map +1 -1
  326. package/lib/types/theme/sprinkles.css.d.ts +684 -60
  327. package/lib/types/theme/sprinkles.css.d.ts.map +1 -1
  328. package/lib/types/theme/styleRecipes.css.d.ts +29 -0
  329. package/lib/types/theme/styleRecipes.css.d.ts.map +1 -0
  330. package/lib/types/theme/theme-dark.css.d.ts.map +1 -1
  331. package/lib/types/theme/theme-light.css.d.ts +21 -0
  332. package/lib/types/theme/theme-light.css.d.ts.map +1 -1
  333. package/lib/types/theme/themeContract.d.ts +21 -0
  334. package/lib/types/theme/themeContract.d.ts.map +1 -1
  335. package/package.json +2 -2
@@ -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":""}
@@ -3,28 +3,28 @@
3
3
  import { createRuntimeFn as e } from "@vanilla-extract/recipes/createRuntimeFn";
4
4
  //#region src/components/select/SimpleSelect.css.ts
5
5
  var t = e({
6
- defaultClassName: "_11ypmks3 _11ypmks0 txvbqbptg",
6
+ defaultClassName: "_11ypmks3 _11ypmks0 txvbqb11js",
7
7
  variantClassNames: { fullWidth: {
8
- true: "_11ypmks4 _11ypmks1 txvbqbu7g",
9
- false: "_11ypmks5 _11ypmks2 txvbqbu77"
8
+ true: "_11ypmks4 _11ypmks1 txvbqb17w0",
9
+ false: "_11ypmks5 _11ypmks2 txvbqb17vn"
10
10
  } },
11
11
  defaultVariants: { fullWidth: !0 },
12
12
  compoundVariants: []
13
- }), n = "_11ypmks6 txvbqb9i7 txvbqbg0g txvbqb8p txvbqbamp txvbqbeey txvbqb66 txvbqbva3", r = e({
14
- defaultClassName: "_11ypmksi _11ypmks8 _11ypmks7 txvbqbnw7 txvbqbojg txvbqbp6g txvbqbly7 txvbqbu7g txvbqb9ip txvbqbcp txvbqbdpp txvbqbao7 txvbqb1ry txvbqb8y txvbqbamp txvbqbt6p txvbqbv txvbqb78 txvbqb6x txvbqb7k",
13
+ }), n = "_11ypmks6 txvbqbdqi txvbqbn7r txvbqb96 txvbqbfd0 txvbqbkwp txvbqb6a txvbqb19cd", r = e({
14
+ defaultClassName: "_11ypmksk _11ypmks8 _11ypmks7 txvbqbyoi txvbqbzm3 txvbqb10jb txvbqbvve txvbqb17w0 txvbqbdr8 txvbqbey txvbqbjus txvbqbff6 txvbqb2gz txvbqb9j txvbqbfd0 txvbqb16ex txvbqbv txvbqb7h txvbqb76 txvbqb7t qbwcue4 txvbqb1c2w txvbqb1c9c",
15
15
  variantClassNames: {
16
16
  variant: {
17
- default: "_11ypmksj _11ypmksa _11ypmks9 txvbqb1dg txvbqb1qg txvbqbwg txvbqbv0x txvbqbv9z",
18
- brand: "_11ypmksk _11ypmkse _11ypmksd txvbqbvb9 txvbqb1cp txvbqb1qg txvbqb107 txvbqbuzg"
17
+ default: "_11ypmksl _11ypmksb _11ypmks9 txvbqb1w1 txvbqb2et txvbqb17h txvbqb1937 txvbqb19c9 _11ypmksa txvbqb1cas qbwcue1 txvbqb1ayl txvbqb1bb9",
18
+ brand: "_11ypmksm _11ypmksg _11ypmkse txvbqb19dj txvbqb1uy txvbqb2et txvbqb1cw txvbqb190g _11ypmksf txvbqb1c6x qbwcue3 txvbqb1cas txvbqb1bbo"
19
19
  },
20
20
  state: {
21
- default: "_11ypmksl",
22
- error: "_11ypmksm _11ypmksc _11ypmksb txvbqb1dg txvbqb1qg txvbqbxg txvbqbv0x txvbqbv9z"
21
+ default: "_11ypmksn",
22
+ error: "_11ypmkso _11ypmksd _11ypmksc txvbqb1w1 txvbqb2et txvbqb18x txvbqb1937 txvbqb19c9 qbwcue2 txvbqb1bbh"
23
23
  },
24
24
  size: {
25
- small: "_11ypmksn _11ypmksf txvbqbnvy txvbqboj7 txvbqbp67 txvbqblxy txvbqb8y",
26
- medium: "_11ypmkso _11ypmksg txvbqbnw7 txvbqbojg txvbqbp6g txvbqbly7 txvbqb8y",
27
- large: "_11ypmksp _11ypmksh txvbqbnwg txvbqbojp txvbqbp6p txvbqblyg txvbqb97"
25
+ small: "_11ypmksp _11ypmksh txvbqbyo5 txvbqbzlq txvbqb10iy txvbqbvv1 txvbqb9j",
26
+ medium: "_11ypmksq _11ypmksi txvbqbyoi txvbqbzm3 txvbqb10jb txvbqbvve txvbqb9j",
27
+ large: "_11ypmksr _11ypmksj txvbqbyov txvbqbzmg txvbqb10jo txvbqbvvr txvbqb9w"
28
28
  }
29
29
  },
30
30
  defaultVariants: {
@@ -35,8 +35,8 @@ var t = e({
35
35
  compoundVariants: [[{
36
36
  variant: "brand",
37
37
  state: "error"
38
- }, "_11ypmkse _11ypmksd txvbqbvb9 txvbqb1cp txvbqb1qg txvbqb107 txvbqbuzg"]]
39
- }), i = "_11ypmksq txvbqb7bp txvbqb78y", a = "_11ypmksr txvbqb9my txvbqbk5y txvbqbuxg txvbqbl7g txvbqbt7g", o = "_11ypmkss txvbqb9iy txvbqbcp txvbqbdoy txvbqbtx7 txvbqbc67 txvbqbva3 txvbqb77 txvbqb6x txvbqb7k", s = "_11ypmkst txvbqb2w txvbqbv9z", c = "_11ypmksu txvbqbvb9", l = "_11ypmksv txvbqbpt7 txvbqbtig txvbqbdqg txvbqbpug txvbqbuvp txvbqb9ip txvbqbai7 txvbqbany txvbqblap txvbqb1ry txvbqb1cp txvbqb1qg txvbqbwg txvbqbv0x txvbqb8q7 txvbqbit7 txvbqbl8p", u = "_11ypmksw txvbqb767 txvbqb73g txvbqbi8p", d = "_11ypmksy _11ypmksx txvbqbnw7 txvbqbojg txvbqbp6g txvbqbly7 txvbqb9ip txvbqbai7 txvbqbcg txvbqbany txvbqbu7g txvbqb12g txvbqb1py txvbqb1rp txvbqbv0t txvbqb8y txvbqbamg txvbqbv9z txvbqbt6p txvbqbv txvbqb78 txvbqb6w txvbqb7k", f = "_11ypmks10 _11ypmksz txvbqbv99", p = "_11ypmks11 txvbqb8p txvbqbva3", m = "_11ypmks12 txvbqbgnp txvbqbhay txvbqbhxy txvbqbg07 txvbqbcgp txvbqbv4n", h = "_11ypmks13 txvbqbnvy txvbqboj7 txvbqbp67 txvbqblxy";
38
+ }, "_11ypmksg _11ypmkse txvbqb19dj txvbqb1uy txvbqb2et txvbqb1cw txvbqb190g _11ypmksf txvbqb1c6x qbwcue3 txvbqb1cas txvbqb1bbo"]]
39
+ }), i = "_11ypmkss txvbqbajb txvbqbafc", a = "_11ypmkst txvbqbdxd txvbqbt9i txvbqb18xk txvbqbusr txvbqb16g0", o = "_11ypmksu txvbqbdrl txvbqbey txvbqbjtp txvbqb17h7 txvbqbhmm txvbqb19cd txvbqb7g txvbqb76 txvbqb7t", s = "_11ypmksv txvbqb30 txvbqb19c9", c = "_11ypmksw txvbqb19dj", l = "_11ypmksx txvbqb11jf txvbqb16vw txvbqbjxb txvbqb11l8 txvbqb18v1 txvbqbdr8 txvbqbf6i txvbqbfet txvbqbuxg txvbqb2gz txvbqb1uy txvbqb2et txvbqb17h txvbqb1937 txvbqbck9 txvbqbr9a txvbqbuuk", u = "_11ypmksy txvbqbabd txvbqba5l txvbqbqfo", d = "_11ypmks10 _11ypmksz txvbqbyoi txvbqbzm3 txvbqb10jb txvbqbvve txvbqbdr8 txvbqbf6i txvbqbel txvbqbfet txvbqb17w0 txvbqb1g5 txvbqb2e3 txvbqb2gm txvbqb1933 txvbqb9j txvbqbfcn txvbqb19c9 txvbqb16ex txvbqbv txvbqb7h txvbqb75 txvbqb7t", f = "_11ypmks11 txvbqb19bj txvbqb1963", p = "_11ypmks12 txvbqb96 txvbqb19cd", m = "_11ypmks13 txvbqbo5c txvbqbp2x txvbqbq05 txvbqbn7e txvbqbi1s txvbqb196x", h = "_11ypmks14 txvbqbyo5 txvbqbzlq txvbqb10iy txvbqbvv1";
40
40
  //#endregion
41
41
  export { h as actionsContainer, t as container, n as label, l as menu, u as menuOpen, m as menuSeparator, d as optionButton, p as optionDescription, f as optionSelected, r as trigger, o as triggerIcon, c as triggerIconBrand, s as triggerIconOpen, i as triggerOpen, a as valueText };
42
42
 
@@ -1 +1 @@
1
- {"version":3,"file":"SimpleSelect.css.js","names":[],"sources":["../../../../src/components/select/SimpleSelect.css.ts"],"sourcesContent":["import { style } from '@vanilla-extract/css';\nimport { recipe, type RecipeVariants } from '@vanilla-extract/recipes';\n\nimport { sprinkles } from '../../theme/sprinkles.css.js';\nimport { vars } from '../../theme/themeContract.js';\n\nexport const container = recipe({\n base: sprinkles({\n position: 'relative',\n }),\n variants: {\n fullWidth: {\n true: sprinkles({ width: 'full' }),\n false: sprinkles({ width: 'auto' }),\n },\n },\n defaultVariants: {\n fullWidth: true,\n },\n});\n\nexport const label = sprinkles({\n display: 'block',\n marginBottom: 2,\n fontSize: 'xs',\n fontWeight: 'semibold',\n letterSpacing: 'wider',\n textTransform: 'uppercase',\n color: 'textMuted',\n});\n\nconst triggerBase = style([\n sprinkles({\n width: 'full',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 2,\n paddingY: 2,\n paddingX: 3,\n borderRadius: 'xl',\n fontSize: 'sm',\n fontWeight: 'semibold',\n textAlign: 'left',\n cursor: 'pointer',\n transitionProperty: 'colors',\n transitionDuration: 150,\n transitionTimingFunction: 'ease',\n }),\n {\n selectors: {\n '&:disabled': {\n opacity: 0.6,\n cursor: 'not-allowed',\n },\n },\n },\n]);\n\nconst defaultTrigger = style([\n sprinkles({\n borderWidth: 'px',\n borderStyle: 'solid',\n borderColor: 'border',\n backgroundColor: 'white',\n color: 'text',\n }),\n {\n selectors: {\n '&:focus-visible': {\n outline: 'none',\n borderColor: vars.colors.primary,\n boxShadow: `0 0 0 3px ${vars.colors.primaryLight}`,\n },\n },\n },\n]);\n\nconst errorTrigger = style([\n sprinkles({\n borderWidth: 'px',\n borderStyle: 'solid',\n borderColor: 'error',\n backgroundColor: 'white',\n color: 'text',\n }),\n {\n selectors: {\n '&:focus-visible': {\n boxShadow: `0 0 0 3px color-mix(in srgb, ${vars.colors.error} 20%, transparent)`,\n },\n },\n },\n]);\n\nconst brandTrigger = style([\n sprinkles({\n color: 'brandWhite',\n borderWidth: 'default',\n borderStyle: 'solid',\n borderColor: 'brandPrimaryRed',\n backgroundImage: 'brandDiagonal',\n }),\n {\n // boxShadow: `0 0 0 1px ${vars.colors.brandPrimaryRed}`,\n selectors: {\n '&:hover': {\n filter: 'brightness(0.98)',\n },\n '&:focus-visible': {\n outline: 'none',\n // borderColor: vars.colors.brandPrimaryRed,\n boxShadow: `0 0 0 2px ${vars.colors.brandSecondaryOrange}`,\n },\n },\n },\n]);\n\nexport const trigger = recipe({\n base: triggerBase,\n variants: {\n variant: {\n default: defaultTrigger,\n brand: brandTrigger,\n },\n state: {\n default: {},\n error: errorTrigger,\n },\n size: {\n small: sprinkles({\n paddingY: 1,\n paddingX: 2,\n fontSize: 'sm',\n }),\n medium: sprinkles({\n paddingY: 2,\n paddingX: 3,\n fontSize: 'sm',\n }),\n large: sprinkles({\n paddingY: 3,\n paddingX: 4,\n fontSize: 'base',\n }),\n },\n },\n defaultVariants: {\n variant: 'default',\n state: 'default',\n size: 'medium',\n },\n compoundVariants: [\n {\n variants: {\n variant: 'brand',\n state: 'error',\n },\n style: brandTrigger,\n },\n ],\n});\n\nexport const triggerOpen = sprinkles({\n borderBottomLeftRadius: 'none',\n borderBottomRightRadius: 'none',\n});\n\nexport const valueText = sprinkles({\n flex: 1,\n minWidth: 0,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n});\n\nexport const triggerIcon = sprinkles({\n display: 'grid',\n alignItems: 'center',\n justifyContent: 'center',\n width: 4,\n height: 4,\n color: 'textMuted',\n transitionProperty: 'default',\n transitionDuration: 150,\n transitionTimingFunction: 'ease',\n});\n\nexport const triggerIconOpen = sprinkles({\n rotate: 180,\n color: 'text',\n});\n\nexport const triggerIconBrand = sprinkles({\n color: 'brandWhite',\n});\n\nexport const menu = sprinkles({\n position: 'absolute',\n top: 'full',\n left: 0,\n right: 0,\n zIndex: 10,\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n padding: 1,\n borderRadius: 'xl',\n borderWidth: 'default',\n borderStyle: 'solid',\n borderColor: 'border',\n backgroundColor: 'white',\n boxShadow: 'lg',\n maxHeight: 72,\n overflowY: 'auto',\n});\n\nexport const menuOpen = sprinkles({\n borderTopLeftRadius: 'none',\n borderTopRightRadius: 'none',\n marginTop: '-px',\n});\n\nexport const optionButton = style([\n sprinkles({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n gap: 1,\n width: 'full',\n borderWidth: 0,\n borderStyle: 'none',\n borderRadius: 'lg',\n backgroundColor: 'transparent',\n paddingY: 2,\n paddingX: 3,\n fontSize: 'sm',\n fontWeight: 'medium',\n color: 'text',\n textAlign: 'left',\n cursor: 'pointer',\n transitionProperty: 'colors',\n transitionDuration: 120,\n transitionTimingFunction: 'ease',\n }),\n {\n selectors: {\n '&:hover': {\n backgroundColor: vars.colors.surfaceSecondary,\n },\n '&:focus-visible': {\n outline: 'none',\n backgroundColor: vars.colors.surfaceSecondary,\n boxShadow: `0 0 0 2px ${vars.colors.primaryLight}`,\n },\n },\n },\n]);\n\nexport const optionSelected = style([\n sprinkles({\n color: 'primary',\n }),\n {\n backgroundColor: vars.colors.primaryLight,\n },\n]);\n\nexport const optionDescription = sprinkles({\n fontSize: 'xs',\n color: 'textMuted',\n});\n\nexport const menuSeparator = sprinkles({\n height: 'px',\n marginY: 1,\n marginX: 2,\n backgroundColor: 'border',\n});\n\nexport const actionsContainer = sprinkles({\n paddingY: 1,\n paddingX: 2,\n});\n\nexport type SimpleSelectVariants = RecipeVariants<typeof trigger>;\n"],"mappings":""}
1
+ {"version":3,"file":"SimpleSelect.css.js","names":[],"sources":["../../../../src/components/select/SimpleSelect.css.ts"],"sourcesContent":["import { style } from '@vanilla-extract/css';\nimport { recipe, type RecipeVariants } from '@vanilla-extract/recipes';\n\nimport { sprinkles, stateSprinkles } from '../../theme/sprinkles.css.js';\nimport {\n brandFocusRing,\n controlFocusRing,\n disabledControl,\n errorControlFocusRing,\n} from '../../theme/styleRecipes.css.js';\nimport { vars } from '../../theme/themeContract.js';\n\nexport const container = recipe({\n base: sprinkles({\n position: 'relative',\n }),\n variants: {\n fullWidth: {\n true: sprinkles({ width: 'full' }),\n false: sprinkles({ width: 'auto' }),\n },\n },\n defaultVariants: {\n fullWidth: true,\n },\n});\n\nexport const label = sprinkles({\n display: 'block',\n marginBottom: 2,\n fontSize: 'xs',\n fontWeight: 'semibold',\n letterSpacing: 'wider',\n textTransform: 'uppercase',\n color: 'textMuted',\n});\n\nconst triggerBase = style([\n sprinkles({\n width: 'full',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 2,\n paddingY: 2,\n paddingX: 3,\n borderRadius: 'xl',\n fontSize: 'sm',\n fontWeight: 'semibold',\n textAlign: 'left',\n cursor: 'pointer',\n transitionProperty: 'colors',\n transitionDuration: 150,\n transitionTimingFunction: 'ease',\n }),\n disabledControl,\n]);\n\nconst defaultTrigger = style([\n sprinkles({\n borderWidth: 'px',\n borderStyle: 'solid',\n borderColor: 'border',\n backgroundColor: 'white',\n color: 'text',\n }),\n stateSprinkles({ outline: { focusVisible: 'none' } }),\n controlFocusRing,\n]);\n\nconst errorTrigger = style([\n sprinkles({\n borderWidth: 'px',\n borderStyle: 'solid',\n borderColor: 'error',\n backgroundColor: 'white',\n color: 'text',\n }),\n errorControlFocusRing,\n]);\n\nconst brandTrigger = style([\n sprinkles({\n color: 'brandWhite',\n borderWidth: 'default',\n borderStyle: 'solid',\n borderColor: 'brandPrimaryRed',\n backgroundImage: 'brandDiagonal',\n }),\n stateSprinkles({ filter: { hover: 'brightness98' } }),\n brandFocusRing,\n]);\n\nexport const trigger = recipe({\n base: triggerBase,\n variants: {\n variant: {\n default: defaultTrigger,\n brand: brandTrigger,\n },\n state: {\n default: {},\n error: errorTrigger,\n },\n size: {\n small: sprinkles({\n paddingY: 1,\n paddingX: 2,\n fontSize: 'sm',\n }),\n medium: sprinkles({\n paddingY: 2,\n paddingX: 3,\n fontSize: 'sm',\n }),\n large: sprinkles({\n paddingY: 3,\n paddingX: 4,\n fontSize: 'base',\n }),\n },\n },\n defaultVariants: {\n variant: 'default',\n state: 'default',\n size: 'medium',\n },\n compoundVariants: [\n {\n variants: {\n variant: 'brand',\n state: 'error',\n },\n style: brandTrigger,\n },\n ],\n});\n\nexport const triggerOpen = sprinkles({\n borderBottomLeftRadius: 'none',\n borderBottomRightRadius: 'none',\n});\n\nexport const valueText = sprinkles({\n flex: 1,\n minWidth: 0,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n});\n\nexport const triggerIcon = sprinkles({\n display: 'grid',\n alignItems: 'center',\n justifyContent: 'center',\n width: 4,\n height: 4,\n color: 'textMuted',\n transitionProperty: 'default',\n transitionDuration: 150,\n transitionTimingFunction: 'ease',\n});\n\nexport const triggerIconOpen = sprinkles({\n rotate: 180,\n color: 'text',\n});\n\nexport const triggerIconBrand = sprinkles({\n color: 'brandWhite',\n});\n\nexport const menu = sprinkles({\n position: 'absolute',\n top: 'full',\n left: 0,\n right: 0,\n zIndex: 10,\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n padding: 1,\n borderRadius: 'xl',\n borderWidth: 'default',\n borderStyle: 'solid',\n borderColor: 'border',\n backgroundColor: 'white',\n boxShadow: 'lg',\n maxHeight: 72,\n overflowY: 'auto',\n});\n\nexport const menuOpen = sprinkles({\n borderTopLeftRadius: 'none',\n borderTopRightRadius: 'none',\n marginTop: '-px',\n});\n\nexport const optionButton = style([\n sprinkles({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n gap: 1,\n width: 'full',\n borderWidth: 0,\n borderStyle: 'none',\n borderRadius: 'lg',\n backgroundColor: 'transparent',\n paddingY: 2,\n paddingX: 3,\n fontSize: 'sm',\n fontWeight: 'medium',\n color: 'text',\n textAlign: 'left',\n cursor: 'pointer',\n transitionProperty: 'colors',\n transitionDuration: 120,\n transitionTimingFunction: 'ease',\n }),\n {\n selectors: {\n '&:hover': {\n backgroundColor: vars.colors.surfaceSecondary,\n },\n '&:focus-visible': {\n outline: 'none',\n backgroundColor: vars.colors.surfaceSecondary,\n boxShadow: `0 0 0 2px ${vars.colors.primaryLight}`,\n },\n },\n },\n]);\n\nexport const optionSelected = sprinkles({\n color: 'primary',\n backgroundColor: 'primaryLight',\n});\n\nexport const optionDescription = sprinkles({\n fontSize: 'xs',\n color: 'textMuted',\n});\n\nexport const menuSeparator = sprinkles({\n height: 'px',\n marginY: 1,\n marginX: 2,\n backgroundColor: 'border',\n});\n\nexport const actionsContainer = sprinkles({\n paddingY: 1,\n paddingX: 2,\n});\n\nexport type SimpleSelectVariants = RecipeVariants<typeof trigger>;\n"],"mappings":""}
@@ -1,7 +1,7 @@
1
1
  /* empty css */
2
2
  /* empty css */
3
3
  //#region src/components/subscriptions/RefetchNeededBanner.css.ts
4
- var e = "_1onl44v0 txvbqbnwg txvbqbojp txvbqbp6p txvbqblyg txvbqb9ip txvbqbcp txvbqbdpp txvbqbaog txvbqb1rg txvbqb1cp txvbqb1qg txvbqbiy txvbqbv1j txvbqbv7j", t = "_1onl44v1 txvbqb9ip txvbqbai7 txvbqbany txvbqbk5y", n = "_1onl44v2 txvbqbfcp txvbqbamp txvbqb8y", r = "_1onl44v3 txvbqbfcp txvbqb8y txvbqbf5g";
4
+ var e = "_1onl44v0 txvbqbyov txvbqbzmg txvbqb10jo txvbqbvvr txvbqbdr8 txvbqbey txvbqbjus txvbqbffj txvbqb2g9 txvbqb1uy txvbqb2et txvbqbnz txvbqb193t txvbqb199t", t = "_1onl44v1 txvbqbdr8 txvbqbf6i txvbqbfet txvbqbt9i", n = "_1onl44v2 txvbqbm9g txvbqbfd0 txvbqb9j", r = "_1onl44v3 txvbqbm9g txvbqb9j txvbqblyz";
5
5
  //#endregion
6
6
  export { t as content, r as message, e as root, n as title };
7
7
 
@@ -1,7 +1,7 @@
1
1
  /* empty css */
2
2
  /* empty css */
3
3
  //#region src/components/tile/InfoTile.css.ts
4
- var e = "_1mkg78a0 txvbqbu7g txvbqb1rp txvbqbv43 txvbqblbg txvbqb9ip txvbqbai7 txvbqbaog", t = "_1mkg78a3 _1mkg78a1 txvbqb77 txvbqb6y txvbqb7k _1mkg78a2 txvbqbwev", n = "_1mkg78a4 txvbqb3b txvbqbu7g txvbqb9jg", r = "_1mkg78a5 txvbqb4 txvbqbv txvbqb9jg txvbqbu7g", i = "_1mkg78a6 txvbqb9ip txvbqbajy txvbqbcg txvbqbdpp txvbqbaog", a = "_1mkg78a7 txvbqb9ip txvbqbai7 txvbqbany txvbqbk5y", o = "_1mkg78a8 txvbqb97 txvbqbf5g txvbqbamp txvbqbv9z txvbqbfcp", s = "_1mkg78a9 txvbqbfcp txvbqb8y txvbqban7", c = "_1mkg78aa txvbqb8y txvbqbva1 txvbqb9ip txvbqbajy txvbqbao7", l = "_1mkg78ab txvbqb97 txvbqbv9z txvbqb9ip txvbqbai7 txvbqbao7", u = "_1mkg78ac txvbqb9ip txvbqbajy txvbqbaog txvbqbcp txvbqbdpp txvbqb8y txvbqbva1", d = "_1mkg78ad txvbqb9ip txvbqbcp txvbqbao7 txvbqbgxg";
4
+ var e = "_1mkg78a0 txvbqb17w0 txvbqb2gm txvbqb196d txvbqbuyj txvbqbdr8 txvbqbf6i txvbqbffj", t = "_1mkg78a3 _1mkg78a1 txvbqb7g txvbqb77 txvbqb7t _1mkg78a2 txvbqb1b7t qbwcue6 txvbqb1d2y txvbqb1d37 qbwcue0 txvbqb1cb0 txvbqb1cws", n = "_1mkg78a4 txvbqb3f txvbqb17w0 txvbqbdsb", r = "_1mkg78a5 txvbqb4 txvbqbv txvbqbdsb txvbqb17w0", i = "_1mkg78a6 txvbqbdr8 txvbqbf91 txvbqbel txvbqbjus txvbqbffj", a = "_1mkg78a7 txvbqbdr8 txvbqbf6i txvbqbfet txvbqbt9i", o = "_1mkg78a8 txvbqb9w txvbqblyz txvbqbfd0 txvbqb19c9 txvbqbm9g", s = "_1mkg78a9 txvbqbm9g txvbqb9j txvbqbfdq", c = "_1mkg78aa txvbqb9j txvbqb19cb txvbqbdr8 txvbqbf91 txvbqbff6", l = "_1mkg78ab txvbqb9w txvbqb19c9 txvbqbdr8 txvbqbf6i txvbqbff6", u = "_1mkg78ac txvbqbdr8 txvbqbf91 txvbqbffj txvbqbey txvbqbjus txvbqb9j txvbqb19cb", d = "_1mkg78ad txvbqbdr8 txvbqbey txvbqbff6 txvbqbojf";
5
5
  //#endregion
6
6
  export { d as actions, l as body, u as footer, i as header, a as headingGroup, t as interactive, r as interactiveButton, n as interactiveLink, c as meta, s as subtitle, e as tile, o as title };
7
7
 
@@ -1 +1 @@
1
- {"version":3,"file":"InfoTile.css.js","names":[],"sources":["../../../../src/components/tile/InfoTile.css.ts"],"sourcesContent":["import { style } from '@vanilla-extract/css';\n\nimport { sprinkles, stateSprinkles } from '../../theme/sprinkles.css.js';\nimport { vars } from '../../theme/themeContract.js';\n\nexport const tile = sprinkles({\n width: 'full',\n borderRadius: 'lg',\n backgroundColor: 'surfaceSecondary',\n padding: 4,\n display: 'flex',\n flexDirection: 'column',\n gap: 3,\n});\n\nexport const interactive = style([\n sprinkles({\n transitionProperty: 'default',\n transitionDuration: 160,\n transitionTimingFunction: 'ease',\n }),\n stateSprinkles({\n boxShadow: {\n hover: 'md',\n },\n }),\n {\n ':hover': {\n transform: 'translateY(-2px)',\n },\n ':focus-visible': {\n outline: `2px solid ${vars.colors['blue-500']}`,\n outlineOffset: '2px',\n },\n },\n]);\n\nexport const interactiveLink = sprinkles({\n textDecoration: 'none',\n width: 'full',\n display: 'inline-flex',\n});\n\nexport const interactiveButton = sprinkles({\n all: 'unset',\n cursor: 'pointer',\n display: 'inline-flex',\n width: 'full',\n});\n\nexport const header = sprinkles({\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n gap: 3,\n});\n\nexport const headingGroup = sprinkles({\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n minWidth: 0,\n});\n\nexport const title = sprinkles({\n fontSize: 'base',\n lineHeight: 1.4,\n fontWeight: 'semibold',\n color: 'text',\n margin: 0,\n});\n\nexport const subtitle = sprinkles({\n margin: 0,\n fontSize: 'sm',\n fontWeight: 'extrabold',\n});\n\nexport const meta = sprinkles({\n fontSize: 'sm',\n color: 'textSecondary',\n display: 'flex',\n flexWrap: 'wrap',\n gap: 2,\n});\n\nexport const body = sprinkles({\n fontSize: 'base',\n color: 'text',\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n});\n\nexport const footer = sprinkles({\n display: 'flex',\n flexWrap: 'wrap',\n gap: 3,\n alignItems: 'center',\n justifyContent: 'space-between',\n fontSize: 'sm',\n color: 'textSecondary',\n});\n\nexport const actions = sprinkles({\n display: 'flex',\n alignItems: 'center',\n gap: 2,\n marginLeft: 'auto',\n});\n"],"mappings":""}
1
+ {"version":3,"file":"InfoTile.css.js","names":[],"sources":["../../../../src/components/tile/InfoTile.css.ts"],"sourcesContent":["import { style } from '@vanilla-extract/css';\nimport { sprinkles, stateSprinkles } from '../../theme/sprinkles.css.js';\nimport { focusRing, liftOnHover } from '../../theme/styleRecipes.css.js';\n\nexport const tile = sprinkles({\n width: 'full',\n borderRadius: 'lg',\n backgroundColor: 'surfaceSecondary',\n padding: 4,\n display: 'flex',\n flexDirection: 'column',\n gap: 3,\n});\n\nexport const interactive = style([\n sprinkles({\n transitionProperty: 'default',\n transitionDuration: 160,\n transitionTimingFunction: 'ease',\n }),\n stateSprinkles({\n boxShadow: {\n hover: 'md',\n },\n }),\n liftOnHover,\n focusRing,\n]);\n\nexport const interactiveLink = sprinkles({\n textDecoration: 'none',\n width: 'full',\n display: 'inline-flex',\n});\n\nexport const interactiveButton = sprinkles({\n all: 'unset',\n cursor: 'pointer',\n display: 'inline-flex',\n width: 'full',\n});\n\nexport const header = sprinkles({\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n gap: 3,\n});\n\nexport const headingGroup = sprinkles({\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n minWidth: 0,\n});\n\nexport const title = sprinkles({\n fontSize: 'base',\n lineHeight: 1.4,\n fontWeight: 'semibold',\n color: 'text',\n margin: 0,\n});\n\nexport const subtitle = sprinkles({\n margin: 0,\n fontSize: 'sm',\n fontWeight: 'extrabold',\n});\n\nexport const meta = sprinkles({\n fontSize: 'sm',\n color: 'textSecondary',\n display: 'flex',\n flexWrap: 'wrap',\n gap: 2,\n});\n\nexport const body = sprinkles({\n fontSize: 'base',\n color: 'text',\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n});\n\nexport const footer = sprinkles({\n display: 'flex',\n flexWrap: 'wrap',\n gap: 3,\n alignItems: 'center',\n justifyContent: 'space-between',\n fontSize: 'sm',\n color: 'textSecondary',\n});\n\nexport const actions = sprinkles({\n display: 'flex',\n alignItems: 'center',\n gap: 2,\n marginLeft: 'auto',\n});\n"],"mappings":""}
@@ -29,15 +29,15 @@ var p = (e) => e == null ? null : u(typeof e == "string" || typeof e == "number"
29
29
  className: e(c, { [r]: y != null }, _),
30
30
  children: [
31
31
  (S != null || x != null || l != null) && /* @__PURE__ */ d("div", {
32
- className: "_1mkg78a6 txvbqb9ip txvbqbajy txvbqbcg txvbqbdpp txvbqbaog",
32
+ className: "_1mkg78a6 txvbqbdr8 txvbqbf91 txvbqbel txvbqbjus txvbqbffj",
33
33
  children: [/* @__PURE__ */ d("div", {
34
- className: "_1mkg78a7 txvbqb9ip txvbqbai7 txvbqbany txvbqbk5y",
34
+ className: "_1mkg78a7 txvbqbdr8 txvbqbf6i txvbqbfet txvbqbt9i",
35
35
  children: [p(S), m(x)]
36
36
  }), C]
37
37
  }),
38
38
  w,
39
39
  (h != null || g != null) && /* @__PURE__ */ d("div", {
40
- className: "_1mkg78ab txvbqb97 txvbqbv9z txvbqb9ip txvbqbai7 txvbqbao7",
40
+ className: "_1mkg78ab txvbqb9w txvbqb19c9 txvbqbdr8 txvbqbf6i txvbqbff6",
41
41
  children: [h, g]
42
42
  }),
43
43
  T