@getgreenline/blaze-ui 1.0.54 → 1.0.55-beta.1
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/dist/components/account-switcher/account-avatar.d.ts +7 -0
- package/dist/components/account-switcher/account-avatar.d.ts.map +1 -0
- package/dist/components/account-switcher/account-avatar.js +9 -0
- package/dist/components/account-switcher/item.d.ts +8 -0
- package/dist/components/account-switcher/item.d.ts.map +1 -0
- package/dist/components/account-switcher/item.js +12 -0
- package/dist/components/account-switcher/list.d.ts +9 -0
- package/dist/components/account-switcher/list.d.ts.map +1 -0
- package/dist/components/account-switcher/list.js +11 -0
- package/dist/components/account-switcher/search.d.ts +7 -0
- package/dist/components/account-switcher/search.d.ts.map +1 -0
- package/dist/components/account-switcher/search.js +9 -0
- package/dist/components/account-switcher/trigger.d.ts +15 -0
- package/dist/components/account-switcher/trigger.d.ts.map +1 -0
- package/dist/components/account-switcher/trigger.js +21 -0
- package/dist/components/account-switcher/types.d.ts +44 -0
- package/dist/components/account-switcher/types.d.ts.map +1 -0
- package/dist/components/account-switcher/utils.d.ts +3 -0
- package/dist/components/account-switcher/utils.d.ts.map +1 -0
- package/dist/components/account-switcher/utils.js +12 -0
- package/dist/components/account-switcher.d.ts +5 -0
- package/dist/components/account-switcher.d.ts.map +1 -0
- package/dist/components/account-switcher.js +40 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-avatar.d.ts","sourceRoot":"","sources":["../../../src/components/account-switcher/account-avatar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAGtC,iBAAS,aAAa,CAAC,EACrB,OAAO,EACP,SAAS,GACV,EAAE;IACD,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,2CAWA;AAED,OAAO,EAAE,aAAa,EAAE,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { Avatar, AvatarImage, AvatarFallback } from '../avatar.js';
|
|
3
|
+
import { toInitials } from './utils.js';
|
|
4
|
+
|
|
5
|
+
function AccountAvatar({ account, className, }) {
|
|
6
|
+
return (jsxs(Avatar, { className: className, children: [account.avatarSrc && (jsx(AvatarImage, { src: account.avatarSrc, alt: account.name })), jsx(AvatarFallback, { className: "tw:text-xs tw:font-medium", children: account.initials ?? toInitials(account.name) })] }));
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export { AccountAvatar };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Account } from "./types";
|
|
2
|
+
declare function AccountSwitcherItem({ account, isSelected, onSelect, }: {
|
|
3
|
+
account: Account;
|
|
4
|
+
isSelected: boolean;
|
|
5
|
+
onSelect: (accountId: string) => void;
|
|
6
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export { AccountSwitcherItem };
|
|
8
|
+
//# sourceMappingURL=item.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../../src/components/account-switcher/item.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,iBAAS,mBAAmB,CAAC,EAC3B,OAAO,EACP,UAAU,EACV,QAAQ,GACT,EAAE;IACD,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;CACtC,2CAiCA;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { Check } from 'lucide-react';
|
|
3
|
+
import { cn } from '../../lib/utils.js';
|
|
4
|
+
import { AccountAvatar } from './account-avatar.js';
|
|
5
|
+
|
|
6
|
+
function AccountSwitcherItem({ account, isSelected, onSelect, }) {
|
|
7
|
+
return (jsxs("button", { type: "button", onClick: () => onSelect(account.id), className: cn("tw:flex tw:w-full tw:items-center tw:gap-3 tw:rounded-md tw:p-2 tw:text-left tw:outline-hidden tw:transition-colors", isSelected
|
|
8
|
+
? "tw:bg-primary/10"
|
|
9
|
+
: "tw:hover:bg-accent tw:hover:text-accent-foreground"), children: [jsx(AccountAvatar, { account: account, className: "tw:size-9" }), jsxs("div", { className: "tw:flex tw:min-w-0 tw:flex-1 tw:flex-col tw:leading-tight", children: [jsx("span", { className: cn("tw:truncate tw:text-sm tw:font-medium", isSelected && "tw:text-primary"), children: account.name }), account.description && (jsx("span", { className: "tw:truncate tw:text-xs tw:text-muted-foreground", children: account.description }))] }), isSelected && (jsx(Check, { className: "tw:size-4 tw:shrink-0 tw:text-primary" }))] }));
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export { AccountSwitcherItem };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Account } from "./types";
|
|
2
|
+
declare function AccountSwitcherList({ accounts, selectedId, onSelect, emptyText, }: {
|
|
3
|
+
accounts: Account[];
|
|
4
|
+
selectedId?: string;
|
|
5
|
+
onSelect: (accountId: string) => void;
|
|
6
|
+
emptyText: string;
|
|
7
|
+
}): import("react/jsx-runtime").JSX.Element | import("react/jsx-runtime").JSX.Element[];
|
|
8
|
+
export { AccountSwitcherList };
|
|
9
|
+
//# sourceMappingURL=list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/components/account-switcher/list.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,iBAAS,mBAAmB,CAAC,EAC3B,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,SAAS,EAAE,MAAM,CAAA;CAClB,uFAiBA;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { AccountSwitcherItem } from './item.js';
|
|
3
|
+
|
|
4
|
+
function AccountSwitcherList({ accounts, selectedId, onSelect, emptyText, }) {
|
|
5
|
+
if (accounts.length === 0) {
|
|
6
|
+
return (jsx("p", { className: "tw:px-2 tw:py-6 tw:text-center tw:text-sm tw:text-muted-foreground", children: emptyText }));
|
|
7
|
+
}
|
|
8
|
+
return accounts.map((account) => (jsx(AccountSwitcherItem, { account: account, isSelected: account.id === selectedId, onSelect: onSelect }, account.id)));
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { AccountSwitcherList };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
declare function AccountSwitcherSearch({ value, onChange, placeholder, }: {
|
|
2
|
+
value: string;
|
|
3
|
+
onChange: (value: string) => void;
|
|
4
|
+
placeholder?: string;
|
|
5
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export { AccountSwitcherSearch };
|
|
7
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/components/account-switcher/search.tsx"],"names":[],"mappings":"AAIA,iBAAS,qBAAqB,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,WAAW,GACZ,EAAE;IACD,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,2CAcA;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { Search } from 'lucide-react';
|
|
3
|
+
import { Input } from '../input.js';
|
|
4
|
+
|
|
5
|
+
function AccountSwitcherSearch({ value, onChange, placeholder, }) {
|
|
6
|
+
return (jsx("div", { className: "tw:border-b tw:p-2", children: jsxs("div", { className: "tw:relative", children: [jsx(Search, { className: "tw:pointer-events-none tw:absolute tw:left-2.5 tw:top-1/2 tw:size-4 tw:-translate-y-1/2 tw:text-muted-foreground" }), jsx(Input, { value: value, onChange: (event) => onChange(event.target.value), placeholder: placeholder, className: "tw:border-0 tw:pl-8 tw:shadow-none tw:focus-visible:ring-0" })] }) }));
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export { AccountSwitcherSearch };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { Account } from "./types";
|
|
3
|
+
type AccountSwitcherTriggerProps = {
|
|
4
|
+
/** Account rendered in the trigger. When omitted, the placeholder is shown. */
|
|
5
|
+
account?: Account;
|
|
6
|
+
/** Text shown when no account is selected. */
|
|
7
|
+
placeholder?: string;
|
|
8
|
+
} & React.ComponentProps<"button">;
|
|
9
|
+
/**
|
|
10
|
+
* The default trigger button. Props injected by `PopoverTrigger asChild`
|
|
11
|
+
* (onClick, ref, aria-*) are forwarded to the underlying button.
|
|
12
|
+
*/
|
|
13
|
+
declare function AccountSwitcherTrigger({ account, placeholder, className, ...props }: AccountSwitcherTriggerProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export { AccountSwitcherTrigger };
|
|
15
|
+
//# sourceMappingURL=trigger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trigger.d.ts","sourceRoot":"","sources":["../../../src/components/account-switcher/trigger.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAmCtC,KAAK,2BAA2B,GAAG;IACjC,+EAA+E;IAC/E,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;AAElC;;;GAGG;AACH,iBAAS,sBAAsB,CAAC,EAC9B,OAAO,EACP,WAAW,EACX,SAAS,EACT,GAAG,KAAK,EACT,EAAE,2BAA2B,2CAW7B;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import { ChevronsUpDown } from 'lucide-react';
|
|
3
|
+
import { cn } from '../../lib/utils.js';
|
|
4
|
+
import { AccountAvatar } from './account-avatar.js';
|
|
5
|
+
|
|
6
|
+
const triggerClassName = "tw:flex tw:h-12 tw:w-full tw:items-center tw:gap-2 tw:rounded-md tw:p-2 tw:text-left tw:text-sm tw:outline-hidden tw:transition-colors tw:hover:bg-accent tw:hover:text-accent-foreground tw:focus-visible:ring-2 tw:focus-visible:ring-ring";
|
|
7
|
+
function TriggerLabel({ account, placeholder, }) {
|
|
8
|
+
if (!account) {
|
|
9
|
+
return (jsx("span", { className: "tw:flex-1 tw:truncate tw:text-muted-foreground", children: placeholder }));
|
|
10
|
+
}
|
|
11
|
+
return (jsxs(Fragment, { children: [jsx(AccountAvatar, { account: account }), jsxs("div", { className: "tw:flex tw:min-w-0 tw:flex-1 tw:flex-col tw:leading-tight", children: [jsx("span", { className: "tw:truncate tw:font-semibold", children: account.name }), account.description && (jsx("span", { className: "tw:truncate tw:text-xs tw:text-muted-foreground", children: account.description }))] })] }));
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* The default trigger button. Props injected by `PopoverTrigger asChild`
|
|
15
|
+
* (onClick, ref, aria-*) are forwarded to the underlying button.
|
|
16
|
+
*/
|
|
17
|
+
function AccountSwitcherTrigger({ account, placeholder, className, ...props }) {
|
|
18
|
+
return (jsxs("button", { type: "button", className: cn(triggerClassName, className), ...props, children: [jsx(TriggerLabel, { account: account, placeholder: placeholder }), jsx(ChevronsUpDown, { className: "tw:size-4 tw:shrink-0 tw:text-muted-foreground" })] }));
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export { AccountSwitcherTrigger };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type * as React from "react";
|
|
2
|
+
export type Account = {
|
|
3
|
+
/** Stable unique identifier used for selection. */
|
|
4
|
+
id: string;
|
|
5
|
+
/** Primary label shown for the account. */
|
|
6
|
+
name: string;
|
|
7
|
+
/** Secondary line rendered under the name (e.g. "2 subscriptions"). */
|
|
8
|
+
description?: string;
|
|
9
|
+
/** Optional avatar image source. Falls back to initials when omitted. */
|
|
10
|
+
avatarSrc?: string;
|
|
11
|
+
/** Override the auto-generated initials shown in the avatar fallback. */
|
|
12
|
+
initials?: string;
|
|
13
|
+
};
|
|
14
|
+
export type AccountSwitcherProps = {
|
|
15
|
+
/** Accounts to choose from. */
|
|
16
|
+
accounts: Account[];
|
|
17
|
+
/** Controlled selected account id. */
|
|
18
|
+
value?: string;
|
|
19
|
+
/** Uncontrolled initial selected account id. Defaults to the first account. */
|
|
20
|
+
defaultValue?: string;
|
|
21
|
+
/** Called with the account id when a different account is selected. */
|
|
22
|
+
onValueChange?: (accountId: string) => void;
|
|
23
|
+
/** Whether to show the search field. Defaults to true. */
|
|
24
|
+
searchable?: boolean;
|
|
25
|
+
/** Placeholder for the search field. */
|
|
26
|
+
searchPlaceholder?: string;
|
|
27
|
+
/** Message shown when no accounts match the search query. */
|
|
28
|
+
emptyText?: string;
|
|
29
|
+
/** Popover alignment relative to the trigger. Defaults to "start". */
|
|
30
|
+
align?: "start" | "center" | "end";
|
|
31
|
+
/** Popover side relative to the trigger. Defaults to "bottom". */
|
|
32
|
+
side?: "top" | "right" | "bottom" | "left";
|
|
33
|
+
/** Class name applied to the popover content. */
|
|
34
|
+
className?: string;
|
|
35
|
+
/** Class name applied to the default trigger button. */
|
|
36
|
+
triggerClassName?: string;
|
|
37
|
+
/**
|
|
38
|
+
* Custom trigger element. When provided it replaces the default button and is
|
|
39
|
+
* wired up as the popover trigger (rendered with `asChild`). Useful for
|
|
40
|
+
* embedding inside a sidebar footer, for example.
|
|
41
|
+
*/
|
|
42
|
+
trigger?: React.ReactNode;
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/account-switcher/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AAEnC,MAAM,MAAM,OAAO,GAAG;IACpB,mDAAmD;IACnD,EAAE,EAAE,MAAM,CAAA;IACV,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAA;IACZ,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,+BAA+B;IAC/B,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,uEAAuE;IACvE,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3C,0DAA0D;IAC1D,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,wCAAwC;IACxC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,sEAAsE;IACtE,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAA;IAClC,kEAAkE;IAClE,IAAI,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAA;IAC1C,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wDAAwD;IACxD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;;;OAIG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/account-switcher/utils.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,UAQtC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Account, AccountSwitcherProps } from "./account-switcher/types";
|
|
2
|
+
declare function AccountSwitcher({ accounts, value, defaultValue, onValueChange, searchable, searchPlaceholder, emptyText, align, side, className, triggerClassName, trigger, }: AccountSwitcherProps): import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
export { AccountSwitcher };
|
|
4
|
+
export type { Account, AccountSwitcherProps };
|
|
5
|
+
//# sourceMappingURL=account-switcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-switcher.d.ts","sourceRoot":"","sources":["../../src/components/account-switcher.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAE7E,iBAAS,eAAe,CAAC,EACvB,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,aAAa,EACb,UAAiB,EACjB,iBAAwC,EACxC,SAAgC,EAChC,KAAe,EACf,IAAe,EACf,SAAS,EACT,gBAAgB,EAChB,OAAO,GACR,EAAE,oBAAoB,2CAsEtB;AAED,OAAO,EAAE,eAAe,EAAE,CAAA;AAC1B,YAAY,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Popover, PopoverTrigger, PopoverContent } from './popover.js';
|
|
4
|
+
import { cn } from '../lib/utils.js';
|
|
5
|
+
import { AccountSwitcherList } from './account-switcher/list.js';
|
|
6
|
+
import { AccountSwitcherSearch } from './account-switcher/search.js';
|
|
7
|
+
import { AccountSwitcherTrigger } from './account-switcher/trigger.js';
|
|
8
|
+
|
|
9
|
+
function AccountSwitcher({ accounts, value, defaultValue, onValueChange, searchable = true, searchPlaceholder = "Search accounts...", emptyText = "No accounts found.", align = "start", side = "bottom", className, triggerClassName, trigger, }) {
|
|
10
|
+
const [open, setOpen] = React.useState(false);
|
|
11
|
+
const [query, setQuery] = React.useState("");
|
|
12
|
+
const [internalValue, setInternalValue] = React.useState(() => defaultValue ?? accounts[0]?.id ?? "");
|
|
13
|
+
const isControlled = value !== undefined;
|
|
14
|
+
const selectedId = isControlled ? value : internalValue;
|
|
15
|
+
const selected = accounts.find((account) => account.id === selectedId) ?? accounts[0];
|
|
16
|
+
const filtered = React.useMemo(() => {
|
|
17
|
+
const normalized = query.trim().toLowerCase();
|
|
18
|
+
if (!normalized)
|
|
19
|
+
return accounts;
|
|
20
|
+
return accounts.filter((account) => account.name.toLowerCase().includes(normalized));
|
|
21
|
+
}, [accounts, query]);
|
|
22
|
+
const handleSelect = (accountId) => {
|
|
23
|
+
if (!isControlled) {
|
|
24
|
+
setInternalValue(accountId);
|
|
25
|
+
}
|
|
26
|
+
onValueChange?.(accountId);
|
|
27
|
+
setOpen(false);
|
|
28
|
+
setQuery("");
|
|
29
|
+
};
|
|
30
|
+
const handleOpenChange = (nextOpen) => {
|
|
31
|
+
setOpen(nextOpen);
|
|
32
|
+
if (!nextOpen) {
|
|
33
|
+
setQuery("");
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
const triggerNode = trigger ?? (jsx(AccountSwitcherTrigger, { account: selected, placeholder: searchPlaceholder, className: triggerClassName }));
|
|
37
|
+
return (jsxs(Popover, { open: open, onOpenChange: handleOpenChange, children: [jsx(PopoverTrigger, { asChild: true, children: triggerNode }), jsxs(PopoverContent, { side: side, align: align, className: cn("tw:w-[320px] tw:p-0", className), children: [searchable && (jsx(AccountSwitcherSearch, { value: query, onChange: setQuery, placeholder: searchPlaceholder })), jsx("div", { className: "tw:max-h-[360px] tw:overflow-y-auto tw:p-2", children: jsx(AccountSwitcherList, { accounts: filtered, selectedId: selectedId, onSelect: handleSelect, emptyText: emptyText }) })] })] }));
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export { AccountSwitcher };
|
package/dist/index.d.ts
CHANGED
|
@@ -62,6 +62,7 @@ export * from "./components/input-group";
|
|
|
62
62
|
export * from "./components/page-header";
|
|
63
63
|
export * from "./components/sidebar";
|
|
64
64
|
export * from "./components/header-app-switcher";
|
|
65
|
+
export * from "./components/account-switcher";
|
|
65
66
|
export * from "./components/blaze-layout";
|
|
66
67
|
export * from "./lib/portal-wrapper";
|
|
67
68
|
export * from "./components/hierarchical-select";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,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"}
|
|
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,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,+BAA+B,CAAA;AAC7C,cAAc,2BAA2B,CAAA;AACzC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kCAAkC,CAAA;AAChD,cAAc,kCAAkC,CAAA;AAChD,cAAc,aAAa,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -62,6 +62,7 @@ export { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGr
|
|
|
62
62
|
export { PageHeader } from './components/page-header.js';
|
|
63
63
|
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';
|
|
64
64
|
export { HeaderAppSwitcher } from './components/header-app-switcher.js';
|
|
65
|
+
export { AccountSwitcher } from './components/account-switcher.js';
|
|
65
66
|
export { BlazeLayout, BlazeLayoutDummyShopSwitcher } from './components/blaze-layout/blaze-layout.js';
|
|
66
67
|
export { BlazeLayoutUserAction } from './components/blaze-layout/user-action.js';
|
|
67
68
|
export { PortalWrapper } from './lib/portal-wrapper.js';
|