@getgreenline/blaze-ui 1.0.48 → 1.0.49-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/dist/components/blaze-layout/blaze-layout.d.ts +5 -0
  2. package/dist/components/blaze-layout/blaze-layout.d.ts.map +1 -0
  3. package/dist/components/blaze-layout/blaze-layout.js +29 -0
  4. package/dist/components/blaze-layout/breadcrumbs.d.ts +7 -0
  5. package/dist/components/blaze-layout/breadcrumbs.d.ts.map +1 -0
  6. package/dist/components/blaze-layout/breadcrumbs.js +22 -0
  7. package/dist/components/blaze-layout/default-anchor.d.ts +9 -0
  8. package/dist/components/blaze-layout/default-anchor.d.ts.map +1 -0
  9. package/dist/components/blaze-layout/default-anchor.js +10 -0
  10. package/dist/components/blaze-layout/logo.d.ts +6 -0
  11. package/dist/components/blaze-layout/logo.d.ts.map +1 -0
  12. package/dist/components/blaze-layout/logo.js +21 -0
  13. package/dist/components/blaze-layout/navigation.d.ts +5 -0
  14. package/dist/components/blaze-layout/navigation.d.ts.map +1 -0
  15. package/dist/components/blaze-layout/navigation.js +23 -0
  16. package/dist/components/blaze-layout/page-header.d.ts +5 -0
  17. package/dist/components/blaze-layout/page-header.d.ts.map +1 -0
  18. package/dist/components/blaze-layout/page-header.js +10 -0
  19. package/dist/components/blaze-layout/sidebar-nav.d.ts +10 -0
  20. package/dist/components/blaze-layout/sidebar-nav.d.ts.map +1 -0
  21. package/dist/components/blaze-layout/sidebar-nav.js +40 -0
  22. package/dist/components/blaze-layout/types.d.ts +85 -0
  23. package/dist/components/blaze-layout/types.d.ts.map +1 -0
  24. package/dist/components/blaze-layout/user-action.d.ts +6 -0
  25. package/dist/components/blaze-layout/user-action.d.ts.map +1 -0
  26. package/dist/components/blaze-layout/user-action.js +18 -0
  27. package/dist/components/blaze-layout.d.ts +4 -0
  28. package/dist/components/blaze-layout.d.ts.map +1 -0
  29. package/dist/index.d.ts +1 -0
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +2 -0
  32. package/package.json +1 -1
@@ -0,0 +1,5 @@
1
+ import type { BlazeLayoutProps } from "./types";
2
+ declare function BlazeLayout({ className, logo, breadcrumbs, pageHeader, navGroups, activeNavItemIds, pendingNavItemIds, currentPath, renderNavLink, renderBreadcrumbLink, topActions, appSwitcher, user, userAction, shopSwitcher, sidebarCollapsible, sidebarOpen, defaultSidebarOpen, onSidebarOpenChange, children, ...props }: BlazeLayoutProps): import("react/jsx-runtime").JSX.Element;
3
+ declare function BlazeLayoutDummyShopSwitcher(): null;
4
+ export { BlazeLayout, BlazeLayoutDummyShopSwitcher };
5
+ //# sourceMappingURL=blaze-layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blaze-layout.d.ts","sourceRoot":"","sources":["../../../src/components/blaze-layout/blaze-layout.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAG/C,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,IAAI,EACJ,WAAW,EACX,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,UAAU,EACV,WAAW,EACX,IAAS,EACT,UAAU,EACV,YAAY,EACZ,kBAA2B,EAC3B,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,gBAAgB,2CAoHlB;AAED,iBAAS,4BAA4B,SAEpC;AAED,OAAO,EAAE,WAAW,EAAE,4BAA4B,EAAE,CAAA"}
@@ -0,0 +1,29 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+ import { HeaderAppSwitcher } from '../header-app-switcher.js';
4
+ import { PageHeader } from '../page-header.js';
5
+ import { SidebarProvider, Sidebar, SidebarHeader, SidebarContent, SidebarGroup, SidebarGroupLabel, SidebarGroupContent, SidebarMenu, SidebarFooter, SidebarInset, SidebarTrigger } from '../sidebar.js';
6
+ import { Separator } from '../separator.js';
7
+ import { cn } from '../../lib/utils.js';
8
+ import { BlazeLayoutBreadcrumbs } from './breadcrumbs.js';
9
+ import { BlazeLayoutLogo } from './logo.js';
10
+ import { toOptionalSet } from './navigation.js';
11
+ import { isPageHeaderConfig } from './page-header.js';
12
+ import { BlazeLayoutNavItemView } from './sidebar-nav.js';
13
+ import { BlazeLayoutUserAction } from './user-action.js';
14
+
15
+ function BlazeLayout({ className, logo, breadcrumbs, pageHeader, navGroups, activeNavItemIds, pendingNavItemIds, currentPath, renderNavLink, renderBreadcrumbLink, topActions, appSwitcher, user = {}, userAction, shopSwitcher, sidebarCollapsible = "none", sidebarOpen, defaultSidebarOpen, onSidebarOpenChange, children, ...props }) {
16
+ const activeIds = React.useMemo(() => toOptionalSet(activeNavItemIds), [activeNavItemIds]);
17
+ const pendingIds = React.useMemo(() => toOptionalSet(pendingNavItemIds), [pendingNavItemIds]);
18
+ const hasSidebarNavigation = Boolean(navGroups?.some((group) => group.items.length));
19
+ const isSidebarCollapsible = sidebarCollapsible !== "none";
20
+ return (jsx("div", { "data-slot": "blaze-layout", className: cn("blaze-ui-root tw:min-h-svh tw:bg-background", className), ...props, children: jsxs(SidebarProvider, { open: sidebarOpen, defaultOpen: defaultSidebarOpen, onOpenChange: onSidebarOpenChange, children: [jsxs(Sidebar, { collapsible: sidebarCollapsible, className: cn("tw:border-r", !isSidebarCollapsible && "tw:sticky tw:top-0 tw:h-svh tw:shrink-0"), children: [jsx(SidebarHeader, { className: "tw:h-14 tw:flex-row tw:items-center tw:border-b tw:px-3 tw:py-0", children: jsx(BlazeLayoutLogo, { logo: logo }) }), jsx(SidebarContent, { children: hasSidebarNavigation
21
+ ? navGroups?.map((group, groupIndex) => (jsxs(SidebarGroup, { children: [group.label ? (jsx(SidebarGroupLabel, { children: group.label })) : null, jsx(SidebarGroupContent, { children: jsx(SidebarMenu, { children: group.items.map((item) => (jsx(BlazeLayoutNavItemView, { item: item, activeIds: activeIds, pendingIds: pendingIds, currentPath: currentPath, renderNavLink: renderNavLink }, item.id))) }) })] }, group.id ?? groupIndex)))
22
+ : null }), jsx(SidebarFooter, { children: shopSwitcher })] }), jsxs(SidebarInset, { className: "tw:min-h-0 tw:min-w-0", children: [jsxs("header", { "data-slot": "blaze-layout-topbar", className: "tw:sticky tw:top-0 tw:z-30 tw:flex tw:h-14 tw:shrink-0 tw:items-center tw:gap-3 tw:border-b tw:bg-background tw:px-4", children: [jsxs("div", { className: "tw:flex tw:min-w-0 tw:items-center tw:gap-3", children: [jsx(SidebarTrigger, { className: "tw:-ml-1 tw:size-8" }), isSidebarCollapsible ? (jsx(Separator, { orientation: "vertical", className: "tw:data-[orientation=vertical]:h-4" })) : null, jsx(BlazeLayoutBreadcrumbs, { breadcrumbs: breadcrumbs, renderBreadcrumbLink: renderBreadcrumbLink })] }), jsxs("div", { "data-slot": "blaze-layout-actions", className: "tw:ml-auto tw:flex tw:shrink-0 tw:items-center tw:gap-1", children: [topActions, appSwitcher !== false ? (jsx(HeaderAppSwitcher, { ...appSwitcher })) : null, userAction ??
23
+ (user !== false ? jsx(BlazeLayoutUserAction, { user: user }) : null)] })] }), jsxs("div", { "data-slot": "blaze-layout-content", className: "tw:min-h-0 tw:flex-1 tw:overflow-auto tw:px-6 tw:py-10", children: [pageHeader ? (jsx("div", { "data-slot": "blaze-layout-page-header", className: "tw:mb-8", children: isPageHeaderConfig(pageHeader) ? (jsx(PageHeader, { variant: "plain", ...pageHeader })) : (pageHeader) })) : null, jsx("div", { "data-slot": "blaze-layout-page", className: "tw:min-h-full tw:w-full", children: children })] })] })] }) }));
24
+ }
25
+ function BlazeLayoutDummyShopSwitcher() {
26
+ return null;
27
+ }
28
+
29
+ export { BlazeLayout, BlazeLayoutDummyShopSwitcher };
@@ -0,0 +1,7 @@
1
+ import type { BlazeLayoutBreadcrumbItem, BlazeLayoutProps } from "./types";
2
+ declare function BlazeLayoutBreadcrumbs({ breadcrumbs, renderBreadcrumbLink, }: {
3
+ breadcrumbs?: BlazeLayoutBreadcrumbItem[];
4
+ renderBreadcrumbLink?: BlazeLayoutProps["renderBreadcrumbLink"];
5
+ }): import("react/jsx-runtime").JSX.Element | null;
6
+ export { BlazeLayoutBreadcrumbs };
7
+ //# sourceMappingURL=breadcrumbs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breadcrumbs.d.ts","sourceRoot":"","sources":["../../../src/components/blaze-layout/breadcrumbs.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE1E,iBAAS,sBAAsB,CAAC,EAC9B,WAAW,EACX,oBAAoB,GACrB,EAAE;IACD,WAAW,CAAC,EAAE,yBAAyB,EAAE,CAAA;IACzC,oBAAoB,CAAC,EAAE,gBAAgB,CAAC,sBAAsB,CAAC,CAAA;CAChE,kDAkDA;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAA"}
@@ -0,0 +1,22 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+ import { Breadcrumb, BreadcrumbList, BreadcrumbSeparator, BreadcrumbItem, BreadcrumbPage, BreadcrumbLink } from '../breadcrumb.js';
4
+ import { cn } from '../../lib/utils.js';
5
+ import { DefaultAnchor } from './default-anchor.js';
6
+
7
+ function BlazeLayoutBreadcrumbs({ breadcrumbs, renderBreadcrumbLink, }) {
8
+ if (!breadcrumbs?.length)
9
+ return null;
10
+ return (jsx(Breadcrumb, { className: "tw:min-w-0", children: jsx(BreadcrumbList, { className: "tw:min-w-0 tw:flex-nowrap", children: breadcrumbs.map((item, index) => {
11
+ const isLast = index === breadcrumbs.length - 1;
12
+ const content = (jsx("span", { className: "tw:block tw:max-w-[140px] tw:truncate tw:sm:max-w-[180px] tw:md:max-w-none", children: item.label }));
13
+ return (jsxs(React.Fragment, { children: [index > 0 ? (jsx(BreadcrumbSeparator, { className: "tw:hidden tw:md:block" })) : null, jsx(BreadcrumbItem, { className: cn(!isLast && "tw:hidden tw:md:inline-flex", "tw:min-w-0"), children: isLast ? (jsx(BreadcrumbPage, { children: content })) : (jsx(BreadcrumbLink, { asChild: true, children: renderBreadcrumbLink ? (renderBreadcrumbLink({
14
+ item,
15
+ isActive: false,
16
+ isPending: false,
17
+ children: content,
18
+ })) : (jsx(DefaultAnchor, { href: item.href, onClick: item.onClick, children: content })) })) })] }, item.id));
19
+ }) }) }));
20
+ }
21
+
22
+ export { BlazeLayoutBreadcrumbs };
@@ -0,0 +1,9 @@
1
+ import type * as React from "react";
2
+ declare function DefaultAnchor({ href, disabled, onClick, children, ...props }: React.ComponentProps<"a"> & {
3
+ href?: string;
4
+ disabled?: boolean;
5
+ onClick?: React.MouseEventHandler<HTMLElement>;
6
+ children: React.ReactNode;
7
+ }): import("react/jsx-runtime").JSX.Element;
8
+ export { DefaultAnchor };
9
+ //# sourceMappingURL=default-anchor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-anchor.d.ts","sourceRoot":"","sources":["../../../src/components/blaze-layout/default-anchor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AAEnC,iBAAS,aAAa,CAAC,EACrB,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAA;IAC9C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,2CAmBA;AAED,OAAO,EAAE,aAAa,EAAE,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+
3
+ function DefaultAnchor({ href, disabled, onClick, children, ...props }) {
4
+ if (disabled || !href) {
5
+ return (jsx("button", { type: "button", disabled: disabled, onClick: onClick, ...props, children: children }));
6
+ }
7
+ return (jsx("a", { href: href, onClick: onClick, ...props, children: children }));
8
+ }
9
+
10
+ export { DefaultAnchor };
@@ -0,0 +1,6 @@
1
+ import type { BlazeLayoutLogo } from "./types";
2
+ declare function BlazeLayoutLogo({ logo }: {
3
+ logo?: BlazeLayoutLogo;
4
+ }): import("react/jsx-runtime").JSX.Element;
5
+ export { BlazeLayoutLogo };
6
+ //# sourceMappingURL=logo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logo.d.ts","sourceRoot":"","sources":["../../../src/components/blaze-layout/logo.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAc9C,iBAAS,eAAe,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,eAAe,CAAA;CAAE,2CA4C5D;AAED,OAAO,EAAE,eAAe,EAAE,CAAA"}
@@ -0,0 +1,21 @@
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
+ import { Badge } from '../badge.js';
3
+ import { BillingLogo } from '../../svgs/header-app-switcher-logos.js';
4
+ import { cn } from '../../lib/utils.js';
5
+
6
+ const defaultLogo = {
7
+ label: (jsxs(Fragment, { children: ["BLAZE ", jsx("span", { className: "tw:text-primary", children: "BILLING" })] })),
8
+ };
9
+ function DefaultLogoMark() {
10
+ return jsx(BillingLogo, { className: "tw:size-7" });
11
+ }
12
+ function BlazeLayoutLogo({ logo }) {
13
+ const resolvedLogo = { ...defaultLogo, ...logo };
14
+ const sizeStyle = {
15
+ width: resolvedLogo.width,
16
+ height: resolvedLogo.height,
17
+ };
18
+ return (jsxs("div", { "data-slot": "blaze-layout-logo", className: "tw:flex tw:min-w-0 tw:items-center tw:gap-2", children: [resolvedLogo.node ? (jsx("span", { className: cn("tw:flex tw:shrink-0 tw:items-center", resolvedLogo.className), style: sizeStyle, children: resolvedLogo.node })) : resolvedLogo.src ? (jsx("img", { src: resolvedLogo.src, alt: resolvedLogo.alt ?? "", className: cn("tw:h-7 tw:w-auto tw:shrink-0", resolvedLogo.className), style: sizeStyle })) : (jsx(DefaultLogoMark, {})), resolvedLogo.label ? (jsx("span", { className: "tw:truncate tw:text-sm tw:font-bold tw:tracking-normal", children: resolvedLogo.label })) : null, resolvedLogo.beta ? (jsx(Badge, { variant: "outline", className: "tw:shrink-0 tw:text-[10px]", children: "Beta" })) : null] }));
19
+ }
20
+
21
+ export { BlazeLayoutLogo };
@@ -0,0 +1,5 @@
1
+ import type { BlazeLayoutNavItem } from "./types";
2
+ declare const toOptionalSet: (values?: Iterable<string>) => Set<string> | undefined;
3
+ declare function isNavItemActive(item: BlazeLayoutNavItem, activeIds?: Set<string>, currentPath?: string): boolean;
4
+ export { isNavItemActive, toOptionalSet };
5
+ //# sourceMappingURL=navigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../src/components/blaze-layout/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAQjD,QAAA,MAAM,aAAa,GAAI,SAAS,QAAQ,CAAC,MAAM,CAAC,4BACV,CAAA;AAEtC,iBAAS,eAAe,CACtB,IAAI,EAAE,kBAAkB,EACxB,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EACvB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAeT;AAED,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,CAAA"}
@@ -0,0 +1,23 @@
1
+ const cleanPath = (value) => {
2
+ if (!value)
3
+ return "";
4
+ const normalized = value.split(/[?#]/)[0]?.replace(/\/+$/, "") ?? "";
5
+ return normalized || "/";
6
+ };
7
+ const toOptionalSet = (values) => values ? new Set(values) : undefined;
8
+ function isNavItemActive(item, activeIds, currentPath) {
9
+ if (activeIds?.has(item.id))
10
+ return true;
11
+ if (item.children?.some((child) => isNavItemActive(child, activeIds, currentPath))) {
12
+ return true;
13
+ }
14
+ const path = cleanPath(currentPath);
15
+ const href = cleanPath(item.href);
16
+ if (!path || !href)
17
+ return false;
18
+ if (item.exact)
19
+ return path === href;
20
+ return path === href || path.startsWith(`${href}/`);
21
+ }
22
+
23
+ export { isNavItemActive, toOptionalSet };
@@ -0,0 +1,5 @@
1
+ import * as React from "react";
2
+ import type { PageHeaderProps } from "../page-header";
3
+ declare function isPageHeaderConfig(value: PageHeaderProps | React.ReactNode): value is PageHeaderProps;
4
+ export { isPageHeaderConfig };
5
+ //# sourceMappingURL=page-header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-header.d.ts","sourceRoot":"","sources":["../../../src/components/blaze-layout/page-header.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAErD,iBAAS,kBAAkB,CACzB,KAAK,EAAE,eAAe,GAAG,KAAK,CAAC,SAAS,GACvC,KAAK,IAAI,eAAe,CAO1B;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAA"}
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+
3
+ function isPageHeaderConfig(value) {
4
+ return (typeof value === "object" &&
5
+ value !== null &&
6
+ !React.isValidElement(value) &&
7
+ "title" in value);
8
+ }
9
+
10
+ export { isPageHeaderConfig };
@@ -0,0 +1,10 @@
1
+ import type { BlazeLayoutNavItem, BlazeLayoutProps } from "./types";
2
+ declare function BlazeLayoutNavItemView({ item, activeIds, pendingIds, currentPath, renderNavLink, }: {
3
+ item: BlazeLayoutNavItem;
4
+ activeIds?: Set<string>;
5
+ pendingIds?: Set<string>;
6
+ currentPath?: string;
7
+ renderNavLink?: BlazeLayoutProps["renderNavLink"];
8
+ }): import("react/jsx-runtime").JSX.Element;
9
+ export { BlazeLayoutNavItemView };
10
+ //# sourceMappingURL=sidebar-nav.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar-nav.d.ts","sourceRoot":"","sources":["../../../src/components/blaze-layout/sidebar-nav.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAWnE,iBAAS,sBAAsB,CAAC,EAC9B,IAAI,EACJ,SAAS,EACT,UAAU,EACV,WAAW,EACX,aAAa,GACd,EAAE;IACD,IAAI,EAAE,kBAAkB,CAAA;IACxB,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACvB,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,gBAAgB,CAAC,eAAe,CAAC,CAAA;CAClD,2CA6EA;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAA"}
@@ -0,0 +1,40 @@
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+ import { SidebarMenuItem, SidebarMenuButton, SidebarMenuSub, SidebarMenuSubItem, SidebarMenuSubButton } from '../sidebar.js';
4
+ import { DefaultAnchor } from './default-anchor.js';
5
+ import { isNavItemActive } from './navigation.js';
6
+
7
+ function renderIcon(icon) {
8
+ if (!icon)
9
+ return null;
10
+ if (React.isValidElement(icon))
11
+ return icon;
12
+ const Icon = icon;
13
+ return jsx(Icon, { className: "tw:size-4" });
14
+ }
15
+ function BlazeLayoutNavItemView({ item, activeIds, pendingIds, currentPath, renderNavLink, }) {
16
+ const isActive = isNavItemActive(item, activeIds, currentPath);
17
+ const isPending = Boolean(pendingIds?.has(item.id));
18
+ const content = (jsxs(Fragment, { children: [renderIcon(item.icon), jsx("span", { children: item.label })] }));
19
+ const link = renderNavLink ? (renderNavLink({
20
+ item,
21
+ isActive,
22
+ isPending,
23
+ ariaCurrent: isActive ? "page" : undefined,
24
+ children: content,
25
+ })) : (jsx(DefaultAnchor, { href: item.href, disabled: item.disabled, onClick: item.onClick, children: content }));
26
+ return (jsxs(SidebarMenuItem, { children: [jsx(SidebarMenuButton, { asChild: true, isActive: isActive, tooltip: typeof item.label === "string" ? item.label : undefined, className: "tw:[&>svg]:size-4 tw:data-[active=true]:!bg-sky-500/10 tw:data-[active=true]:!text-sky-500", children: link }), item.children?.length ? (jsx(SidebarMenuSub, { children: item.children.map((child) => {
27
+ const childActive = isNavItemActive(child, activeIds, currentPath);
28
+ const childPending = Boolean(pendingIds?.has(child.id));
29
+ const childContent = (jsxs(Fragment, { children: [renderIcon(child.icon), jsx("span", { children: child.label })] }));
30
+ return (jsx(SidebarMenuSubItem, { children: jsx(SidebarMenuSubButton, { asChild: true, isActive: childActive, children: renderNavLink ? (renderNavLink({
31
+ item: child,
32
+ isActive: childActive,
33
+ isPending: childPending,
34
+ ariaCurrent: childActive ? "page" : undefined,
35
+ children: childContent,
36
+ })) : (jsx(DefaultAnchor, { href: child.href, disabled: child.disabled, onClick: child.onClick, children: childContent })) }) }, child.id));
37
+ }) })) : null] }));
38
+ }
39
+
40
+ export { BlazeLayoutNavItemView };
@@ -0,0 +1,85 @@
1
+ import type { ComponentProps, ElementType, MouseEventHandler, ReactNode } from "react";
2
+ import type { DropdownMenuItem } from "../dropdown-menu";
3
+ import type { HeaderAppSwitcherProps } from "../header-app-switcher";
4
+ import type { PageHeaderProps } from "../page-header";
5
+ type BlazeLayoutLinkRenderArgs<TItem> = {
6
+ item: TItem;
7
+ isActive: boolean;
8
+ isPending: boolean;
9
+ ariaCurrent?: "page";
10
+ children: ReactNode;
11
+ };
12
+ type BlazeLayoutLinkRenderer<TItem> = (args: BlazeLayoutLinkRenderArgs<TItem>) => ReactNode;
13
+ type BlazeLayoutLogo = {
14
+ src?: string;
15
+ alt?: string;
16
+ node?: ReactNode;
17
+ label?: ReactNode;
18
+ beta?: boolean;
19
+ width?: number | string;
20
+ height?: number | string;
21
+ className?: string;
22
+ };
23
+ type BlazeLayoutBreadcrumbItem = {
24
+ id: string;
25
+ label: ReactNode;
26
+ href?: string;
27
+ onClick?: MouseEventHandler<HTMLElement>;
28
+ };
29
+ type BlazeLayoutNavItem = {
30
+ id: string;
31
+ label: ReactNode;
32
+ href?: string;
33
+ icon?: ElementType<{
34
+ className?: string;
35
+ }> | ReactNode;
36
+ exact?: boolean;
37
+ disabled?: boolean;
38
+ onClick?: MouseEventHandler<HTMLElement>;
39
+ children?: BlazeLayoutNavItem[];
40
+ };
41
+ type BlazeLayoutNavGroup = {
42
+ id?: string;
43
+ label?: ReactNode;
44
+ items: BlazeLayoutNavItem[];
45
+ };
46
+ type BlazeLayoutUserMenuItem = {
47
+ id: string;
48
+ label: ReactNode;
49
+ icon?: ReactNode;
50
+ variant?: "default" | "destructive";
51
+ onSelect?: ComponentProps<typeof DropdownMenuItem>["onSelect"];
52
+ disabled?: boolean;
53
+ };
54
+ type BlazeLayoutUser = {
55
+ initials?: string;
56
+ name?: ReactNode;
57
+ email?: ReactNode;
58
+ avatarSrc?: string;
59
+ menuItems?: BlazeLayoutUserMenuItem[];
60
+ logoutItem?: BlazeLayoutUserMenuItem | false;
61
+ };
62
+ type BlazeLayoutSidebarCollapsible = "offcanvas" | "icon" | "none";
63
+ type BlazeLayoutProps = ComponentProps<"div"> & {
64
+ logo?: BlazeLayoutLogo;
65
+ breadcrumbs?: BlazeLayoutBreadcrumbItem[];
66
+ pageHeader?: PageHeaderProps | ReactNode;
67
+ navGroups?: BlazeLayoutNavGroup[];
68
+ activeNavItemIds?: Iterable<string>;
69
+ pendingNavItemIds?: Iterable<string>;
70
+ currentPath?: string;
71
+ renderNavLink?: BlazeLayoutLinkRenderer<BlazeLayoutNavItem>;
72
+ renderBreadcrumbLink?: BlazeLayoutLinkRenderer<BlazeLayoutBreadcrumbItem>;
73
+ topActions?: ReactNode;
74
+ appSwitcher?: HeaderAppSwitcherProps | false;
75
+ user?: BlazeLayoutUser | false;
76
+ userAction?: ReactNode;
77
+ shopSwitcher?: ReactNode;
78
+ sidebarCollapsible?: BlazeLayoutSidebarCollapsible;
79
+ sidebarOpen?: boolean;
80
+ defaultSidebarOpen?: boolean;
81
+ onSidebarOpenChange?: (open: boolean) => void;
82
+ children: ReactNode;
83
+ };
84
+ export type { BlazeLayoutBreadcrumbItem, BlazeLayoutLinkRenderArgs, BlazeLayoutLinkRenderer, BlazeLayoutLogo, BlazeLayoutNavGroup, BlazeLayoutNavItem, BlazeLayoutProps, BlazeLayoutSidebarCollapsible, BlazeLayoutUser, BlazeLayoutUserMenuItem, };
85
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/blaze-layout/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { BlazeLayoutUser } from "./types";
2
+ declare function BlazeLayoutUserAction({ user }: {
3
+ user?: BlazeLayoutUser;
4
+ }): import("react/jsx-runtime").JSX.Element;
5
+ export { BlazeLayoutUserAction };
6
+ //# sourceMappingURL=user-action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-action.d.ts","sourceRoot":"","sources":["../../../src/components/blaze-layout/user-action.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,iBAAS,qBAAqB,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,eAAe,CAAA;CAAE,2CAuElE;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { LogOutIcon } from 'lucide-react';
3
+ import { Avatar, AvatarImage, AvatarFallback } from '../avatar.js';
4
+ import { Button } from '../button.js';
5
+ import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuItem } from '../dropdown-menu.js';
6
+
7
+ function BlazeLayoutUserAction({ user }) {
8
+ const resolvedUser = {
9
+ initials: "U",
10
+ name: "User",
11
+ ...user,
12
+ };
13
+ const menuItems = resolvedUser.menuItems ?? [];
14
+ const logoutItem = resolvedUser.logoutItem;
15
+ return (jsxs(DropdownMenu, { children: [jsx(DropdownMenuTrigger, { asChild: true, children: jsx(Button, { variant: "ghost", size: "icon", "aria-label": "User menu", children: jsxs(Avatar, { className: "tw:size-8", children: [resolvedUser.avatarSrc ? (jsx(AvatarImage, { src: resolvedUser.avatarSrc, alt: "" })) : null, jsx(AvatarFallback, { className: "tw:text-xs tw:font-medium", children: resolvedUser.initials })] }) }) }), jsxs(DropdownMenuContent, { align: "end", className: "tw:w-56", children: [jsxs(DropdownMenuLabel, { className: "tw:flex tw:min-w-0 tw:items-center tw:gap-2", children: [jsxs(Avatar, { children: [resolvedUser.avatarSrc ? (jsx(AvatarImage, { src: resolvedUser.avatarSrc, alt: "" })) : null, jsx(AvatarFallback, { className: "tw:text-xs tw:font-medium", children: resolvedUser.initials })] }), jsxs("span", { className: "tw:min-w-0 tw:leading-tight", children: [jsx("span", { className: "tw:block tw:truncate tw:font-semibold", children: resolvedUser.name }), resolvedUser.email ? (jsx("span", { className: "tw:block tw:truncate tw:text-xs tw:text-muted-foreground", children: resolvedUser.email })) : null] })] }), menuItems.length || logoutItem !== false ? (jsx(DropdownMenuSeparator, {})) : null, menuItems.map((item) => (jsxs(DropdownMenuItem, { variant: item.variant, disabled: item.disabled, onSelect: item.onSelect, children: [item.icon, item.label] }, item.id))), logoutItem !== false ? (jsxs(DropdownMenuItem, { variant: logoutItem?.variant ?? "destructive", disabled: logoutItem?.disabled, onSelect: logoutItem?.onSelect, children: [logoutItem?.icon ?? jsx(LogOutIcon, { className: "tw:size-4" }), logoutItem?.label ?? "Sign out"] })) : null] })] }));
16
+ }
17
+
18
+ export { BlazeLayoutUserAction };
@@ -0,0 +1,4 @@
1
+ export { BlazeLayout, BlazeLayoutDummyShopSwitcher, } from "./blaze-layout/blaze-layout";
2
+ export { BlazeLayoutUserAction } from "./blaze-layout/user-action";
3
+ export type { BlazeLayoutBreadcrumbItem, BlazeLayoutLinkRenderArgs, BlazeLayoutLinkRenderer, BlazeLayoutLogo, BlazeLayoutNavGroup, BlazeLayoutNavItem, BlazeLayoutProps, BlazeLayoutSidebarCollapsible, BlazeLayoutUser, BlazeLayoutUserMenuItem, } from "./blaze-layout/types";
4
+ //# sourceMappingURL=blaze-layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blaze-layout.d.ts","sourceRoot":"","sources":["../../src/components/blaze-layout.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,WAAW,EACX,4BAA4B,GAC7B,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,YAAY,EACV,yBAAyB,EACzB,yBAAyB,EACzB,uBAAuB,EACvB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,6BAA6B,EAC7B,eAAe,EACf,uBAAuB,GACxB,MAAM,sBAAsB,CAAA"}
package/dist/index.d.ts CHANGED
@@ -61,6 +61,7 @@ export * from "./components/input-group";
61
61
  export * from "./components/page-header";
62
62
  export * from "./components/sidebar";
63
63
  export * from "./components/header-app-switcher";
64
+ export * from "./components/blaze-layout";
64
65
  export * from "./lib/portal-wrapper";
65
66
  export * from "./components/hierarchical-select";
66
67
  export * from "./components/multi-search-select";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,2BAA2B,CAAA;AACzC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,qBAAqB,CAAA;AACnC,cAAc,2BAA2B,CAAA;AACzC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,yBAAyB,CAAA;AACvC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,2BAA2B,CAAA;AACzC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,oBAAoB,CAAA;AAClC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kCAAkC,CAAA;AAChD,cAAc,sBAAsB,CAAA;AACpC,cAAc,kCAAkC,CAAA;AAChD,cAAc,kCAAkC,CAAA;AAChD,cAAc,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,2BAA2B,CAAA;AACzC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,qBAAqB,CAAA;AACnC,cAAc,2BAA2B,CAAA;AACzC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,yBAAyB,CAAA;AACvC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,2BAA2B,CAAA;AACzC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,oBAAoB,CAAA;AAClC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kCAAkC,CAAA;AAChD,cAAc,2BAA2B,CAAA;AACzC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kCAAkC,CAAA;AAChD,cAAc,kCAAkC,CAAA;AAChD,cAAc,aAAa,CAAA"}
package/dist/index.js CHANGED
@@ -61,6 +61,8 @@ export { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGr
61
61
  export { PageHeader } from './components/page-header.js';
62
62
  export { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, useSidebar } from './components/sidebar.js';
63
63
  export { HeaderAppSwitcher } from './components/header-app-switcher.js';
64
+ export { BlazeLayout, BlazeLayoutDummyShopSwitcher } from './components/blaze-layout/blaze-layout.js';
65
+ export { BlazeLayoutUserAction } from './components/blaze-layout/user-action.js';
64
66
  export { PortalWrapper } from './lib/portal-wrapper.js';
65
67
  export { HierarchicalSelect } from './components/hierarchical-select.js';
66
68
  export { MultiSearchSelect } from './components/multi-search-select.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getgreenline/blaze-ui",
3
- "version": "1.0.48",
3
+ "version": "1.0.49-beta.0",
4
4
  "type": "module",
5
5
  "dependencies": {
6
6
  "@base-ui/react": "^1.4.1",