@egose/shadcn-theme 0.1.4 → 0.1.5

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.
@@ -1,4 +1,5 @@
1
1
  import * as React from 'react';
2
+ import { ref } from 'valtio';
2
3
  import { ISidebarData } from './app-sidebar.mjs';
3
4
  export { INavUser } from './nav-user.mjs';
4
5
  import './context-switcher.mjs';
@@ -12,9 +13,8 @@ import '../../components/ui/separator.mjs';
12
13
  import 'radix-ui';
13
14
  import '../../components/ui/tooltip.mjs';
14
15
 
15
- declare function SidebarLayout({ children, header, aslink, data, classNames, }: Readonly<{
16
+ declare function SidebarLayout({ children, aslink, data, classNames, }: Readonly<{
16
17
  children: React.ReactNode;
17
- header?: React.ReactNode;
18
18
  aslink: React.ElementType;
19
19
  data: ISidebarData;
20
20
  classNames?: {
@@ -24,5 +24,10 @@ declare function SidebarLayout({ children, header, aslink, data, classNames, }:
24
24
  main?: string;
25
25
  };
26
26
  }>): React.JSX.Element;
27
+ interface HeaderState {
28
+ content: React.ReactNode | ReturnType<typeof ref<object>>;
29
+ }
30
+ declare const headerStore: HeaderState;
31
+ declare const setLayoutHeader: (node: React.ReactNode) => void;
27
32
 
28
- export { ISidebarData, SidebarLayout as default };
33
+ export { ISidebarData, SidebarLayout as default, headerStore, setLayoutHeader };
@@ -1,4 +1,5 @@
1
1
  import * as React from 'react';
2
+ import { ref } from 'valtio';
2
3
  import { ISidebarData } from './app-sidebar.js';
3
4
  export { INavUser } from './nav-user.js';
4
5
  import './context-switcher.js';
@@ -12,9 +13,8 @@ import '../../components/ui/separator.js';
12
13
  import 'radix-ui';
13
14
  import '../../components/ui/tooltip.js';
14
15
 
15
- declare function SidebarLayout({ children, header, aslink, data, classNames, }: Readonly<{
16
+ declare function SidebarLayout({ children, aslink, data, classNames, }: Readonly<{
16
17
  children: React.ReactNode;
17
- header?: React.ReactNode;
18
18
  aslink: React.ElementType;
19
19
  data: ISidebarData;
20
20
  classNames?: {
@@ -24,5 +24,10 @@ declare function SidebarLayout({ children, header, aslink, data, classNames, }:
24
24
  main?: string;
25
25
  };
26
26
  }>): React.JSX.Element;
27
+ interface HeaderState {
28
+ content: React.ReactNode | ReturnType<typeof ref<object>>;
29
+ }
30
+ declare const headerStore: HeaderState;
31
+ declare const setLayoutHeader: (node: React.ReactNode) => void;
27
32
 
28
- export { ISidebarData, SidebarLayout as default };
33
+ export { ISidebarData, SidebarLayout as default, headerStore, setLayoutHeader };
@@ -39,10 +39,10 @@ require('../../chunk-2NMEKWO5.js');
39
39
 
40
40
  // layouts/sidebar1/index.tsx
41
41
  var _react = require('react'); var React = _interopRequireWildcard(_react);
42
+ var _valtio = require('valtio');
42
43
  var _nextthemes = require('next-themes');
43
44
  function SidebarLayout({
44
45
  children,
45
- header,
46
46
  aslink,
47
47
  data,
48
48
  classNames
@@ -69,12 +69,31 @@ function SidebarLayout({
69
69
  classNames == null ? void 0 : classNames.header
70
70
  )
71
71
  },
72
- /* @__PURE__ */ React.createElement("div", { className: "flex items-center gap-2 px-4" }, /* @__PURE__ */ React.createElement(_chunkWREXRSAAjs.SidebarTrigger, { className: "-ml-1" }), /* @__PURE__ */ React.createElement(_chunkK4JVHEI2js.Separator, { orientation: "vertical", className: "" }), header ? header : /* @__PURE__ */ React.createElement(_chunkJZXOJAMQjs.Breadcrumb, null, /* @__PURE__ */ React.createElement(_chunkJZXOJAMQjs.BreadcrumbList, { className: "text-dark" }, activeItems.map((bread, index) => {
73
- return /* @__PURE__ */ React.createElement(React.Fragment, { key: bread }, index > 0 && /* @__PURE__ */ React.createElement(_chunkJZXOJAMQjs.BreadcrumbSeparator, null), /* @__PURE__ */ React.createElement(_chunkJZXOJAMQjs.BreadcrumbItem, null, /* @__PURE__ */ React.createElement(_chunkJZXOJAMQjs.BreadcrumbPage, { className: "" }, bread)));
74
- }))))
72
+ /* @__PURE__ */ React.createElement("div", { className: "flex items-center gap-2 px-4" }, /* @__PURE__ */ React.createElement(_chunkWREXRSAAjs.SidebarTrigger, { className: "-ml-1" }), /* @__PURE__ */ React.createElement(_chunkK4JVHEI2js.Separator, { orientation: "vertical", className: "" }), /* @__PURE__ */ React.createElement(LayoutHeader, { items: activeItems }))
75
73
  ), /* @__PURE__ */ React.createElement("main", { className: _chunkPSPAJNNBjs.cn.call(void 0, "px-4 pb-2 overflow-auto", classNames == null ? void 0 : classNames.main) }, children))));
76
74
  }
75
+ var headerStore = _valtio.proxy.call(void 0, {
76
+ content: null
77
+ });
78
+ var setLayoutHeader = (node) => {
79
+ if (node !== null && typeof node === "object") {
80
+ headerStore.content = _valtio.ref.call(void 0, node);
81
+ } else {
82
+ headerStore.content = node;
83
+ }
84
+ };
85
+ function LayoutHeader({ items }) {
86
+ const snap = _valtio.useSnapshot.call(void 0, headerStore);
87
+ if (snap.content) {
88
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, snap.content);
89
+ }
90
+ return /* @__PURE__ */ React.createElement(_chunkJZXOJAMQjs.Breadcrumb, null, /* @__PURE__ */ React.createElement(_chunkJZXOJAMQjs.BreadcrumbList, { className: "text-dark" }, items.map((bread, index) => {
91
+ return /* @__PURE__ */ React.createElement(React.Fragment, { key: bread }, index > 0 && /* @__PURE__ */ React.createElement(_chunkJZXOJAMQjs.BreadcrumbSeparator, null), /* @__PURE__ */ React.createElement(_chunkJZXOJAMQjs.BreadcrumbItem, null, /* @__PURE__ */ React.createElement(_chunkJZXOJAMQjs.BreadcrumbPage, { className: "" }, bread)));
92
+ })));
93
+ }
94
+
95
+
77
96
 
78
97
 
79
- exports.default = SidebarLayout;
98
+ exports.default = SidebarLayout; exports.headerStore = headerStore; exports.setLayoutHeader = setLayoutHeader;
80
99
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/layouts/sidebar1/index.js","../../../layouts/sidebar1/index.tsx"],"names":[],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/layouts/sidebar1/index.js","sourcesContent":[null,"\"use client\";\nimport * as React from 'react';\nimport {\n Breadcrumb,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n} from '../../components/ui/breadcrumb';\nimport { Separator } from '../../components/ui/separator';\nimport { SidebarInset, SidebarProvider, SidebarTrigger } from '../../components/ui/sidebar';\nimport { AppSidebar, ISidebarData } from './app-sidebar';\nimport { INavUser } from './nav-user';\nimport { cn } from '../../utils/ui';\nimport { ThemeProvider } from 'next-themes';\nexport type { ISidebarData };\nexport type { INavUser };\n\nexport default function SidebarLayout({\n children,\n header,\n aslink,\n data,\n classNames,\n}: Readonly<{\n children: React.ReactNode;\n header?: React.ReactNode;\n aslink: React.ElementType;\n data: ISidebarData;\n classNames?: {\n sidebar?: string;\n inset?: string;\n header?: string;\n main?: string;\n };\n}>) {\n const activeItems: string[] = [];\n\n data.menus.forEach((menu) => {\n menu.items.forEach((item) => {\n if (item.subItems) {\n item.subItems.forEach((subItem) => {\n if (subItem.isActive) {\n activeItems.push(item.title, subItem.title);\n }\n });\n } else if (item.isActive) {\n activeItems.push(item.title);\n }\n });\n });\n\n return (\n <ThemeProvider attribute=\"class\" defaultTheme=\"system\" enableSystem>\n <SidebarProvider>\n <AppSidebar aslink={aslink} data={data} className={cn(classNames?.sidebar)} />\n <SidebarInset className={cn(classNames?.inset)}>\n <header\n className={cn(\n 'flex h-14 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-[[data-collapsible=icon]]/sidebar-wrapper:h-12',\n classNames?.header,\n )}\n >\n <div className=\"flex items-center gap-2 px-4\">\n <SidebarTrigger className=\"-ml-1\" />\n <Separator orientation=\"vertical\" className=\"\" />\n {header ? (\n header\n ) : (\n <Breadcrumb>\n <BreadcrumbList className=\"text-dark\">\n {activeItems.map((bread, index) => {\n return (\n <React.Fragment key={bread}>\n {index > 0 && <BreadcrumbSeparator />}\n <BreadcrumbItem>\n <BreadcrumbPage className=\"\">{bread}</BreadcrumbPage>\n </BreadcrumbItem>\n </React.Fragment>\n );\n })}\n </BreadcrumbList>\n </Breadcrumb>\n )}\n </div>\n </header>\n <main className={cn('px-4 pb-2 overflow-auto', classNames?.main)}>{children}</main>\n </SidebarInset>\n </SidebarProvider>\n </ThemeProvider>\n );\n}\n"]}
1
+ {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/layouts/sidebar1/index.js","../../../layouts/sidebar1/index.tsx"],"names":[],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/layouts/sidebar1/index.js","sourcesContent":[null,"\"use client\";\nimport * as React from 'react';\nimport { proxy, ref, useSnapshot } from 'valtio';\nimport {\n Breadcrumb,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n} from '../../components/ui/breadcrumb';\nimport { Separator } from '../../components/ui/separator';\nimport { SidebarInset, SidebarProvider, SidebarTrigger } from '../../components/ui/sidebar';\nimport { AppSidebar, ISidebarData } from './app-sidebar';\nimport { INavUser } from './nav-user';\nimport { cn } from '../../utils/ui';\nimport { ThemeProvider } from 'next-themes';\nexport type { ISidebarData };\nexport type { INavUser };\n\nexport default function SidebarLayout({\n children,\n aslink,\n data,\n classNames,\n}: Readonly<{\n children: React.ReactNode;\n aslink: React.ElementType;\n data: ISidebarData;\n classNames?: {\n sidebar?: string;\n inset?: string;\n header?: string;\n main?: string;\n };\n}>) {\n const activeItems: string[] = [];\n\n data.menus.forEach((menu) => {\n menu.items.forEach((item) => {\n if (item.subItems) {\n item.subItems.forEach((subItem) => {\n if (subItem.isActive) {\n activeItems.push(item.title, subItem.title);\n }\n });\n } else if (item.isActive) {\n activeItems.push(item.title);\n }\n });\n });\n\n return (\n <ThemeProvider attribute=\"class\" defaultTheme=\"system\" enableSystem>\n <SidebarProvider>\n <AppSidebar aslink={aslink} data={data} className={cn(classNames?.sidebar)} />\n <SidebarInset className={cn(classNames?.inset)}>\n <header\n className={cn(\n 'flex h-14 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-[[data-collapsible=icon]]/sidebar-wrapper:h-12',\n classNames?.header,\n )}\n >\n <div className=\"flex items-center gap-2 px-4\">\n <SidebarTrigger className=\"-ml-1\" />\n <Separator orientation=\"vertical\" className=\"\" />\n <LayoutHeader items={activeItems} />\n </div>\n </header>\n <main className={cn('px-4 pb-2 overflow-auto', classNames?.main)}>{children}</main>\n </SidebarInset>\n </SidebarProvider>\n </ThemeProvider>\n );\n}\n\ninterface HeaderState {\n content: React.ReactNode | ReturnType<typeof ref<object>>;\n}\n\nexport const headerStore = proxy<HeaderState>({\n content: null,\n});\n\nexport const setLayoutHeader = (node: React.ReactNode) => {\n if (node !== null && typeof node === 'object') {\n // We cast to any here to satisfy the internal Valtio ref assignment\n // or use a utility type\n headerStore.content = ref(node as object);\n } else {\n headerStore.content = node;\n }\n};\n\nfunction LayoutHeader({ items }: { items: string[] }) {\n const snap = useSnapshot(headerStore);\n if (snap.content) {\n return <>{snap.content}</>;\n }\n\n return (\n <Breadcrumb>\n <BreadcrumbList className=\"text-dark\">\n {items.map((bread, index) => {\n return (\n <React.Fragment key={bread}>\n {index > 0 && <BreadcrumbSeparator />}\n <BreadcrumbItem>\n <BreadcrumbPage className=\"\">{bread}</BreadcrumbPage>\n </BreadcrumbItem>\n </React.Fragment>\n );\n })}\n </BreadcrumbList>\n </Breadcrumb>\n );\n}\n"]}
@@ -38,10 +38,10 @@ import "../../chunk-YOSPWY5K.mjs";
38
38
 
39
39
  // layouts/sidebar1/index.tsx
40
40
  import * as React from "react";
41
+ import { proxy, ref, useSnapshot } from "valtio";
41
42
  import { ThemeProvider } from "next-themes";
42
43
  function SidebarLayout({
43
44
  children,
44
- header,
45
45
  aslink,
46
46
  data,
47
47
  classNames
@@ -68,12 +68,31 @@ function SidebarLayout({
68
68
  classNames == null ? void 0 : classNames.header
69
69
  )
70
70
  },
71
- /* @__PURE__ */ React.createElement("div", { className: "flex items-center gap-2 px-4" }, /* @__PURE__ */ React.createElement(SidebarTrigger, { className: "-ml-1" }), /* @__PURE__ */ React.createElement(Separator, { orientation: "vertical", className: "" }), header ? header : /* @__PURE__ */ React.createElement(Breadcrumb, null, /* @__PURE__ */ React.createElement(BreadcrumbList, { className: "text-dark" }, activeItems.map((bread, index) => {
72
- return /* @__PURE__ */ React.createElement(React.Fragment, { key: bread }, index > 0 && /* @__PURE__ */ React.createElement(BreadcrumbSeparator, null), /* @__PURE__ */ React.createElement(BreadcrumbItem, null, /* @__PURE__ */ React.createElement(BreadcrumbPage, { className: "" }, bread)));
73
- }))))
71
+ /* @__PURE__ */ React.createElement("div", { className: "flex items-center gap-2 px-4" }, /* @__PURE__ */ React.createElement(SidebarTrigger, { className: "-ml-1" }), /* @__PURE__ */ React.createElement(Separator, { orientation: "vertical", className: "" }), /* @__PURE__ */ React.createElement(LayoutHeader, { items: activeItems }))
74
72
  ), /* @__PURE__ */ React.createElement("main", { className: cn("px-4 pb-2 overflow-auto", classNames == null ? void 0 : classNames.main) }, children))));
75
73
  }
74
+ var headerStore = proxy({
75
+ content: null
76
+ });
77
+ var setLayoutHeader = (node) => {
78
+ if (node !== null && typeof node === "object") {
79
+ headerStore.content = ref(node);
80
+ } else {
81
+ headerStore.content = node;
82
+ }
83
+ };
84
+ function LayoutHeader({ items }) {
85
+ const snap = useSnapshot(headerStore);
86
+ if (snap.content) {
87
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, snap.content);
88
+ }
89
+ return /* @__PURE__ */ React.createElement(Breadcrumb, null, /* @__PURE__ */ React.createElement(BreadcrumbList, { className: "text-dark" }, items.map((bread, index) => {
90
+ return /* @__PURE__ */ React.createElement(React.Fragment, { key: bread }, index > 0 && /* @__PURE__ */ React.createElement(BreadcrumbSeparator, null), /* @__PURE__ */ React.createElement(BreadcrumbItem, null, /* @__PURE__ */ React.createElement(BreadcrumbPage, { className: "" }, bread)));
91
+ })));
92
+ }
76
93
  export {
77
- SidebarLayout as default
94
+ SidebarLayout as default,
95
+ headerStore,
96
+ setLayoutHeader
78
97
  };
79
98
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../layouts/sidebar1/index.tsx"],"sourcesContent":["\"use client\";\nimport * as React from 'react';\nimport {\n Breadcrumb,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n} from '../../components/ui/breadcrumb';\nimport { Separator } from '../../components/ui/separator';\nimport { SidebarInset, SidebarProvider, SidebarTrigger } from '../../components/ui/sidebar';\nimport { AppSidebar, ISidebarData } from './app-sidebar';\nimport { INavUser } from './nav-user';\nimport { cn } from '../../utils/ui';\nimport { ThemeProvider } from 'next-themes';\nexport type { ISidebarData };\nexport type { INavUser };\n\nexport default function SidebarLayout({\n children,\n header,\n aslink,\n data,\n classNames,\n}: Readonly<{\n children: React.ReactNode;\n header?: React.ReactNode;\n aslink: React.ElementType;\n data: ISidebarData;\n classNames?: {\n sidebar?: string;\n inset?: string;\n header?: string;\n main?: string;\n };\n}>) {\n const activeItems: string[] = [];\n\n data.menus.forEach((menu) => {\n menu.items.forEach((item) => {\n if (item.subItems) {\n item.subItems.forEach((subItem) => {\n if (subItem.isActive) {\n activeItems.push(item.title, subItem.title);\n }\n });\n } else if (item.isActive) {\n activeItems.push(item.title);\n }\n });\n });\n\n return (\n <ThemeProvider attribute=\"class\" defaultTheme=\"system\" enableSystem>\n <SidebarProvider>\n <AppSidebar aslink={aslink} data={data} className={cn(classNames?.sidebar)} />\n <SidebarInset className={cn(classNames?.inset)}>\n <header\n className={cn(\n 'flex h-14 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-[[data-collapsible=icon]]/sidebar-wrapper:h-12',\n classNames?.header,\n )}\n >\n <div className=\"flex items-center gap-2 px-4\">\n <SidebarTrigger className=\"-ml-1\" />\n <Separator orientation=\"vertical\" className=\"\" />\n {header ? (\n header\n ) : (\n <Breadcrumb>\n <BreadcrumbList className=\"text-dark\">\n {activeItems.map((bread, index) => {\n return (\n <React.Fragment key={bread}>\n {index > 0 && <BreadcrumbSeparator />}\n <BreadcrumbItem>\n <BreadcrumbPage className=\"\">{bread}</BreadcrumbPage>\n </BreadcrumbItem>\n </React.Fragment>\n );\n })}\n </BreadcrumbList>\n </Breadcrumb>\n )}\n </div>\n </header>\n <main className={cn('px-4 pb-2 overflow-auto', classNames?.main)}>{children}</main>\n </SidebarInset>\n </SidebarProvider>\n </ThemeProvider>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,YAAY,WAAW;AAcvB,SAAS,qBAAqB;AAIf,SAAR,cAA+B;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAWI;AACF,QAAM,cAAwB,CAAC;AAE/B,OAAK,MAAM,QAAQ,CAAC,SAAS;AAC3B,SAAK,MAAM,QAAQ,CAAC,SAAS;AAC3B,UAAI,KAAK,UAAU;AACjB,aAAK,SAAS,QAAQ,CAAC,YAAY;AACjC,cAAI,QAAQ,UAAU;AACpB,wBAAY,KAAK,KAAK,OAAO,QAAQ,KAAK;AAAA,UAC5C;AAAA,QACF,CAAC;AAAA,MACH,WAAW,KAAK,UAAU;AACxB,oBAAY,KAAK,KAAK,KAAK;AAAA,MAC7B;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAED,SACE,oCAAC,iBAAc,WAAU,SAAQ,cAAa,UAAS,cAAY,QACjE,oCAAC,uBACC,oCAAC,cAAW,QAAgB,MAAY,WAAW,GAAG,yCAAY,OAAO,GAAG,GAC5E,oCAAC,gBAAa,WAAW,GAAG,yCAAY,KAAK,KAC3C;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,yCAAY;AAAA,MACd;AAAA;AAAA,IAEA,oCAAC,SAAI,WAAU,kCACb,oCAAC,kBAAe,WAAU,SAAQ,GAClC,oCAAC,aAAU,aAAY,YAAW,WAAU,IAAG,GAC9C,SACC,SAEA,oCAAC,kBACC,oCAAC,kBAAe,WAAU,eACvB,YAAY,IAAI,CAAC,OAAO,UAAU;AACjC,aACE,oCAAO,gBAAN,EAAe,KAAK,SAClB,QAAQ,KAAK,oCAAC,yBAAoB,GACnC,oCAAC,sBACC,oCAAC,kBAAe,WAAU,MAAI,KAAM,CACtC,CACF;AAAA,IAEJ,CAAC,CACH,CACF,CAEJ;AAAA,EACF,GACA,oCAAC,UAAK,WAAW,GAAG,2BAA2B,yCAAY,IAAI,KAAI,QAAS,CAC9E,CACF,CACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../layouts/sidebar1/index.tsx"],"sourcesContent":["\"use client\";\nimport * as React from 'react';\nimport { proxy, ref, useSnapshot } from 'valtio';\nimport {\n Breadcrumb,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n} from '../../components/ui/breadcrumb';\nimport { Separator } from '../../components/ui/separator';\nimport { SidebarInset, SidebarProvider, SidebarTrigger } from '../../components/ui/sidebar';\nimport { AppSidebar, ISidebarData } from './app-sidebar';\nimport { INavUser } from './nav-user';\nimport { cn } from '../../utils/ui';\nimport { ThemeProvider } from 'next-themes';\nexport type { ISidebarData };\nexport type { INavUser };\n\nexport default function SidebarLayout({\n children,\n aslink,\n data,\n classNames,\n}: Readonly<{\n children: React.ReactNode;\n aslink: React.ElementType;\n data: ISidebarData;\n classNames?: {\n sidebar?: string;\n inset?: string;\n header?: string;\n main?: string;\n };\n}>) {\n const activeItems: string[] = [];\n\n data.menus.forEach((menu) => {\n menu.items.forEach((item) => {\n if (item.subItems) {\n item.subItems.forEach((subItem) => {\n if (subItem.isActive) {\n activeItems.push(item.title, subItem.title);\n }\n });\n } else if (item.isActive) {\n activeItems.push(item.title);\n }\n });\n });\n\n return (\n <ThemeProvider attribute=\"class\" defaultTheme=\"system\" enableSystem>\n <SidebarProvider>\n <AppSidebar aslink={aslink} data={data} className={cn(classNames?.sidebar)} />\n <SidebarInset className={cn(classNames?.inset)}>\n <header\n className={cn(\n 'flex h-14 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-[[data-collapsible=icon]]/sidebar-wrapper:h-12',\n classNames?.header,\n )}\n >\n <div className=\"flex items-center gap-2 px-4\">\n <SidebarTrigger className=\"-ml-1\" />\n <Separator orientation=\"vertical\" className=\"\" />\n <LayoutHeader items={activeItems} />\n </div>\n </header>\n <main className={cn('px-4 pb-2 overflow-auto', classNames?.main)}>{children}</main>\n </SidebarInset>\n </SidebarProvider>\n </ThemeProvider>\n );\n}\n\ninterface HeaderState {\n content: React.ReactNode | ReturnType<typeof ref<object>>;\n}\n\nexport const headerStore = proxy<HeaderState>({\n content: null,\n});\n\nexport const setLayoutHeader = (node: React.ReactNode) => {\n if (node !== null && typeof node === 'object') {\n // We cast to any here to satisfy the internal Valtio ref assignment\n // or use a utility type\n headerStore.content = ref(node as object);\n } else {\n headerStore.content = node;\n }\n};\n\nfunction LayoutHeader({ items }: { items: string[] }) {\n const snap = useSnapshot(headerStore);\n if (snap.content) {\n return <>{snap.content}</>;\n }\n\n return (\n <Breadcrumb>\n <BreadcrumbList className=\"text-dark\">\n {items.map((bread, index) => {\n return (\n <React.Fragment key={bread}>\n {index > 0 && <BreadcrumbSeparator />}\n <BreadcrumbItem>\n <BreadcrumbPage className=\"\">{bread}</BreadcrumbPage>\n </BreadcrumbItem>\n </React.Fragment>\n );\n })}\n </BreadcrumbList>\n </Breadcrumb>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,YAAY,WAAW;AACvB,SAAS,OAAO,KAAK,mBAAmB;AAcxC,SAAS,qBAAqB;AAIf,SAAR,cAA+B;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAUI;AACF,QAAM,cAAwB,CAAC;AAE/B,OAAK,MAAM,QAAQ,CAAC,SAAS;AAC3B,SAAK,MAAM,QAAQ,CAAC,SAAS;AAC3B,UAAI,KAAK,UAAU;AACjB,aAAK,SAAS,QAAQ,CAAC,YAAY;AACjC,cAAI,QAAQ,UAAU;AACpB,wBAAY,KAAK,KAAK,OAAO,QAAQ,KAAK;AAAA,UAC5C;AAAA,QACF,CAAC;AAAA,MACH,WAAW,KAAK,UAAU;AACxB,oBAAY,KAAK,KAAK,KAAK;AAAA,MAC7B;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAED,SACE,oCAAC,iBAAc,WAAU,SAAQ,cAAa,UAAS,cAAY,QACjE,oCAAC,uBACC,oCAAC,cAAW,QAAgB,MAAY,WAAW,GAAG,yCAAY,OAAO,GAAG,GAC5E,oCAAC,gBAAa,WAAW,GAAG,yCAAY,KAAK,KAC3C;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,yCAAY;AAAA,MACd;AAAA;AAAA,IAEA,oCAAC,SAAI,WAAU,kCACb,oCAAC,kBAAe,WAAU,SAAQ,GAClC,oCAAC,aAAU,aAAY,YAAW,WAAU,IAAG,GAC/C,oCAAC,gBAAa,OAAO,aAAa,CACpC;AAAA,EACF,GACA,oCAAC,UAAK,WAAW,GAAG,2BAA2B,yCAAY,IAAI,KAAI,QAAS,CAC9E,CACF,CACF;AAEJ;AAMO,IAAM,cAAc,MAAmB;AAAA,EAC5C,SAAS;AACX,CAAC;AAEM,IAAM,kBAAkB,CAAC,SAA0B;AACxD,MAAI,SAAS,QAAQ,OAAO,SAAS,UAAU;AAG7C,gBAAY,UAAU,IAAI,IAAc;AAAA,EAC1C,OAAO;AACL,gBAAY,UAAU;AAAA,EACxB;AACF;AAEA,SAAS,aAAa,EAAE,MAAM,GAAwB;AACpD,QAAM,OAAO,YAAY,WAAW;AACpC,MAAI,KAAK,SAAS;AAChB,WAAO,0DAAG,KAAK,OAAQ;AAAA,EACzB;AAEA,SACE,oCAAC,kBACC,oCAAC,kBAAe,WAAU,eACvB,MAAM,IAAI,CAAC,OAAO,UAAU;AAC3B,WACE,oCAAO,gBAAN,EAAe,KAAK,SAClB,QAAQ,KAAK,oCAAC,yBAAoB,GACnC,oCAAC,sBACC,oCAAC,kBAAe,WAAU,MAAI,KAAM,CACtC,CACF;AAAA,EAEJ,CAAC,CACH,CACF;AAEJ;","names":[]}
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.1.4",
2
+ "version": "0.1.5",
3
3
  "description": "shadcn UI theme",
4
4
  "license": "MIT",
5
5
  "sideEffects": false,
@@ -21,9 +21,10 @@
21
21
  "lucide-react": "^0.555.0",
22
22
  "next-themes": "^0.4.4",
23
23
  "radix-ui": "^1.4.3",
24
+ "react-day-picker": "9.13.0",
24
25
  "react-resizable-panels": "^4.7.4",
25
26
  "tailwind-merge": "^3.5.0",
26
- "react-day-picker": "9.13.0",
27
+ "valtio": "^2.3.1",
27
28
  "vaul": "^1.1.2",
28
29
  "zod": "^4.3.6"
29
30
  },