@egose/shadcn-theme 0.0.48 → 0.0.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/chunk-OXTCSLHP.mjs +39 -0
  2. package/chunk-OXTCSLHP.mjs.map +1 -0
  3. package/chunk-QGXFFTPH.js +40 -0
  4. package/chunk-QGXFFTPH.js.map +1 -0
  5. package/chunk-YWILOKX4.mjs +50 -0
  6. package/chunk-YWILOKX4.mjs.map +1 -0
  7. package/chunk-ZOF6UW3D.js +51 -0
  8. package/chunk-ZOF6UW3D.js.map +1 -0
  9. package/components/ui/command.d.mts +1 -1
  10. package/components/ui/command.d.ts +1 -1
  11. package/components/ui/resizable.d.mts +1 -1
  12. package/components/ui/resizable.d.ts +1 -1
  13. package/components/widgets/dialog-manager/index.js +1 -1
  14. package/components/widgets/dialog-manager/index.js.map +1 -1
  15. package/components/widgets/dialog-manager/index.mjs +1 -1
  16. package/layouts/simple/index.d.mts +52 -0
  17. package/layouts/simple/index.d.ts +52 -0
  18. package/layouts/simple/index.js +163 -0
  19. package/layouts/simple/index.js.map +1 -0
  20. package/layouts/simple/index.mjs +162 -0
  21. package/layouts/simple/index.mjs.map +1 -0
  22. package/layouts/simple/mobile-menu.d.mts +11 -0
  23. package/layouts/simple/mobile-menu.d.ts +11 -0
  24. package/layouts/simple/mobile-menu.js +11 -0
  25. package/layouts/simple/mobile-menu.js.map +1 -0
  26. package/layouts/simple/mobile-menu.mjs +10 -0
  27. package/layouts/simple/mobile-menu.mjs.map +1 -0
  28. package/layouts/simple/types.d.mts +15 -0
  29. package/layouts/simple/types.d.ts +15 -0
  30. package/layouts/simple/types.js +3 -0
  31. package/layouts/simple/types.js.map +1 -0
  32. package/layouts/simple/types.mjs +2 -0
  33. package/layouts/simple/types.mjs.map +1 -0
  34. package/layouts/simple/user-menu.d.mts +10 -0
  35. package/layouts/simple/user-menu.d.ts +10 -0
  36. package/layouts/simple/user-menu.js +12 -0
  37. package/layouts/simple/user-menu.js.map +1 -0
  38. package/layouts/simple/user-menu.mjs +11 -0
  39. package/layouts/simple/user-menu.mjs.map +1 -0
  40. package/package.json +3 -4
@@ -0,0 +1,39 @@
1
+ import {
2
+ cn
3
+ } from "./chunk-F5XCCSBC.mjs";
4
+
5
+ // layouts/simple/mobile-menu.tsx
6
+ import React from "react";
7
+ function MobileMenu({ sections, aslink, onClick }) {
8
+ const LinkComponent = aslink != null ? aslink : "a";
9
+ return /* @__PURE__ */ React.createElement("div", { className: "w-full bg-white p-2 space-y-4" }, sections.map((section, sectionIndex) => {
10
+ var _a, _b;
11
+ return /* @__PURE__ */ React.createElement("div", { key: (_a = section.label) != null ? _a : sectionIndex, className: "space-y-2" }, section.label && /* @__PURE__ */ React.createElement("div", { className: "text-sm font-semibold text-gray-500" }, section.label), ((_b = section.items) == null ? void 0 : _b.length) ? /* @__PURE__ */ React.createElement("ul", { className: "space-y-1" }, section.items.map((item, itemIndex) => {
12
+ var _a2;
13
+ return /* @__PURE__ */ React.createElement("li", { key: (_a2 = item.label) != null ? _a2 : itemIndex, className: "cursor-pointer", onClick }, item.link ? /* @__PURE__ */ React.createElement(
14
+ LinkComponent,
15
+ {
16
+ to: item.link,
17
+ href: item.link,
18
+ className: cn("block w-full px-3 py-1 rounded hover:bg-gray-100", item.className)
19
+ },
20
+ item.label
21
+ ) : /* @__PURE__ */ React.createElement(
22
+ "button",
23
+ {
24
+ onClick: item.action,
25
+ className: cn(
26
+ "block w-full text-left px-3 py-1 rounded hover:bg-gray-100 cursor-pointer",
27
+ item.className
28
+ )
29
+ },
30
+ item.label
31
+ ));
32
+ })) : null, section.separator && /* @__PURE__ */ React.createElement("hr", { className: "my-2" }));
33
+ }));
34
+ }
35
+
36
+ export {
37
+ MobileMenu
38
+ };
39
+ //# sourceMappingURL=chunk-OXTCSLHP.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../layouts/simple/mobile-menu.tsx"],"sourcesContent":["\"use client\";\nimport React from 'react';\nimport { cn } from '../../lib/utils';\nimport type { UserMenuSection } from './types';\n\ninterface MobileMenuProps {\n sections: UserMenuSection[];\n aslink?: React.ElementType;\n onClick?: () => void;\n}\n\nexport function MobileMenu({ sections, aslink, onClick }: MobileMenuProps) {\n const LinkComponent = aslink ?? 'a';\n\n return (\n <div className=\"w-full bg-white p-2 space-y-4\">\n {sections.map((section, sectionIndex) => (\n <div key={section.label ?? sectionIndex} className=\"space-y-2\">\n {/* Section label */}\n {section.label && <div className=\"text-sm font-semibold text-gray-500\">{section.label}</div>}\n\n {/* Section items */}\n {section.items?.length ? (\n <ul className=\"space-y-1\">\n {section.items.map((item, itemIndex) => (\n <li key={item.label ?? itemIndex} className=\"cursor-pointer\" onClick={onClick}>\n {item.link ? (\n <LinkComponent\n to={item.link}\n href={item.link}\n className={cn('block w-full px-3 py-1 rounded hover:bg-gray-100', item.className)}\n >\n {item.label}\n </LinkComponent>\n ) : (\n <button\n onClick={item.action}\n className={cn(\n 'block w-full text-left px-3 py-1 rounded hover:bg-gray-100 cursor-pointer',\n item.className,\n )}\n >\n {item.label}\n </button>\n )}\n </li>\n ))}\n </ul>\n ) : null}\n\n {/* Separator */}\n {section.separator && <hr className=\"my-2\" />}\n </div>\n ))}\n </div>\n );\n}\n"],"mappings":";;;;;AACA,OAAO,WAAW;AAUX,SAAS,WAAW,EAAE,UAAU,QAAQ,QAAQ,GAAoB;AACzE,QAAM,gBAAgB,0BAAU;AAEhC,SACE,oCAAC,SAAI,WAAU,mCACZ,SAAS,IAAI,CAAC,SAAS,iBAAc;AAhB5C;AAiBQ,+CAAC,SAAI,MAAK,aAAQ,UAAR,YAAiB,cAAc,WAAU,eAEhD,QAAQ,SAAS,oCAAC,SAAI,WAAU,yCAAuC,QAAQ,KAAM,KAGrF,aAAQ,UAAR,mBAAe,UACd,oCAAC,QAAG,WAAU,eACX,QAAQ,MAAM,IAAI,CAAC,MAAM,cAAW;AAxBnD,UAAAA;AAyBgB,iDAAC,QAAG,MAAKA,MAAA,KAAK,UAAL,OAAAA,MAAc,WAAW,WAAU,kBAAiB,WAC1D,KAAK,OACJ;AAAA,QAAC;AAAA;AAAA,UACC,IAAI,KAAK;AAAA,UACT,MAAM,KAAK;AAAA,UACX,WAAW,GAAG,oDAAoD,KAAK,SAAS;AAAA;AAAA,QAE/E,KAAK;AAAA,MACR,IAEA;AAAA,QAAC;AAAA;AAAA,UACC,SAAS,KAAK;AAAA,UACd,WAAW;AAAA,YACT;AAAA,YACA,KAAK;AAAA,UACP;AAAA;AAAA,QAEC,KAAK;AAAA,MACR,CAEJ;AAAA,KACD,CACH,IACE,MAGH,QAAQ,aAAa,oCAAC,QAAG,WAAU,QAAO,CAC7C;AAAA,GACD,CACH;AAEJ;","names":["_a"]}
@@ -0,0 +1,40 @@
1
+ "use client";
2
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3
+
4
+ var _chunk6N4WCMTEjs = require('./chunk-6N4WCMTE.js');
5
+
6
+ // layouts/simple/mobile-menu.tsx
7
+ var _react = require('react'); var _react2 = _interopRequireDefault(_react);
8
+ function MobileMenu({ sections, aslink, onClick }) {
9
+ const LinkComponent = aslink != null ? aslink : "a";
10
+ return /* @__PURE__ */ _react2.default.createElement("div", { className: "w-full bg-white p-2 space-y-4" }, sections.map((section, sectionIndex) => {
11
+ var _a, _b;
12
+ return /* @__PURE__ */ _react2.default.createElement("div", { key: (_a = section.label) != null ? _a : sectionIndex, className: "space-y-2" }, section.label && /* @__PURE__ */ _react2.default.createElement("div", { className: "text-sm font-semibold text-gray-500" }, section.label), ((_b = section.items) == null ? void 0 : _b.length) ? /* @__PURE__ */ _react2.default.createElement("ul", { className: "space-y-1" }, section.items.map((item, itemIndex) => {
13
+ var _a2;
14
+ return /* @__PURE__ */ _react2.default.createElement("li", { key: (_a2 = item.label) != null ? _a2 : itemIndex, className: "cursor-pointer", onClick }, item.link ? /* @__PURE__ */ _react2.default.createElement(
15
+ LinkComponent,
16
+ {
17
+ to: item.link,
18
+ href: item.link,
19
+ className: _chunk6N4WCMTEjs.cn.call(void 0, "block w-full px-3 py-1 rounded hover:bg-gray-100", item.className)
20
+ },
21
+ item.label
22
+ ) : /* @__PURE__ */ _react2.default.createElement(
23
+ "button",
24
+ {
25
+ onClick: item.action,
26
+ className: _chunk6N4WCMTEjs.cn.call(void 0,
27
+ "block w-full text-left px-3 py-1 rounded hover:bg-gray-100 cursor-pointer",
28
+ item.className
29
+ )
30
+ },
31
+ item.label
32
+ ));
33
+ })) : null, section.separator && /* @__PURE__ */ _react2.default.createElement("hr", { className: "my-2" }));
34
+ }));
35
+ }
36
+
37
+
38
+
39
+ exports.MobileMenu = MobileMenu;
40
+ //# sourceMappingURL=chunk-QGXFFTPH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-QGXFFTPH.js","../layouts/simple/mobile-menu.tsx"],"names":["_a"],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACA;ACHA,4EAAkB;AAUX,SAAS,UAAA,CAAW,EAAE,QAAA,EAAU,MAAA,EAAQ,QAAQ,CAAA,EAAoB;AACzE,EAAA,MAAM,cAAA,EAAgB,OAAA,GAAA,KAAA,EAAA,OAAA,EAAU,GAAA;AAEhC,EAAA,uBACE,eAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gCAAA,CAAA,EACZ,QAAA,CAAS,GAAA,CAAI,CAAC,OAAA,EAAS,YAAA,EAAA,GAAc;AAhB5C,IAAA,IAAA,EAAA,EAAA,EAAA;AAiBQ,IAAA,uBAAA,eAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAA,CAAK,GAAA,EAAA,OAAA,CAAQ,KAAA,EAAA,GAAR,KAAA,EAAA,GAAA,EAAiB,YAAA,EAAc,SAAA,EAAU,YAAA,CAAA,EAEhD,OAAA,CAAQ,MAAA,mBAAS,eAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sCAAA,CAAA,EAAuC,OAAA,CAAQ,KAAM,CAAA,EAAA,CAAA,CAGrF,GAAA,EAAA,OAAA,CAAQ,KAAA,EAAA,GAAR,KAAA,EAAA,KAAA,EAAA,EAAA,EAAA,CAAe,MAAA,EAAA,kBACd,eAAA,CAAA,aAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,YAAA,CAAA,EACX,OAAA,CAAQ,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,SAAA,EAAA,GAAW;AAxBnD,MAAA,IAAAA,GAAAA;AAyBgB,MAAA,uBAAA,eAAA,CAAA,aAAA,CAAC,IAAA,EAAA,EAAG,GAAA,EAAA,CAAKA,IAAAA,EAAA,IAAA,CAAK,KAAA,EAAA,GAAL,KAAA,EAAAA,IAAAA,EAAc,SAAA,EAAW,SAAA,EAAU,gBAAA,EAAiB,QAAA,CAAA,EAC1D,IAAA,CAAK,KAAA,kBACJ,eAAA,CAAA,aAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,IAAA,CAAK,IAAA;AAAA,UACT,IAAA,EAAM,IAAA,CAAK,IAAA;AAAA,UACX,SAAA,EAAW,iCAAA,kDAAG,EAAoD,IAAA,CAAK,SAAS;AAAA,QAAA,CAAA;AAAA,QAE/E,IAAA,CAAK;AAAA,MACR,EAAA,kBAEA,eAAA,CAAA,aAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,IAAA,CAAK,MAAA;AAAA,UACd,SAAA,EAAW,iCAAA;AAAA,YACT,2EAAA;AAAA,YACA,IAAA,CAAK;AAAA,UACP;AAAA,QAAA,CAAA;AAAA,QAEC,IAAA,CAAK;AAAA,MACR,CAEJ,CAAA;AAAA,IAAA,CACD,CACH,EAAA,EACE,IAAA,EAGH,OAAA,CAAQ,UAAA,mBAAa,eAAA,CAAA,aAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,OAAA,CAAO,CAC7C,CAAA;AAAA,EAAA,CACD,CACH,CAAA;AAEJ;ADtBA;AACA;AACE;AACF,gCAAC","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-QGXFFTPH.js","sourcesContent":[null,"\"use client\";\nimport React from 'react';\nimport { cn } from '../../lib/utils';\nimport type { UserMenuSection } from './types';\n\ninterface MobileMenuProps {\n sections: UserMenuSection[];\n aslink?: React.ElementType;\n onClick?: () => void;\n}\n\nexport function MobileMenu({ sections, aslink, onClick }: MobileMenuProps) {\n const LinkComponent = aslink ?? 'a';\n\n return (\n <div className=\"w-full bg-white p-2 space-y-4\">\n {sections.map((section, sectionIndex) => (\n <div key={section.label ?? sectionIndex} className=\"space-y-2\">\n {/* Section label */}\n {section.label && <div className=\"text-sm font-semibold text-gray-500\">{section.label}</div>}\n\n {/* Section items */}\n {section.items?.length ? (\n <ul className=\"space-y-1\">\n {section.items.map((item, itemIndex) => (\n <li key={item.label ?? itemIndex} className=\"cursor-pointer\" onClick={onClick}>\n {item.link ? (\n <LinkComponent\n to={item.link}\n href={item.link}\n className={cn('block w-full px-3 py-1 rounded hover:bg-gray-100', item.className)}\n >\n {item.label}\n </LinkComponent>\n ) : (\n <button\n onClick={item.action}\n className={cn(\n 'block w-full text-left px-3 py-1 rounded hover:bg-gray-100 cursor-pointer',\n item.className,\n )}\n >\n {item.label}\n </button>\n )}\n </li>\n ))}\n </ul>\n ) : null}\n\n {/* Separator */}\n {section.separator && <hr className=\"my-2\" />}\n </div>\n ))}\n </div>\n );\n}\n"]}
@@ -0,0 +1,50 @@
1
+ import {
2
+ DropdownMenu,
3
+ DropdownMenuContent,
4
+ DropdownMenuGroup,
5
+ DropdownMenuItem,
6
+ DropdownMenuLabel,
7
+ DropdownMenuSeparator,
8
+ DropdownMenuTrigger
9
+ } from "./chunk-IAJ2ZBSJ.mjs";
10
+ import {
11
+ cn
12
+ } from "./chunk-F5XCCSBC.mjs";
13
+
14
+ // layouts/simple/user-menu.tsx
15
+ import React from "react";
16
+ import { UserCircle } from "lucide-react";
17
+ function UserMenus({
18
+ sections,
19
+ trigger,
20
+ aslink
21
+ }) {
22
+ const LinkComponent = aslink != null ? aslink : "button";
23
+ return /* @__PURE__ */ React.createElement(DropdownMenu, null, /* @__PURE__ */ React.createElement(DropdownMenuTrigger, { asChild: true }, trigger != null ? trigger : /* @__PURE__ */ React.createElement("button", { className: "flex items-center justify-center p-2 bg-blue-500 hover:bg-blue-600 active:bg-blue-700 text-white rounded-full cursor-pointer" }, /* @__PURE__ */ React.createElement(UserCircle, null))), /* @__PURE__ */ React.createElement(DropdownMenuContent, { className: "w-56", align: "start" }, sections.map((section, index) => {
24
+ var _a;
25
+ return /* @__PURE__ */ React.createElement("div", { key: (_a = section.label) != null ? _a : index }, section.label && /* @__PURE__ */ React.createElement(DropdownMenuLabel, null, section.label), section.items && section.items.length > 0 && /* @__PURE__ */ React.createElement(DropdownMenuGroup, null, section.items.map((item) => {
26
+ var _a2, _b;
27
+ return /* @__PURE__ */ React.createElement(DropdownMenuItem, { key: item.label }, item.link ? /* @__PURE__ */ React.createElement(
28
+ LinkComponent,
29
+ {
30
+ to: (_a2 = item.link) != null ? _a2 : "/",
31
+ href: (_b = item.link) != null ? _b : "/",
32
+ className: cn("w-full text-left cursor-pointer", item.className)
33
+ },
34
+ item.label
35
+ ) : /* @__PURE__ */ React.createElement(
36
+ "button",
37
+ {
38
+ onClick: item.action,
39
+ className: cn("w-full text-left cursor-pointer", item.className)
40
+ },
41
+ item.label
42
+ ));
43
+ })), section.separator && /* @__PURE__ */ React.createElement(DropdownMenuSeparator, null));
44
+ })));
45
+ }
46
+
47
+ export {
48
+ UserMenus
49
+ };
50
+ //# sourceMappingURL=chunk-YWILOKX4.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../layouts/simple/user-menu.tsx"],"sourcesContent":["\"use client\";\nimport React from 'react';\nimport { UserCircle } from 'lucide-react';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from '../../components/ui/dropdown-menu';\nimport { cn } from '../../lib/utils';\nimport type { MenuItem, UserMenuSection } from './types';\n\nexport function UserMenus({\n sections,\n trigger,\n aslink,\n}: {\n sections: UserMenuSection[];\n trigger?: React.ReactNode;\n aslink: React.ElementType;\n}) {\n const LinkComponent = aslink ?? 'button';\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n {trigger ?? (\n <button className=\"flex items-center justify-center p-2 bg-blue-500 hover:bg-blue-600 active:bg-blue-700 text-white rounded-full cursor-pointer\">\n <UserCircle />\n </button>\n )}\n </DropdownMenuTrigger>\n <DropdownMenuContent className=\"w-56\" align=\"start\">\n {sections.map((section, index) => {\n return (\n <div key={section.label ?? index}>\n {section.label && <DropdownMenuLabel>{section.label}</DropdownMenuLabel>}\n {section.items && section.items.length > 0 && (\n <DropdownMenuGroup>\n {section.items.map((item) => {\n return (\n <DropdownMenuItem key={item.label}>\n {item.link ? (\n <LinkComponent\n to={item.link ?? '/'}\n href={item.link ?? '/'}\n className={cn('w-full text-left cursor-pointer', item.className)}\n >\n {item.label}\n </LinkComponent>\n ) : (\n <button\n onClick={item.action}\n className={cn('w-full text-left cursor-pointer', item.className)}\n >\n {item.label}\n </button>\n )}\n </DropdownMenuItem>\n );\n })}\n </DropdownMenuGroup>\n )}\n {section.separator && <DropdownMenuSeparator />}\n </div>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;AACA,OAAO,WAAW;AAClB,SAAS,kBAAkB;AAkBpB,SAAS,UAAU;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,QAAM,gBAAgB,0BAAU;AAEhC,SACE,oCAAC,oBACC,oCAAC,uBAAoB,SAAO,QACzB,4BACC,oCAAC,YAAO,WAAU,kIAChB,oCAAC,gBAAW,CACd,CAEJ,GACA,oCAAC,uBAAoB,WAAU,QAAO,OAAM,WACzC,SAAS,IAAI,CAAC,SAAS,UAAU;AAzC1C;AA0CU,WACE,oCAAC,SAAI,MAAK,aAAQ,UAAR,YAAiB,SACxB,QAAQ,SAAS,oCAAC,yBAAmB,QAAQ,KAAM,GACnD,QAAQ,SAAS,QAAQ,MAAM,SAAS,KACvC,oCAAC,yBACE,QAAQ,MAAM,IAAI,CAAC,SAAS;AA/C/C,UAAAA,KAAA;AAgDoB,aACE,oCAAC,oBAAiB,KAAK,KAAK,SACzB,KAAK,OACJ;AAAA,QAAC;AAAA;AAAA,UACC,KAAIA,MAAA,KAAK,SAAL,OAAAA,MAAa;AAAA,UACjB,OAAM,UAAK,SAAL,YAAa;AAAA,UACnB,WAAW,GAAG,mCAAmC,KAAK,SAAS;AAAA;AAAA,QAE9D,KAAK;AAAA,MACR,IAEA;AAAA,QAAC;AAAA;AAAA,UACC,SAAS,KAAK;AAAA,UACd,WAAW,GAAG,mCAAmC,KAAK,SAAS;AAAA;AAAA,QAE9D,KAAK;AAAA,MACR,CAEJ;AAAA,IAEJ,CAAC,CACH,GAED,QAAQ,aAAa,oCAAC,2BAAsB,CAC/C;AAAA,EAEJ,CAAC,CACH,CACF;AAEJ;","names":["_a"]}
@@ -0,0 +1,51 @@
1
+ "use client";
2
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+ var _chunkNI2SIUXOjs = require('./chunk-NI2SIUXO.js');
11
+
12
+
13
+ var _chunk6N4WCMTEjs = require('./chunk-6N4WCMTE.js');
14
+
15
+ // layouts/simple/user-menu.tsx
16
+ var _react = require('react'); var _react2 = _interopRequireDefault(_react);
17
+ var _lucidereact = require('lucide-react');
18
+ function UserMenus({
19
+ sections,
20
+ trigger,
21
+ aslink
22
+ }) {
23
+ const LinkComponent = aslink != null ? aslink : "button";
24
+ return /* @__PURE__ */ _react2.default.createElement(_chunkNI2SIUXOjs.DropdownMenu, null, /* @__PURE__ */ _react2.default.createElement(_chunkNI2SIUXOjs.DropdownMenuTrigger, { asChild: true }, trigger != null ? trigger : /* @__PURE__ */ _react2.default.createElement("button", { className: "flex items-center justify-center p-2 bg-blue-500 hover:bg-blue-600 active:bg-blue-700 text-white rounded-full cursor-pointer" }, /* @__PURE__ */ _react2.default.createElement(_lucidereact.UserCircle, null))), /* @__PURE__ */ _react2.default.createElement(_chunkNI2SIUXOjs.DropdownMenuContent, { className: "w-56", align: "start" }, sections.map((section, index) => {
25
+ var _a;
26
+ return /* @__PURE__ */ _react2.default.createElement("div", { key: (_a = section.label) != null ? _a : index }, section.label && /* @__PURE__ */ _react2.default.createElement(_chunkNI2SIUXOjs.DropdownMenuLabel, null, section.label), section.items && section.items.length > 0 && /* @__PURE__ */ _react2.default.createElement(_chunkNI2SIUXOjs.DropdownMenuGroup, null, section.items.map((item) => {
27
+ var _a2, _b;
28
+ return /* @__PURE__ */ _react2.default.createElement(_chunkNI2SIUXOjs.DropdownMenuItem, { key: item.label }, item.link ? /* @__PURE__ */ _react2.default.createElement(
29
+ LinkComponent,
30
+ {
31
+ to: (_a2 = item.link) != null ? _a2 : "/",
32
+ href: (_b = item.link) != null ? _b : "/",
33
+ className: _chunk6N4WCMTEjs.cn.call(void 0, "w-full text-left cursor-pointer", item.className)
34
+ },
35
+ item.label
36
+ ) : /* @__PURE__ */ _react2.default.createElement(
37
+ "button",
38
+ {
39
+ onClick: item.action,
40
+ className: _chunk6N4WCMTEjs.cn.call(void 0, "w-full text-left cursor-pointer", item.className)
41
+ },
42
+ item.label
43
+ ));
44
+ })), section.separator && /* @__PURE__ */ _react2.default.createElement(_chunkNI2SIUXOjs.DropdownMenuSeparator, null));
45
+ })));
46
+ }
47
+
48
+
49
+
50
+ exports.UserMenus = UserMenus;
51
+ //# sourceMappingURL=chunk-ZOF6UW3D.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-ZOF6UW3D.js","../layouts/simple/user-menu.tsx"],"names":["_a"],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACA;ACZA,4EAAkB;AAClB,2CAA2B;AAkBpB,SAAS,SAAA,CAAU;AAAA,EACxB,QAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAIG;AACD,EAAA,MAAM,cAAA,EAAgB,OAAA,GAAA,KAAA,EAAA,OAAA,EAAU,QAAA;AAEhC,EAAA,uBACE,eAAA,CAAA,aAAA,CAAC,6BAAA,EAAA,IAAA,kBACC,eAAA,CAAA,aAAA,CAAC,oCAAA,EAAA,EAAoB,OAAA,EAAO,KAAA,CAAA,EACzB,QAAA,GAAA,KAAA,EAAA,QAAA,kBACC,eAAA,CAAA,aAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAU,+HAAA,CAAA,kBAChB,eAAA,CAAA,aAAA,CAAC,uBAAA,EAAA,IAAW,CACd,CAEJ,CAAA,kBACA,eAAA,CAAA,aAAA,CAAC,oCAAA,EAAA,EAAoB,SAAA,EAAU,MAAA,EAAO,KAAA,EAAM,QAAA,CAAA,EACzC,QAAA,CAAS,GAAA,CAAI,CAAC,OAAA,EAAS,KAAA,EAAA,GAAU;AAzC1C,IAAA,IAAA,EAAA;AA0CU,IAAA,uBACE,eAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAA,CAAK,GAAA,EAAA,OAAA,CAAQ,KAAA,EAAA,GAAR,KAAA,EAAA,GAAA,EAAiB,MAAA,CAAA,EACxB,OAAA,CAAQ,MAAA,mBAAS,eAAA,CAAA,aAAA,CAAC,kCAAA,EAAA,IAAA,EAAmB,OAAA,CAAQ,KAAM,CAAA,EACnD,OAAA,CAAQ,MAAA,GAAS,OAAA,CAAQ,KAAA,CAAM,OAAA,EAAS,EAAA,mBACvC,eAAA,CAAA,aAAA,CAAC,kCAAA,EAAA,IAAA,EACE,OAAA,CAAQ,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAA,GAAS;AA/C/C,MAAA,IAAAA,GAAAA,EAAA,EAAA;AAgDoB,MAAA,uBACE,eAAA,CAAA,aAAA,CAAC,iCAAA,EAAA,EAAiB,GAAA,EAAK,IAAA,CAAK,MAAA,CAAA,EACzB,IAAA,CAAK,KAAA,kBACJ,eAAA,CAAA,aAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAA,CAAIA,IAAAA,EAAA,IAAA,CAAK,IAAA,EAAA,GAAL,KAAA,EAAAA,IAAAA,EAAa,GAAA;AAAA,UACjB,IAAA,EAAA,CAAM,GAAA,EAAA,IAAA,CAAK,IAAA,EAAA,GAAL,KAAA,EAAA,GAAA,EAAa,GAAA;AAAA,UACnB,SAAA,EAAW,iCAAA,iCAAG,EAAmC,IAAA,CAAK,SAAS;AAAA,QAAA,CAAA;AAAA,QAE9D,IAAA,CAAK;AAAA,MACR,EAAA,kBAEA,eAAA,CAAA,aAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,IAAA,CAAK,MAAA;AAAA,UACd,SAAA,EAAW,iCAAA,iCAAG,EAAmC,IAAA,CAAK,SAAS;AAAA,QAAA,CAAA;AAAA,QAE9D,IAAA,CAAK;AAAA,MACR,CAEJ,CAAA;AAAA,IAEJ,CAAC,CACH,CAAA,EAED,OAAA,CAAQ,UAAA,mBAAa,eAAA,CAAA,aAAA,CAAC,sCAAA,EAAA,IAAsB,CAC/C,CAAA;AAAA,EAEJ,CAAC,CACH,CACF,CAAA;AAEJ;ADjCA;AACA;AACE;AACF,8BAAC","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-ZOF6UW3D.js","sourcesContent":[null,"\"use client\";\nimport React from 'react';\nimport { UserCircle } from 'lucide-react';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from '../../components/ui/dropdown-menu';\nimport { cn } from '../../lib/utils';\nimport type { MenuItem, UserMenuSection } from './types';\n\nexport function UserMenus({\n sections,\n trigger,\n aslink,\n}: {\n sections: UserMenuSection[];\n trigger?: React.ReactNode;\n aslink: React.ElementType;\n}) {\n const LinkComponent = aslink ?? 'button';\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n {trigger ?? (\n <button className=\"flex items-center justify-center p-2 bg-blue-500 hover:bg-blue-600 active:bg-blue-700 text-white rounded-full cursor-pointer\">\n <UserCircle />\n </button>\n )}\n </DropdownMenuTrigger>\n <DropdownMenuContent className=\"w-56\" align=\"start\">\n {sections.map((section, index) => {\n return (\n <div key={section.label ?? index}>\n {section.label && <DropdownMenuLabel>{section.label}</DropdownMenuLabel>}\n {section.items && section.items.length > 0 && (\n <DropdownMenuGroup>\n {section.items.map((item) => {\n return (\n <DropdownMenuItem key={item.label}>\n {item.link ? (\n <LinkComponent\n to={item.link ?? '/'}\n href={item.link ?? '/'}\n className={cn('w-full text-left cursor-pointer', item.className)}\n >\n {item.label}\n </LinkComponent>\n ) : (\n <button\n onClick={item.action}\n className={cn('w-full text-left cursor-pointer', item.className)}\n >\n {item.label}\n </button>\n )}\n </DropdownMenuItem>\n );\n })}\n </DropdownMenuGroup>\n )}\n {section.separator && <DropdownMenuSeparator />}\n </div>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n"]}
@@ -23,7 +23,7 @@ declare const CommandInput: React.ForwardRefExoticComponent<Omit<Omit<Pick<Pick<
23
23
  ref?: React.Ref<HTMLInputElement>;
24
24
  } & {
25
25
  asChild?: boolean;
26
- }, "key" | "asChild" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "onChange" | "value" | "type"> & {
26
+ }, "key" | "asChild" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "onChange" | "type" | "value"> & {
27
27
  value?: string;
28
28
  onValueChange?: (search: string) => void;
29
29
  } & React.RefAttributes<HTMLInputElement>, "ref"> & React.RefAttributes<HTMLInputElement>>;
@@ -23,7 +23,7 @@ declare const CommandInput: React.ForwardRefExoticComponent<Omit<Omit<Pick<Pick<
23
23
  ref?: React.Ref<HTMLInputElement>;
24
24
  } & {
25
25
  asChild?: boolean;
26
- }, "key" | "asChild" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "onChange" | "value" | "type"> & {
26
+ }, "key" | "asChild" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "onChange" | "type" | "value"> & {
27
27
  value?: string;
28
28
  onValueChange?: (search: string) => void;
29
29
  } & React.RefAttributes<HTMLInputElement>, "ref"> & React.RefAttributes<HTMLInputElement>>;
@@ -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<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"> & {
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"> & {
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<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"> & {
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"> & {
6
6
  className?: string;
7
7
  collapsedSize?: number | undefined;
8
8
  collapsible?: boolean | undefined;
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
3
+ require('../../../chunk-5SLUBHNN.js');
3
4
 
4
5
 
5
6
  var _chunk273TIMKMjs = require('../../../chunk-273TIMKM.js');
@@ -8,7 +9,6 @@ var _chunk273TIMKMjs = require('../../../chunk-273TIMKM.js');
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,sCAAmC;AACnC;AACE;AACF,6DAAmC;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,4 +1,5 @@
1
1
  "use client";
2
+ import "../../../chunk-B2Z7BNYW.mjs";
2
3
  import {
3
4
  DialogProvider
4
5
  } from "../../../chunk-5RW6O56P.mjs";
@@ -7,7 +8,6 @@ import {
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,
@@ -0,0 +1,52 @@
1
+ import React__default from 'react';
2
+ import { UserMenuSection, MenuItem } from './types.mjs';
3
+
4
+ interface LayoutProps {
5
+ logo?: {
6
+ src?: string;
7
+ link?: string;
8
+ className?: string;
9
+ };
10
+ user?: {
11
+ menuSections: UserMenuSection[];
12
+ trigger?: React__default.ReactNode;
13
+ };
14
+ left?: {
15
+ menus: MenuItem[];
16
+ classNames?: {
17
+ nav?: string;
18
+ link?: string;
19
+ };
20
+ };
21
+ right?: {
22
+ menus: MenuItem[];
23
+ classNames?: {
24
+ nav?: string;
25
+ link?: string;
26
+ };
27
+ };
28
+ sidebar?: {
29
+ title: string;
30
+ content: React__default.ReactNode;
31
+ };
32
+ footer?: {
33
+ menus: MenuItem[];
34
+ content?: string;
35
+ classNames?: {
36
+ wrapper?: string;
37
+ nav?: string;
38
+ link?: string;
39
+ };
40
+ };
41
+ classNames?: {
42
+ header?: string;
43
+ content?: string;
44
+ contentBottom?: string;
45
+ };
46
+ loading?: boolean;
47
+ children?: React__default.ReactNode;
48
+ aslink: React__default.ElementType;
49
+ }
50
+ declare function SimpleLayout(props: LayoutProps): React__default.JSX.Element;
51
+
52
+ export { SimpleLayout as default };
@@ -0,0 +1,52 @@
1
+ import React__default from 'react';
2
+ import { UserMenuSection, MenuItem } from './types.js';
3
+
4
+ interface LayoutProps {
5
+ logo?: {
6
+ src?: string;
7
+ link?: string;
8
+ className?: string;
9
+ };
10
+ user?: {
11
+ menuSections: UserMenuSection[];
12
+ trigger?: React__default.ReactNode;
13
+ };
14
+ left?: {
15
+ menus: MenuItem[];
16
+ classNames?: {
17
+ nav?: string;
18
+ link?: string;
19
+ };
20
+ };
21
+ right?: {
22
+ menus: MenuItem[];
23
+ classNames?: {
24
+ nav?: string;
25
+ link?: string;
26
+ };
27
+ };
28
+ sidebar?: {
29
+ title: string;
30
+ content: React__default.ReactNode;
31
+ };
32
+ footer?: {
33
+ menus: MenuItem[];
34
+ content?: string;
35
+ classNames?: {
36
+ wrapper?: string;
37
+ nav?: string;
38
+ link?: string;
39
+ };
40
+ };
41
+ classNames?: {
42
+ header?: string;
43
+ content?: string;
44
+ contentBottom?: string;
45
+ };
46
+ loading?: boolean;
47
+ children?: React__default.ReactNode;
48
+ aslink: React__default.ElementType;
49
+ }
50
+ declare function SimpleLayout(props: LayoutProps): React__default.JSX.Element;
51
+
52
+ export { SimpleLayout as default };
@@ -0,0 +1,163 @@
1
+ "use client";
2
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3
+
4
+
5
+ var _chunkQGXFFTPHjs = require('../../chunk-QGXFFTPH.js');
6
+
7
+
8
+ var _chunkZOF6UW3Djs = require('../../chunk-ZOF6UW3D.js');
9
+ require('../../chunk-NI2SIUXO.js');
10
+
11
+
12
+ var _chunk6N4WCMTEjs = require('../../chunk-6N4WCMTE.js');
13
+ require('../../chunk-2NMEKWO5.js');
14
+
15
+ // layouts/simple/index.tsx
16
+ var _react = require('react'); var _react2 = _interopRequireDefault(_react);
17
+ var _lucidereact = require('lucide-react');
18
+ function SimpleLayout(props) {
19
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
20
+ const { logo, user, left, right, sidebar, footer, classNames, loading, children, aslink } = props;
21
+ const [mobileMenuOpen, setMobileMenuOpen] = _react.useState.call(void 0, false);
22
+ const [isMobile, setIsMobile] = _react.useState.call(void 0, false);
23
+ const LinkComponent = aslink != null ? aslink : "button";
24
+ _react.useEffect.call(void 0, () => {
25
+ const handleResize = () => {
26
+ setIsMobile(window.innerWidth < 768);
27
+ };
28
+ handleResize();
29
+ window.addEventListener("resize", handleResize);
30
+ return () => window.removeEventListener("resize", handleResize);
31
+ }, []);
32
+ const toggleMobileMenu = () => setMobileMenuOpen(!mobileMenuOpen);
33
+ const leftMenus = (_a = left == null ? void 0 : left.menus) != null ? _a : [];
34
+ const rightMenus = (_b = right == null ? void 0 : right.menus) != null ? _b : [];
35
+ const topMenus = [...leftMenus, ...rightMenus];
36
+ const userMenuSections = (_c = user == null ? void 0 : user.menuSections) != null ? _c : [];
37
+ const footerMenus = (_d = footer == null ? void 0 : footer.menus) != null ? _d : [];
38
+ return /* @__PURE__ */ _react2.default.createElement("div", { className: "flex flex-col min-h-screen" }, /* @__PURE__ */ _react2.default.createElement(
39
+ "header",
40
+ {
41
+ className: _chunk6N4WCMTEjs.cn.call(void 0,
42
+ "px-4 py-2 flex items-center justify-between bg-gray-100 border-b border-gray-300",
43
+ classNames == null ? void 0 : classNames.header
44
+ )
45
+ },
46
+ /* @__PURE__ */ _react2.default.createElement("div", { className: "flex items-center space-x-4" }, sidebar && /* @__PURE__ */ _react2.default.createElement(
47
+ "button",
48
+ {
49
+ className: "bg-transparent border-gray-400 hover:border-gray-500",
50
+ onClick: () => {
51
+ }
52
+ }
53
+ ), logo && /* @__PURE__ */ _react2.default.createElement("div", { className: _chunk6N4WCMTEjs.cn.call(void 0, "_logo") }, /* @__PURE__ */ _react2.default.createElement(LinkComponent, { to: (_e = logo.link) != null ? _e : "/", href: (_f = logo.link) != null ? _f : "/" }, /* @__PURE__ */ _react2.default.createElement("img", { src: logo.src, alt: "Logo", className: _chunk6N4WCMTEjs.cn.call(void 0, "h-10", logo == null ? void 0 : logo.className) }))), /* @__PURE__ */ _react2.default.createElement("nav", { className: _chunk6N4WCMTEjs.cn.call(void 0, "flex space-x-4 items-center", (_g = left == null ? void 0 : left.classNames) == null ? void 0 : _g.nav) }, leftMenus.map(
54
+ (item) => {
55
+ var _a2, _b2;
56
+ return item.link ? /* @__PURE__ */ _react2.default.createElement(
57
+ LinkComponent,
58
+ {
59
+ key: item.label,
60
+ to: item.link,
61
+ href: item.link,
62
+ className: _chunk6N4WCMTEjs.cn.call(void 0,
63
+ "text-left text-secondary visited:text-secondary hover:text-primary cursor-pointer no-underline",
64
+ (_a2 = left == null ? void 0 : left.classNames) == null ? void 0 : _a2.nav,
65
+ item.className,
66
+ item.title || !isMobile ? "inline-block" : "hidden"
67
+ )
68
+ },
69
+ item.label
70
+ ) : /* @__PURE__ */ _react2.default.createElement(
71
+ "button",
72
+ {
73
+ key: item.label,
74
+ onClick: item.action,
75
+ className: _chunk6N4WCMTEjs.cn.call(void 0,
76
+ "text-left text-secondary visited:text-secondary hover:text-primary cursor-pointer no-underline",
77
+ (_b2 = left == null ? void 0 : left.classNames) == null ? void 0 : _b2.nav,
78
+ item.className,
79
+ item.title || !isMobile ? "inline-block" : "hidden"
80
+ )
81
+ },
82
+ item.label
83
+ );
84
+ }
85
+ ))),
86
+ /* @__PURE__ */ _react2.default.createElement("nav", { className: _chunk6N4WCMTEjs.cn.call(void 0, "hidden md:flex space-x-4 items-center", (_h = right == null ? void 0 : right.classNames) == null ? void 0 : _h.nav) }, rightMenus.map(
87
+ (item) => {
88
+ var _a2, _b2;
89
+ return item.link ? /* @__PURE__ */ _react2.default.createElement(
90
+ LinkComponent,
91
+ {
92
+ key: item.label,
93
+ to: item.link,
94
+ href: item.link,
95
+ className: _chunk6N4WCMTEjs.cn.call(void 0,
96
+ "text-left text-secondary visited:text-secondary hover:text-primary cursor-pointer no-underline",
97
+ (_a2 = right == null ? void 0 : right.classNames) == null ? void 0 : _a2.nav,
98
+ item.className
99
+ )
100
+ },
101
+ item.label
102
+ ) : /* @__PURE__ */ _react2.default.createElement(
103
+ "button",
104
+ {
105
+ key: item.label,
106
+ onClick: item.action,
107
+ className: _chunk6N4WCMTEjs.cn.call(void 0,
108
+ "text-left text-secondary visited:text-secondary hover:text-primary cursor-pointer no-underline",
109
+ (_b2 = right == null ? void 0 : right.classNames) == null ? void 0 : _b2.nav,
110
+ item.className
111
+ )
112
+ },
113
+ item.label
114
+ );
115
+ }
116
+ ), userMenuSections.length > 0 && /* @__PURE__ */ _react2.default.createElement(_chunkZOF6UW3Djs.UserMenus, { sections: userMenuSections, trigger: user == null ? void 0 : user.trigger, aslink })),
117
+ /* @__PURE__ */ _react2.default.createElement("button", { onClick: toggleMobileMenu, className: "md:hidden p-2 text-gray-700 hover:text-primary cursor-pointer" }, /* @__PURE__ */ _react2.default.createElement(_lucidereact.Menu, { className: "" }))
118
+ ), isMobile && mobileMenuOpen && /* @__PURE__ */ _react2.default.createElement("div", { className: "w-full" }, /* @__PURE__ */ _react2.default.createElement(_chunkQGXFFTPHjs.MobileMenu, { sections: userMenuSections, aslink, onClick: toggleMobileMenu })), /* @__PURE__ */ _react2.default.createElement("main", { className: _chunk6N4WCMTEjs.cn.call(void 0, "p-4 flex flex-col flex-1", classNames == null ? void 0 : classNames.content) }, !loading && /* @__PURE__ */ _react2.default.createElement("div", { className: "flex items-center justify-center h-full" }, children), /* @__PURE__ */ _react2.default.createElement("div", { className: _chunk6N4WCMTEjs.cn.call(void 0, "flex-1", classNames == null ? void 0 : classNames.contentBottom) })), footer && /* @__PURE__ */ _react2.default.createElement(
119
+ "footer",
120
+ {
121
+ className: _chunk6N4WCMTEjs.cn.call(void 0,
122
+ "px-4 py-4 bg-gray-100 border-t border-gray-300 text-sm text-gray-600",
123
+ (_i = footer == null ? void 0 : footer.classNames) == null ? void 0 : _i.wrapper
124
+ )
125
+ },
126
+ /* @__PURE__ */ _react2.default.createElement("nav", { className: _chunk6N4WCMTEjs.cn.call(void 0, "flex flex-wrap justify-center space-x-4", (_j = footer == null ? void 0 : footer.classNames) == null ? void 0 : _j.nav) }, footerMenus.map(
127
+ (item) => {
128
+ var _a2, _b2;
129
+ return item.link ? /* @__PURE__ */ _react2.default.createElement(
130
+ LinkComponent,
131
+ {
132
+ key: item.label,
133
+ to: item.link,
134
+ href: item.link,
135
+ className: _chunk6N4WCMTEjs.cn.call(void 0,
136
+ "text-secondary hover:text-primary cursor-pointer no-underline",
137
+ (_a2 = footer == null ? void 0 : footer.classNames) == null ? void 0 : _a2.link,
138
+ item.className
139
+ )
140
+ },
141
+ item.label
142
+ ) : /* @__PURE__ */ _react2.default.createElement(
143
+ "button",
144
+ {
145
+ key: item.label,
146
+ onClick: item.action,
147
+ className: _chunk6N4WCMTEjs.cn.call(void 0,
148
+ "text-secondary hover:text-primary cursor-pointer no-underline",
149
+ (_b2 = footer == null ? void 0 : footer.classNames) == null ? void 0 : _b2.link,
150
+ item.className
151
+ )
152
+ },
153
+ item.label
154
+ );
155
+ }
156
+ )),
157
+ /* @__PURE__ */ _react2.default.createElement("div", { className: "mt-2 text-center" }, footer == null ? void 0 : footer.content)
158
+ ));
159
+ }
160
+
161
+
162
+ exports.default = SimpleLayout;
163
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/layouts/simple/index.js","../../../layouts/simple/index.tsx"],"names":["_a","_b"],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/layouts/simple/index.js","sourcesContent":[null,"\"use client\";\nimport React, { useState, useMemo, useEffect } from 'react';\nimport { Menu } from 'lucide-react';\nimport { cn } from '../../lib/utils';\nimport { UserMenus } from './user-menu';\nimport { MobileMenu } from './mobile-menu';\nimport type { MenuItem, UserMenuSection } from './types';\n\ninterface LayoutProps {\n logo?: {\n src?: string;\n link?: string;\n className?: string;\n };\n user?: {\n menuSections: UserMenuSection[];\n trigger?: React.ReactNode;\n };\n left?: {\n menus: MenuItem[];\n classNames?: {\n nav?: string;\n link?: string;\n };\n };\n right?: {\n menus: MenuItem[];\n classNames?: {\n nav?: string;\n link?: string;\n };\n };\n sidebar?: {\n title: string;\n content: React.ReactNode;\n };\n footer?: {\n menus: MenuItem[];\n content?: string;\n classNames?: {\n wrapper?: string;\n nav?: string;\n link?: string;\n };\n };\n classNames?: {\n header?: string;\n content?: string;\n contentBottom?: string;\n };\n loading?: boolean;\n children?: React.ReactNode;\n aslink: React.ElementType;\n}\n\nexport default function SimpleLayout(props: LayoutProps) {\n const { logo, user, left, right, sidebar, footer, classNames, loading, children, aslink } = props;\n\n const [mobileMenuOpen, setMobileMenuOpen] = useState(false);\n const [isMobile, setIsMobile] = useState(false);\n\n const LinkComponent = aslink ?? 'button';\n\n useEffect(() => {\n const handleResize = () => {\n setIsMobile(window.innerWidth < 768);\n };\n handleResize();\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n const toggleMobileMenu = () => setMobileMenuOpen(!mobileMenuOpen);\n\n const leftMenus = left?.menus ?? [];\n const rightMenus = right?.menus ?? [];\n const topMenus = [...leftMenus, ...rightMenus];\n const userMenuSections = user?.menuSections ?? [];\n const footerMenus = footer?.menus ?? [];\n\n return (\n <div className=\"flex flex-col min-h-screen\">\n {/* Header */}\n <header\n className={cn(\n 'px-4 py-2 flex items-center justify-between bg-gray-100 border-b border-gray-300',\n classNames?.header,\n )}\n >\n <div className=\"flex items-center space-x-4\">\n {sidebar && (\n <button\n className=\"bg-transparent border-gray-400 hover:border-gray-500\"\n onClick={() => {\n /* open sidebar */\n }}\n >\n {/* icon */}\n </button>\n )}\n {logo && (\n <div className={cn('_logo')}>\n <LinkComponent to={logo.link ?? '/'} href={logo.link ?? '/'}>\n <img src={logo.src} alt=\"Logo\" className={cn('h-10', logo?.className)} />\n </LinkComponent>\n </div>\n )}\n\n {/* Left Menus */}\n <nav className={cn('flex space-x-4 items-center', left?.classNames?.nav)}>\n {leftMenus.map((item) =>\n item.link ? (\n <LinkComponent\n key={item.label}\n to={item.link}\n href={item.link}\n className={cn(\n 'text-left text-secondary visited:text-secondary hover:text-primary cursor-pointer no-underline',\n left?.classNames?.nav,\n item.className,\n item.title || !isMobile ? 'inline-block' : 'hidden',\n )}\n >\n {item.label}\n </LinkComponent>\n ) : (\n <button\n key={item.label}\n onClick={item.action}\n className={cn(\n 'text-left text-secondary visited:text-secondary hover:text-primary cursor-pointer no-underline',\n left?.classNames?.nav,\n item.className,\n item.title || !isMobile ? 'inline-block' : 'hidden',\n )}\n >\n {item.label}\n </button>\n ),\n )}\n </nav>\n </div>\n\n {/* Right menus */}\n <nav className={cn('hidden md:flex space-x-4 items-center', right?.classNames?.nav)}>\n {rightMenus.map((item) =>\n item.link ? (\n <LinkComponent\n key={item.label}\n to={item.link}\n href={item.link}\n className={cn(\n 'text-left text-secondary visited:text-secondary hover:text-primary cursor-pointer no-underline',\n right?.classNames?.nav,\n item.className,\n )}\n >\n {item.label}\n </LinkComponent>\n ) : (\n <button\n key={item.label}\n onClick={item.action}\n className={cn(\n 'text-left text-secondary visited:text-secondary hover:text-primary cursor-pointer no-underline',\n right?.classNames?.nav,\n item.className,\n )}\n >\n {item.label}\n </button>\n ),\n )}\n {userMenuSections.length > 0 && (\n <UserMenus sections={userMenuSections} trigger={user?.trigger} aslink={aslink} />\n )}\n </nav>\n\n {/* Mobile menu button */}\n <button onClick={toggleMobileMenu} className=\"md:hidden p-2 text-gray-700 hover:text-primary cursor-pointer\">\n <Menu className=\"\" />\n </button>\n </header>\n\n {/* Mobile menu */}\n {isMobile && mobileMenuOpen && (\n <div className=\"w-full\">\n <MobileMenu sections={userMenuSections} aslink={aslink} onClick={toggleMobileMenu} />\n </div>\n )}\n\n {/* Main content */}\n <main className={cn('p-4 flex flex-col flex-1', classNames?.content)}>\n {!loading && <div className=\"flex items-center justify-center h-full\">{children}</div>}\n <div className={cn('flex-1', classNames?.contentBottom)}></div>\n </main>\n\n {/* Footer */}\n {footer && (\n <footer\n className={cn(\n 'px-4 py-4 bg-gray-100 border-t border-gray-300 text-sm text-gray-600',\n footer?.classNames?.wrapper,\n )}\n >\n <nav className={cn('flex flex-wrap justify-center space-x-4', footer?.classNames?.nav)}>\n {footerMenus.map((item) =>\n item.link ? (\n <LinkComponent\n key={item.label}\n to={item.link}\n href={item.link}\n className={cn(\n 'text-secondary hover:text-primary cursor-pointer no-underline',\n footer?.classNames?.link,\n item.className,\n )}\n >\n {item.label}\n </LinkComponent>\n ) : (\n <button\n key={item.label}\n onClick={item.action}\n className={cn(\n 'text-secondary hover:text-primary cursor-pointer no-underline',\n footer?.classNames?.link,\n item.className,\n )}\n >\n {item.label}\n </button>\n ),\n )}\n </nav>\n <div className=\"mt-2 text-center\">{footer?.content}</div>\n </footer>\n )}\n </div>\n );\n}\n"]}
@@ -0,0 +1,162 @@
1
+ "use client";
2
+ import {
3
+ MobileMenu
4
+ } from "../../chunk-OXTCSLHP.mjs";
5
+ import {
6
+ UserMenus
7
+ } from "../../chunk-YWILOKX4.mjs";
8
+ import "../../chunk-IAJ2ZBSJ.mjs";
9
+ import {
10
+ cn
11
+ } from "../../chunk-F5XCCSBC.mjs";
12
+ import "../../chunk-YOSPWY5K.mjs";
13
+
14
+ // layouts/simple/index.tsx
15
+ import React, { useState, useEffect } from "react";
16
+ import { Menu } from "lucide-react";
17
+ function SimpleLayout(props) {
18
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
19
+ const { logo, user, left, right, sidebar, footer, classNames, loading, children, aslink } = props;
20
+ const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
21
+ const [isMobile, setIsMobile] = useState(false);
22
+ const LinkComponent = aslink != null ? aslink : "button";
23
+ useEffect(() => {
24
+ const handleResize = () => {
25
+ setIsMobile(window.innerWidth < 768);
26
+ };
27
+ handleResize();
28
+ window.addEventListener("resize", handleResize);
29
+ return () => window.removeEventListener("resize", handleResize);
30
+ }, []);
31
+ const toggleMobileMenu = () => setMobileMenuOpen(!mobileMenuOpen);
32
+ const leftMenus = (_a = left == null ? void 0 : left.menus) != null ? _a : [];
33
+ const rightMenus = (_b = right == null ? void 0 : right.menus) != null ? _b : [];
34
+ const topMenus = [...leftMenus, ...rightMenus];
35
+ const userMenuSections = (_c = user == null ? void 0 : user.menuSections) != null ? _c : [];
36
+ const footerMenus = (_d = footer == null ? void 0 : footer.menus) != null ? _d : [];
37
+ return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col min-h-screen" }, /* @__PURE__ */ React.createElement(
38
+ "header",
39
+ {
40
+ className: cn(
41
+ "px-4 py-2 flex items-center justify-between bg-gray-100 border-b border-gray-300",
42
+ classNames == null ? void 0 : classNames.header
43
+ )
44
+ },
45
+ /* @__PURE__ */ React.createElement("div", { className: "flex items-center space-x-4" }, sidebar && /* @__PURE__ */ React.createElement(
46
+ "button",
47
+ {
48
+ className: "bg-transparent border-gray-400 hover:border-gray-500",
49
+ onClick: () => {
50
+ }
51
+ }
52
+ ), logo && /* @__PURE__ */ React.createElement("div", { className: cn("_logo") }, /* @__PURE__ */ React.createElement(LinkComponent, { to: (_e = logo.link) != null ? _e : "/", href: (_f = logo.link) != null ? _f : "/" }, /* @__PURE__ */ React.createElement("img", { src: logo.src, alt: "Logo", className: cn("h-10", logo == null ? void 0 : logo.className) }))), /* @__PURE__ */ React.createElement("nav", { className: cn("flex space-x-4 items-center", (_g = left == null ? void 0 : left.classNames) == null ? void 0 : _g.nav) }, leftMenus.map(
53
+ (item) => {
54
+ var _a2, _b2;
55
+ return item.link ? /* @__PURE__ */ React.createElement(
56
+ LinkComponent,
57
+ {
58
+ key: item.label,
59
+ to: item.link,
60
+ href: item.link,
61
+ className: cn(
62
+ "text-left text-secondary visited:text-secondary hover:text-primary cursor-pointer no-underline",
63
+ (_a2 = left == null ? void 0 : left.classNames) == null ? void 0 : _a2.nav,
64
+ item.className,
65
+ item.title || !isMobile ? "inline-block" : "hidden"
66
+ )
67
+ },
68
+ item.label
69
+ ) : /* @__PURE__ */ React.createElement(
70
+ "button",
71
+ {
72
+ key: item.label,
73
+ onClick: item.action,
74
+ className: cn(
75
+ "text-left text-secondary visited:text-secondary hover:text-primary cursor-pointer no-underline",
76
+ (_b2 = left == null ? void 0 : left.classNames) == null ? void 0 : _b2.nav,
77
+ item.className,
78
+ item.title || !isMobile ? "inline-block" : "hidden"
79
+ )
80
+ },
81
+ item.label
82
+ );
83
+ }
84
+ ))),
85
+ /* @__PURE__ */ React.createElement("nav", { className: cn("hidden md:flex space-x-4 items-center", (_h = right == null ? void 0 : right.classNames) == null ? void 0 : _h.nav) }, rightMenus.map(
86
+ (item) => {
87
+ var _a2, _b2;
88
+ return item.link ? /* @__PURE__ */ React.createElement(
89
+ LinkComponent,
90
+ {
91
+ key: item.label,
92
+ to: item.link,
93
+ href: item.link,
94
+ className: cn(
95
+ "text-left text-secondary visited:text-secondary hover:text-primary cursor-pointer no-underline",
96
+ (_a2 = right == null ? void 0 : right.classNames) == null ? void 0 : _a2.nav,
97
+ item.className
98
+ )
99
+ },
100
+ item.label
101
+ ) : /* @__PURE__ */ React.createElement(
102
+ "button",
103
+ {
104
+ key: item.label,
105
+ onClick: item.action,
106
+ className: cn(
107
+ "text-left text-secondary visited:text-secondary hover:text-primary cursor-pointer no-underline",
108
+ (_b2 = right == null ? void 0 : right.classNames) == null ? void 0 : _b2.nav,
109
+ item.className
110
+ )
111
+ },
112
+ item.label
113
+ );
114
+ }
115
+ ), userMenuSections.length > 0 && /* @__PURE__ */ React.createElement(UserMenus, { sections: userMenuSections, trigger: user == null ? void 0 : user.trigger, aslink })),
116
+ /* @__PURE__ */ React.createElement("button", { onClick: toggleMobileMenu, className: "md:hidden p-2 text-gray-700 hover:text-primary cursor-pointer" }, /* @__PURE__ */ React.createElement(Menu, { className: "" }))
117
+ ), isMobile && mobileMenuOpen && /* @__PURE__ */ React.createElement("div", { className: "w-full" }, /* @__PURE__ */ React.createElement(MobileMenu, { sections: userMenuSections, aslink, onClick: toggleMobileMenu })), /* @__PURE__ */ React.createElement("main", { className: cn("p-4 flex flex-col flex-1", classNames == null ? void 0 : classNames.content) }, !loading && /* @__PURE__ */ React.createElement("div", { className: "flex items-center justify-center h-full" }, children), /* @__PURE__ */ React.createElement("div", { className: cn("flex-1", classNames == null ? void 0 : classNames.contentBottom) })), footer && /* @__PURE__ */ React.createElement(
118
+ "footer",
119
+ {
120
+ className: cn(
121
+ "px-4 py-4 bg-gray-100 border-t border-gray-300 text-sm text-gray-600",
122
+ (_i = footer == null ? void 0 : footer.classNames) == null ? void 0 : _i.wrapper
123
+ )
124
+ },
125
+ /* @__PURE__ */ React.createElement("nav", { className: cn("flex flex-wrap justify-center space-x-4", (_j = footer == null ? void 0 : footer.classNames) == null ? void 0 : _j.nav) }, footerMenus.map(
126
+ (item) => {
127
+ var _a2, _b2;
128
+ return item.link ? /* @__PURE__ */ React.createElement(
129
+ LinkComponent,
130
+ {
131
+ key: item.label,
132
+ to: item.link,
133
+ href: item.link,
134
+ className: cn(
135
+ "text-secondary hover:text-primary cursor-pointer no-underline",
136
+ (_a2 = footer == null ? void 0 : footer.classNames) == null ? void 0 : _a2.link,
137
+ item.className
138
+ )
139
+ },
140
+ item.label
141
+ ) : /* @__PURE__ */ React.createElement(
142
+ "button",
143
+ {
144
+ key: item.label,
145
+ onClick: item.action,
146
+ className: cn(
147
+ "text-secondary hover:text-primary cursor-pointer no-underline",
148
+ (_b2 = footer == null ? void 0 : footer.classNames) == null ? void 0 : _b2.link,
149
+ item.className
150
+ )
151
+ },
152
+ item.label
153
+ );
154
+ }
155
+ )),
156
+ /* @__PURE__ */ React.createElement("div", { className: "mt-2 text-center" }, footer == null ? void 0 : footer.content)
157
+ ));
158
+ }
159
+ export {
160
+ SimpleLayout as default
161
+ };
162
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../layouts/simple/index.tsx"],"sourcesContent":["\"use client\";\nimport React, { useState, useMemo, useEffect } from 'react';\nimport { Menu } from 'lucide-react';\nimport { cn } from '../../lib/utils';\nimport { UserMenus } from './user-menu';\nimport { MobileMenu } from './mobile-menu';\nimport type { MenuItem, UserMenuSection } from './types';\n\ninterface LayoutProps {\n logo?: {\n src?: string;\n link?: string;\n className?: string;\n };\n user?: {\n menuSections: UserMenuSection[];\n trigger?: React.ReactNode;\n };\n left?: {\n menus: MenuItem[];\n classNames?: {\n nav?: string;\n link?: string;\n };\n };\n right?: {\n menus: MenuItem[];\n classNames?: {\n nav?: string;\n link?: string;\n };\n };\n sidebar?: {\n title: string;\n content: React.ReactNode;\n };\n footer?: {\n menus: MenuItem[];\n content?: string;\n classNames?: {\n wrapper?: string;\n nav?: string;\n link?: string;\n };\n };\n classNames?: {\n header?: string;\n content?: string;\n contentBottom?: string;\n };\n loading?: boolean;\n children?: React.ReactNode;\n aslink: React.ElementType;\n}\n\nexport default function SimpleLayout(props: LayoutProps) {\n const { logo, user, left, right, sidebar, footer, classNames, loading, children, aslink } = props;\n\n const [mobileMenuOpen, setMobileMenuOpen] = useState(false);\n const [isMobile, setIsMobile] = useState(false);\n\n const LinkComponent = aslink ?? 'button';\n\n useEffect(() => {\n const handleResize = () => {\n setIsMobile(window.innerWidth < 768);\n };\n handleResize();\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n const toggleMobileMenu = () => setMobileMenuOpen(!mobileMenuOpen);\n\n const leftMenus = left?.menus ?? [];\n const rightMenus = right?.menus ?? [];\n const topMenus = [...leftMenus, ...rightMenus];\n const userMenuSections = user?.menuSections ?? [];\n const footerMenus = footer?.menus ?? [];\n\n return (\n <div className=\"flex flex-col min-h-screen\">\n {/* Header */}\n <header\n className={cn(\n 'px-4 py-2 flex items-center justify-between bg-gray-100 border-b border-gray-300',\n classNames?.header,\n )}\n >\n <div className=\"flex items-center space-x-4\">\n {sidebar && (\n <button\n className=\"bg-transparent border-gray-400 hover:border-gray-500\"\n onClick={() => {\n /* open sidebar */\n }}\n >\n {/* icon */}\n </button>\n )}\n {logo && (\n <div className={cn('_logo')}>\n <LinkComponent to={logo.link ?? '/'} href={logo.link ?? '/'}>\n <img src={logo.src} alt=\"Logo\" className={cn('h-10', logo?.className)} />\n </LinkComponent>\n </div>\n )}\n\n {/* Left Menus */}\n <nav className={cn('flex space-x-4 items-center', left?.classNames?.nav)}>\n {leftMenus.map((item) =>\n item.link ? (\n <LinkComponent\n key={item.label}\n to={item.link}\n href={item.link}\n className={cn(\n 'text-left text-secondary visited:text-secondary hover:text-primary cursor-pointer no-underline',\n left?.classNames?.nav,\n item.className,\n item.title || !isMobile ? 'inline-block' : 'hidden',\n )}\n >\n {item.label}\n </LinkComponent>\n ) : (\n <button\n key={item.label}\n onClick={item.action}\n className={cn(\n 'text-left text-secondary visited:text-secondary hover:text-primary cursor-pointer no-underline',\n left?.classNames?.nav,\n item.className,\n item.title || !isMobile ? 'inline-block' : 'hidden',\n )}\n >\n {item.label}\n </button>\n ),\n )}\n </nav>\n </div>\n\n {/* Right menus */}\n <nav className={cn('hidden md:flex space-x-4 items-center', right?.classNames?.nav)}>\n {rightMenus.map((item) =>\n item.link ? (\n <LinkComponent\n key={item.label}\n to={item.link}\n href={item.link}\n className={cn(\n 'text-left text-secondary visited:text-secondary hover:text-primary cursor-pointer no-underline',\n right?.classNames?.nav,\n item.className,\n )}\n >\n {item.label}\n </LinkComponent>\n ) : (\n <button\n key={item.label}\n onClick={item.action}\n className={cn(\n 'text-left text-secondary visited:text-secondary hover:text-primary cursor-pointer no-underline',\n right?.classNames?.nav,\n item.className,\n )}\n >\n {item.label}\n </button>\n ),\n )}\n {userMenuSections.length > 0 && (\n <UserMenus sections={userMenuSections} trigger={user?.trigger} aslink={aslink} />\n )}\n </nav>\n\n {/* Mobile menu button */}\n <button onClick={toggleMobileMenu} className=\"md:hidden p-2 text-gray-700 hover:text-primary cursor-pointer\">\n <Menu className=\"\" />\n </button>\n </header>\n\n {/* Mobile menu */}\n {isMobile && mobileMenuOpen && (\n <div className=\"w-full\">\n <MobileMenu sections={userMenuSections} aslink={aslink} onClick={toggleMobileMenu} />\n </div>\n )}\n\n {/* Main content */}\n <main className={cn('p-4 flex flex-col flex-1', classNames?.content)}>\n {!loading && <div className=\"flex items-center justify-center h-full\">{children}</div>}\n <div className={cn('flex-1', classNames?.contentBottom)}></div>\n </main>\n\n {/* Footer */}\n {footer && (\n <footer\n className={cn(\n 'px-4 py-4 bg-gray-100 border-t border-gray-300 text-sm text-gray-600',\n footer?.classNames?.wrapper,\n )}\n >\n <nav className={cn('flex flex-wrap justify-center space-x-4', footer?.classNames?.nav)}>\n {footerMenus.map((item) =>\n item.link ? (\n <LinkComponent\n key={item.label}\n to={item.link}\n href={item.link}\n className={cn(\n 'text-secondary hover:text-primary cursor-pointer no-underline',\n footer?.classNames?.link,\n item.className,\n )}\n >\n {item.label}\n </LinkComponent>\n ) : (\n <button\n key={item.label}\n onClick={item.action}\n className={cn(\n 'text-secondary hover:text-primary cursor-pointer no-underline',\n footer?.classNames?.link,\n item.className,\n )}\n >\n {item.label}\n </button>\n ),\n )}\n </nav>\n <div className=\"mt-2 text-center\">{footer?.content}</div>\n </footer>\n )}\n </div>\n );\n}\n"],"mappings":"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","names":["_a","_b"]}
@@ -0,0 +1,11 @@
1
+ import React__default from 'react';
2
+ import { UserMenuSection } from './types.mjs';
3
+
4
+ interface MobileMenuProps {
5
+ sections: UserMenuSection[];
6
+ aslink?: React__default.ElementType;
7
+ onClick?: () => void;
8
+ }
9
+ declare function MobileMenu({ sections, aslink, onClick }: MobileMenuProps): React__default.JSX.Element;
10
+
11
+ export { MobileMenu };
@@ -0,0 +1,11 @@
1
+ import React__default from 'react';
2
+ import { UserMenuSection } from './types.js';
3
+
4
+ interface MobileMenuProps {
5
+ sections: UserMenuSection[];
6
+ aslink?: React__default.ElementType;
7
+ onClick?: () => void;
8
+ }
9
+ declare function MobileMenu({ sections, aslink, onClick }: MobileMenuProps): React__default.JSX.Element;
10
+
11
+ export { MobileMenu };
@@ -0,0 +1,11 @@
1
+ "use client";
2
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
3
+
4
+
5
+ var _chunkQGXFFTPHjs = require('../../chunk-QGXFFTPH.js');
6
+ require('../../chunk-6N4WCMTE.js');
7
+ require('../../chunk-2NMEKWO5.js');
8
+
9
+
10
+ exports.MobileMenu = _chunkQGXFFTPHjs.MobileMenu;
11
+ //# sourceMappingURL=mobile-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/layouts/simple/mobile-menu.js"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACF,0DAAgC;AAChC,mCAAgC;AAChC,mCAAgC;AAChC;AACE;AACF,iDAAC","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/layouts/simple/mobile-menu.js"}
@@ -0,0 +1,10 @@
1
+ "use client";
2
+ import {
3
+ MobileMenu
4
+ } from "../../chunk-OXTCSLHP.mjs";
5
+ import "../../chunk-F5XCCSBC.mjs";
6
+ import "../../chunk-YOSPWY5K.mjs";
7
+ export {
8
+ MobileMenu
9
+ };
10
+ //# sourceMappingURL=mobile-menu.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,15 @@
1
+ interface MenuItem {
2
+ label: string;
3
+ icon?: React.ReactNode;
4
+ link?: string;
5
+ action?: () => void;
6
+ className?: string;
7
+ title?: boolean;
8
+ }
9
+ interface UserMenuSection {
10
+ label?: string;
11
+ separator?: boolean;
12
+ items?: MenuItem[];
13
+ }
14
+
15
+ export type { MenuItem, UserMenuSection };
@@ -0,0 +1,15 @@
1
+ interface MenuItem {
2
+ label: string;
3
+ icon?: React.ReactNode;
4
+ link?: string;
5
+ action?: () => void;
6
+ className?: string;
7
+ title?: boolean;
8
+ }
9
+ interface UserMenuSection {
10
+ label?: string;
11
+ separator?: boolean;
12
+ items?: MenuItem[];
13
+ }
14
+
15
+ export type { MenuItem, UserMenuSection };
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ "use strict";
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/layouts/simple/types.js"],"names":[],"mappings":"AAAA,yBAAY","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/layouts/simple/types.js"}
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,10 @@
1
+ import React__default from 'react';
2
+ import { UserMenuSection } from './types.mjs';
3
+
4
+ declare function UserMenus({ sections, trigger, aslink, }: {
5
+ sections: UserMenuSection[];
6
+ trigger?: React__default.ReactNode;
7
+ aslink: React__default.ElementType;
8
+ }): React__default.JSX.Element;
9
+
10
+ export { UserMenus };
@@ -0,0 +1,10 @@
1
+ import React__default from 'react';
2
+ import { UserMenuSection } from './types.js';
3
+
4
+ declare function UserMenus({ sections, trigger, aslink, }: {
5
+ sections: UserMenuSection[];
6
+ trigger?: React__default.ReactNode;
7
+ aslink: React__default.ElementType;
8
+ }): React__default.JSX.Element;
9
+
10
+ export { UserMenus };
@@ -0,0 +1,12 @@
1
+ "use client";
2
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
3
+
4
+
5
+ var _chunkZOF6UW3Djs = require('../../chunk-ZOF6UW3D.js');
6
+ require('../../chunk-NI2SIUXO.js');
7
+ require('../../chunk-6N4WCMTE.js');
8
+ require('../../chunk-2NMEKWO5.js');
9
+
10
+
11
+ exports.UserMenus = _chunkZOF6UW3Djs.UserMenus;
12
+ //# sourceMappingURL=user-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/layouts/simple/user-menu.js"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACF,0DAAgC;AAChC,mCAAgC;AAChC,mCAAgC;AAChC,mCAAgC;AAChC;AACE;AACF,+CAAC","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/layouts/simple/user-menu.js"}
@@ -0,0 +1,11 @@
1
+ "use client";
2
+ import {
3
+ UserMenus
4
+ } from "../../chunk-YWILOKX4.mjs";
5
+ import "../../chunk-IAJ2ZBSJ.mjs";
6
+ import "../../chunk-F5XCCSBC.mjs";
7
+ import "../../chunk-YOSPWY5K.mjs";
8
+ export {
9
+ UserMenus
10
+ };
11
+ //# sourceMappingURL=user-menu.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.0.48",
2
+ "version": "0.0.50",
3
3
  "description": "shadcn UI theme",
4
4
  "license": "MIT",
5
5
  "sideEffects": false,
@@ -46,12 +46,11 @@
46
46
  "lodash-es": "^4.17.21",
47
47
  "lucide-react": "^0.544.0",
48
48
  "next-themes": "^0.4.4",
49
- "react-day-picker": "9.7.0",
49
+ "react-day-picker": "9.11.0",
50
50
  "react-resizable-panels": "^3.0.0",
51
- "recharts": "^3.0.0",
52
51
  "tailwind-merge": "^3.0.2",
53
52
  "vaul": "^1.1.2",
54
- "zod": "^3.24.2"
53
+ "zod": "^4.0.0"
55
54
  },
56
55
  "peerDependencies": {
57
56
  "react": "^18.3.1 || ^19.0.0",