@egose/shadcn-theme 0.0.59 → 0.0.61

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.
@@ -0,0 +1,70 @@
1
+ import {
2
+ ContextSwitcher
3
+ } from "./chunk-GGOYFF4M.mjs";
4
+ import {
5
+ NavMenus
6
+ } from "./chunk-QJLNEVAE.mjs";
7
+ import {
8
+ NavUser
9
+ } from "./chunk-F57PDM2P.mjs";
10
+ import {
11
+ Sidebar,
12
+ SidebarContent,
13
+ SidebarFooter,
14
+ SidebarHeader,
15
+ SidebarRail
16
+ } from "./chunk-OI7CIW4X.mjs";
17
+ import {
18
+ Button
19
+ } from "./chunk-SQK67X4D.mjs";
20
+ import {
21
+ __objRest,
22
+ __spreadValues
23
+ } from "./chunk-YOSPWY5K.mjs";
24
+
25
+ // layouts/sidebar1/app-sidebar.tsx
26
+ import * as React from "react";
27
+ function AppSidebar(_a) {
28
+ var props = __objRest(_a, []);
29
+ var _b;
30
+ const _a2 = props, { data, aslink } = _a2, rest = __objRest(_a2, ["data", "aslink"]);
31
+ const { context } = data;
32
+ return /* @__PURE__ */ React.createElement(Sidebar, __spreadValues({ collapsible: "icon" }, rest), (context == null ? void 0 : context.items) && context.items.length > 0 && /* @__PURE__ */ React.createElement(SidebarHeader, null, /* @__PURE__ */ React.createElement(
33
+ ContextSwitcher,
34
+ {
35
+ items: context.items,
36
+ title: context.title,
37
+ newContextText: context.addText,
38
+ canAdd: context.canAdd,
39
+ onContextAdd: () => {
40
+ var _a3;
41
+ if ((_a3 = data.events) == null ? void 0 : _a3.newContext) {
42
+ data.events.newContext();
43
+ }
44
+ },
45
+ onContextSelected: (context2) => {
46
+ var _a3;
47
+ if ((_a3 = data.events) == null ? void 0 : _a3.contextSelect) {
48
+ data.events.contextSelect(context2);
49
+ }
50
+ }
51
+ }
52
+ )), /* @__PURE__ */ React.createElement(SidebarContent, null, /* @__PURE__ */ React.createElement(NavMenus, { menus: data.menus, aslink })), /* @__PURE__ */ React.createElement(SidebarFooter, null, data.user ? /* @__PURE__ */ React.createElement(NavUser, { user: data.user, menus: data.userMenus, aslink, onLogout: (_b = data.events) == null ? void 0 : _b.logout }) : /* @__PURE__ */ React.createElement(
53
+ Button,
54
+ {
55
+ variant: "primary",
56
+ onClick: () => {
57
+ var _a3;
58
+ if ((_a3 = data.events) == null ? void 0 : _a3.login) {
59
+ data.events.login();
60
+ }
61
+ }
62
+ },
63
+ "Sign in"
64
+ )), /* @__PURE__ */ React.createElement(SidebarRail, null));
65
+ }
66
+
67
+ export {
68
+ AppSidebar
69
+ };
70
+ //# sourceMappingURL=chunk-EIAS7WVI.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../layouts/sidebar1/app-sidebar.tsx"],"sourcesContent":["\"use client\";\nimport * as React from 'react';\nimport { NavMenus } from './nav-menus';\nimport { NavUser, INavUser, INavUserMenuItem } from './nav-user';\nimport { ContextSwitcher, INavContext } from './context-switcher';\nimport { INavMenu } from './nav-menus';\nimport { Sidebar, SidebarContent, SidebarFooter, SidebarHeader, SidebarRail } from '../../components/ui/sidebar';\nimport { Button } from '../../components/ui/button';\n\nexport interface ISidebarContext {\n title?: string;\n addText?: string;\n items?: INavContext[];\n canAdd?: boolean;\n}\n\nexport interface ISidebarData {\n user?: INavUser;\n context?: ISidebarContext;\n menus: INavMenu[];\n userMenus: INavUserMenuItem[];\n events?: {\n login?: () => void;\n logout?: (user: INavUser) => void;\n newContext?: () => void;\n contextSelect?: (context: INavContext) => void;\n };\n}\n\nexport function AppSidebar({\n ...props\n}: React.ComponentProps<typeof Sidebar> & {\n data: ISidebarData;\n aslink: React.ElementType;\n}) {\n const { data, aslink, ...rest } = props;\n const { context } = data;\n\n return (\n <Sidebar collapsible=\"icon\" {...rest}>\n {context?.items && context.items.length > 0 && (\n <SidebarHeader>\n <ContextSwitcher\n items={context.items}\n title={context.title}\n newContextText={context.addText}\n canAdd={context.canAdd}\n onContextAdd={() => {\n if (data.events?.newContext) {\n data.events.newContext();\n }\n }}\n onContextSelected={(context: INavContext) => {\n if (data.events?.contextSelect) {\n data.events.contextSelect(context);\n }\n }}\n />\n </SidebarHeader>\n )}\n\n <SidebarContent>\n <NavMenus menus={data.menus} aslink={aslink} />\n </SidebarContent>\n\n <SidebarFooter>\n {data.user ? (\n <NavUser user={data.user} menus={data.userMenus} aslink={aslink} onLogout={data.events?.logout} />\n ) : (\n <Button\n variant=\"primary\"\n onClick={() => {\n if (data.events?.login) {\n data.events.login();\n }\n }}\n >\n Sign in\n </Button>\n )}\n </SidebarFooter>\n\n <SidebarRail />\n </Sidebar>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AACA,YAAY,WAAW;AA4BhB,SAAS,WAAW,IAKxB;AALwB,MACtB,kBADsB,IACtB;AA9BL;AAmCE,QAAkCA,MAAA,OAA1B,QAAM,OAnChB,IAmCoCA,KAAT,iBAASA,KAAT,CAAjB,QAAM;AACd,QAAM,EAAE,QAAQ,IAAI;AAEpB,SACE,oCAAC,0BAAQ,aAAY,UAAW,QAC7B,mCAAS,UAAS,QAAQ,MAAM,SAAS,KACxC,oCAAC,qBACC;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,QAAQ;AAAA,MACf,OAAO,QAAQ;AAAA,MACf,gBAAgB,QAAQ;AAAA,MACxB,QAAQ,QAAQ;AAAA,MAChB,cAAc,MAAM;AA/ChC,YAAAA;AAgDc,aAAIA,MAAA,KAAK,WAAL,gBAAAA,IAAa,YAAY;AAC3B,eAAK,OAAO,WAAW;AAAA,QACzB;AAAA,MACF;AAAA,MACA,mBAAmB,CAACC,aAAyB;AApDzD,YAAAD;AAqDc,aAAIA,MAAA,KAAK,WAAL,gBAAAA,IAAa,eAAe;AAC9B,eAAK,OAAO,cAAcC,QAAO;AAAA,QACnC;AAAA,MACF;AAAA;AAAA,EACF,CACF,GAGF,oCAAC,sBACC,oCAAC,YAAS,OAAO,KAAK,OAAO,QAAgB,CAC/C,GAEA,oCAAC,qBACE,KAAK,OACJ,oCAAC,WAAQ,MAAM,KAAK,MAAM,OAAO,KAAK,WAAW,QAAgB,WAAU,UAAK,WAAL,mBAAa,QAAQ,IAEhG;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,SAAS,MAAM;AAvE3B,YAAAD;AAwEc,aAAIA,MAAA,KAAK,WAAL,gBAAAA,IAAa,OAAO;AACtB,eAAK,OAAO,MAAM;AAAA,QACpB;AAAA,MACF;AAAA;AAAA,IACD;AAAA,EAED,CAEJ,GAEA,oCAAC,iBAAY,CACf;AAEJ;","names":["_a","context"]}
@@ -10,7 +10,6 @@ import {
10
10
  DropdownMenuItem,
11
11
  DropdownMenuLabel,
12
12
  DropdownMenuSeparator,
13
- DropdownMenuShortcut,
14
13
  DropdownMenuTrigger
15
14
  } from "./chunk-QJKRCNUX.mjs";
16
15
  import {
@@ -23,7 +22,10 @@ import { ChevronsUpDown, Plus } from "lucide-react";
23
22
  function ContextSwitcher({
24
23
  items,
25
24
  title = "Contexts",
26
- newContextText = "Add context"
25
+ newContextText = "Add context",
26
+ canAdd = false,
27
+ onContextAdd,
28
+ onContextSelected
27
29
  }) {
28
30
  const { isMobile } = useSidebar();
29
31
  const [activeContext, setActiveContext] = React.useState(items[0]);
@@ -48,7 +50,7 @@ function ContextSwitcher({
48
50
  activeContext.className
49
51
  )
50
52
  },
51
- /* @__PURE__ */ React.createElement(activeContext.logo, { className: "size-4" })
53
+ activeContext.logo ? /* @__PURE__ */ React.createElement(activeContext.logo, { className: "size-4" }) : /* @__PURE__ */ React.createElement("img", { src: activeContext.logoUrl, alt: activeContext.name, className: "size-4 rounded-sm" })
52
54
  ),
53
55
  /* @__PURE__ */ React.createElement("div", { className: "grid flex-1 text-left text-sm leading-tight" }, /* @__PURE__ */ React.createElement("span", { className: "truncate font-semibold" }, activeContext.name), /* @__PURE__ */ React.createElement("span", { className: "truncate text-xs" }, activeContext.text)),
54
56
  /* @__PURE__ */ React.createElement(ChevronsUpDown, { className: "ml-auto" })
@@ -61,13 +63,38 @@ function ContextSwitcher({
61
63
  sideOffset: 4
62
64
  },
63
65
  /* @__PURE__ */ React.createElement(DropdownMenuLabel, { className: "text-xs text-muted-foreground" }, title),
64
- items.map((item, index) => /* @__PURE__ */ React.createElement(DropdownMenuItem, { key: item.name, onClick: () => setActiveContext(item), className: "gap-2 p-2" }, /* @__PURE__ */ React.createElement("div", { className: "flex size-6 items-center justify-center rounded-sm border" }, /* @__PURE__ */ React.createElement(item.logo, { className: "size-4 shrink-0" })), item.name, /* @__PURE__ */ React.createElement(DropdownMenuShortcut, null, "\u2318", index + 1))),
65
- /* @__PURE__ */ React.createElement(DropdownMenuSeparator, null),
66
- /* @__PURE__ */ React.createElement(DropdownMenuItem, { className: "gap-2 p-2" }, /* @__PURE__ */ React.createElement("div", { className: "flex size-6 items-center justify-center rounded-md border bg-background" }, /* @__PURE__ */ React.createElement(Plus, { className: "size-4" })), /* @__PURE__ */ React.createElement("div", { className: "font-medium text-muted-foreground" }, newContextText))
66
+ items.map((item, index) => /* @__PURE__ */ React.createElement(
67
+ DropdownMenuItem,
68
+ {
69
+ key: item.name,
70
+ onClick: () => {
71
+ setActiveContext(item);
72
+ if (onContextSelected) {
73
+ onContextSelected(item);
74
+ }
75
+ },
76
+ className: "gap-2 p-2"
77
+ },
78
+ /* @__PURE__ */ React.createElement("div", { className: "flex size-6 items-center justify-center rounded-sm border" }, item.logo ? /* @__PURE__ */ React.createElement(item.logo, { className: "size-4 shrink-0" }) : /* @__PURE__ */ React.createElement("img", { src: item.logoUrl, alt: item.name, className: "size-4 shrink-0 rounded-sm" })),
79
+ item.name
80
+ )),
81
+ canAdd && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(DropdownMenuSeparator, null), /* @__PURE__ */ React.createElement(
82
+ DropdownMenuItem,
83
+ {
84
+ className: "gap-2 p-2",
85
+ onClick: () => {
86
+ if (onContextAdd) {
87
+ onContextAdd();
88
+ }
89
+ }
90
+ },
91
+ /* @__PURE__ */ React.createElement("div", { className: "flex size-6 items-center justify-center rounded-md border bg-background" }, /* @__PURE__ */ React.createElement(Plus, { className: "size-4" })),
92
+ /* @__PURE__ */ React.createElement("div", { className: "font-medium text-muted-foreground" }, newContextText)
93
+ ))
67
94
  ))));
68
95
  }
69
96
 
70
97
  export {
71
98
  ContextSwitcher
72
99
  };
73
- //# sourceMappingURL=chunk-WXRT742N.mjs.map
100
+ //# sourceMappingURL=chunk-GGOYFF4M.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../layouts/sidebar1/context-switcher.tsx"],"sourcesContent":["\"use client\";\nimport * as React from 'react';\nimport { ChevronsUpDown, Plus } from 'lucide-react';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuTrigger,\n} from '../../components/ui/dropdown-menu';\nimport { SidebarMenu, SidebarMenuButton, SidebarMenuItem, useSidebar } from '../../components/ui/sidebar';\nimport { cn } from '../../utils/ui';\n\nexport interface INavContext {\n name: string;\n logo?: React.ElementType;\n logoUrl?: string;\n text: string;\n className?: string;\n}\n\nexport function ContextSwitcher({\n items,\n title = 'Contexts',\n newContextText = 'Add context',\n canAdd = false,\n onContextAdd,\n onContextSelected,\n}: {\n items: INavContext[];\n title?: string;\n newContextText?: string;\n canAdd?: boolean;\n onContextAdd?: () => void;\n onContextSelected?: (context: INavContext) => void;\n}) {\n const { isMobile } = useSidebar();\n const [activeContext, setActiveContext] = React.useState(items[0]);\n\n React.useEffect(() => {\n if (!items || items.length === 0) return;\n setActiveContext((prev) => {\n const stillExists = items.find((item) => item.name === prev?.name);\n return stillExists ?? items[0];\n });\n }, [items]);\n\n return (\n <SidebarMenu>\n <SidebarMenuItem>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <SidebarMenuButton\n size=\"lg\"\n className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n >\n <div\n className={cn(\n 'flex aspect-square size-8 items-center justify-center rounded-lg bg-dark text-dark-foreground',\n activeContext.className,\n )}\n >\n {activeContext.logo ? (\n <activeContext.logo className=\"size-4\" />\n ) : (\n <img src={activeContext.logoUrl} alt={activeContext.name} className=\"size-4 rounded-sm\" />\n )}\n </div>\n\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-semibold\">{activeContext.name}</span>\n <span className=\"truncate text-xs\">{activeContext.text}</span>\n </div>\n\n <ChevronsUpDown className=\"ml-auto\" />\n </SidebarMenuButton>\n </DropdownMenuTrigger>\n\n <DropdownMenuContent\n className=\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg bg-white\"\n align=\"start\"\n side={isMobile ? 'bottom' : 'right'}\n sideOffset={4}\n >\n <DropdownMenuLabel className=\"text-xs text-muted-foreground\">{title}</DropdownMenuLabel>\n\n {items.map((item, index) => (\n <DropdownMenuItem\n key={item.name}\n onClick={() => {\n setActiveContext(item);\n if (onContextSelected) {\n onContextSelected(item);\n }\n }}\n className=\"gap-2 p-2\"\n >\n <div className=\"flex size-6 items-center justify-center rounded-sm border\">\n {item.logo ? (\n <item.logo className=\"size-4 shrink-0\" />\n ) : (\n <img src={item.logoUrl} alt={item.name} className=\"size-4 shrink-0 rounded-sm\" />\n )}\n </div>\n {item.name}\n {/* <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut> */}\n </DropdownMenuItem>\n ))}\n\n {canAdd && (\n <>\n <DropdownMenuSeparator />\n\n <DropdownMenuItem\n className=\"gap-2 p-2\"\n onClick={() => {\n if (onContextAdd) {\n onContextAdd();\n }\n }}\n >\n <div className=\"flex size-6 items-center justify-center rounded-md border bg-background\">\n <Plus className=\"size-4\" />\n </div>\n <div className=\"font-medium text-muted-foreground\">{newContextText}</div>\n </DropdownMenuItem>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n </SidebarMenuItem>\n </SidebarMenu>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AACA,YAAY,WAAW;AACvB,SAAS,gBAAgB,YAAY;AAqB9B,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA,QAAQ;AAAA,EACR,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT;AAAA,EACA;AACF,GAOG;AACD,QAAM,EAAE,SAAS,IAAI,WAAW;AAChC,QAAM,CAAC,eAAe,gBAAgB,IAAU,eAAS,MAAM,CAAC,CAAC;AAEjE,EAAM,gBAAU,MAAM;AACpB,QAAI,CAAC,SAAS,MAAM,WAAW,EAAG;AAClC,qBAAiB,CAAC,SAAS;AACzB,YAAM,cAAc,MAAM,KAAK,CAAC,SAAS,KAAK,UAAS,6BAAM,KAAI;AACjE,aAAO,oCAAe,MAAM,CAAC;AAAA,IAC/B,CAAC;AAAA,EACH,GAAG,CAAC,KAAK,CAAC;AAEV,SACE,oCAAC,mBACC,oCAAC,uBACC,oCAAC,oBACC,oCAAC,uBAAoB,SAAO,QAC1B;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAU;AAAA;AAAA,IAEV;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA,cAAc;AAAA,QAChB;AAAA;AAAA,MAEC,cAAc,OACb,oCAAC,cAAc,MAAd,EAAmB,WAAU,UAAS,IAEvC,oCAAC,SAAI,KAAK,cAAc,SAAS,KAAK,cAAc,MAAM,WAAU,qBAAoB;AAAA,IAE5F;AAAA,IAEA,oCAAC,SAAI,WAAU,iDACb,oCAAC,UAAK,WAAU,4BAA0B,cAAc,IAAK,GAC7D,oCAAC,UAAK,WAAU,sBAAoB,cAAc,IAAK,CACzD;AAAA,IAEA,oCAAC,kBAAe,WAAU,WAAU;AAAA,EACtC,CACF,GAEA;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAM;AAAA,MACN,MAAM,WAAW,WAAW;AAAA,MAC5B,YAAY;AAAA;AAAA,IAEZ,oCAAC,qBAAkB,WAAU,mCAAiC,KAAM;AAAA,IAEnE,MAAM,IAAI,CAAC,MAAM,UAChB;AAAA,MAAC;AAAA;AAAA,QACC,KAAK,KAAK;AAAA,QACV,SAAS,MAAM;AACb,2BAAiB,IAAI;AACrB,cAAI,mBAAmB;AACrB,8BAAkB,IAAI;AAAA,UACxB;AAAA,QACF;AAAA,QACA,WAAU;AAAA;AAAA,MAEV,oCAAC,SAAI,WAAU,+DACZ,KAAK,OACJ,oCAAC,KAAK,MAAL,EAAU,WAAU,mBAAkB,IAEvC,oCAAC,SAAI,KAAK,KAAK,SAAS,KAAK,KAAK,MAAM,WAAU,8BAA6B,CAEnF;AAAA,MACC,KAAK;AAAA,IAER,CACD;AAAA,IAEA,UACC,0DACE,oCAAC,2BAAsB,GAEvB;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,SAAS,MAAM;AACb,cAAI,cAAc;AAChB,yBAAa;AAAA,UACf;AAAA,QACF;AAAA;AAAA,MAEA,oCAAC,SAAI,WAAU,6EACb,oCAAC,QAAK,WAAU,UAAS,CAC3B;AAAA,MACA,oCAAC,SAAI,WAAU,uCAAqC,cAAe;AAAA,IACrE,CACF;AAAA,EAEJ,CACF,CACF,CACF;AAEJ;","names":[]}
@@ -1,13 +1,13 @@
1
1
  "use client";
2
2
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }
3
3
 
4
- var _chunk5WZCVX6Ijs = require('./chunk-5WZCVX6I.js');
4
+ var _chunkWCMH464Bjs = require('./chunk-WCMH464B.js');
5
5
 
6
6
 
7
- var _chunkQ5QVXAFPjs = require('./chunk-Q5QVXAFP.js');
7
+ var _chunk5WZCVX6Ijs = require('./chunk-5WZCVX6I.js');
8
8
 
9
9
 
10
- var _chunkXP4SPI7Bjs = require('./chunk-XP4SPI7B.js');
10
+ var _chunkQ5QVXAFPjs = require('./chunk-Q5QVXAFP.js');
11
11
 
12
12
 
13
13
 
@@ -29,7 +29,28 @@ function AppSidebar(_a) {
29
29
  var props = _chunk2NMEKWO5js.__objRest.call(void 0, _a, []);
30
30
  var _b;
31
31
  const _a2 = props, { data, aslink } = _a2, rest = _chunk2NMEKWO5js.__objRest.call(void 0, _a2, ["data", "aslink"]);
32
- return /* @__PURE__ */ React.createElement(_chunk5AC6SSUUjs.Sidebar, _chunk2NMEKWO5js.__spreadValues.call(void 0, { collapsible: "icon" }, rest), /* @__PURE__ */ React.createElement(_chunk5AC6SSUUjs.SidebarHeader, null, /* @__PURE__ */ React.createElement(_chunkXP4SPI7Bjs.ContextSwitcher, { items: data.contexts, title: data.contextTitle, newContextText: data.newContextText })), /* @__PURE__ */ React.createElement(_chunk5AC6SSUUjs.SidebarContent, null, /* @__PURE__ */ React.createElement(_chunk5WZCVX6Ijs.NavMenus, { menus: data.menus, aslink })), /* @__PURE__ */ React.createElement(_chunk5AC6SSUUjs.SidebarFooter, null, data.user ? /* @__PURE__ */ React.createElement(_chunkQ5QVXAFPjs.NavUser, { user: data.user, menus: data.userMenus, aslink, onLogout: (_b = data.events) == null ? void 0 : _b.logout }) : /* @__PURE__ */ React.createElement(
32
+ const { context } = data;
33
+ return /* @__PURE__ */ React.createElement(_chunk5AC6SSUUjs.Sidebar, _chunk2NMEKWO5js.__spreadValues.call(void 0, { collapsible: "icon" }, rest), (context == null ? void 0 : context.items) && context.items.length > 0 && /* @__PURE__ */ React.createElement(_chunk5AC6SSUUjs.SidebarHeader, null, /* @__PURE__ */ React.createElement(
34
+ _chunkWCMH464Bjs.ContextSwitcher,
35
+ {
36
+ items: context.items,
37
+ title: context.title,
38
+ newContextText: context.addText,
39
+ canAdd: context.canAdd,
40
+ onContextAdd: () => {
41
+ var _a3;
42
+ if ((_a3 = data.events) == null ? void 0 : _a3.newContext) {
43
+ data.events.newContext();
44
+ }
45
+ },
46
+ onContextSelected: (context2) => {
47
+ var _a3;
48
+ if ((_a3 = data.events) == null ? void 0 : _a3.contextSelect) {
49
+ data.events.contextSelect(context2);
50
+ }
51
+ }
52
+ }
53
+ )), /* @__PURE__ */ React.createElement(_chunk5AC6SSUUjs.SidebarContent, null, /* @__PURE__ */ React.createElement(_chunk5WZCVX6Ijs.NavMenus, { menus: data.menus, aslink })), /* @__PURE__ */ React.createElement(_chunk5AC6SSUUjs.SidebarFooter, null, data.user ? /* @__PURE__ */ React.createElement(_chunkQ5QVXAFPjs.NavUser, { user: data.user, menus: data.userMenus, aslink, onLogout: (_b = data.events) == null ? void 0 : _b.logout }) : /* @__PURE__ */ React.createElement(
33
54
  _chunkOFRRRK4Njs.Button,
34
55
  {
35
56
  variant: "primary",
@@ -47,4 +68,4 @@ function AppSidebar(_a) {
47
68
 
48
69
 
49
70
  exports.AppSidebar = AppSidebar;
50
- //# sourceMappingURL=chunk-JNPTEXR6.js.map
71
+ //# sourceMappingURL=chunk-PVKN7E6W.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-PVKN7E6W.js","../layouts/sidebar1/app-sidebar.tsx"],"names":["_a","context"],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-PVKN7E6W.js","sourcesContent":[null,"\"use client\";\nimport * as React from 'react';\nimport { NavMenus } from './nav-menus';\nimport { NavUser, INavUser, INavUserMenuItem } from './nav-user';\nimport { ContextSwitcher, INavContext } from './context-switcher';\nimport { INavMenu } from './nav-menus';\nimport { Sidebar, SidebarContent, SidebarFooter, SidebarHeader, SidebarRail } from '../../components/ui/sidebar';\nimport { Button } from '../../components/ui/button';\n\nexport interface ISidebarContext {\n title?: string;\n addText?: string;\n items?: INavContext[];\n canAdd?: boolean;\n}\n\nexport interface ISidebarData {\n user?: INavUser;\n context?: ISidebarContext;\n menus: INavMenu[];\n userMenus: INavUserMenuItem[];\n events?: {\n login?: () => void;\n logout?: (user: INavUser) => void;\n newContext?: () => void;\n contextSelect?: (context: INavContext) => void;\n };\n}\n\nexport function AppSidebar({\n ...props\n}: React.ComponentProps<typeof Sidebar> & {\n data: ISidebarData;\n aslink: React.ElementType;\n}) {\n const { data, aslink, ...rest } = props;\n const { context } = data;\n\n return (\n <Sidebar collapsible=\"icon\" {...rest}>\n {context?.items && context.items.length > 0 && (\n <SidebarHeader>\n <ContextSwitcher\n items={context.items}\n title={context.title}\n newContextText={context.addText}\n canAdd={context.canAdd}\n onContextAdd={() => {\n if (data.events?.newContext) {\n data.events.newContext();\n }\n }}\n onContextSelected={(context: INavContext) => {\n if (data.events?.contextSelect) {\n data.events.contextSelect(context);\n }\n }}\n />\n </SidebarHeader>\n )}\n\n <SidebarContent>\n <NavMenus menus={data.menus} aslink={aslink} />\n </SidebarContent>\n\n <SidebarFooter>\n {data.user ? (\n <NavUser user={data.user} menus={data.userMenus} aslink={aslink} onLogout={data.events?.logout} />\n ) : (\n <Button\n variant=\"primary\"\n onClick={() => {\n if (data.events?.login) {\n data.events.login();\n }\n }}\n >\n Sign in\n </Button>\n )}\n </SidebarFooter>\n\n <SidebarRail />\n </Sidebar>\n );\n}\n"]}
@@ -12,7 +12,6 @@ var _chunk5AC6SSUUjs = require('./chunk-5AC6SSUU.js');
12
12
 
13
13
 
14
14
 
15
-
16
15
  var _chunk754FOR4Kjs = require('./chunk-754FOR4K.js');
17
16
 
18
17
 
@@ -24,7 +23,10 @@ var _lucidereact = require('lucide-react');
24
23
  function ContextSwitcher({
25
24
  items,
26
25
  title = "Contexts",
27
- newContextText = "Add context"
26
+ newContextText = "Add context",
27
+ canAdd = false,
28
+ onContextAdd,
29
+ onContextSelected
28
30
  }) {
29
31
  const { isMobile } = _chunk5AC6SSUUjs.useSidebar.call(void 0, );
30
32
  const [activeContext, setActiveContext] = React.useState(items[0]);
@@ -49,7 +51,7 @@ function ContextSwitcher({
49
51
  activeContext.className
50
52
  )
51
53
  },
52
- /* @__PURE__ */ React.createElement(activeContext.logo, { className: "size-4" })
54
+ activeContext.logo ? /* @__PURE__ */ React.createElement(activeContext.logo, { className: "size-4" }) : /* @__PURE__ */ React.createElement("img", { src: activeContext.logoUrl, alt: activeContext.name, className: "size-4 rounded-sm" })
53
55
  ),
54
56
  /* @__PURE__ */ React.createElement("div", { className: "grid flex-1 text-left text-sm leading-tight" }, /* @__PURE__ */ React.createElement("span", { className: "truncate font-semibold" }, activeContext.name), /* @__PURE__ */ React.createElement("span", { className: "truncate text-xs" }, activeContext.text)),
55
57
  /* @__PURE__ */ React.createElement(_lucidereact.ChevronsUpDown, { className: "ml-auto" })
@@ -62,13 +64,38 @@ function ContextSwitcher({
62
64
  sideOffset: 4
63
65
  },
64
66
  /* @__PURE__ */ React.createElement(_chunk754FOR4Kjs.DropdownMenuLabel, { className: "text-xs text-muted-foreground" }, title),
65
- items.map((item, index) => /* @__PURE__ */ React.createElement(_chunk754FOR4Kjs.DropdownMenuItem, { key: item.name, onClick: () => setActiveContext(item), className: "gap-2 p-2" }, /* @__PURE__ */ React.createElement("div", { className: "flex size-6 items-center justify-center rounded-sm border" }, /* @__PURE__ */ React.createElement(item.logo, { className: "size-4 shrink-0" })), item.name, /* @__PURE__ */ React.createElement(_chunk754FOR4Kjs.DropdownMenuShortcut, null, "\u2318", index + 1))),
66
- /* @__PURE__ */ React.createElement(_chunk754FOR4Kjs.DropdownMenuSeparator, null),
67
- /* @__PURE__ */ React.createElement(_chunk754FOR4Kjs.DropdownMenuItem, { className: "gap-2 p-2" }, /* @__PURE__ */ React.createElement("div", { className: "flex size-6 items-center justify-center rounded-md border bg-background" }, /* @__PURE__ */ React.createElement(_lucidereact.Plus, { className: "size-4" })), /* @__PURE__ */ React.createElement("div", { className: "font-medium text-muted-foreground" }, newContextText))
67
+ items.map((item, index) => /* @__PURE__ */ React.createElement(
68
+ _chunk754FOR4Kjs.DropdownMenuItem,
69
+ {
70
+ key: item.name,
71
+ onClick: () => {
72
+ setActiveContext(item);
73
+ if (onContextSelected) {
74
+ onContextSelected(item);
75
+ }
76
+ },
77
+ className: "gap-2 p-2"
78
+ },
79
+ /* @__PURE__ */ React.createElement("div", { className: "flex size-6 items-center justify-center rounded-sm border" }, item.logo ? /* @__PURE__ */ React.createElement(item.logo, { className: "size-4 shrink-0" }) : /* @__PURE__ */ React.createElement("img", { src: item.logoUrl, alt: item.name, className: "size-4 shrink-0 rounded-sm" })),
80
+ item.name
81
+ )),
82
+ canAdd && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(_chunk754FOR4Kjs.DropdownMenuSeparator, null), /* @__PURE__ */ React.createElement(
83
+ _chunk754FOR4Kjs.DropdownMenuItem,
84
+ {
85
+ className: "gap-2 p-2",
86
+ onClick: () => {
87
+ if (onContextAdd) {
88
+ onContextAdd();
89
+ }
90
+ }
91
+ },
92
+ /* @__PURE__ */ React.createElement("div", { className: "flex size-6 items-center justify-center rounded-md border bg-background" }, /* @__PURE__ */ React.createElement(_lucidereact.Plus, { className: "size-4" })),
93
+ /* @__PURE__ */ React.createElement("div", { className: "font-medium text-muted-foreground" }, newContextText)
94
+ ))
68
95
  ))));
69
96
  }
70
97
 
71
98
 
72
99
 
73
100
  exports.ContextSwitcher = ContextSwitcher;
74
- //# sourceMappingURL=chunk-XP4SPI7B.js.map
101
+ //# sourceMappingURL=chunk-WCMH464B.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-WCMH464B.js","../layouts/sidebar1/context-switcher.tsx"],"names":[],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-WCMH464B.js","sourcesContent":[null,"\"use client\";\nimport * as React from 'react';\nimport { ChevronsUpDown, Plus } from 'lucide-react';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuTrigger,\n} from '../../components/ui/dropdown-menu';\nimport { SidebarMenu, SidebarMenuButton, SidebarMenuItem, useSidebar } from '../../components/ui/sidebar';\nimport { cn } from '../../utils/ui';\n\nexport interface INavContext {\n name: string;\n logo?: React.ElementType;\n logoUrl?: string;\n text: string;\n className?: string;\n}\n\nexport function ContextSwitcher({\n items,\n title = 'Contexts',\n newContextText = 'Add context',\n canAdd = false,\n onContextAdd,\n onContextSelected,\n}: {\n items: INavContext[];\n title?: string;\n newContextText?: string;\n canAdd?: boolean;\n onContextAdd?: () => void;\n onContextSelected?: (context: INavContext) => void;\n}) {\n const { isMobile } = useSidebar();\n const [activeContext, setActiveContext] = React.useState(items[0]);\n\n React.useEffect(() => {\n if (!items || items.length === 0) return;\n setActiveContext((prev) => {\n const stillExists = items.find((item) => item.name === prev?.name);\n return stillExists ?? items[0];\n });\n }, [items]);\n\n return (\n <SidebarMenu>\n <SidebarMenuItem>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <SidebarMenuButton\n size=\"lg\"\n className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n >\n <div\n className={cn(\n 'flex aspect-square size-8 items-center justify-center rounded-lg bg-dark text-dark-foreground',\n activeContext.className,\n )}\n >\n {activeContext.logo ? (\n <activeContext.logo className=\"size-4\" />\n ) : (\n <img src={activeContext.logoUrl} alt={activeContext.name} className=\"size-4 rounded-sm\" />\n )}\n </div>\n\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-semibold\">{activeContext.name}</span>\n <span className=\"truncate text-xs\">{activeContext.text}</span>\n </div>\n\n <ChevronsUpDown className=\"ml-auto\" />\n </SidebarMenuButton>\n </DropdownMenuTrigger>\n\n <DropdownMenuContent\n className=\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg bg-white\"\n align=\"start\"\n side={isMobile ? 'bottom' : 'right'}\n sideOffset={4}\n >\n <DropdownMenuLabel className=\"text-xs text-muted-foreground\">{title}</DropdownMenuLabel>\n\n {items.map((item, index) => (\n <DropdownMenuItem\n key={item.name}\n onClick={() => {\n setActiveContext(item);\n if (onContextSelected) {\n onContextSelected(item);\n }\n }}\n className=\"gap-2 p-2\"\n >\n <div className=\"flex size-6 items-center justify-center rounded-sm border\">\n {item.logo ? (\n <item.logo className=\"size-4 shrink-0\" />\n ) : (\n <img src={item.logoUrl} alt={item.name} className=\"size-4 shrink-0 rounded-sm\" />\n )}\n </div>\n {item.name}\n {/* <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut> */}\n </DropdownMenuItem>\n ))}\n\n {canAdd && (\n <>\n <DropdownMenuSeparator />\n\n <DropdownMenuItem\n className=\"gap-2 p-2\"\n onClick={() => {\n if (onContextAdd) {\n onContextAdd();\n }\n }}\n >\n <div className=\"flex size-6 items-center justify-center rounded-md border bg-background\">\n <Plus className=\"size-4\" />\n </div>\n <div className=\"font-medium text-muted-foreground\">{newContextText}</div>\n </DropdownMenuItem>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n </SidebarMenuItem>\n </SidebarMenu>\n );\n}\n"]}
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import * as ResizablePrimitive from 'react-resizable-panels';
3
3
 
4
4
  declare const ResizablePanelGroup: ({ className, ...props }: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) => React.JSX.Element;
5
- declare const ResizablePanel: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLButtonElement | HTMLElement | HTMLDivElement | HTMLObjectElement | HTMLMapElement | HTMLAnchorElement | HTMLFormElement | HTMLHeadingElement | HTMLImageElement | HTMLInputElement | HTMLLabelElement | HTMLLIElement | HTMLOListElement | HTMLParagraphElement | HTMLSelectElement | HTMLSpanElement | HTMLUListElement | HTMLAreaElement | HTMLAudioElement | HTMLBaseElement | HTMLQuoteElement | HTMLBodyElement | HTMLBRElement | HTMLCanvasElement | HTMLTableColElement | HTMLDataElement | HTMLDataListElement | HTMLModElement | HTMLDetailsElement | HTMLDialogElement | HTMLDListElement | HTMLEmbedElement | HTMLFieldSetElement | HTMLHeadElement | HTMLHRElement | HTMLHtmlElement | HTMLIFrameElement | HTMLLegendElement | HTMLLinkElement | HTMLMetaElement | HTMLMeterElement | HTMLOptGroupElement | HTMLOptionElement | HTMLOutputElement | HTMLPreElement | HTMLProgressElement | HTMLSlotElement | HTMLScriptElement | HTMLSourceElement | HTMLStyleElement | HTMLTableElement | HTMLTemplateElement | HTMLTableSectionElement | HTMLTableCellElement | HTMLTextAreaElement | HTMLTimeElement | HTMLTitleElement | HTMLTableRowElement | HTMLTrackElement | HTMLVideoElement | HTMLTableCaptionElement | HTMLMenuElement | HTMLPictureElement>, "id" | "onResize"> & {
5
+ declare const ResizablePanel: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLDivElement | HTMLElement | HTMLObjectElement | HTMLMapElement | HTMLAnchorElement | HTMLButtonElement | HTMLFormElement | HTMLHeadingElement | HTMLImageElement | HTMLInputElement | HTMLLabelElement | HTMLLIElement | HTMLOListElement | HTMLParagraphElement | HTMLSelectElement | HTMLSpanElement | HTMLUListElement | HTMLAreaElement | HTMLAudioElement | HTMLBaseElement | HTMLQuoteElement | HTMLBodyElement | HTMLBRElement | HTMLCanvasElement | HTMLTableColElement | HTMLDataElement | HTMLDataListElement | HTMLModElement | HTMLDetailsElement | HTMLDialogElement | HTMLDListElement | HTMLEmbedElement | HTMLFieldSetElement | HTMLHeadElement | HTMLHRElement | HTMLHtmlElement | HTMLIFrameElement | HTMLLegendElement | HTMLLinkElement | HTMLMetaElement | HTMLMeterElement | HTMLOptGroupElement | HTMLOptionElement | HTMLOutputElement | HTMLPreElement | HTMLProgressElement | HTMLSlotElement | HTMLScriptElement | HTMLSourceElement | HTMLStyleElement | HTMLTableElement | HTMLTemplateElement | HTMLTableSectionElement | HTMLTableCellElement | HTMLTextAreaElement | HTMLTimeElement | HTMLTitleElement | HTMLTableRowElement | HTMLTrackElement | HTMLVideoElement | HTMLTableCaptionElement | HTMLMenuElement | HTMLPictureElement>, "id" | "onResize"> & {
6
6
  className?: string;
7
7
  collapsedSize?: number | undefined;
8
8
  collapsible?: boolean | undefined;
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import * as ResizablePrimitive from 'react-resizable-panels';
3
3
 
4
4
  declare const ResizablePanelGroup: ({ className, ...props }: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) => React.JSX.Element;
5
- declare const ResizablePanel: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLButtonElement | HTMLElement | HTMLDivElement | HTMLObjectElement | HTMLMapElement | HTMLAnchorElement | HTMLFormElement | HTMLHeadingElement | HTMLImageElement | HTMLInputElement | HTMLLabelElement | HTMLLIElement | HTMLOListElement | HTMLParagraphElement | HTMLSelectElement | HTMLSpanElement | HTMLUListElement | HTMLAreaElement | HTMLAudioElement | HTMLBaseElement | HTMLQuoteElement | HTMLBodyElement | HTMLBRElement | HTMLCanvasElement | HTMLTableColElement | HTMLDataElement | HTMLDataListElement | HTMLModElement | HTMLDetailsElement | HTMLDialogElement | HTMLDListElement | HTMLEmbedElement | HTMLFieldSetElement | HTMLHeadElement | HTMLHRElement | HTMLHtmlElement | HTMLIFrameElement | HTMLLegendElement | HTMLLinkElement | HTMLMetaElement | HTMLMeterElement | HTMLOptGroupElement | HTMLOptionElement | HTMLOutputElement | HTMLPreElement | HTMLProgressElement | HTMLSlotElement | HTMLScriptElement | HTMLSourceElement | HTMLStyleElement | HTMLTableElement | HTMLTemplateElement | HTMLTableSectionElement | HTMLTableCellElement | HTMLTextAreaElement | HTMLTimeElement | HTMLTitleElement | HTMLTableRowElement | HTMLTrackElement | HTMLVideoElement | HTMLTableCaptionElement | HTMLMenuElement | HTMLPictureElement>, "id" | "onResize"> & {
5
+ declare const ResizablePanel: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLDivElement | HTMLElement | HTMLObjectElement | HTMLMapElement | HTMLAnchorElement | HTMLButtonElement | HTMLFormElement | HTMLHeadingElement | HTMLImageElement | HTMLInputElement | HTMLLabelElement | HTMLLIElement | HTMLOListElement | HTMLParagraphElement | HTMLSelectElement | HTMLSpanElement | HTMLUListElement | HTMLAreaElement | HTMLAudioElement | HTMLBaseElement | HTMLQuoteElement | HTMLBodyElement | HTMLBRElement | HTMLCanvasElement | HTMLTableColElement | HTMLDataElement | HTMLDataListElement | HTMLModElement | HTMLDetailsElement | HTMLDialogElement | HTMLDListElement | HTMLEmbedElement | HTMLFieldSetElement | HTMLHeadElement | HTMLHRElement | HTMLHtmlElement | HTMLIFrameElement | HTMLLegendElement | HTMLLinkElement | HTMLMetaElement | HTMLMeterElement | HTMLOptGroupElement | HTMLOptionElement | HTMLOutputElement | HTMLPreElement | HTMLProgressElement | HTMLSlotElement | HTMLScriptElement | HTMLSourceElement | HTMLStyleElement | HTMLTableElement | HTMLTemplateElement | HTMLTableSectionElement | HTMLTableCellElement | HTMLTextAreaElement | HTMLTimeElement | HTMLTitleElement | HTMLTableRowElement | HTMLTrackElement | HTMLVideoElement | HTMLTableCaptionElement | HTMLMenuElement | HTMLPictureElement>, "id" | "onResize"> & {
6
6
  className?: string;
7
7
  collapsedSize?: number | undefined;
8
8
  collapsible?: boolean | undefined;
@@ -3,12 +3,12 @@
3
3
 
4
4
 
5
5
  var _chunkPS3LNHTAjs = require('../../../chunk-PS3LNHTA.js');
6
- require('../../../chunk-5SLUBHNN.js');
7
6
 
8
7
 
9
8
 
10
9
 
11
10
  var _chunkA4FV6TTMjs = require('../../../chunk-A4FV6TTM.js');
11
+ require('../../../chunk-5SLUBHNN.js');
12
12
  require('../../../chunk-2NMEKWO5.js');
13
13
 
14
14
 
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/components/widgets/dialog-manager/index.js"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACF,6DAAmC;AACnC,sCAAmC;AACnC;AACE;AACA;AACA;AACF,6DAAmC;AACnC,sCAAmC;AACnC;AACE;AACA;AACA;AACA;AACF,wOAAC","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/components/widgets/dialog-manager/index.js"}
1
+ {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/components/widgets/dialog-manager/index.js"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACF,6DAAmC;AACnC;AACE;AACA;AACA;AACF,6DAAmC;AACnC,sCAAmC;AACnC,sCAAmC;AACnC;AACE;AACA;AACA;AACA;AACF,wOAAC","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/components/widgets/dialog-manager/index.js"}
@@ -2,12 +2,12 @@
2
2
  import {
3
3
  DialogProvider
4
4
  } from "../../../chunk-OXCN3BD6.mjs";
5
- import "../../../chunk-B2Z7BNYW.mjs";
6
5
  import {
7
6
  DialogContext,
8
7
  createTypedDialog,
9
8
  useDialog
10
9
  } from "../../../chunk-PDB2VCWX.mjs";
10
+ import "../../../chunk-B2Z7BNYW.mjs";
11
11
  import "../../../chunk-YOSPWY5K.mjs";
12
12
  export {
13
13
  DialogContext,
@@ -9,16 +9,22 @@ import 'class-variance-authority';
9
9
  import '../../components/ui/tooltip.mjs';
10
10
  import '@radix-ui/react-tooltip';
11
11
 
12
+ interface ISidebarContext {
13
+ title?: string;
14
+ addText?: string;
15
+ items?: INavContext[];
16
+ canAdd?: boolean;
17
+ }
12
18
  interface ISidebarData {
13
19
  user?: INavUser;
14
- contextTitle?: string;
15
- newContextText?: string;
16
- contexts: INavContext[];
20
+ context?: ISidebarContext;
17
21
  menus: INavMenu[];
18
22
  userMenus: INavUserMenuItem[];
19
23
  events?: {
20
24
  login?: () => void;
21
25
  logout?: (user: INavUser) => void;
26
+ newContext?: () => void;
27
+ contextSelect?: (context: INavContext) => void;
22
28
  };
23
29
  }
24
30
  declare function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar> & {
@@ -26,4 +32,4 @@ declare function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar> &
26
32
  aslink: React.ElementType;
27
33
  }): React.JSX.Element;
28
34
 
29
- export { AppSidebar, type ISidebarData };
35
+ export { AppSidebar, type ISidebarContext, type ISidebarData };
@@ -9,16 +9,22 @@ import 'class-variance-authority';
9
9
  import '../../components/ui/tooltip.js';
10
10
  import '@radix-ui/react-tooltip';
11
11
 
12
+ interface ISidebarContext {
13
+ title?: string;
14
+ addText?: string;
15
+ items?: INavContext[];
16
+ canAdd?: boolean;
17
+ }
12
18
  interface ISidebarData {
13
19
  user?: INavUser;
14
- contextTitle?: string;
15
- newContextText?: string;
16
- contexts: INavContext[];
20
+ context?: ISidebarContext;
17
21
  menus: INavMenu[];
18
22
  userMenus: INavUserMenuItem[];
19
23
  events?: {
20
24
  login?: () => void;
21
25
  logout?: (user: INavUser) => void;
26
+ newContext?: () => void;
27
+ contextSelect?: (context: INavContext) => void;
22
28
  };
23
29
  }
24
30
  declare function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar> & {
@@ -26,4 +32,4 @@ declare function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar> &
26
32
  aslink: React.ElementType;
27
33
  }): React.JSX.Element;
28
34
 
29
- export { AppSidebar, type ISidebarData };
35
+ export { AppSidebar, type ISidebarContext, type ISidebarData };
@@ -2,10 +2,10 @@
2
2
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
3
3
 
4
4
 
5
- var _chunkJNPTEXR6js = require('../../chunk-JNPTEXR6.js');
5
+ var _chunkPVKN7E6Wjs = require('../../chunk-PVKN7E6W.js');
6
+ require('../../chunk-WCMH464B.js');
6
7
  require('../../chunk-5WZCVX6I.js');
7
8
  require('../../chunk-Q5QVXAFP.js');
8
- require('../../chunk-XP4SPI7B.js');
9
9
  require('../../chunk-5AC6SSUU.js');
10
10
  require('../../chunk-HMEHDD5N.js');
11
11
  require('../../chunk-BH4FHKAR.js');
@@ -22,5 +22,5 @@ require('../../chunk-PSPAJNNB.js');
22
22
  require('../../chunk-2NMEKWO5.js');
23
23
 
24
24
 
25
- exports.AppSidebar = _chunkJNPTEXR6js.AppSidebar;
25
+ exports.AppSidebar = _chunkPVKN7E6Wjs.AppSidebar;
26
26
  //# sourceMappingURL=app-sidebar.js.map
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  import {
3
3
  AppSidebar
4
- } from "../../chunk-YLGGLSUM.mjs";
4
+ } from "../../chunk-EIAS7WVI.mjs";
5
+ import "../../chunk-GGOYFF4M.mjs";
5
6
  import "../../chunk-QJLNEVAE.mjs";
6
7
  import "../../chunk-F57PDM2P.mjs";
7
- import "../../chunk-WXRT742N.mjs";
8
8
  import "../../chunk-OI7CIW4X.mjs";
9
9
  import "../../chunk-SSL4EXAQ.mjs";
10
10
  import "../../chunk-JVMY3LCD.mjs";
@@ -2,14 +2,18 @@ import * as React from 'react';
2
2
 
3
3
  interface INavContext {
4
4
  name: string;
5
- logo: React.ElementType;
5
+ logo?: React.ElementType;
6
+ logoUrl?: string;
6
7
  text: string;
7
8
  className?: string;
8
9
  }
9
- declare function ContextSwitcher({ items, title, newContextText, }: {
10
+ declare function ContextSwitcher({ items, title, newContextText, canAdd, onContextAdd, onContextSelected, }: {
10
11
  items: INavContext[];
11
12
  title?: string;
12
13
  newContextText?: string;
14
+ canAdd?: boolean;
15
+ onContextAdd?: () => void;
16
+ onContextSelected?: (context: INavContext) => void;
13
17
  }): React.JSX.Element;
14
18
 
15
19
  export { ContextSwitcher, type INavContext };
@@ -2,14 +2,18 @@ import * as React from 'react';
2
2
 
3
3
  interface INavContext {
4
4
  name: string;
5
- logo: React.ElementType;
5
+ logo?: React.ElementType;
6
+ logoUrl?: string;
6
7
  text: string;
7
8
  className?: string;
8
9
  }
9
- declare function ContextSwitcher({ items, title, newContextText, }: {
10
+ declare function ContextSwitcher({ items, title, newContextText, canAdd, onContextAdd, onContextSelected, }: {
10
11
  items: INavContext[];
11
12
  title?: string;
12
13
  newContextText?: string;
14
+ canAdd?: boolean;
15
+ onContextAdd?: () => void;
16
+ onContextSelected?: (context: INavContext) => void;
13
17
  }): React.JSX.Element;
14
18
 
15
19
  export { ContextSwitcher, type INavContext };
@@ -2,7 +2,7 @@
2
2
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
3
3
 
4
4
 
5
- var _chunkXP4SPI7Bjs = require('../../chunk-XP4SPI7B.js');
5
+ var _chunkWCMH464Bjs = require('../../chunk-WCMH464B.js');
6
6
  require('../../chunk-5AC6SSUU.js');
7
7
  require('../../chunk-HMEHDD5N.js');
8
8
  require('../../chunk-BH4FHKAR.js');
@@ -17,5 +17,5 @@ require('../../chunk-PSPAJNNB.js');
17
17
  require('../../chunk-2NMEKWO5.js');
18
18
 
19
19
 
20
- exports.ContextSwitcher = _chunkXP4SPI7Bjs.ContextSwitcher;
20
+ exports.ContextSwitcher = _chunkWCMH464Bjs.ContextSwitcher;
21
21
  //# sourceMappingURL=context-switcher.js.map
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  ContextSwitcher
4
- } from "../../chunk-WXRT742N.mjs";
4
+ } from "../../chunk-GGOYFF4M.mjs";
5
5
  import "../../chunk-OI7CIW4X.mjs";
6
6
  import "../../chunk-SSL4EXAQ.mjs";
7
7
  import "../../chunk-JVMY3LCD.mjs";
@@ -2,10 +2,10 @@
2
2
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }
3
3
 
4
4
 
5
- var _chunkJNPTEXR6js = require('../../chunk-JNPTEXR6.js');
5
+ var _chunkPVKN7E6Wjs = require('../../chunk-PVKN7E6W.js');
6
+ require('../../chunk-WCMH464B.js');
6
7
  require('../../chunk-5WZCVX6I.js');
7
8
  require('../../chunk-Q5QVXAFP.js');
8
- require('../../chunk-XP4SPI7B.js');
9
9
 
10
10
 
11
11
 
@@ -55,7 +55,7 @@ function SidebarLayout({
55
55
  }
56
56
  });
57
57
  });
58
- return /* @__PURE__ */ React.createElement(_chunk5AC6SSUUjs.SidebarProvider, null, /* @__PURE__ */ React.createElement(_chunkJNPTEXR6js.AppSidebar, { aslink, data }), /* @__PURE__ */ React.createElement(_chunk5AC6SSUUjs.SidebarInset, null, /* @__PURE__ */ React.createElement("header", { className: "flex h-14 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-[[data-collapsible=icon]]/sidebar-wrapper:h-12" }, /* @__PURE__ */ React.createElement("div", { className: "flex items-center gap-2 px-4" }, /* @__PURE__ */ React.createElement(_chunk5AC6SSUUjs.SidebarTrigger, { className: "-ml-1" }), /* @__PURE__ */ React.createElement(_chunkHMEHDD5Njs.Separator, { orientation: "vertical", className: "mr-2 h-4 w-[1px] bg-secondary" }), /* @__PURE__ */ React.createElement(_chunkXIHKXTB2js.Breadcrumb, null, /* @__PURE__ */ React.createElement(_chunkXIHKXTB2js.BreadcrumbList, { className: "text-dark" }, activeItems.map((bread, index) => {
58
+ return /* @__PURE__ */ React.createElement(_chunk5AC6SSUUjs.SidebarProvider, null, /* @__PURE__ */ React.createElement(_chunkPVKN7E6Wjs.AppSidebar, { aslink, data }), /* @__PURE__ */ React.createElement(_chunk5AC6SSUUjs.SidebarInset, null, /* @__PURE__ */ React.createElement("header", { className: "flex h-14 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-[[data-collapsible=icon]]/sidebar-wrapper:h-12" }, /* @__PURE__ */ React.createElement("div", { className: "flex items-center gap-2 px-4" }, /* @__PURE__ */ React.createElement(_chunk5AC6SSUUjs.SidebarTrigger, { className: "-ml-1" }), /* @__PURE__ */ React.createElement(_chunkHMEHDD5Njs.Separator, { orientation: "vertical", className: "mr-2 h-4 w-[1px] bg-secondary" }), /* @__PURE__ */ React.createElement(_chunkXIHKXTB2js.Breadcrumb, null, /* @__PURE__ */ React.createElement(_chunkXIHKXTB2js.BreadcrumbList, { className: "text-dark" }, activeItems.map((bread, index) => {
59
59
  return /* @__PURE__ */ React.createElement(React.Fragment, { key: bread }, index > 0 && /* @__PURE__ */ React.createElement(_chunkXIHKXTB2js.BreadcrumbSeparator, null), /* @__PURE__ */ React.createElement(_chunkXIHKXTB2js.BreadcrumbItem, null, /* @__PURE__ */ React.createElement(_chunkXIHKXTB2js.BreadcrumbPage, { className: "" }, bread)));
60
60
  }))))), /* @__PURE__ */ React.createElement("main", { className: "px-4 pb-2 overflow-auto" }, children)));
61
61
  }
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  import {
3
3
  AppSidebar
4
- } from "../../chunk-YLGGLSUM.mjs";
4
+ } from "../../chunk-EIAS7WVI.mjs";
5
+ import "../../chunk-GGOYFF4M.mjs";
5
6
  import "../../chunk-QJLNEVAE.mjs";
6
7
  import "../../chunk-F57PDM2P.mjs";
7
- import "../../chunk-WXRT742N.mjs";
8
8
  import {
9
9
  SidebarInset,
10
10
  SidebarProvider,
@@ -2,10 +2,10 @@
2
2
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3
3
 
4
4
 
5
- var _chunkOMQVDSR6js = require('../../chunk-OMQVDSR6.js');
5
+ var _chunkP6ZPREB6js = require('../../chunk-P6ZPREB6.js');
6
6
 
7
7
 
8
- var _chunkP6ZPREB6js = require('../../chunk-P6ZPREB6.js');
8
+ var _chunkOMQVDSR6js = require('../../chunk-OMQVDSR6.js');
9
9
  require('../../chunk-754FOR4K.js');
10
10
 
11
11
 
@@ -1,10 +1,10 @@
1
1
  "use client";
2
- import {
3
- MobileMenu
4
- } from "../../chunk-OVHPXYDN.mjs";
5
2
  import {
6
3
  UserMenus
7
4
  } from "../../chunk-MA3OJUIL.mjs";
5
+ import {
6
+ MobileMenu
7
+ } from "../../chunk-OVHPXYDN.mjs";
8
8
  import "../../chunk-QJKRCNUX.mjs";
9
9
  import {
10
10
  cn
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.0.59",
2
+ "version": "0.0.61",
3
3
  "description": "shadcn UI theme",
4
4
  "license": "MIT",
5
5
  "sideEffects": false,
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-JNPTEXR6.js","../layouts/sidebar1/app-sidebar.tsx"],"names":["_a"],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACA;AACA;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACA;AACF,sDAA4B;AAC5B;AACA;ACvBA,2EAAuB;AAqBhB,SAAS,UAAA,CAAW,EAAA,EAKxB;AALwB,EAAA,IACtB,MAAA,EAAA,wCAAA,EADsB,EACtB,CAAA,CAAA,CAAA;AAvBL,EAAA,IAAA,EAAA;AA4BE,EAAA,MAAkCA,IAAAA,EAAA,KAAA,EAA1B,EAAA,IAAA,EAAM,OA5BhB,EAAA,EA4BoCA,GAAAA,EAAT,KAAA,EAAA,wCAAA,GAASA,EAAT,CAAjB,MAAA,EAAM,QAAA,CAAA,CAAA;AAEd,EAAA,uBACE,KAAA,CAAA,aAAA,CAAC,wBAAA,EAAA,6CAAA,EAAQ,WAAA,EAAY,OAAA,CAAA,EAAW,IAAA,CAAA,kBAC9B,KAAA,CAAA,aAAA,CAAC,8BAAA,EAAA,IAAA,kBACC,KAAA,CAAA,aAAA,CAAC,gCAAA,EAAA,EAAgB,KAAA,EAAO,IAAA,CAAK,QAAA,EAAU,KAAA,EAAO,IAAA,CAAK,YAAA,EAAc,cAAA,EAAgB,IAAA,CAAK,eAAA,CAAgB,CACxG,CAAA,kBAEA,KAAA,CAAA,aAAA,CAAC,+BAAA,EAAA,IAAA,kBACC,KAAA,CAAA,aAAA,CAAC,yBAAA,EAAA,EAAS,KAAA,EAAO,IAAA,CAAK,KAAA,EAAO,OAAA,CAAgB,CAC/C,CAAA,kBAEA,KAAA,CAAA,aAAA,CAAC,8BAAA,EAAA,IAAA,EACE,IAAA,CAAK,KAAA,kBACJ,KAAA,CAAA,aAAA,CAAC,wBAAA,EAAA,EAAQ,IAAA,EAAM,IAAA,CAAK,IAAA,EAAM,KAAA,EAAO,IAAA,CAAK,SAAA,EAAW,MAAA,EAAgB,QAAA,EAAA,CAAU,GAAA,EAAA,IAAA,CAAK,MAAA,EAAA,GAAL,KAAA,EAAA,KAAA,EAAA,EAAA,EAAA,CAAa,OAAA,CAAQ,EAAA,kBAEhG,KAAA,CAAA,aAAA;AAAA,IAAC,uBAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAQ,SAAA;AAAA,MACR,OAAA,EAAS,CAAA,EAAA,GAAM;AA9C3B,QAAA,IAAAA,GAAAA;AA+Cc,QAAA,GAAA,CAAA,CAAIA,IAAAA,EAAA,IAAA,CAAK,MAAA,EAAA,GAAL,KAAA,EAAA,KAAA,EAAA,EAAAA,GAAAA,CAAa,KAAA,EAAO;AACtB,UAAA,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,CAAA;AAAA,QACpB;AAAA,MACF;AAAA,IAAA,CAAA;AAAA,IACD;AAAA,EAED,CAEJ,CAAA,kBAEA,KAAA,CAAA,aAAA,CAAC,4BAAA,EAAA,IAAY,CACf,CAAA;AAEJ;ADhBA;AACA;AACE;AACF,gCAAC","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-JNPTEXR6.js","sourcesContent":[null,"\"use client\";\nimport * as React from 'react';\nimport { NavMenus } from './nav-menus';\nimport { NavUser, INavUser, INavUserMenuItem } from './nav-user';\nimport { ContextSwitcher, INavContext } from './context-switcher';\nimport { INavMenu } from './nav-menus';\nimport { Sidebar, SidebarContent, SidebarFooter, SidebarHeader, SidebarRail } from '../../components/ui/sidebar';\nimport { Button } from '../../components/ui/button';\n\nexport interface ISidebarData {\n user?: INavUser;\n contextTitle?: string;\n newContextText?: string;\n contexts: INavContext[];\n menus: INavMenu[];\n userMenus: INavUserMenuItem[];\n events?: {\n login?: () => void;\n logout?: (user: INavUser) => void;\n };\n}\n\nexport function AppSidebar({\n ...props\n}: React.ComponentProps<typeof Sidebar> & {\n data: ISidebarData;\n aslink: React.ElementType;\n}) {\n const { data, aslink, ...rest } = props;\n\n return (\n <Sidebar collapsible=\"icon\" {...rest}>\n <SidebarHeader>\n <ContextSwitcher items={data.contexts} title={data.contextTitle} newContextText={data.newContextText} />\n </SidebarHeader>\n\n <SidebarContent>\n <NavMenus menus={data.menus} aslink={aslink} />\n </SidebarContent>\n\n <SidebarFooter>\n {data.user ? (\n <NavUser user={data.user} menus={data.userMenus} aslink={aslink} onLogout={data.events?.logout} />\n ) : (\n <Button\n variant=\"primary\"\n onClick={() => {\n if (data.events?.login) {\n data.events.login();\n }\n }}\n >\n Sign in\n </Button>\n )}\n </SidebarFooter>\n\n <SidebarRail />\n </Sidebar>\n );\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../layouts/sidebar1/context-switcher.tsx"],"sourcesContent":["\"use client\";\nimport * as React from 'react';\nimport { ChevronsUpDown, Plus } from 'lucide-react';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuTrigger,\n} from '../../components/ui/dropdown-menu';\nimport { SidebarMenu, SidebarMenuButton, SidebarMenuItem, useSidebar } from '../../components/ui/sidebar';\nimport { cn } from '../../utils/ui';\n\nexport interface INavContext {\n name: string;\n logo: React.ElementType;\n text: string;\n className?: string;\n}\n\nexport function ContextSwitcher({\n items,\n title = 'Contexts',\n newContextText = 'Add context',\n}: {\n items: INavContext[];\n title?: string;\n newContextText?: string;\n}) {\n const { isMobile } = useSidebar();\n const [activeContext, setActiveContext] = React.useState(items[0]);\n\n React.useEffect(() => {\n if (!items || items.length === 0) return;\n setActiveContext((prev) => {\n const stillExists = items.find((item) => item.name === prev?.name);\n return stillExists ?? items[0];\n });\n }, [items]);\n\n return (\n <SidebarMenu>\n <SidebarMenuItem>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <SidebarMenuButton\n size=\"lg\"\n className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n >\n <div\n className={cn(\n 'flex aspect-square size-8 items-center justify-center rounded-lg bg-dark text-dark-foreground',\n activeContext.className,\n )}\n >\n <activeContext.logo className=\"size-4\" />\n </div>\n\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-semibold\">{activeContext.name}</span>\n <span className=\"truncate text-xs\">{activeContext.text}</span>\n </div>\n\n <ChevronsUpDown className=\"ml-auto\" />\n </SidebarMenuButton>\n </DropdownMenuTrigger>\n\n <DropdownMenuContent\n className=\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg bg-white\"\n align=\"start\"\n side={isMobile ? 'bottom' : 'right'}\n sideOffset={4}\n >\n <DropdownMenuLabel className=\"text-xs text-muted-foreground\">{title}</DropdownMenuLabel>\n\n {items.map((item, index) => (\n <DropdownMenuItem key={item.name} onClick={() => setActiveContext(item)} className=\"gap-2 p-2\">\n <div className=\"flex size-6 items-center justify-center rounded-sm border\">\n <item.logo className=\"size-4 shrink-0\" />\n </div>\n {item.name}\n <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\n </DropdownMenuItem>\n ))}\n\n <DropdownMenuSeparator />\n\n <DropdownMenuItem className=\"gap-2 p-2\">\n <div className=\"flex size-6 items-center justify-center rounded-md border bg-background\">\n <Plus className=\"size-4\" />\n </div>\n <div className=\"font-medium text-muted-foreground\">{newContextText}</div>\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </SidebarMenuItem>\n </SidebarMenu>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AACA,YAAY,WAAW;AACvB,SAAS,gBAAgB,YAAY;AAoB9B,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA,QAAQ;AAAA,EACR,iBAAiB;AACnB,GAIG;AACD,QAAM,EAAE,SAAS,IAAI,WAAW;AAChC,QAAM,CAAC,eAAe,gBAAgB,IAAU,eAAS,MAAM,CAAC,CAAC;AAEjE,EAAM,gBAAU,MAAM;AACpB,QAAI,CAAC,SAAS,MAAM,WAAW,EAAG;AAClC,qBAAiB,CAAC,SAAS;AACzB,YAAM,cAAc,MAAM,KAAK,CAAC,SAAS,KAAK,UAAS,6BAAM,KAAI;AACjE,aAAO,oCAAe,MAAM,CAAC;AAAA,IAC/B,CAAC;AAAA,EACH,GAAG,CAAC,KAAK,CAAC;AAEV,SACE,oCAAC,mBACC,oCAAC,uBACC,oCAAC,oBACC,oCAAC,uBAAoB,SAAO,QAC1B;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAU;AAAA;AAAA,IAEV;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA,cAAc;AAAA,QAChB;AAAA;AAAA,MAEA,oCAAC,cAAc,MAAd,EAAmB,WAAU,UAAS;AAAA,IACzC;AAAA,IAEA,oCAAC,SAAI,WAAU,iDACb,oCAAC,UAAK,WAAU,4BAA0B,cAAc,IAAK,GAC7D,oCAAC,UAAK,WAAU,sBAAoB,cAAc,IAAK,CACzD;AAAA,IAEA,oCAAC,kBAAe,WAAU,WAAU;AAAA,EACtC,CACF,GAEA;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAM;AAAA,MACN,MAAM,WAAW,WAAW;AAAA,MAC5B,YAAY;AAAA;AAAA,IAEZ,oCAAC,qBAAkB,WAAU,mCAAiC,KAAM;AAAA,IAEnE,MAAM,IAAI,CAAC,MAAM,UAChB,oCAAC,oBAAiB,KAAK,KAAK,MAAM,SAAS,MAAM,iBAAiB,IAAI,GAAG,WAAU,eACjF,oCAAC,SAAI,WAAU,+DACb,oCAAC,KAAK,MAAL,EAAU,WAAU,mBAAkB,CACzC,GACC,KAAK,MACN,oCAAC,4BAAqB,UAAE,QAAQ,CAAE,CACpC,CACD;AAAA,IAED,oCAAC,2BAAsB;AAAA,IAEvB,oCAAC,oBAAiB,WAAU,eAC1B,oCAAC,SAAI,WAAU,6EACb,oCAAC,QAAK,WAAU,UAAS,CAC3B,GACA,oCAAC,SAAI,WAAU,uCAAqC,cAAe,CACrE;AAAA,EACF,CACF,CACF,CACF;AAEJ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-XP4SPI7B.js","../layouts/sidebar1/context-switcher.tsx"],"names":[],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-XP4SPI7B.js","sourcesContent":[null,"\"use client\";\nimport * as React from 'react';\nimport { ChevronsUpDown, Plus } from 'lucide-react';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuTrigger,\n} from '../../components/ui/dropdown-menu';\nimport { SidebarMenu, SidebarMenuButton, SidebarMenuItem, useSidebar } from '../../components/ui/sidebar';\nimport { cn } from '../../utils/ui';\n\nexport interface INavContext {\n name: string;\n logo: React.ElementType;\n text: string;\n className?: string;\n}\n\nexport function ContextSwitcher({\n items,\n title = 'Contexts',\n newContextText = 'Add context',\n}: {\n items: INavContext[];\n title?: string;\n newContextText?: string;\n}) {\n const { isMobile } = useSidebar();\n const [activeContext, setActiveContext] = React.useState(items[0]);\n\n React.useEffect(() => {\n if (!items || items.length === 0) return;\n setActiveContext((prev) => {\n const stillExists = items.find((item) => item.name === prev?.name);\n return stillExists ?? items[0];\n });\n }, [items]);\n\n return (\n <SidebarMenu>\n <SidebarMenuItem>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <SidebarMenuButton\n size=\"lg\"\n className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n >\n <div\n className={cn(\n 'flex aspect-square size-8 items-center justify-center rounded-lg bg-dark text-dark-foreground',\n activeContext.className,\n )}\n >\n <activeContext.logo className=\"size-4\" />\n </div>\n\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-semibold\">{activeContext.name}</span>\n <span className=\"truncate text-xs\">{activeContext.text}</span>\n </div>\n\n <ChevronsUpDown className=\"ml-auto\" />\n </SidebarMenuButton>\n </DropdownMenuTrigger>\n\n <DropdownMenuContent\n className=\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg bg-white\"\n align=\"start\"\n side={isMobile ? 'bottom' : 'right'}\n sideOffset={4}\n >\n <DropdownMenuLabel className=\"text-xs text-muted-foreground\">{title}</DropdownMenuLabel>\n\n {items.map((item, index) => (\n <DropdownMenuItem key={item.name} onClick={() => setActiveContext(item)} className=\"gap-2 p-2\">\n <div className=\"flex size-6 items-center justify-center rounded-sm border\">\n <item.logo className=\"size-4 shrink-0\" />\n </div>\n {item.name}\n <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\n </DropdownMenuItem>\n ))}\n\n <DropdownMenuSeparator />\n\n <DropdownMenuItem className=\"gap-2 p-2\">\n <div className=\"flex size-6 items-center justify-center rounded-md border bg-background\">\n <Plus className=\"size-4\" />\n </div>\n <div className=\"font-medium text-muted-foreground\">{newContextText}</div>\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </SidebarMenuItem>\n </SidebarMenu>\n );\n}\n"]}
@@ -1,49 +0,0 @@
1
- import {
2
- NavMenus
3
- } from "./chunk-QJLNEVAE.mjs";
4
- import {
5
- NavUser
6
- } from "./chunk-F57PDM2P.mjs";
7
- import {
8
- ContextSwitcher
9
- } from "./chunk-WXRT742N.mjs";
10
- import {
11
- Sidebar,
12
- SidebarContent,
13
- SidebarFooter,
14
- SidebarHeader,
15
- SidebarRail
16
- } from "./chunk-OI7CIW4X.mjs";
17
- import {
18
- Button
19
- } from "./chunk-SQK67X4D.mjs";
20
- import {
21
- __objRest,
22
- __spreadValues
23
- } from "./chunk-YOSPWY5K.mjs";
24
-
25
- // layouts/sidebar1/app-sidebar.tsx
26
- import * as React from "react";
27
- function AppSidebar(_a) {
28
- var props = __objRest(_a, []);
29
- var _b;
30
- const _a2 = props, { data, aslink } = _a2, rest = __objRest(_a2, ["data", "aslink"]);
31
- return /* @__PURE__ */ React.createElement(Sidebar, __spreadValues({ collapsible: "icon" }, rest), /* @__PURE__ */ React.createElement(SidebarHeader, null, /* @__PURE__ */ React.createElement(ContextSwitcher, { items: data.contexts, title: data.contextTitle, newContextText: data.newContextText })), /* @__PURE__ */ React.createElement(SidebarContent, null, /* @__PURE__ */ React.createElement(NavMenus, { menus: data.menus, aslink })), /* @__PURE__ */ React.createElement(SidebarFooter, null, data.user ? /* @__PURE__ */ React.createElement(NavUser, { user: data.user, menus: data.userMenus, aslink, onLogout: (_b = data.events) == null ? void 0 : _b.logout }) : /* @__PURE__ */ React.createElement(
32
- Button,
33
- {
34
- variant: "primary",
35
- onClick: () => {
36
- var _a3;
37
- if ((_a3 = data.events) == null ? void 0 : _a3.login) {
38
- data.events.login();
39
- }
40
- }
41
- },
42
- "Sign in"
43
- )), /* @__PURE__ */ React.createElement(SidebarRail, null));
44
- }
45
-
46
- export {
47
- AppSidebar
48
- };
49
- //# sourceMappingURL=chunk-YLGGLSUM.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../layouts/sidebar1/app-sidebar.tsx"],"sourcesContent":["\"use client\";\nimport * as React from 'react';\nimport { NavMenus } from './nav-menus';\nimport { NavUser, INavUser, INavUserMenuItem } from './nav-user';\nimport { ContextSwitcher, INavContext } from './context-switcher';\nimport { INavMenu } from './nav-menus';\nimport { Sidebar, SidebarContent, SidebarFooter, SidebarHeader, SidebarRail } from '../../components/ui/sidebar';\nimport { Button } from '../../components/ui/button';\n\nexport interface ISidebarData {\n user?: INavUser;\n contextTitle?: string;\n newContextText?: string;\n contexts: INavContext[];\n menus: INavMenu[];\n userMenus: INavUserMenuItem[];\n events?: {\n login?: () => void;\n logout?: (user: INavUser) => void;\n };\n}\n\nexport function AppSidebar({\n ...props\n}: React.ComponentProps<typeof Sidebar> & {\n data: ISidebarData;\n aslink: React.ElementType;\n}) {\n const { data, aslink, ...rest } = props;\n\n return (\n <Sidebar collapsible=\"icon\" {...rest}>\n <SidebarHeader>\n <ContextSwitcher items={data.contexts} title={data.contextTitle} newContextText={data.newContextText} />\n </SidebarHeader>\n\n <SidebarContent>\n <NavMenus menus={data.menus} aslink={aslink} />\n </SidebarContent>\n\n <SidebarFooter>\n {data.user ? (\n <NavUser user={data.user} menus={data.userMenus} aslink={aslink} onLogout={data.events?.logout} />\n ) : (\n <Button\n variant=\"primary\"\n onClick={() => {\n if (data.events?.login) {\n data.events.login();\n }\n }}\n >\n Sign in\n </Button>\n )}\n </SidebarFooter>\n\n <SidebarRail />\n </Sidebar>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AACA,YAAY,WAAW;AAqBhB,SAAS,WAAW,IAKxB;AALwB,MACtB,kBADsB,IACtB;AAvBL;AA4BE,QAAkCA,MAAA,OAA1B,QAAM,OA5BhB,IA4BoCA,KAAT,iBAASA,KAAT,CAAjB,QAAM;AAEd,SACE,oCAAC,0BAAQ,aAAY,UAAW,OAC9B,oCAAC,qBACC,oCAAC,mBAAgB,OAAO,KAAK,UAAU,OAAO,KAAK,cAAc,gBAAgB,KAAK,gBAAgB,CACxG,GAEA,oCAAC,sBACC,oCAAC,YAAS,OAAO,KAAK,OAAO,QAAgB,CAC/C,GAEA,oCAAC,qBACE,KAAK,OACJ,oCAAC,WAAQ,MAAM,KAAK,MAAM,OAAO,KAAK,WAAW,QAAgB,WAAU,UAAK,WAAL,mBAAa,QAAQ,IAEhG;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,SAAS,MAAM;AA9C3B,YAAAA;AA+Cc,aAAIA,MAAA,KAAK,WAAL,gBAAAA,IAAa,OAAO;AACtB,eAAK,OAAO,MAAM;AAAA,QACpB;AAAA,MACF;AAAA;AAAA,IACD;AAAA,EAED,CAEJ,GAEA,oCAAC,iBAAY,CACf;AAEJ;","names":["_a"]}