@egose/shadcn-theme 0.0.61 → 0.0.62

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.
@@ -28,7 +28,7 @@ function ContextSwitcher({
28
28
  onContextSelected
29
29
  }) {
30
30
  const { isMobile } = useSidebar();
31
- const [activeContext, setActiveContext] = React.useState(items[0]);
31
+ const [activeContext, setActiveContext] = React.useState(items.find((item) => item.active) || items[0]);
32
32
  React.useEffect(() => {
33
33
  if (!items || items.length === 0) return;
34
34
  setActiveContext((prev) => {
@@ -97,4 +97,4 @@ function ContextSwitcher({
97
97
  export {
98
98
  ContextSwitcher
99
99
  };
100
- //# sourceMappingURL=chunk-GGOYFF4M.mjs.map
100
+ //# sourceMappingURL=chunk-7734627I.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 active?: boolean;\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.find((item) => item.active) || 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;AAsB9B,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,KAAK,CAAC,SAAS,KAAK,MAAM,KAAK,MAAM,CAAC,CAAC;AAEtG,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,15 +1,15 @@
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 _chunkWCMH464Bjs = require('./chunk-WCMH464B.js');
5
-
6
-
7
4
  var _chunk5WZCVX6Ijs = require('./chunk-5WZCVX6I.js');
8
5
 
9
6
 
10
7
  var _chunkQ5QVXAFPjs = require('./chunk-Q5QVXAFP.js');
11
8
 
12
9
 
10
+ var _chunkM2OLRG5Kjs = require('./chunk-M2OLRG5K.js');
11
+
12
+
13
13
 
14
14
 
15
15
 
@@ -31,7 +31,7 @@ function AppSidebar(_a) {
31
31
  const _a2 = props, { data, aslink } = _a2, rest = _chunk2NMEKWO5js.__objRest.call(void 0, _a2, ["data", "aslink"]);
32
32
  const { context } = data;
33
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,
34
+ _chunkM2OLRG5Kjs.ContextSwitcher,
35
35
  {
36
36
  items: context.items,
37
37
  title: context.title,
@@ -68,4 +68,4 @@ function AppSidebar(_a) {
68
68
 
69
69
 
70
70
  exports.AppSidebar = AppSidebar;
71
- //# sourceMappingURL=chunk-PVKN7E6W.js.map
71
+ //# sourceMappingURL=chunk-AK7GRZQD.js.map
@@ -1 +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"]}
1
+ {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-AK7GRZQD.js","../layouts/sidebar1/app-sidebar.tsx"],"names":["_a","context"],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-AK7GRZQD.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"]}
@@ -1,12 +1,12 @@
1
- import {
2
- ContextSwitcher
3
- } from "./chunk-GGOYFF4M.mjs";
4
1
  import {
5
2
  NavMenus
6
3
  } from "./chunk-QJLNEVAE.mjs";
7
4
  import {
8
5
  NavUser
9
6
  } from "./chunk-F57PDM2P.mjs";
7
+ import {
8
+ ContextSwitcher
9
+ } from "./chunk-7734627I.mjs";
10
10
  import {
11
11
  Sidebar,
12
12
  SidebarContent,
@@ -67,4 +67,4 @@ function AppSidebar(_a) {
67
67
  export {
68
68
  AppSidebar
69
69
  };
70
- //# sourceMappingURL=chunk-EIAS7WVI.mjs.map
70
+ //# sourceMappingURL=chunk-L2NIAPCK.mjs.map
@@ -29,7 +29,7 @@ function ContextSwitcher({
29
29
  onContextSelected
30
30
  }) {
31
31
  const { isMobile } = _chunk5AC6SSUUjs.useSidebar.call(void 0, );
32
- const [activeContext, setActiveContext] = React.useState(items[0]);
32
+ const [activeContext, setActiveContext] = React.useState(items.find((item) => item.active) || items[0]);
33
33
  React.useEffect(() => {
34
34
  if (!items || items.length === 0) return;
35
35
  setActiveContext((prev) => {
@@ -98,4 +98,4 @@ function ContextSwitcher({
98
98
 
99
99
 
100
100
  exports.ContextSwitcher = ContextSwitcher;
101
- //# sourceMappingURL=chunk-WCMH464B.js.map
101
+ //# sourceMappingURL=chunk-M2OLRG5K.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-M2OLRG5K.js","../layouts/sidebar1/context-switcher.tsx"],"names":[],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-M2OLRG5K.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 active?: boolean;\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.find((item) => item.active) || 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"]}
@@ -3,12 +3,12 @@
3
3
 
4
4
 
5
5
  var _chunkPS3LNHTAjs = require('../../../chunk-PS3LNHTA.js');
6
+ require('../../../chunk-5SLUBHNN.js');
6
7
 
7
8
 
8
9
 
9
10
 
10
11
  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;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"}
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"}
@@ -2,12 +2,12 @@
2
2
  import {
3
3
  DialogProvider
4
4
  } from "../../../chunk-OXCN3BD6.mjs";
5
+ import "../../../chunk-B2Z7BNYW.mjs";
5
6
  import {
6
7
  DialogContext,
7
8
  createTypedDialog,
8
9
  useDialog
9
10
  } from "../../../chunk-PDB2VCWX.mjs";
10
- import "../../../chunk-B2Z7BNYW.mjs";
11
11
  import "../../../chunk-YOSPWY5K.mjs";
12
12
  export {
13
13
  DialogContext,
@@ -2,10 +2,10 @@
2
2
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
3
3
 
4
4
 
5
- var _chunkPVKN7E6Wjs = require('../../chunk-PVKN7E6W.js');
6
- require('../../chunk-WCMH464B.js');
5
+ var _chunkAK7GRZQDjs = require('../../chunk-AK7GRZQD.js');
7
6
  require('../../chunk-5WZCVX6I.js');
8
7
  require('../../chunk-Q5QVXAFP.js');
8
+ require('../../chunk-M2OLRG5K.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 = _chunkPVKN7E6Wjs.AppSidebar;
25
+ exports.AppSidebar = _chunkAK7GRZQDjs.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-EIAS7WVI.mjs";
5
- import "../../chunk-GGOYFF4M.mjs";
4
+ } from "../../chunk-L2NIAPCK.mjs";
6
5
  import "../../chunk-QJLNEVAE.mjs";
7
6
  import "../../chunk-F57PDM2P.mjs";
7
+ import "../../chunk-7734627I.mjs";
8
8
  import "../../chunk-OI7CIW4X.mjs";
9
9
  import "../../chunk-SSL4EXAQ.mjs";
10
10
  import "../../chunk-JVMY3LCD.mjs";
@@ -5,6 +5,7 @@ interface INavContext {
5
5
  logo?: React.ElementType;
6
6
  logoUrl?: string;
7
7
  text: string;
8
+ active?: boolean;
8
9
  className?: string;
9
10
  }
10
11
  declare function ContextSwitcher({ items, title, newContextText, canAdd, onContextAdd, onContextSelected, }: {
@@ -5,6 +5,7 @@ interface INavContext {
5
5
  logo?: React.ElementType;
6
6
  logoUrl?: string;
7
7
  text: string;
8
+ active?: boolean;
8
9
  className?: string;
9
10
  }
10
11
  declare function ContextSwitcher({ items, title, newContextText, canAdd, onContextAdd, onContextSelected, }: {
@@ -2,7 +2,7 @@
2
2
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
3
3
 
4
4
 
5
- var _chunkWCMH464Bjs = require('../../chunk-WCMH464B.js');
5
+ var _chunkM2OLRG5Kjs = require('../../chunk-M2OLRG5K.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 = _chunkWCMH464Bjs.ContextSwitcher;
20
+ exports.ContextSwitcher = _chunkM2OLRG5Kjs.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-GGOYFF4M.mjs";
4
+ } from "../../chunk-7734627I.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 _chunkPVKN7E6Wjs = require('../../chunk-PVKN7E6W.js');
6
- require('../../chunk-WCMH464B.js');
5
+ var _chunkAK7GRZQDjs = require('../../chunk-AK7GRZQD.js');
7
6
  require('../../chunk-5WZCVX6I.js');
8
7
  require('../../chunk-Q5QVXAFP.js');
8
+ require('../../chunk-M2OLRG5K.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(_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) => {
58
+ return /* @__PURE__ */ React.createElement(_chunk5AC6SSUUjs.SidebarProvider, null, /* @__PURE__ */ React.createElement(_chunkAK7GRZQDjs.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-EIAS7WVI.mjs";
5
- import "../../chunk-GGOYFF4M.mjs";
4
+ } from "../../chunk-L2NIAPCK.mjs";
6
5
  import "../../chunk-QJLNEVAE.mjs";
7
6
  import "../../chunk-F57PDM2P.mjs";
7
+ import "../../chunk-7734627I.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 _chunkP6ZPREB6js = require('../../chunk-P6ZPREB6.js');
5
+ var _chunkOMQVDSR6js = require('../../chunk-OMQVDSR6.js');
6
6
 
7
7
 
8
- var _chunkOMQVDSR6js = require('../../chunk-OMQVDSR6.js');
8
+ var _chunkP6ZPREB6js = require('../../chunk-P6ZPREB6.js');
9
9
  require('../../chunk-754FOR4K.js');
10
10
 
11
11
 
@@ -1,10 +1,10 @@
1
1
  "use client";
2
- import {
3
- UserMenus
4
- } from "../../chunk-MA3OJUIL.mjs";
5
2
  import {
6
3
  MobileMenu
7
4
  } from "../../chunk-OVHPXYDN.mjs";
5
+ import {
6
+ UserMenus
7
+ } from "../../chunk-MA3OJUIL.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.61",
2
+ "version": "0.0.62",
3
3
  "description": "shadcn UI theme",
4
4
  "license": "MIT",
5
5
  "sideEffects": false,
@@ -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 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 +0,0 @@
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"]}