@plumile/ui 0.1.144 → 0.1.145
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/esm/admin/organisms/admin_sidebar/AdminSidebar.js +1 -1
- package/lib/esm/admin/organisms/admin_sidebar/adminSidebar.css.js +2 -2
- package/lib/esm/admin/organisms/admin_topbar/adminTopbar.css.js +1 -1
- package/lib/esm/atomic/atoms/badge/badge.css.js +7 -7
- package/lib/esm/atomic/atoms/button/button.css.js +38 -38
- package/lib/esm/atomic/atoms/button/button.css.js.map +1 -1
- package/lib/esm/atomic/atoms/checkbox/checkbox.css.js +6 -6
- package/lib/esm/atomic/atoms/checkbox/checkbox.css.js.map +1 -1
- package/lib/esm/atomic/atoms/error_message/errorMessage.css.js +1 -1
- package/lib/esm/atomic/atoms/input/input.css.js +9 -9
- package/lib/esm/atomic/atoms/label/label.css.js +4 -4
- package/lib/esm/atomic/atoms/modal/Modal.js +1 -1
- package/lib/esm/atomic/atoms/modal/modal.css.js +1 -1
- package/lib/esm/atomic/atoms/overlay/overlay.css.js +1 -1
- package/lib/esm/atomic/atoms/overlay/overlay.css.js.map +1 -1
- package/lib/esm/atomic/atoms/textarea/textarea.css.js +8 -8
- package/lib/esm/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuPopover.js +1 -1
- package/lib/esm/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.js +1 -1
- package/lib/esm/atomic/molecules/checkbox_field/checkboxField.css.js +1 -1
- package/lib/esm/atomic/molecules/dropdown/dropdown.css.js +1 -1
- package/lib/esm/atomic/molecules/empty-state/EmptyState.css.js +28 -28
- package/lib/esm/atomic/molecules/form/formStyles.css.js +1 -1
- package/lib/esm/atomic/molecules/form/formStyles.css.js.map +1 -1
- package/lib/esm/atomic/molecules/form_error/formError.css.js +1 -1
- package/lib/esm/atomic/molecules/form_field/formField.css.js +1 -1
- package/lib/esm/atomic/molecules/highlight/HighlightCode.css.js +1 -1
- package/lib/esm/atomic/molecules/highlight/highlightStyles.css.js +1 -1
- package/lib/esm/atomic/molecules/markdown/LazyMarkdownRenderer.css.js +1 -1
- package/lib/esm/atomic/molecules/markdown/components/MarkdownArticleContainer.css.js +1 -1
- package/lib/esm/atomic/molecules/markdown/components/MarkdownBlockquote.css.js +1 -1
- package/lib/esm/atomic/molecules/markdown/components/MarkdownCodeCopyButton.css.js +1 -1
- package/lib/esm/atomic/molecules/markdown/components/MarkdownFootnoteDefinition.css.js +1 -1
- package/lib/esm/atomic/molecules/markdown/components/MarkdownFootnoteReference.css.js +1 -1
- package/lib/esm/atomic/molecules/markdown/components/MarkdownFootnotesSection.css.js +1 -1
- package/lib/esm/atomic/molecules/markdown/components/MarkdownHeading.css.js +7 -8
- package/lib/esm/atomic/molecules/markdown/components/MarkdownHtmlFallback.css.js +1 -1
- package/lib/esm/atomic/molecules/markdown/components/MarkdownImage.css.js +1 -1
- package/lib/esm/atomic/molecules/markdown/components/MarkdownInlineCode.css.js +1 -1
- package/lib/esm/atomic/molecules/markdown/components/MarkdownLink.css.js +2 -1
- package/lib/esm/atomic/molecules/markdown/components/MarkdownList.css.js +1 -1
- package/lib/esm/atomic/molecules/markdown/components/MarkdownListItem.css.js +1 -1
- package/lib/esm/atomic/molecules/markdown/components/MarkdownMark.css.js +1 -1
- package/lib/esm/atomic/molecules/markdown/components/MarkdownMermaidBlock.css.js +1 -1
- package/lib/esm/atomic/molecules/markdown/components/MarkdownParagraph.css.js +1 -1
- package/lib/esm/atomic/molecules/markdown/components/MarkdownStrong.css.js +1 -1
- package/lib/esm/atomic/molecules/markdown/components/MarkdownTable.css.js +1 -1
- package/lib/esm/atomic/molecules/markdown/components/MarkdownTableCaption.css.js +1 -1
- package/lib/esm/atomic/molecules/markdown/components/MarkdownTableCell.css.js +1 -1
- package/lib/esm/atomic/molecules/markdown/components/MarkdownTableHead.css.js +1 -1
- package/lib/esm/atomic/molecules/markdown/components/MarkdownTableHeaderCell.css.js +1 -1
- package/lib/esm/atomic/molecules/markdown/components/MarkdownTaskListItem.css.js +1 -1
- package/lib/esm/atomic/molecules/markdown/components/MarkdownText.css.js +1 -1
- package/lib/esm/atomic/molecules/markdown/components/MarkdownThematicBreak.css.js +1 -1
- package/lib/esm/atomic/molecules/tabs/tabs.css.js +16 -16
- package/lib/esm/atomic/molecules/toast/toast.css.js +2 -2
- package/lib/esm/atomic/organisms/login_form/loginForm.css.js +1 -1
- package/lib/esm/atomic/organisms/sidebar/NavigationSidebar.js +85 -85
- package/lib/esm/atomic/organisms/sidebar/NavigationSidebar.js.map +1 -1
- package/lib/esm/atomic/organisms/sidebar/SidebarContainer.js +19 -19
- package/lib/esm/atomic/organisms/sidebar/SidebarContainer.js.map +1 -1
- package/lib/esm/atomic/organisms/sidebar/navigationSidebar.css.js +16 -16
- package/lib/esm/atomic/organisms/sidebar/navigationSidebar.css.js.map +1 -1
- package/lib/esm/atomic/organisms/sidebar/sidebar.css.js +6 -6
- package/lib/esm/atomic/organisms/sidebar/sidebar.css.js.map +1 -1
- package/lib/esm/atomic/templates/auth_layout/authLayout.css.js +1 -1
- package/lib/esm/atomic/templates/auth_layout/authLayout.css.js.map +1 -1
- package/lib/esm/atomic/templates/page-container/PageContainer.js +3 -3
- package/lib/esm/atomic/templates/page-container/pageContainer.css.js +1 -1
- package/lib/esm/backoffice/atoms/backoffice_id_badge/backofficeIdBadge.css.js +1 -1
- package/lib/esm/backoffice/atoms/copyable_text/copyableText.css.js +1 -1
- package/lib/esm/backoffice/atoms/shortcut_hint/shortcutHint.css.js +1 -1
- package/lib/esm/backoffice/atoms/skeleton/skeleton.css.js +5 -5
- package/lib/esm/backoffice/atoms/spinner/spinner.css.js +1 -1
- package/lib/esm/backoffice/atoms/status_badge/statusBadge.css.js +1 -1
- package/lib/esm/backoffice/atoms/tag/tag.css.js +7 -7
- package/lib/esm/backoffice/molecules/backoffice_detail_field/backofficeDetailField.css.js +8 -8
- package/lib/esm/backoffice/molecules/backoffice_detail_flag_tag/backofficeDetailFlagTag.css.js +1 -1
- package/lib/esm/backoffice/molecules/backoffice_detail_section/backofficeDetailSection.css.js +1 -1
- package/lib/esm/backoffice/molecules/backoffice_detail_tagged_value/backofficeDetailTaggedValue.css.js +1 -1
- package/lib/esm/backoffice/molecules/backoffice_filter_drawer/BackofficeFilterDrawer.js +7 -7
- package/lib/esm/backoffice/molecules/backoffice_filter_drawer/backofficeFilterDrawer.css.js +1 -1
- package/lib/esm/backoffice/molecules/backoffice_filter_field/backofficeFilterField.css.js +1 -1
- package/lib/esm/backoffice/molecules/backoffice_json_viewer/LazyBackofficeJsonViewer.css.js +1 -1
- package/lib/esm/backoffice/molecules/backoffice_json_viewer/LazyBackofficeJsonViewer.js +1 -1
- package/lib/esm/backoffice/molecules/backoffice_json_viewer/backofficeJsonViewer.css.js +1 -1
- package/lib/esm/backoffice/molecules/backoffice_key_value_list/backofficeKeyValueList.css.js +1 -1
- package/lib/esm/backoffice/molecules/backoffice_list_footer/BackofficeListFooter.js +2 -2
- package/lib/esm/backoffice/molecules/backoffice_list_footer/backofficeListFooter.css.js +1 -1
- package/lib/esm/backoffice/molecules/backoffice_page_header/BackofficePageHeader.js +4 -4
- package/lib/esm/backoffice/molecules/backoffice_page_header/backofficePageHeader.css.js +1 -1
- package/lib/esm/backoffice/molecules/backoffice_payload_viewer/BackofficePayloadViewer.js +1 -1
- package/lib/esm/backoffice/molecules/backoffice_payload_viewer/backofficePayloadViewer.css.js +1 -1
- package/lib/esm/backoffice/molecules/backoffice_picker/backofficePicker.css.js +1 -1
- package/lib/esm/backoffice/molecules/backoffice_reference_value/backofficeReferenceValue.css.js +1 -1
- package/lib/esm/backoffice/molecules/backoffice_relations_menu/BackofficeRelationsMenu.js +4 -4
- package/lib/esm/backoffice/molecules/backoffice_relations_menu/backofficeRelationsMenu.css.js +1 -1
- package/lib/esm/backoffice/molecules/backoffice_status_meta_badge/backofficeStatusMetaBadge.css.js +1 -1
- package/lib/esm/backoffice/molecules/backoffice_table_skeleton/backofficeTableSkeleton.css.js +4 -4
- package/lib/esm/backoffice/molecules/backoffice_toolbar/BackofficeToolbar.js +8 -8
- package/lib/esm/backoffice/molecules/backoffice_toolbar/backofficeToolbar.css.js +4 -4
- package/lib/esm/backoffice/molecules/bulk_actions_bar/bulkActionsBar.css.js +1 -1
- package/lib/esm/backoffice/molecules/confirm_dialog/confirmDialog.css.js +1 -1
- package/lib/esm/backoffice/molecules/filter_chip_row/filterChipRow.css.js +1 -1
- package/lib/esm/backoffice/molecules/global_search_input/globalSearchInput.css.js +1 -1
- package/lib/esm/backoffice/molecules/sidebar_collapse_toggle/SidebarCollapseToggle.js +0 -1
- package/lib/esm/backoffice/molecules/sidebar_collapse_toggle/SidebarCollapseToggle.js.map +1 -1
- package/lib/esm/backoffice/molecules/sidebar_collapse_toggle/sidebarCollapseToggle.css.js +1 -1
- package/lib/esm/backoffice/molecules/sidebar_nav_item/sidebarNavItem.css.js +1 -1
- package/lib/esm/backoffice/molecules/sidebar_nav_section/SidebarNavSection.js +5 -5
- package/lib/esm/backoffice/molecules/sidebar_nav_section/sidebarNavSection.css.js +1 -1
- package/lib/esm/backoffice/molecules/sidebar_profile_menu/BackofficeSidebarProfileMenu.js +3 -3
- package/lib/esm/backoffice/molecules/sidebar_profile_menu/sidebarProfileMenu.css.js +5 -5
- package/lib/esm/backoffice/organisms/audit_timeline/auditTimeline.css.js +6 -6
- package/lib/esm/backoffice/organisms/backoffice_data_table/backofficeDataTable.css.js +1 -1
- package/lib/esm/backoffice/organisms/entity_header/entityHeader.css.js +1 -1
- package/lib/esm/backoffice/templates/detail_page_template/DetailPageTemplate.js +4 -4
- package/lib/esm/backoffice/templates/detail_page_template/detailPageTemplate.css.js +5 -5
- package/lib/esm/backoffice/templates/list_page_template/ListPageTemplate.js +1 -1
- package/lib/esm/backoffice/templates/list_page_template/listPageTemplate.css.js +8 -8
- package/lib/esm/components/agent/AgentMarkdownCard.css.js +1 -1
- package/lib/esm/components/charts/metricHistoryChart.css.js +1 -1
- package/lib/esm/components/charts/timeSeriesLineChart.css.js +1 -1
- package/lib/esm/components/dashboard/activity_card/ActivityCard.css.js +1 -1
- package/lib/esm/components/dashboard/activity_card/ActivityCard.js +2 -2
- package/lib/esm/components/dashboard/activity_feed/ActivityFeed.css.js +1 -1
- package/lib/esm/components/dashboard/dashboard_grid/DashboardGrid.css.js +14 -14
- package/lib/esm/components/dashboard/dashboard_metric_group/DashboardMetricGroup.css.js +1 -1
- package/lib/esm/components/dashboard/dashboard_panel/DashboardPanel.css.js +1 -1
- package/lib/esm/components/dashboard/dashboard_quick_actions/DashboardQuickActions.css.js +1 -1
- package/lib/esm/components/dashboard/dashboard_status_list/DashboardStatusList.css.js +1 -1
- package/lib/esm/components/dashboard/metadata_strip/MetadataStrip.css.js +1 -1
- package/lib/esm/components/dashboard/metric_card/MetricCard.css.js +6 -6
- package/lib/esm/components/dashboard/metric_card/MetricCard.js +2 -2
- package/lib/esm/components/dashboard/metric_tile_group/MetricTileGroup.css.js +11 -11
- package/lib/esm/components/dashboard/page_hero/PageHero.css.js +1 -1
- package/lib/esm/components/dashboard/page_hero/PageHero.js +3 -3
- package/lib/esm/components/dashboard/selectable_card/SelectableCard.css.js +1 -1
- package/lib/esm/components/dashboard/selectable_card/SelectableCard.js +2 -2
- package/lib/esm/components/dashboard/status_summary_panel/StatusSummaryPanel.css.js +1 -1
- package/lib/esm/components/dashboard/status_summary_panel/StatusSummaryPanel.js +1 -1
- package/lib/esm/components/dashboard/timeline_event_row/TimelineEventRow.css.js +2 -2
- package/lib/esm/components/dashboard/timeline_event_row/TimelineEventRow.js +8 -8
- package/lib/esm/components/data-table/DataTable.css.js +28 -28
- package/lib/esm/components/data-table/DataTable.css.js.map +1 -1
- package/lib/esm/components/data-table/DataTable.js +1 -1
- package/lib/esm/components/data-table/ResponsiveRecordList.css.js +6 -6
- package/lib/esm/components/data-table/TableCell.css.js +2 -2
- package/lib/esm/components/data-table/VirtualizedConnectionTable.css.js +1 -1
- package/lib/esm/components/feedback/OperationFeedback.css.js +1 -1
- package/lib/esm/components/feedback/inlineBanner.css.js +6 -6
- package/lib/esm/components/infinite/InfiniteScrollTrigger.js +1 -1
- package/lib/esm/components/infinite/infiniteScrollTrigger.css.js +1 -1
- package/lib/esm/components/layout/ActionPanel.css.js +1 -1
- package/lib/esm/components/layout/ActionPanel.js +2 -2
- package/lib/esm/components/layout/AppHeader.css.js +1 -1
- package/lib/esm/components/layout/AppHeader.js +4 -4
- package/lib/esm/components/layout/ContentLayout.css.js +1 -1
- package/lib/esm/components/layout/ContentLayout.js +2 -2
- package/lib/esm/components/layout/DetailSummaryHeader.css.js +1 -1
- package/lib/esm/components/layout/DetailSummaryHeader.js +3 -3
- package/lib/esm/components/layout/PageShell.css.js +1 -1
- package/lib/esm/components/layout/PageShell.js +5 -5
- package/lib/esm/components/layout/ResizableSplitView.css.js +1 -1
- package/lib/esm/components/layout/ResizableSplitView.js +1 -1
- package/lib/esm/components/layout/SettingsLayout.css.js +1 -1
- package/lib/esm/components/layout/Surface.css.js +15 -15
- package/lib/esm/components/layout/Surface.css.js.map +1 -1
- package/lib/esm/components/layout/Surface.js +6 -6
- package/lib/esm/components/layout/toolbar/Toolbar.css.js +16 -16
- package/lib/esm/components/media/imagePreviewModal.css.js +5 -5
- package/lib/esm/components/navigation/sidebar/SidebarNavigation.js +1 -1
- package/lib/esm/components/navigation/sidebar/sidebarNavigation.css.js +2 -2
- package/lib/esm/components/responsive/ResponsiveCollectionRenderer.css.js +1 -1
- package/lib/esm/components/routing/routeFallback.css.js +1 -1
- package/lib/esm/components/routing/routePendingBar.css.js +1 -1
- package/lib/esm/components/select/SimpleSelect.css.js +13 -13
- package/lib/esm/components/select/SimpleSelect.css.js.map +1 -1
- package/lib/esm/components/tile/InfoTile.css.js +1 -1
- package/lib/esm/components/tile/InfoTile.js +3 -3
- package/lib/esm/style.css +1 -1
- package/lib/esm/theme/accessibility.css.js +1 -1
- package/lib/esm/theme/backofficeTheme.css.js +112 -80
- package/lib/esm/theme/backofficeTheme.css.js.map +1 -1
- package/lib/esm/theme/colors.js +8 -0
- package/lib/esm/theme/colors.js.map +1 -1
- package/lib/esm/theme/publicTheme.css.js +123 -91
- package/lib/esm/theme/publicTheme.css.js.map +1 -1
- package/lib/esm/theme/sprinkles.css.js +12988 -11500
- package/lib/esm/theme/sprinkles.css.js.map +1 -1
- package/lib/esm/theme/styleRecipes.css.js +8 -8
- package/lib/esm/theme/theme.css.js +235 -171
- package/lib/esm/theme/themeContract.css.js +1922 -1898
- package/lib/esm/theme/themeContract.css.js.map +1 -1
- package/lib/types/atomic/organisms/sidebar/NavigationSidebar.d.ts.map +1 -1
- package/lib/types/atomic/organisms/sidebar/SidebarContainer.d.ts.map +1 -1
- package/lib/types/atomic/organisms/sidebar/navigationSidebar.css.d.ts +2 -0
- package/lib/types/atomic/organisms/sidebar/navigationSidebar.css.d.ts.map +1 -1
- package/lib/types/atomic/organisms/sidebar/sidebar.css.d.ts +1 -0
- package/lib/types/atomic/organisms/sidebar/sidebar.css.d.ts.map +1 -1
- package/lib/types/backoffice/molecules/sidebar_collapse_toggle/SidebarCollapseToggle.d.ts.map +1 -1
- package/lib/types/theme/backofficeTheme.css.d.ts +112 -80
- package/lib/types/theme/backofficeTheme.css.d.ts.map +1 -1
- package/lib/types/theme/colors.d.ts +8 -0
- package/lib/types/theme/colors.d.ts.map +1 -1
- package/lib/types/theme/publicTheme.css.d.ts +123 -91
- package/lib/types/theme/publicTheme.css.d.ts.map +1 -1
- package/lib/types/theme/sprinkles.css.d.ts +129 -129
- package/lib/types/theme/themeContract.css.d.ts +24 -0
- package/lib/types/theme/themeContract.css.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -1,55 +1,55 @@
|
|
|
1
1
|
import { cx as e } from "../../../theme/tools.js";
|
|
2
2
|
import { useUiTranslation as t } from "../../../i18n/useUiTranslation.js";
|
|
3
3
|
import { ChevronLeftIcon as n, ChevronRightIcon as r } from "./icons.js";
|
|
4
|
-
import { childIcon as i,
|
|
5
|
-
import { SidebarContainer as
|
|
6
|
-
import { useCallback as
|
|
7
|
-
import { Fragment as
|
|
8
|
-
import
|
|
9
|
-
import
|
|
4
|
+
import { childIcon as i, childIconTheme as a, childLabel as o, childLinkRecipe as s, collapseButton as c, collapseButtonLabel as l, collapseButtonStateRecipe as u, collapsibleContent as d, collapsibleContentTheme as f, collapsibleItem as ee, collapsibleSection as p, collapsibleStateRecipe as m, iconBaseLayer as h, iconHiddenOnHover as g, iconVisibleOnHover as _, iconWrapper as v, itemWrapper as y, label as te, navButton as b, navGapRecipe as x, navLinkRecipe as S, navWithTrailingAction as C, trailingActionButton as w, trailingActionIconHidden as T, trailingActionIconVisible as E, trailingActionIconWrapper as D, trailingIconWrapper as ne } from "./navigationSidebar.css.js";
|
|
5
|
+
import { SidebarContainer as O } from "./SidebarContainer.js";
|
|
6
|
+
import { useCallback as k, useMemo as A, useState as j } from "react";
|
|
7
|
+
import { Fragment as M, jsx as N, jsxs as P } from "react/jsx-runtime";
|
|
8
|
+
import F from "@plumile/router/routing/Link.js";
|
|
9
|
+
import I from "@plumile/router/routing/useLocation.js";
|
|
10
10
|
//#region src/atomic/organisms/sidebar/NavigationSidebar.tsx
|
|
11
|
-
var
|
|
11
|
+
var L = ({ id: t, isExpanded: n, children: r }) => {
|
|
12
12
|
let i = "collapsed";
|
|
13
|
-
return n && (i = "expanded"), /* @__PURE__ */
|
|
13
|
+
return n && (i = "expanded"), /* @__PURE__ */ N("div", {
|
|
14
14
|
id: t,
|
|
15
15
|
"aria-hidden": !n,
|
|
16
|
-
className: e(
|
|
17
|
-
children: /* @__PURE__ */
|
|
18
|
-
className:
|
|
16
|
+
className: e(p, m({ state: i })),
|
|
17
|
+
children: /* @__PURE__ */ N("div", {
|
|
18
|
+
className: e(d, f),
|
|
19
19
|
children: r
|
|
20
20
|
})
|
|
21
21
|
});
|
|
22
|
-
},
|
|
23
|
-
let { t: z } = t(), [B, V] =
|
|
22
|
+
}, R = ({ items: d, headerSlot: f, isCollapsed: p, onCollapsedChange: m, showCollapseToggle: R = !0 }) => {
|
|
23
|
+
let { t: z } = t(), [B, V] = j(!1), [H, U] = j({}), W = p != null, G = p ?? B, { pathname: K } = I(), q = (e, t) => t === !0 ? K === e : K === e ? !0 : K.startsWith(`${e}/`), J = k((e, t) => {
|
|
24
24
|
U((n) => ({
|
|
25
25
|
...n,
|
|
26
26
|
[e]: t
|
|
27
27
|
}));
|
|
28
|
-
}, []), Y =
|
|
28
|
+
}, []), Y = k(() => {
|
|
29
29
|
let e = !G;
|
|
30
|
-
W || V(e),
|
|
30
|
+
W || V(e), m?.(e);
|
|
31
31
|
}, [
|
|
32
32
|
G,
|
|
33
33
|
W,
|
|
34
|
-
|
|
34
|
+
m
|
|
35
35
|
]), X;
|
|
36
36
|
G || (X = f ?? void 0);
|
|
37
|
-
let Z =
|
|
37
|
+
let Z = A(() => {
|
|
38
38
|
if (!R) return null;
|
|
39
39
|
let t = n, i = z("navigation.sidebar.actions.collapseAriaLabel");
|
|
40
40
|
G && (t = r, i = z("navigation.sidebar.actions.expandAriaLabel"));
|
|
41
41
|
let a = "expanded";
|
|
42
42
|
G && (a = "collapsed");
|
|
43
43
|
let o = null;
|
|
44
|
-
return G || (o = /* @__PURE__ */
|
|
45
|
-
className:
|
|
44
|
+
return G || (o = /* @__PURE__ */ N("span", {
|
|
45
|
+
className: l,
|
|
46
46
|
children: z("navigation.sidebar.actions.collapse")
|
|
47
|
-
})), /* @__PURE__ */
|
|
47
|
+
})), /* @__PURE__ */ P("button", {
|
|
48
48
|
type: "button",
|
|
49
49
|
onClick: Y,
|
|
50
|
-
className: e(
|
|
50
|
+
className: e(c, u({ state: a })),
|
|
51
51
|
"aria-label": i,
|
|
52
|
-
children: [/* @__PURE__ */
|
|
52
|
+
children: [/* @__PURE__ */ N(t, { size: 20 }), o]
|
|
53
53
|
});
|
|
54
54
|
}, [
|
|
55
55
|
Y,
|
|
@@ -57,80 +57,80 @@ var I = ({ id: t, isExpanded: n, children: r }) => {
|
|
|
57
57
|
R,
|
|
58
58
|
z
|
|
59
59
|
]);
|
|
60
|
-
return /* @__PURE__ */
|
|
60
|
+
return /* @__PURE__ */ N(O, {
|
|
61
61
|
headerSlot: X,
|
|
62
62
|
footerSlot: Z,
|
|
63
63
|
isCollapsed: G,
|
|
64
64
|
showDefaultHeaderAction: !1,
|
|
65
|
-
children:
|
|
66
|
-
let n = t.childItems ?? null, r = n != null && n.length > 0,
|
|
67
|
-
|
|
65
|
+
children: d.map((t) => {
|
|
66
|
+
let n = t.childItems ?? null, r = n != null && n.length > 0, c = H[t.key] ?? t.defaultExpanded ?? !1, l = !c, u, d = !G && r;
|
|
67
|
+
d && (u = `navigation-sidebar-${t.key}-children`), r && n.some((e) => q(e.to)) && (c = !0);
|
|
68
68
|
let f = null;
|
|
69
69
|
!G && t.trailingAction != null && (f = t.trailingAction);
|
|
70
|
-
let p = f != null,
|
|
71
|
-
G && (
|
|
72
|
-
let
|
|
73
|
-
G && (
|
|
74
|
-
let R = x({ state:
|
|
75
|
-
p && (z =
|
|
70
|
+
let p = f != null, m = t.hoverIcon !== void 0 && t.hoverIcon !== null, O = t.trailingIcon !== void 0 && t.trailingIcon !== null, k = t.trailingHoverIcon !== void 0 && t.trailingHoverIcon !== null, A = !G && !p && (O || k), j;
|
|
71
|
+
G && (j = t.label);
|
|
72
|
+
let I = "expanded";
|
|
73
|
+
G && (I = "collapsed");
|
|
74
|
+
let R = x({ state: I }), z;
|
|
75
|
+
p && (z = C);
|
|
76
76
|
let B = null;
|
|
77
|
-
G || (B = /* @__PURE__ */
|
|
78
|
-
className:
|
|
77
|
+
G || (B = /* @__PURE__ */ N("span", {
|
|
78
|
+
className: te,
|
|
79
79
|
children: t.label
|
|
80
80
|
}));
|
|
81
81
|
let V = null;
|
|
82
|
-
|
|
83
|
-
className:
|
|
82
|
+
m && (V = /* @__PURE__ */ N("span", {
|
|
83
|
+
className: _,
|
|
84
84
|
children: t.hoverIcon
|
|
85
85
|
}));
|
|
86
|
-
let U = /* @__PURE__ */
|
|
87
|
-
className:
|
|
88
|
-
children: [/* @__PURE__ */
|
|
89
|
-
className: e(
|
|
86
|
+
let U = /* @__PURE__ */ P("span", {
|
|
87
|
+
className: v,
|
|
88
|
+
children: [/* @__PURE__ */ N("span", {
|
|
89
|
+
className: e(h, { [g]: m }),
|
|
90
90
|
children: t.icon
|
|
91
91
|
}), V]
|
|
92
92
|
}), W = null;
|
|
93
93
|
if (A) {
|
|
94
94
|
let n = null;
|
|
95
|
-
O && (n = /* @__PURE__ */
|
|
96
|
-
className: e(
|
|
95
|
+
O && (n = /* @__PURE__ */ N("span", {
|
|
96
|
+
className: e(h, { [g]: k }),
|
|
97
97
|
children: t.trailingIcon
|
|
98
98
|
}));
|
|
99
99
|
let r = null;
|
|
100
|
-
k && (r = /* @__PURE__ */
|
|
101
|
-
className:
|
|
100
|
+
k && (r = /* @__PURE__ */ N("span", {
|
|
101
|
+
className: _,
|
|
102
102
|
children: t.trailingHoverIcon
|
|
103
|
-
})), W = /* @__PURE__ */
|
|
104
|
-
className:
|
|
103
|
+
})), W = /* @__PURE__ */ P("span", {
|
|
104
|
+
className: ne,
|
|
105
105
|
children: [n, r]
|
|
106
106
|
});
|
|
107
107
|
}
|
|
108
|
-
let K = /* @__PURE__ */
|
|
108
|
+
let K = /* @__PURE__ */ P(M, { children: [
|
|
109
109
|
U,
|
|
110
110
|
B,
|
|
111
111
|
W
|
|
112
112
|
] }), Y = () => {
|
|
113
|
-
!r || G || J(t.key,
|
|
113
|
+
!r || G || J(t.key, l);
|
|
114
114
|
}, X;
|
|
115
115
|
if (r) X = e(b, R, z);
|
|
116
116
|
else {
|
|
117
117
|
let n = "default";
|
|
118
|
-
q(t.to, t.exact) && (n = "active"), X = e(
|
|
118
|
+
q(t.to, t.exact) && (n = "active"), X = e(S({ state: n }), R, z);
|
|
119
119
|
}
|
|
120
120
|
let Z;
|
|
121
|
-
Z = r ? /* @__PURE__ */
|
|
121
|
+
Z = r ? /* @__PURE__ */ N("button", {
|
|
122
122
|
type: "button",
|
|
123
123
|
className: X,
|
|
124
|
-
"aria-expanded":
|
|
125
|
-
"aria-controls":
|
|
126
|
-
"aria-label":
|
|
124
|
+
"aria-expanded": c,
|
|
125
|
+
"aria-controls": u,
|
|
126
|
+
"aria-label": j,
|
|
127
127
|
onClick: Y,
|
|
128
128
|
children: K
|
|
129
|
-
}) : /* @__PURE__ */
|
|
129
|
+
}) : /* @__PURE__ */ N(F, {
|
|
130
130
|
to: t.to,
|
|
131
131
|
className: X,
|
|
132
132
|
exact: t.exact,
|
|
133
|
-
"aria-label":
|
|
133
|
+
"aria-label": j,
|
|
134
134
|
children: K
|
|
135
135
|
});
|
|
136
136
|
let Q = null;
|
|
@@ -138,55 +138,55 @@ var I = ({ id: t, isExpanded: n, children: r }) => {
|
|
|
138
138
|
let e = (e) => {
|
|
139
139
|
e.preventDefault(), e.stopPropagation(), f.onClick();
|
|
140
140
|
}, t = f.hoverIcon, n = t != null, r = null;
|
|
141
|
-
n && (r = /* @__PURE__ */
|
|
142
|
-
className:
|
|
141
|
+
n && (r = /* @__PURE__ */ N("span", {
|
|
142
|
+
className: E,
|
|
143
143
|
children: t
|
|
144
|
-
})), Q = /* @__PURE__ */
|
|
144
|
+
})), Q = /* @__PURE__ */ N("button", {
|
|
145
145
|
type: "button",
|
|
146
146
|
"aria-label": f.label,
|
|
147
147
|
onClick: e,
|
|
148
|
-
className:
|
|
149
|
-
children: /* @__PURE__ */
|
|
150
|
-
className:
|
|
151
|
-
children: [/* @__PURE__ */
|
|
152
|
-
className:
|
|
148
|
+
className: w,
|
|
149
|
+
children: /* @__PURE__ */ P("span", {
|
|
150
|
+
className: D,
|
|
151
|
+
children: [/* @__PURE__ */ N("span", {
|
|
152
|
+
className: T,
|
|
153
153
|
children: f.icon
|
|
154
154
|
}), r]
|
|
155
155
|
})
|
|
156
156
|
});
|
|
157
157
|
}
|
|
158
158
|
let $ = null;
|
|
159
|
-
return
|
|
160
|
-
id:
|
|
161
|
-
isExpanded:
|
|
162
|
-
children: n.map((
|
|
163
|
-
let
|
|
164
|
-
|
|
165
|
-
className: i,
|
|
166
|
-
children:
|
|
159
|
+
return d && u != null && ($ = /* @__PURE__ */ N(L, {
|
|
160
|
+
id: u,
|
|
161
|
+
isExpanded: c,
|
|
162
|
+
children: n.map((t) => {
|
|
163
|
+
let n = null;
|
|
164
|
+
t.icon != null && (n = /* @__PURE__ */ N("span", {
|
|
165
|
+
className: e(i, a),
|
|
166
|
+
children: t.icon
|
|
167
167
|
}));
|
|
168
|
-
let
|
|
169
|
-
return q(
|
|
170
|
-
className:
|
|
171
|
-
children: /* @__PURE__ */
|
|
172
|
-
to:
|
|
173
|
-
className:
|
|
174
|
-
"aria-label":
|
|
175
|
-
children: [
|
|
176
|
-
className:
|
|
177
|
-
children:
|
|
168
|
+
let r = "default";
|
|
169
|
+
return q(t.to) && (r = "active"), /* @__PURE__ */ N("div", {
|
|
170
|
+
className: ee,
|
|
171
|
+
children: /* @__PURE__ */ P(F, {
|
|
172
|
+
to: t.to,
|
|
173
|
+
className: s({ state: r }),
|
|
174
|
+
"aria-label": t.label,
|
|
175
|
+
children: [n, /* @__PURE__ */ N("span", {
|
|
176
|
+
className: o,
|
|
177
|
+
children: t.label
|
|
178
178
|
})]
|
|
179
179
|
})
|
|
180
|
-
},
|
|
180
|
+
}, t.key);
|
|
181
181
|
})
|
|
182
|
-
})), /* @__PURE__ */
|
|
183
|
-
className:
|
|
182
|
+
})), /* @__PURE__ */ P("div", { children: [/* @__PURE__ */ P("div", {
|
|
183
|
+
className: y,
|
|
184
184
|
children: [Z, Q]
|
|
185
185
|
}), $] }, t.key);
|
|
186
186
|
})
|
|
187
187
|
});
|
|
188
188
|
};
|
|
189
189
|
//#endregion
|
|
190
|
-
export {
|
|
190
|
+
export { R as NavigationSidebar };
|
|
191
191
|
|
|
192
192
|
//# sourceMappingURL=NavigationSidebar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavigationSidebar.js","names":[],"sources":["../../../../../src/atomic/organisms/sidebar/NavigationSidebar.tsx"],"sourcesContent":["import {\n type JSX,\n type MouseEvent,\n type ReactNode,\n useCallback,\n useMemo,\n useState,\n} from 'react';\nimport Link from '@plumile/router/routing/Link.js';\nimport useLocation from '@plumile/router/routing/useLocation.js';\nimport type { RecipeVariants } from '@vanilla-extract/recipes';\n\nimport { useUiTranslation } from '../../../i18n/useUiTranslation.js';\nimport { cx } from '../../../theme/tools.js';\nimport { ChevronLeftIcon, ChevronRightIcon } from './icons.js';\nimport * as styles from './navigationSidebar.css.js';\nimport { SidebarContainer } from './SidebarContainer.js';\n\ntype SidebarItemTrailingAction = {\n icon: ReactNode;\n hoverIcon?: ReactNode;\n label: string;\n onClick: () => void;\n};\n\ntype SidebarItem = {\n key: string;\n to: string;\n label: string;\n icon: ReactNode;\n exact?: boolean;\n hoverIcon?: ReactNode;\n trailingIcon?: ReactNode;\n trailingHoverIcon?: ReactNode;\n trailingAction?: SidebarItemTrailingAction;\n childItems?: SidebarChildItem[];\n defaultExpanded?: boolean;\n};\n\ntype SidebarChildItem = {\n key: string;\n to: string;\n label: string;\n icon?: ReactNode;\n};\n\ntype NavigationSidebarProps = {\n items: SidebarItem[];\n headerSlot?: ReactNode;\n isCollapsed?: boolean;\n onCollapsedChange?: (nextCollapsed: boolean) => void;\n showCollapseToggle?: boolean;\n};\n\nconst CollapsibleSection = ({\n id,\n isExpanded,\n children,\n}: {\n id: string;\n isExpanded: boolean;\n children: ReactNode;\n}): JSX.Element => {\n let collapsibleStateKey: NonNullable<\n NonNullable<RecipeVariants<typeof styles.collapsibleStateRecipe>>['state']\n > = 'collapsed';\n if (isExpanded) {\n collapsibleStateKey = 'expanded';\n }\n\n return (\n <div\n id={id}\n aria-hidden={!isExpanded}\n className={cx(\n styles.collapsibleSection,\n styles.collapsibleStateRecipe({ state: collapsibleStateKey }),\n )}\n >\n <div className={styles.collapsibleContent}>{children}</div>\n </div>\n );\n};\n\nconst NavigationSidebar = ({\n items,\n headerSlot,\n isCollapsed: isCollapsedProp,\n onCollapsedChange,\n showCollapseToggle = true,\n}: NavigationSidebarProps): JSX.Element => {\n const { t } = useUiTranslation();\n const [internalCollapsed, setInternalCollapsed] = useState(false);\n const [expandedState, setExpandedState] = useState<Record<string, boolean>>(\n {},\n );\n const isControlled = isCollapsedProp != null;\n const isCollapsed = isCollapsedProp ?? internalCollapsed;\n const { pathname } = useLocation();\n\n const isPathActive = (target: string, exact?: boolean): boolean => {\n if (exact === true) {\n return pathname === target;\n }\n if (pathname === target) {\n return true;\n }\n return pathname.startsWith(`${target}/`);\n };\n\n const handleToggle = useCallback((key: string, nextState: boolean) => {\n setExpandedState((prev) => {\n return {\n ...prev,\n [key]: nextState,\n };\n });\n }, []);\n\n const handleCollapseToggle = useCallback(() => {\n const nextState = !isCollapsed;\n if (!isControlled) {\n setInternalCollapsed(nextState);\n }\n onCollapsedChange?.(nextState);\n }, [isCollapsed, isControlled, onCollapsedChange]);\n\n let headerContent: ReactNode | undefined;\n if (!isCollapsed) {\n headerContent = headerSlot ?? undefined;\n }\n\n const collapseButton = useMemo(() => {\n if (!showCollapseToggle) {\n return null;\n }\n\n let CollapseIcon = ChevronLeftIcon;\n let buttonLabel = t('navigation.sidebar.actions.collapseAriaLabel');\n if (isCollapsed) {\n CollapseIcon = ChevronRightIcon;\n buttonLabel = t('navigation.sidebar.actions.expandAriaLabel');\n }\n\n let collapseState: NonNullable<\n NonNullable<\n RecipeVariants<typeof styles.collapseButtonStateRecipe>\n >['state']\n > = 'expanded';\n if (isCollapsed) {\n collapseState = 'collapsed';\n }\n\n let collapseLabel: JSX.Element | null = null;\n if (!isCollapsed) {\n collapseLabel = (\n <span className={styles.collapseButtonLabel}>\n {t('navigation.sidebar.actions.collapse')}\n </span>\n );\n }\n\n return (\n <button\n type=\"button\"\n onClick={handleCollapseToggle}\n className={cx(\n styles.collapseButton,\n styles.collapseButtonStateRecipe({ state: collapseState }),\n )}\n aria-label={buttonLabel}\n >\n <CollapseIcon size={20} />\n {collapseLabel}\n </button>\n );\n }, [handleCollapseToggle, isCollapsed, showCollapseToggle, t]);\n\n return (\n <SidebarContainer\n headerSlot={headerContent}\n footerSlot={collapseButton}\n isCollapsed={isCollapsed}\n showDefaultHeaderAction={false}\n >\n {items.map((item) => {\n const childItems = item.childItems ?? null;\n const hasChildren = childItems != null && childItems.length > 0;\n const storedExpanded = expandedState[item.key];\n let isExpanded = storedExpanded ?? item.defaultExpanded ?? false;\n const nextExpanded = !isExpanded;\n let childSectionId: string | undefined;\n const shouldRenderChildren = !isCollapsed && hasChildren;\n if (shouldRenderChildren) {\n childSectionId = `navigation-sidebar-${item.key}-children`;\n }\n\n if (hasChildren) {\n const hasActiveChild = childItems.some((child) => {\n return isPathActive(child.to);\n });\n\n if (hasActiveChild) {\n isExpanded = true;\n }\n }\n\n let trailingAction: SidebarItemTrailingAction | null = null;\n if (!isCollapsed && item.trailingAction != null) {\n trailingAction = item.trailingAction;\n }\n const showTrailingAction = trailingAction != null;\n const hasHoverIcon =\n item.hoverIcon !== undefined && item.hoverIcon !== null;\n const hasTrailingIcon =\n item.trailingIcon !== undefined && item.trailingIcon !== null;\n const hasTrailingHoverIcon =\n item.trailingHoverIcon !== undefined &&\n item.trailingHoverIcon !== null;\n const showTrailing =\n !isCollapsed &&\n !showTrailingAction &&\n (hasTrailingIcon || hasTrailingHoverIcon);\n\n let itemAriaLabel: string | undefined;\n if (isCollapsed) {\n itemAriaLabel = item.label;\n }\n\n let gapState: NonNullable<\n NonNullable<RecipeVariants<typeof styles.navGapRecipe>>['state']\n > = 'expanded';\n if (isCollapsed) {\n gapState = 'collapsed';\n }\n const gapClassName = styles.navGapRecipe({ state: gapState });\n\n let paddingClassName: string | undefined;\n if (showTrailingAction) {\n paddingClassName = styles.navWithTrailingAction;\n }\n\n let labelNode: JSX.Element | null = null;\n if (!isCollapsed) {\n labelNode = <span className={styles.label}>{item.label}</span>;\n }\n\n let hoverLayer: JSX.Element | null = null;\n if (hasHoverIcon) {\n hoverLayer = (\n <span className={styles.iconVisibleOnHover}>{item.hoverIcon}</span>\n );\n }\n\n const leadingIcon = (\n <span className={styles.iconWrapper}>\n <span\n className={cx(styles.iconBaseLayer, {\n [styles.iconHiddenOnHover]: hasHoverIcon,\n })}\n >\n {item.icon}\n </span>\n {hoverLayer}\n </span>\n );\n\n let trailingIcons: JSX.Element | null = null;\n if (showTrailing) {\n let trailingBaseLayer: JSX.Element | null = null;\n if (hasTrailingIcon) {\n trailingBaseLayer = (\n <span\n className={cx(styles.iconBaseLayer, {\n [styles.iconHiddenOnHover]: hasTrailingHoverIcon,\n })}\n >\n {item.trailingIcon}\n </span>\n );\n }\n\n let trailingHoverLayer: JSX.Element | null = null;\n if (hasTrailingHoverIcon) {\n trailingHoverLayer = (\n <span className={styles.iconVisibleOnHover}>\n {item.trailingHoverIcon}\n </span>\n );\n }\n\n trailingIcons = (\n <span className={styles.trailingIconWrapper}>\n {trailingBaseLayer}\n {trailingHoverLayer}\n </span>\n );\n }\n\n const commonContent = (\n <>\n {leadingIcon}\n {labelNode}\n {trailingIcons}\n </>\n );\n\n const handleClick = (): void => {\n if (!hasChildren || isCollapsed) {\n return;\n }\n handleToggle(item.key, nextExpanded);\n };\n\n let interactiveClassName: string;\n if (hasChildren) {\n interactiveClassName = cx(\n styles.navButton,\n gapClassName,\n paddingClassName,\n );\n } else {\n let navState: NonNullable<\n NonNullable<RecipeVariants<typeof styles.navLinkRecipe>>['state']\n > = 'default';\n if (isPathActive(item.to, item.exact)) {\n navState = 'active';\n }\n interactiveClassName = cx(\n styles.navLinkRecipe({ state: navState }),\n gapClassName,\n paddingClassName,\n );\n }\n\n let itemNode: JSX.Element;\n if (hasChildren) {\n itemNode = (\n <button\n type=\"button\"\n className={interactiveClassName}\n aria-expanded={isExpanded}\n aria-controls={childSectionId}\n aria-label={itemAriaLabel}\n onClick={handleClick}\n >\n {commonContent}\n </button>\n );\n } else {\n itemNode = (\n <Link\n to={item.to}\n className={interactiveClassName}\n exact={item.exact}\n aria-label={itemAriaLabel}\n >\n {commonContent}\n </Link>\n );\n }\n\n let trailingActionNode: JSX.Element | null = null;\n if (trailingAction != null) {\n const handleTrailingClick = (\n event: MouseEvent<HTMLButtonElement>,\n ): void => {\n event.preventDefault();\n event.stopPropagation();\n trailingAction.onClick();\n };\n\n const trailingHoverIcon = trailingAction.hoverIcon;\n const showTrailingHoverIcon =\n trailingHoverIcon !== undefined && trailingHoverIcon !== null;\n let trailingHoverContent: JSX.Element | null = null;\n if (showTrailingHoverIcon) {\n trailingHoverContent = (\n <span className={styles.trailingActionIconVisible}>\n {trailingHoverIcon}\n </span>\n );\n }\n\n trailingActionNode = (\n <button\n type=\"button\"\n aria-label={trailingAction.label}\n onClick={handleTrailingClick}\n className={styles.trailingActionButton}\n >\n <span className={styles.trailingActionIconWrapper}>\n <span className={styles.trailingActionIconHidden}>\n {trailingAction.icon}\n </span>\n {trailingHoverContent}\n </span>\n </button>\n );\n }\n\n let childList: JSX.Element | null = null;\n if (shouldRenderChildren && childSectionId != null) {\n childList = (\n <CollapsibleSection id={childSectionId} isExpanded={isExpanded}>\n {childItems.map((child) => {\n let leading: JSX.Element | null = null;\n if (child.icon != null) {\n leading = (\n <span className={styles.childIcon}>{child.icon}</span>\n );\n }\n\n let childState: NonNullable<\n NonNullable<\n RecipeVariants<typeof styles.childLinkRecipe>\n >['state']\n > = 'default';\n if (isPathActive(child.to)) {\n childState = 'active';\n }\n\n return (\n <div key={child.key} className={styles.collapsibleItem}>\n <Link\n to={child.to}\n className={styles.childLinkRecipe({ state: childState })}\n aria-label={child.label}\n >\n {leading}\n <span className={styles.childLabel}>{child.label}</span>\n </Link>\n </div>\n );\n })}\n </CollapsibleSection>\n );\n }\n\n return (\n <div key={item.key}>\n <div className={styles.itemWrapper}>\n {itemNode}\n {trailingActionNode}\n </div>\n {childList}\n </div>\n );\n })}\n </SidebarContainer>\n );\n};\n\nexport { NavigationSidebar };\nexport type {\n NavigationSidebarProps,\n SidebarChildItem,\n SidebarItem,\n SidebarItemTrailingAction,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NavigationSidebar.js","names":[],"sources":["../../../../../src/atomic/organisms/sidebar/NavigationSidebar.tsx"],"sourcesContent":["import {\n type JSX,\n type MouseEvent,\n type ReactNode,\n useCallback,\n useMemo,\n useState,\n} from 'react';\nimport Link from '@plumile/router/routing/Link.js';\nimport useLocation from '@plumile/router/routing/useLocation.js';\nimport type { RecipeVariants } from '@vanilla-extract/recipes';\n\nimport { useUiTranslation } from '../../../i18n/useUiTranslation.js';\nimport { cx } from '../../../theme/tools.js';\nimport { ChevronLeftIcon, ChevronRightIcon } from './icons.js';\nimport * as styles from './navigationSidebar.css.js';\nimport { SidebarContainer } from './SidebarContainer.js';\n\ntype SidebarItemTrailingAction = {\n icon: ReactNode;\n hoverIcon?: ReactNode;\n label: string;\n onClick: () => void;\n};\n\ntype SidebarItem = {\n key: string;\n to: string;\n label: string;\n icon: ReactNode;\n exact?: boolean;\n hoverIcon?: ReactNode;\n trailingIcon?: ReactNode;\n trailingHoverIcon?: ReactNode;\n trailingAction?: SidebarItemTrailingAction;\n childItems?: SidebarChildItem[];\n defaultExpanded?: boolean;\n};\n\ntype SidebarChildItem = {\n key: string;\n to: string;\n label: string;\n icon?: ReactNode;\n};\n\ntype NavigationSidebarProps = {\n items: SidebarItem[];\n headerSlot?: ReactNode;\n isCollapsed?: boolean;\n onCollapsedChange?: (nextCollapsed: boolean) => void;\n showCollapseToggle?: boolean;\n};\n\nconst CollapsibleSection = ({\n id,\n isExpanded,\n children,\n}: {\n id: string;\n isExpanded: boolean;\n children: ReactNode;\n}): JSX.Element => {\n let collapsibleStateKey: NonNullable<\n NonNullable<RecipeVariants<typeof styles.collapsibleStateRecipe>>['state']\n > = 'collapsed';\n if (isExpanded) {\n collapsibleStateKey = 'expanded';\n }\n\n return (\n <div\n id={id}\n aria-hidden={!isExpanded}\n className={cx(\n styles.collapsibleSection,\n styles.collapsibleStateRecipe({ state: collapsibleStateKey }),\n )}\n >\n <div\n className={cx(\n styles.collapsibleContent,\n styles.collapsibleContentTheme,\n )}\n >\n {children}\n </div>\n </div>\n );\n};\n\nconst NavigationSidebar = ({\n items,\n headerSlot,\n isCollapsed: isCollapsedProp,\n onCollapsedChange,\n showCollapseToggle = true,\n}: NavigationSidebarProps): JSX.Element => {\n const { t } = useUiTranslation();\n const [internalCollapsed, setInternalCollapsed] = useState(false);\n const [expandedState, setExpandedState] = useState<Record<string, boolean>>(\n {},\n );\n const isControlled = isCollapsedProp != null;\n const isCollapsed = isCollapsedProp ?? internalCollapsed;\n const { pathname } = useLocation();\n\n const isPathActive = (target: string, exact?: boolean): boolean => {\n if (exact === true) {\n return pathname === target;\n }\n if (pathname === target) {\n return true;\n }\n return pathname.startsWith(`${target}/`);\n };\n\n const handleToggle = useCallback((key: string, nextState: boolean) => {\n setExpandedState((prev) => {\n return {\n ...prev,\n [key]: nextState,\n };\n });\n }, []);\n\n const handleCollapseToggle = useCallback(() => {\n const nextState = !isCollapsed;\n if (!isControlled) {\n setInternalCollapsed(nextState);\n }\n onCollapsedChange?.(nextState);\n }, [isCollapsed, isControlled, onCollapsedChange]);\n\n let headerContent: ReactNode | undefined;\n if (!isCollapsed) {\n headerContent = headerSlot ?? undefined;\n }\n\n const collapseButton = useMemo(() => {\n if (!showCollapseToggle) {\n return null;\n }\n\n let CollapseIcon = ChevronLeftIcon;\n let buttonLabel = t('navigation.sidebar.actions.collapseAriaLabel');\n if (isCollapsed) {\n CollapseIcon = ChevronRightIcon;\n buttonLabel = t('navigation.sidebar.actions.expandAriaLabel');\n }\n\n let collapseState: NonNullable<\n NonNullable<\n RecipeVariants<typeof styles.collapseButtonStateRecipe>\n >['state']\n > = 'expanded';\n if (isCollapsed) {\n collapseState = 'collapsed';\n }\n\n let collapseLabel: JSX.Element | null = null;\n if (!isCollapsed) {\n collapseLabel = (\n <span className={styles.collapseButtonLabel}>\n {t('navigation.sidebar.actions.collapse')}\n </span>\n );\n }\n\n return (\n <button\n type=\"button\"\n onClick={handleCollapseToggle}\n className={cx(\n styles.collapseButton,\n styles.collapseButtonStateRecipe({ state: collapseState }),\n )}\n aria-label={buttonLabel}\n >\n <CollapseIcon size={20} />\n {collapseLabel}\n </button>\n );\n }, [handleCollapseToggle, isCollapsed, showCollapseToggle, t]);\n\n return (\n <SidebarContainer\n headerSlot={headerContent}\n footerSlot={collapseButton}\n isCollapsed={isCollapsed}\n showDefaultHeaderAction={false}\n >\n {items.map((item) => {\n const childItems = item.childItems ?? null;\n const hasChildren = childItems != null && childItems.length > 0;\n const storedExpanded = expandedState[item.key];\n let isExpanded = storedExpanded ?? item.defaultExpanded ?? false;\n const nextExpanded = !isExpanded;\n let childSectionId: string | undefined;\n const shouldRenderChildren = !isCollapsed && hasChildren;\n if (shouldRenderChildren) {\n childSectionId = `navigation-sidebar-${item.key}-children`;\n }\n\n if (hasChildren) {\n const hasActiveChild = childItems.some((child) => {\n return isPathActive(child.to);\n });\n\n if (hasActiveChild) {\n isExpanded = true;\n }\n }\n\n let trailingAction: SidebarItemTrailingAction | null = null;\n if (!isCollapsed && item.trailingAction != null) {\n trailingAction = item.trailingAction;\n }\n const showTrailingAction = trailingAction != null;\n const hasHoverIcon =\n item.hoverIcon !== undefined && item.hoverIcon !== null;\n const hasTrailingIcon =\n item.trailingIcon !== undefined && item.trailingIcon !== null;\n const hasTrailingHoverIcon =\n item.trailingHoverIcon !== undefined &&\n item.trailingHoverIcon !== null;\n const showTrailing =\n !isCollapsed &&\n !showTrailingAction &&\n (hasTrailingIcon || hasTrailingHoverIcon);\n\n let itemAriaLabel: string | undefined;\n if (isCollapsed) {\n itemAriaLabel = item.label;\n }\n\n let gapState: NonNullable<\n NonNullable<RecipeVariants<typeof styles.navGapRecipe>>['state']\n > = 'expanded';\n if (isCollapsed) {\n gapState = 'collapsed';\n }\n const gapClassName = styles.navGapRecipe({ state: gapState });\n\n let paddingClassName: string | undefined;\n if (showTrailingAction) {\n paddingClassName = styles.navWithTrailingAction;\n }\n\n let labelNode: JSX.Element | null = null;\n if (!isCollapsed) {\n labelNode = <span className={styles.label}>{item.label}</span>;\n }\n\n let hoverLayer: JSX.Element | null = null;\n if (hasHoverIcon) {\n hoverLayer = (\n <span className={styles.iconVisibleOnHover}>{item.hoverIcon}</span>\n );\n }\n\n const leadingIcon = (\n <span className={styles.iconWrapper}>\n <span\n className={cx(styles.iconBaseLayer, {\n [styles.iconHiddenOnHover]: hasHoverIcon,\n })}\n >\n {item.icon}\n </span>\n {hoverLayer}\n </span>\n );\n\n let trailingIcons: JSX.Element | null = null;\n if (showTrailing) {\n let trailingBaseLayer: JSX.Element | null = null;\n if (hasTrailingIcon) {\n trailingBaseLayer = (\n <span\n className={cx(styles.iconBaseLayer, {\n [styles.iconHiddenOnHover]: hasTrailingHoverIcon,\n })}\n >\n {item.trailingIcon}\n </span>\n );\n }\n\n let trailingHoverLayer: JSX.Element | null = null;\n if (hasTrailingHoverIcon) {\n trailingHoverLayer = (\n <span className={styles.iconVisibleOnHover}>\n {item.trailingHoverIcon}\n </span>\n );\n }\n\n trailingIcons = (\n <span className={styles.trailingIconWrapper}>\n {trailingBaseLayer}\n {trailingHoverLayer}\n </span>\n );\n }\n\n const commonContent = (\n <>\n {leadingIcon}\n {labelNode}\n {trailingIcons}\n </>\n );\n\n const handleClick = (): void => {\n if (!hasChildren || isCollapsed) {\n return;\n }\n handleToggle(item.key, nextExpanded);\n };\n\n let interactiveClassName: string;\n if (hasChildren) {\n interactiveClassName = cx(\n styles.navButton,\n gapClassName,\n paddingClassName,\n );\n } else {\n let navState: NonNullable<\n NonNullable<RecipeVariants<typeof styles.navLinkRecipe>>['state']\n > = 'default';\n if (isPathActive(item.to, item.exact)) {\n navState = 'active';\n }\n interactiveClassName = cx(\n styles.navLinkRecipe({ state: navState }),\n gapClassName,\n paddingClassName,\n );\n }\n\n let itemNode: JSX.Element;\n if (hasChildren) {\n itemNode = (\n <button\n type=\"button\"\n className={interactiveClassName}\n aria-expanded={isExpanded}\n aria-controls={childSectionId}\n aria-label={itemAriaLabel}\n onClick={handleClick}\n >\n {commonContent}\n </button>\n );\n } else {\n itemNode = (\n <Link\n to={item.to}\n className={interactiveClassName}\n exact={item.exact}\n aria-label={itemAriaLabel}\n >\n {commonContent}\n </Link>\n );\n }\n\n let trailingActionNode: JSX.Element | null = null;\n if (trailingAction != null) {\n const handleTrailingClick = (\n event: MouseEvent<HTMLButtonElement>,\n ): void => {\n event.preventDefault();\n event.stopPropagation();\n trailingAction.onClick();\n };\n\n const trailingHoverIcon = trailingAction.hoverIcon;\n const showTrailingHoverIcon =\n trailingHoverIcon !== undefined && trailingHoverIcon !== null;\n let trailingHoverContent: JSX.Element | null = null;\n if (showTrailingHoverIcon) {\n trailingHoverContent = (\n <span className={styles.trailingActionIconVisible}>\n {trailingHoverIcon}\n </span>\n );\n }\n\n trailingActionNode = (\n <button\n type=\"button\"\n aria-label={trailingAction.label}\n onClick={handleTrailingClick}\n className={styles.trailingActionButton}\n >\n <span className={styles.trailingActionIconWrapper}>\n <span className={styles.trailingActionIconHidden}>\n {trailingAction.icon}\n </span>\n {trailingHoverContent}\n </span>\n </button>\n );\n }\n\n let childList: JSX.Element | null = null;\n if (shouldRenderChildren && childSectionId != null) {\n childList = (\n <CollapsibleSection id={childSectionId} isExpanded={isExpanded}>\n {childItems.map((child) => {\n let leading: JSX.Element | null = null;\n if (child.icon != null) {\n leading = (\n <span\n className={cx(styles.childIcon, styles.childIconTheme)}\n >\n {child.icon}\n </span>\n );\n }\n\n let childState: NonNullable<\n NonNullable<\n RecipeVariants<typeof styles.childLinkRecipe>\n >['state']\n > = 'default';\n if (isPathActive(child.to)) {\n childState = 'active';\n }\n\n return (\n <div key={child.key} className={styles.collapsibleItem}>\n <Link\n to={child.to}\n className={styles.childLinkRecipe({ state: childState })}\n aria-label={child.label}\n >\n {leading}\n <span className={styles.childLabel}>{child.label}</span>\n </Link>\n </div>\n );\n })}\n </CollapsibleSection>\n );\n }\n\n return (\n <div key={item.key}>\n <div className={styles.itemWrapper}>\n {itemNode}\n {trailingActionNode}\n </div>\n {childList}\n </div>\n );\n })}\n </SidebarContainer>\n );\n};\n\nexport { NavigationSidebar };\nexport type {\n NavigationSidebarProps,\n SidebarChildItem,\n SidebarItem,\n SidebarItemTrailingAction,\n};\n"],"mappings":"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"}
|
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
import { cx as e } from "../../../theme/tools.js";
|
|
2
|
-
import { content as t, nav as n, navCollapsed as r, sidebar as i,
|
|
3
|
-
import { jsx as
|
|
2
|
+
import { content as t, nav as n, navCollapsed as r, sidebar as i, sidebarTheme as a, sidebarWidthRecipe as o } from "./sidebar.css.js";
|
|
3
|
+
import { jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
4
4
|
//#region src/atomic/organisms/sidebar/SidebarContainer.tsx
|
|
5
|
-
var
|
|
6
|
-
let
|
|
7
|
-
|
|
8
|
-
let
|
|
9
|
-
return
|
|
10
|
-
className: e(i, a({ state:
|
|
11
|
-
children: [/* @__PURE__ */
|
|
5
|
+
var l = ({ children: l, headerSlot: u, footerSlot: d, hideHeader: f = !1, isCollapsed: p = !1 }) => {
|
|
6
|
+
let m = null;
|
|
7
|
+
p || (m = u);
|
|
8
|
+
let h = !f && m != null, g = "expanded";
|
|
9
|
+
return p && (g = "collapsed"), /* @__PURE__ */ c("aside", {
|
|
10
|
+
className: e(i, a, o({ state: g })),
|
|
11
|
+
children: [/* @__PURE__ */ c("div", {
|
|
12
12
|
className: t,
|
|
13
|
-
children: [
|
|
14
|
-
className: "
|
|
15
|
-
children:
|
|
16
|
-
}), /* @__PURE__ */
|
|
17
|
-
className: e(n, { [r]:
|
|
18
|
-
children:
|
|
13
|
+
children: [h && /* @__PURE__ */ s("div", {
|
|
14
|
+
className: "_1cyd4aw7 txvbqbfpn txvbqb19uf txvbqblsu txvbqbhdl txvbqbp6j",
|
|
15
|
+
children: m
|
|
16
|
+
}), /* @__PURE__ */ s("nav", {
|
|
17
|
+
className: e(n, { [r]: p }),
|
|
18
|
+
children: l
|
|
19
19
|
})]
|
|
20
|
-
}),
|
|
21
|
-
className: e("
|
|
22
|
-
children:
|
|
20
|
+
}), d != null && /* @__PURE__ */ s("div", {
|
|
21
|
+
className: e("_1cyd4awa txvbqbrzn", { "_1cyd4awb txvbqbfpn txvbqbls4": p }),
|
|
22
|
+
children: d
|
|
23
23
|
})]
|
|
24
24
|
});
|
|
25
25
|
};
|
|
26
26
|
//#endregion
|
|
27
|
-
export {
|
|
27
|
+
export { l as SidebarContainer };
|
|
28
28
|
|
|
29
29
|
//# sourceMappingURL=SidebarContainer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SidebarContainer.js","names":[],"sources":["../../../../../src/atomic/organisms/sidebar/SidebarContainer.tsx"],"sourcesContent":["import { type JSX, type ReactNode } from 'react';\nimport type { RecipeVariants } from '@vanilla-extract/recipes';\n\nimport { cx } from '../../../theme/tools.js';\nimport * as styles from './sidebar.css.js';\n\nexport type SidebarContainerProps = {\n children: ReactNode;\n headerSlot?: ReactNode;\n footerSlot?: ReactNode;\n hideHeader?: boolean;\n isCollapsed?: boolean;\n showDefaultHeaderAction?: boolean;\n};\n\nexport const SidebarContainer = ({\n children,\n headerSlot,\n footerSlot,\n hideHeader = false,\n isCollapsed = false,\n}: SidebarContainerProps): JSX.Element => {\n let headerAction: ReactNode | null = null;\n if (!isCollapsed) {\n headerAction = headerSlot;\n }\n\n const shouldRenderHeader = !hideHeader && headerAction != null;\n\n let widthState: NonNullable<\n NonNullable<RecipeVariants<typeof styles.sidebarWidthRecipe>>['state']\n > = 'expanded';\n if (isCollapsed) {\n widthState = 'collapsed';\n }\n\n return (\n <aside\n className={cx(\n styles.sidebar,\n styles.sidebarWidthRecipe({ state: widthState }),\n )}\n >\n <div className={styles.content}>\n {shouldRenderHeader && (\n <div className={styles.headerActions}>{headerAction}</div>\n )}\n <nav\n className={cx(styles.nav, {\n [styles.navCollapsed]: isCollapsed,\n })}\n >\n {children}\n </nav>\n </div>\n {footerSlot != null && (\n <div\n className={cx(styles.footer, {\n [styles.footerCollapsed]: isCollapsed,\n })}\n >\n {footerSlot}\n </div>\n )}\n </aside>\n );\n};\n"],"mappings":";;;;AAeA,IAAa,KAAoB,EAC/B,aACA,eACA,eACA,gBAAa,IACb,iBAAc,SAC0B;CACxC,IAAI,IAAiC;CACrC,AAAK,MACH,IAAe;CAGjB,IAAM,IAAqB,CAAC,KAAc,KAAgB,MAEtD,IAEA;CAKJ,OAJI,MACF,IAAa,cAIb,kBAAC,SAAD;EACE,WAAW,EACT,GACA,EAA0B,EAAE,OAAO,EAAW,CAAC,CACjD;
|
|
1
|
+
{"version":3,"file":"SidebarContainer.js","names":[],"sources":["../../../../../src/atomic/organisms/sidebar/SidebarContainer.tsx"],"sourcesContent":["import { type JSX, type ReactNode } from 'react';\nimport type { RecipeVariants } from '@vanilla-extract/recipes';\n\nimport { cx } from '../../../theme/tools.js';\nimport * as styles from './sidebar.css.js';\n\nexport type SidebarContainerProps = {\n children: ReactNode;\n headerSlot?: ReactNode;\n footerSlot?: ReactNode;\n hideHeader?: boolean;\n isCollapsed?: boolean;\n showDefaultHeaderAction?: boolean;\n};\n\nexport const SidebarContainer = ({\n children,\n headerSlot,\n footerSlot,\n hideHeader = false,\n isCollapsed = false,\n}: SidebarContainerProps): JSX.Element => {\n let headerAction: ReactNode | null = null;\n if (!isCollapsed) {\n headerAction = headerSlot;\n }\n\n const shouldRenderHeader = !hideHeader && headerAction != null;\n\n let widthState: NonNullable<\n NonNullable<RecipeVariants<typeof styles.sidebarWidthRecipe>>['state']\n > = 'expanded';\n if (isCollapsed) {\n widthState = 'collapsed';\n }\n\n return (\n <aside\n className={cx(\n styles.sidebar,\n styles.sidebarTheme,\n styles.sidebarWidthRecipe({ state: widthState }),\n )}\n >\n <div className={styles.content}>\n {shouldRenderHeader && (\n <div className={styles.headerActions}>{headerAction}</div>\n )}\n <nav\n className={cx(styles.nav, {\n [styles.navCollapsed]: isCollapsed,\n })}\n >\n {children}\n </nav>\n </div>\n {footerSlot != null && (\n <div\n className={cx(styles.footer, {\n [styles.footerCollapsed]: isCollapsed,\n })}\n >\n {footerSlot}\n </div>\n )}\n </aside>\n );\n};\n"],"mappings":";;;;AAeA,IAAa,KAAoB,EAC/B,aACA,eACA,eACA,gBAAa,IACb,iBAAc,SAC0B;CACxC,IAAI,IAAiC;CACrC,AAAK,MACH,IAAe;CAGjB,IAAM,IAAqB,CAAC,KAAc,KAAgB,MAEtD,IAEA;CAKJ,OAJI,MACF,IAAa,cAIb,kBAAC,SAAD;EACE,WAAW,EACT,GACA,GACA,EAA0B,EAAE,OAAO,EAAW,CAAC,CACjD;YALF,CAOE,kBAAC,OAAD;GAAK,WAAW;aAAhB,CACG,KACC,kBAAC,OAAD;IAAK,WAAW;cAAuB;GAAkB,CAAA,GAE3D,kBAAC,OAAD;IACE,WAAW,EAAG,GAAY,GACvB,IAAsB,EACzB,CAAC;IAEA;GACE,CAAA,CACF;MACJ,KAAc,QACb,kBAAC,OAAD;GACE,WAAW,EAAG,uBAAe,EAC1B,iCAAyB,EAC5B,CAAC;aAEA;EACE,CAAA,CAEF;;AAEX"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/* empty css */
|
|
3
3
|
import { createRuntimeFn as e } from "@vanilla-extract/recipes/createRuntimeFn";
|
|
4
4
|
//#region src/atomic/organisms/sidebar/navigationSidebar.css.ts
|
|
5
|
-
var t = "w6b4r71 w6b4r70
|
|
5
|
+
var t = "w6b4r71 w6b4r70 txvbqbfpn txvbqbey txvbqbls4 txvbqb2uc txvbqb28o txvbqb2sj txvbqbjn7 txvbqb7g txvbqb78 txvbqb7t", n = e({
|
|
6
6
|
defaultClassName: "w6b4r72",
|
|
7
7
|
variantClassNames: { state: {
|
|
8
8
|
collapsed: "w6b4r73",
|
|
@@ -10,7 +10,7 @@ var t = "w6b4r71 w6b4r70 txvbqbfb7 txvbqbey txvbqbldo txvbqb2rg txvbqb25s txvbqb
|
|
|
10
10
|
} },
|
|
11
11
|
defaultVariants: { state: "expanded" },
|
|
12
12
|
compoundVariants: []
|
|
13
|
-
}), r = "w6b4r75
|
|
13
|
+
}), r = "w6b4r75 txvbqbq3r txvbqb9j txvbqbhb2", i = "w6b4r76 txvbqbfq0 txvbqb7k txvbqb79 txvbqb7v", a = e({
|
|
14
14
|
defaultClassName: "w6b4r77",
|
|
15
15
|
variantClassNames: { state: {
|
|
16
16
|
expanded: "w6b4r78",
|
|
@@ -18,32 +18,32 @@ var t = "w6b4r71 w6b4r70 txvbqbfb7 txvbqbey txvbqbldo txvbqb2rg txvbqb25s txvbqb
|
|
|
18
18
|
} },
|
|
19
19
|
defaultVariants: { state: "collapsed" },
|
|
20
20
|
compoundVariants: []
|
|
21
|
-
}), o = "w6b4r7a
|
|
22
|
-
defaultClassName: "
|
|
21
|
+
}), o = "w6b4r7a txvbqbryk txvbqbq4u txvbqbb4z txvbqb2sj txvbqb10mx txvbqbwr6", s = "w6b4r7b", c = "w6b4r7c", l = "w6b4r7d txvbqb13i7", u = "w6b4r7h w6b4r7f w6b4r7e txvbqb10mx txvbqb11ki txvbqb12hq txvbqbxtt txvbqbfpn txvbqbey txvbqblsu txvbqb19uf txvbqb2uc txvbqb9j txvbqbnwo txvbqb18dc txvbqb1b4r txvbqb7g txvbqb78 txvbqb7t w6b4r7g txvbqbhbs", d = e({
|
|
22
|
+
defaultClassName: "w6b4r7m w6b4r7j w6b4r7f w6b4r7e txvbqb10mx txvbqb11ki txvbqb12hq txvbqbxtt txvbqbfpn txvbqbey txvbqblsu txvbqb19uf txvbqb2uc txvbqb9j txvbqbnwo txvbqb18dc txvbqb1b4r txvbqb7g txvbqb78 txvbqb7t w6b4r7i txvbqbhbf txvbqb3f",
|
|
23
23
|
variantClassNames: { state: {
|
|
24
|
-
default: "
|
|
25
|
-
active: "
|
|
24
|
+
default: "w6b4r7n w6b4r7k txvbqb1bc9",
|
|
25
|
+
active: "w6b4r7o w6b4r7l"
|
|
26
26
|
} },
|
|
27
27
|
defaultVariants: { state: "default" },
|
|
28
28
|
compoundVariants: []
|
|
29
|
-
}),
|
|
30
|
-
defaultClassName: "
|
|
29
|
+
}), f = e({
|
|
30
|
+
defaultClassName: "w6b4r7r",
|
|
31
31
|
variantClassNames: { state: {
|
|
32
|
-
collapsed: "
|
|
33
|
-
expanded: "
|
|
32
|
+
collapsed: "w6b4r7s w6b4r7p txvbqbeqz",
|
|
33
|
+
expanded: "w6b4r7t w6b4r7q txvbqbes2"
|
|
34
34
|
} },
|
|
35
35
|
defaultVariants: { state: "expanded" },
|
|
36
36
|
compoundVariants: []
|
|
37
|
-
}),
|
|
38
|
-
defaultClassName: "
|
|
37
|
+
}), p = "w6b4r7u txvbqb11nr", m = "w6b4r7v txvbqbfvs txvbqbv7x txvbqb1avz txvbqbwr6 txvbqb18ef txvbqb7m txvbqb78 txvbqb7t", h = "w6b4r7w txvbqb13i7 txvbqbfpn txvbqbey txvbqbls4 txvbqb19fz txvbqbjle txvbqbh6d", g = "w6b4r7x txvbqb7m txvbqb78 txvbqb7t", _ = "w6b4r7y w6b4r7x txvbqb7m txvbqb78 txvbqb7t", v = "w6b4r710 w6b4r7x txvbqb7m txvbqb78 txvbqb7t w6b4r7z txvbqb1bjr", y = "w6b4r711 txvbqb13i7 txvbqbqhu txvbqbfpn txvbqbey txvbqbls4 txvbqb19fz txvbqbjle", b = "w6b4r713 w6b4r712 txvbqb13hu txvbqb19cq txvbqb13kd txvbqbfpn txvbqbey txvbqbls4 txvbqb19h2 txvbqbjmh txvbqb2tz txvbqb1b85 txvbqb1bjr txvbqb7g txvbqb78 txvbqb7t", x = "w6b4r714 txvbqb13i7 txvbqbfpn txvbqbey txvbqbls4 txvbqb19fm txvbqbjl1", S = "w6b4r716 w6b4r715 txvbqb7m txvbqb78 txvbqb7t", C = "w6b4r718 w6b4r717 txvbqb1bjr txvbqb7m txvbqb78 txvbqb7t", w = e({
|
|
38
|
+
defaultClassName: "w6b4r71d w6b4r71a w6b4r719 txvbqb10mx txvbqb11ki txvbqb12hq txvbqbxtt txvbqbfpn txvbqbey txvbqbhdl txvbqb2uc txvbqb9j txvbqbhb2 txvbqbnwo txvbqb3f txvbqb7h txvbqb78 txvbqb7t",
|
|
39
39
|
variantClassNames: { state: {
|
|
40
|
-
default: "
|
|
41
|
-
active: "
|
|
40
|
+
default: "w6b4r71e w6b4r71b txvbqb1bc9",
|
|
41
|
+
active: "w6b4r71f w6b4r71c"
|
|
42
42
|
} },
|
|
43
43
|
defaultVariants: { state: "default" },
|
|
44
44
|
compoundVariants: []
|
|
45
|
-
}),
|
|
45
|
+
}), T = "w6b4r71g txvbqbfpn txvbqbey txvbqbls4 txvbqb19fm txvbqbjl1 txvbqbh6d", E = "w6b4r71h", D = "w6b4r71i txvbqbfvs txvbqbv7x txvbqb1avz txvbqbwr6 txvbqb18ef";
|
|
46
46
|
//#endregion
|
|
47
|
-
export {
|
|
47
|
+
export { T as childIcon, E as childIconTheme, D as childLabel, w as childLinkRecipe, t as collapseButton, r as collapseButtonLabel, n as collapseButtonStateRecipe, o as collapsibleContent, s as collapsibleContentTheme, c as collapsibleItem, i as collapsibleSection, a as collapsibleStateRecipe, g as iconBaseLayer, _ as iconHiddenOnHover, v as iconVisibleOnHover, h as iconWrapper, l as itemWrapper, m as label, u as navButton, f as navGapRecipe, d as navLinkRecipe, p as navWithTrailingAction, b as trailingActionButton, S as trailingActionIconHidden, C as trailingActionIconVisible, x as trailingActionIconWrapper, y as trailingIconWrapper };
|
|
48
48
|
|
|
49
49
|
//# sourceMappingURL=navigationSidebar.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigationSidebar.css.js","names":[],"sources":["../../../../../src/atomic/organisms/sidebar/navigationSidebar.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.css.js';\n\nexport const collapseButton = style([\n sprinkles({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 'lg',\n borderWidth: 'default',\n borderStyle: 'solid',\n
|
|
1
|
+
{"version":3,"file":"navigationSidebar.css.js","names":[],"sources":["../../../../../src/atomic/organisms/sidebar/navigationSidebar.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.css.js';\n\nexport const collapseButton = style([\n sprinkles({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 'lg',\n borderWidth: 'default',\n borderStyle: 'solid',\n height: 10,\n transitionProperty: 'default',\n transitionDuration: 200,\n transitionTimingFunction: 'ease',\n }),\n {\n backgroundColor: vars.sidebar.collapseButtonBackground,\n borderColor: vars.sidebar.collapseButtonBorderColor,\n color: vars.sidebar.collapseButtonColor,\n selectors: {\n '&:hover': {\n backgroundColor: vars.sidebar.collapseButtonHoverBackground,\n color: vars.sidebar.collapseButtonHoverColor,\n boxShadow: vars.sidebar.collapseButtonHoverShadow,\n },\n '&:focus-visible': {\n outline: 'none',\n boxShadow: vars.sidebar.collapseButtonFocusRing,\n },\n },\n },\n]);\n\nexport const collapseButtonStateRecipe = recipe({\n variants: {\n state: {\n collapsed: {\n width: vars.spacing[10],\n paddingInline: 0,\n },\n expanded: {\n paddingInline: vars.spacing[3],\n width: 'auto',\n },\n },\n },\n defaultVariants: {\n state: 'expanded',\n },\n});\n\nexport type CollapseButtonStateVariants = RecipeVariants<\n typeof collapseButtonStateRecipe\n>;\n\nexport const collapseButtonLabel = sprinkles({\n marginLeft: 2,\n fontSize: 'sm',\n fontWeight: 'medium',\n});\n\nexport const collapsibleSection = sprinkles({\n display: 'grid',\n transitionProperty: 'gridTemplateRowsOpacity',\n transitionDuration: 300,\n transitionTimingFunction: 'ease-in-out',\n});\n\nexport const collapsibleStateRecipe = recipe({\n variants: {\n state: {\n expanded: {\n gridTemplateRows: '1fr',\n opacity: 1,\n },\n collapsed: {\n gridTemplateRows: '0fr',\n opacity: 0,\n pointerEvents: 'none',\n },\n },\n },\n defaultVariants: {\n state: 'collapsed',\n },\n});\n\nexport type CollapsibleStateVariants = RecipeVariants<\n typeof collapsibleStateRecipe\n>;\n\nexport const collapsibleContent = sprinkles({\n marginTop: 1,\n marginLeft: 5,\n borderLeftWidth: 2,\n borderStyle: 'solid',\n paddingLeft: 3,\n overflow: 'hidden',\n});\n\nexport const collapsibleContentTheme = style({\n borderColor: vars.sidebar.nestedBorderColor,\n});\n\nexport const collapsibleItem = style({\n selectors: {\n '&:not(:first-child)': {\n marginTop: vars.spacing[1],\n },\n },\n});\n\nexport const itemWrapper = sprinkles({\n position: 'relative',\n});\n\nconst interactiveBase = style([\n sprinkles({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-start',\n width: 'full',\n borderRadius: 'lg',\n paddingY: 2,\n paddingX: 3,\n fontSize: 'sm',\n lineHeight: 1.2,\n textAlign: 'left',\n backgroundColor: 'transparent',\n transitionProperty: 'default',\n transitionDuration: 200,\n transitionTimingFunction: 'ease',\n }),\n {\n selectors: {\n '&:hover': {\n backgroundColor: vars.sidebar.itemHoverBackground,\n color: vars.sidebar.itemHoverColor,\n },\n '&:focus-visible': {\n outline: 'none',\n boxShadow: vars.sidebar.itemFocusRing,\n },\n },\n },\n]);\n\nexport const navButton = style([\n interactiveBase,\n sprinkles({ fontWeight: 'bold' }),\n {\n color: vars.sidebar.itemColor,\n },\n]);\n\nconst navLinkBase = style([\n interactiveBase,\n sprinkles({ fontWeight: 'semibold', textDecoration: 'none' }),\n {\n color: vars.sidebar.itemColor,\n },\n]);\n\nexport const navLinkRecipe = recipe({\n base: navLinkBase,\n variants: {\n state: {\n default: sprinkles({\n color: 'inherit',\n }),\n active: style({\n backgroundColor: vars.sidebar.itemActiveBackground,\n backgroundImage: vars.sidebar.itemActiveBackgroundImage,\n borderColor: vars.sidebar.itemActiveBorderColor,\n color: vars.sidebar.itemActiveColor,\n boxShadow: vars.sidebar.itemActiveShadow,\n }),\n },\n },\n defaultVariants: {\n state: 'default',\n },\n});\n\nexport type NavLinkVariants = RecipeVariants<typeof navLinkRecipe>;\n\nexport const navGapRecipe = recipe({\n variants: {\n state: {\n collapsed: sprinkles({ columnGap: 0 }),\n expanded: sprinkles({ columnGap: 3 }),\n },\n },\n defaultVariants: {\n state: 'expanded',\n },\n});\n\nexport type NavGapVariants = RecipeVariants<typeof navGapRecipe>;\n\nexport const navWithTrailingAction = sprinkles({\n paddingRight: 12,\n});\n\nexport const label = sprinkles({\n flex: 1,\n minWidth: 0,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n transitionProperty: 'opacity',\n transitionDuration: 200,\n transitionTimingFunction: 'ease',\n});\n\nexport const iconWrapper = sprinkles({\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 5,\n height: 5,\n flexShrink: 0,\n});\n\nconst fadingLayer = sprinkles({\n transitionProperty: 'opacity',\n transitionDuration: 200,\n transitionTimingFunction: 'ease',\n});\n\nexport const iconBaseLayer = fadingLayer;\n\nexport const iconHiddenOnHover = style([\n fadingLayer,\n {\n selectors: {\n [`${itemWrapper}:hover &`]: { opacity: 0 },\n [`${itemWrapper}:focus-visible &`]: { opacity: 0 },\n [`${itemWrapper}:focus-within &`]: { opacity: 0 },\n },\n },\n]);\n\nexport const iconVisibleOnHover = style([\n fadingLayer,\n sprinkles({ opacity: 0 }),\n {\n selectors: {\n [`${itemWrapper}:hover &`]: { opacity: 1 },\n [`${itemWrapper}:focus-visible &`]: { opacity: 1 },\n [`${itemWrapper}:focus-within &`]: { opacity: 1 },\n },\n },\n]);\n\nexport const trailingIconWrapper = sprinkles({\n position: 'relative',\n marginLeft: 'auto',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 5,\n height: 5,\n});\n\nexport const trailingActionButton = style([\n sprinkles({\n position: 'absolute',\n top: '1/2',\n right: 2,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 8,\n height: 8,\n borderRadius: 'md',\n backgroundColor: 'surfaceElevated',\n opacity: 0,\n transitionProperty: 'default',\n transitionDuration: 200,\n transitionTimingFunction: 'ease',\n }),\n {\n transform: 'translateY(-50%)',\n color: vars.sidebar.actionColor,\n selectors: {\n [`${itemWrapper}:hover &`]: { opacity: 1 },\n [`${itemWrapper}:focus-within &`]: { opacity: 1 },\n '&:hover': {\n backgroundColor: vars.sidebar.actionHoverBackground,\n color: vars.sidebar.actionHoverColor,\n },\n '&:focus-visible': {\n outline: 'none',\n boxShadow: vars.sidebar.actionFocusRing,\n opacity: 1,\n },\n },\n },\n]);\n\nexport const trailingActionIconWrapper = sprinkles({\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 4,\n height: 4,\n});\n\nexport const trailingActionIconHidden = style([\n sprinkles({\n transitionProperty: 'opacity',\n transitionDuration: 200,\n transitionTimingFunction: 'ease',\n }),\n {\n selectors: {\n [`${trailingActionButton}:hover &`]: { opacity: 0 },\n [`${trailingActionButton}:focus-visible &`]: { opacity: 0 },\n },\n },\n]);\n\nexport const trailingActionIconVisible = style([\n sprinkles({\n opacity: 0,\n transitionProperty: 'opacity',\n transitionDuration: 200,\n transitionTimingFunction: 'ease',\n }),\n {\n selectors: {\n [`${trailingActionButton}:hover &`]: { opacity: 1 },\n [`${trailingActionButton}:focus-visible &`]: { opacity: 1 },\n },\n },\n]);\n\nconst childLinkBase = style([\n sprinkles({\n display: 'flex',\n alignItems: 'center',\n gap: 2,\n borderRadius: 'lg',\n paddingY: 2,\n paddingX: 3,\n fontSize: 'sm',\n fontWeight: 'medium',\n lineHeight: 1.2,\n textDecoration: 'none',\n transitionProperty: 'colors',\n transitionDuration: 200,\n transitionTimingFunction: 'ease',\n }),\n {\n color: vars.sidebar.itemColor,\n selectors: {\n '&:hover': {\n backgroundColor: vars.sidebar.itemHoverBackground,\n color: vars.sidebar.itemHoverColor,\n },\n },\n },\n]);\n\nexport const childLinkRecipe = recipe({\n base: childLinkBase,\n variants: {\n state: {\n default: sprinkles({\n color: 'inherit',\n }),\n active: style({\n backgroundColor: vars.sidebar.itemActiveBackground,\n backgroundImage: vars.sidebar.itemActiveBackgroundImage,\n borderColor: vars.sidebar.itemActiveBorderColor,\n color: vars.sidebar.itemActiveColor,\n boxShadow: vars.sidebar.itemActiveShadow,\n fontWeight: vars.fontWeight.semibold,\n }),\n },\n },\n defaultVariants: {\n state: 'default',\n },\n});\n\nexport type ChildLinkVariants = RecipeVariants<typeof childLinkRecipe>;\n\nexport const childIcon = sprinkles({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 4,\n height: 4,\n flexShrink: 0,\n});\n\nexport const childIconTheme = style({\n color: vars.sidebar.itemColor,\n});\n\nexport const childLabel = sprinkles({\n flex: 1,\n minWidth: 0,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n});\n"],"mappings":""}
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
/* empty css */
|
|
3
3
|
import { createRuntimeFn as e } from "@vanilla-extract/recipes/createRuntimeFn";
|
|
4
4
|
//#region src/atomic/organisms/sidebar/sidebar.css.ts
|
|
5
|
-
var t = "_1cyd4aw0
|
|
6
|
-
defaultClassName: "
|
|
5
|
+
var t = "_1cyd4aw0 txvbqbfpn txvbqbko1 txvbqbh4x txvbqbwr6 txvbqbwwl txvbqb1tv txvbqb2sj txvbqb9o9 txvbqb7q txvbqb79 txvbqb7v", n = "_1cyd4aw1", r = e({
|
|
6
|
+
defaultClassName: "_1cyd4aw2",
|
|
7
7
|
variantClassNames: { state: {
|
|
8
|
-
collapsed: "
|
|
9
|
-
expanded: "
|
|
8
|
+
collapsed: "_1cyd4aw3",
|
|
9
|
+
expanded: "_1cyd4aw4"
|
|
10
10
|
} },
|
|
11
11
|
defaultVariants: { state: "expanded" },
|
|
12
12
|
compoundVariants: []
|
|
13
|
-
}),
|
|
13
|
+
}), i = "_1cyd4aw5 txvbqbfpn txvbqbfvs txvbqbh4x", a = "_1cyd4aw6 txvbqbfpn txvbqbey txvbqblsu txvbqbhdl txvbqbp6j txvbqbry7 txvbqbww8 txvbqb2up txvbqb1ayv txvbqb28o txvbqb2sj txvbqb1qm txvbqb7m txvbqb79 txvbqb7v", o = "_1cyd4aw7 txvbqbfpn txvbqb19uf txvbqblsu txvbqbhdl txvbqbp6j", s = "_1cyd4aw8 txvbqbfpn txvbqbfvs txvbqbh4x txvbqbhdl txvbqb7i txvbqb79 txvbqb7v txvbqb12ig", c = "_1cyd4aw9 txvbqbhd8", l = "_1cyd4awa txvbqbrzn", u = "_1cyd4awb txvbqbfpn txvbqbls4", d = "_1cyd4awd _1cyd4awc txvbqb10mx txvbqb11ki txvbqb12hq txvbqbxtt txvbqb2tz txvbqb9j txvbqbhb2 txvbqb1bi7 txvbqb1ayv txvbqb28o txvbqb2sj txvbqb1qm txvbqb7g txvbqb76 txvbqb7t", f = "_1cyd4awg _1cyd4awe txvbqb10mx txvbqb11ki txvbqb12hq txvbqbxtt txvbqbfpn txvbqbey txvbqbhdy txvbqb2uc txvbqb9j txvbqbnwo txvbqb3f txvbqb1b4r txvbqb1bg1 txvbqb7g txvbqb76 txvbqb7t _1cyd4awf txvbqbhbf", p = "_1cyd4awh", m = "_1cyd4awi txvbqbfpn txvbqbey txvbqbls4 txvbqb19fz txvbqbjle txvbqb1bc9 txvbqbhbf txvbqb7h txvbqb76 txvbqb7t", h = "_1cyd4awj txvbqbfvs txvbqbv7x txvbqb1avz txvbqbwr6 txvbqb18ef";
|
|
14
14
|
//#endregion
|
|
15
|
-
export {
|
|
15
|
+
export { i as content, d as defaultHeaderButton, l as footer, u as footerCollapsed, o as headerActions, a as headerRow, h as linkLabel, s as nav, c as navCollapsed, m as organizationIcon, f as organizationLink, p as organizationLinkActive, t as sidebar, n as sidebarTheme, r as sidebarWidthRecipe };
|
|
16
16
|
|
|
17
17
|
//# sourceMappingURL=sidebar.css.js.map
|