react-shadcn-kit 0.0.6 → 0.0.8

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 (159) hide show
  1. package/dist/assets/global.css +1 -1
  2. package/dist/atoms/accordion.js +1 -0
  3. package/dist/atoms/accordion.js.map +1 -0
  4. package/dist/atoms/alert-dialog.js +1 -0
  5. package/dist/atoms/alert-dialog.js.map +1 -0
  6. package/dist/atoms/alert.js +1 -0
  7. package/dist/atoms/alert.js.map +1 -0
  8. package/dist/atoms/aspect-ratio.js +1 -0
  9. package/dist/atoms/aspect-ratio.js.map +1 -0
  10. package/dist/atoms/avatar.js +1 -0
  11. package/dist/atoms/avatar.js.map +1 -0
  12. package/dist/atoms/badge.js +1 -0
  13. package/dist/atoms/badge.js.map +1 -0
  14. package/dist/atoms/breadcrumb.js +1 -0
  15. package/dist/atoms/breadcrumb.js.map +1 -0
  16. package/dist/atoms/button-group.js +1 -0
  17. package/dist/atoms/button-group.js.map +1 -0
  18. package/dist/atoms/button.js +1 -0
  19. package/dist/atoms/button.js.map +1 -0
  20. package/dist/atoms/calendar.js +1 -0
  21. package/dist/atoms/calendar.js.map +1 -0
  22. package/dist/atoms/card.js +1 -0
  23. package/dist/atoms/card.js.map +1 -0
  24. package/dist/atoms/carousel.js +1 -0
  25. package/dist/atoms/carousel.js.map +1 -0
  26. package/dist/atoms/chart.js +1 -0
  27. package/dist/atoms/chart.js.map +1 -0
  28. package/dist/atoms/checkbox.js +1 -0
  29. package/dist/atoms/checkbox.js.map +1 -0
  30. package/dist/atoms/collapsible.js +1 -0
  31. package/dist/atoms/collapsible.js.map +1 -0
  32. package/dist/atoms/command.js +1 -0
  33. package/dist/atoms/command.js.map +1 -0
  34. package/dist/atoms/context-menu.js +1 -0
  35. package/dist/atoms/context-menu.js.map +1 -0
  36. package/dist/atoms/dialog.js +1 -0
  37. package/dist/atoms/dialog.js.map +1 -0
  38. package/dist/atoms/drawer.js +1 -0
  39. package/dist/atoms/drawer.js.map +1 -0
  40. package/dist/atoms/dropdown-menu.js +1 -0
  41. package/dist/atoms/dropdown-menu.js.map +1 -0
  42. package/dist/atoms/empty.js +1 -0
  43. package/dist/atoms/empty.js.map +1 -0
  44. package/dist/atoms/field.js +1 -0
  45. package/dist/atoms/field.js.map +1 -0
  46. package/dist/atoms/form.js +1 -0
  47. package/dist/atoms/form.js.map +1 -0
  48. package/dist/atoms/hover-card.js +1 -0
  49. package/dist/atoms/hover-card.js.map +1 -0
  50. package/dist/atoms/index.d.ts +54 -0
  51. package/dist/atoms/index.js +342 -0
  52. package/dist/atoms/index.js.map +1 -0
  53. package/dist/atoms/input-group.js +1 -0
  54. package/dist/atoms/input-group.js.map +1 -0
  55. package/dist/atoms/input-otp.js +1 -0
  56. package/dist/atoms/input-otp.js.map +1 -0
  57. package/dist/atoms/input.js +1 -0
  58. package/dist/atoms/input.js.map +1 -0
  59. package/dist/atoms/item.js +1 -0
  60. package/dist/atoms/item.js.map +1 -0
  61. package/dist/atoms/kbd.js +1 -0
  62. package/dist/atoms/kbd.js.map +1 -0
  63. package/dist/atoms/label.js +1 -0
  64. package/dist/atoms/label.js.map +1 -0
  65. package/dist/atoms/menubar.js +1 -0
  66. package/dist/atoms/menubar.js.map +1 -0
  67. package/dist/atoms/navigation-menu.js +1 -0
  68. package/dist/atoms/navigation-menu.js.map +1 -0
  69. package/dist/atoms/pagination.js +1 -0
  70. package/dist/atoms/pagination.js.map +1 -0
  71. package/dist/atoms/popover.js +1 -0
  72. package/dist/atoms/popover.js.map +1 -0
  73. package/dist/atoms/progress.js +1 -0
  74. package/dist/atoms/progress.js.map +1 -0
  75. package/dist/atoms/radio-group.js +1 -0
  76. package/dist/atoms/radio-group.js.map +1 -0
  77. package/dist/atoms/resizable.js +1 -0
  78. package/dist/atoms/resizable.js.map +1 -0
  79. package/dist/atoms/scroll-area.js +1 -0
  80. package/dist/atoms/scroll-area.js.map +1 -0
  81. package/dist/atoms/select.js +1 -0
  82. package/dist/atoms/select.js.map +1 -0
  83. package/dist/atoms/separator.js +1 -0
  84. package/dist/atoms/separator.js.map +1 -0
  85. package/dist/atoms/sheet.js +1 -0
  86. package/dist/atoms/sheet.js.map +1 -0
  87. package/dist/atoms/sidebar.js +6 -5
  88. package/dist/atoms/sidebar.js.map +1 -0
  89. package/dist/atoms/skeleton.js +1 -0
  90. package/dist/atoms/skeleton.js.map +1 -0
  91. package/dist/atoms/slider.js +1 -0
  92. package/dist/atoms/slider.js.map +1 -0
  93. package/dist/atoms/sonner.js +1 -0
  94. package/dist/atoms/sonner.js.map +1 -0
  95. package/dist/atoms/spinner.js +1 -0
  96. package/dist/atoms/spinner.js.map +1 -0
  97. package/dist/atoms/switch.js +1 -0
  98. package/dist/atoms/switch.js.map +1 -0
  99. package/dist/atoms/table.js +1 -0
  100. package/dist/atoms/table.js.map +1 -0
  101. package/dist/atoms/tabs.js +1 -0
  102. package/dist/atoms/tabs.js.map +1 -0
  103. package/dist/atoms/textarea.js +1 -0
  104. package/dist/atoms/textarea.js.map +1 -0
  105. package/dist/atoms/theme-provider.d.ts +3 -0
  106. package/dist/atoms/theme-provider.js +12 -0
  107. package/dist/atoms/theme-provider.js.map +1 -0
  108. package/dist/atoms/toggle-group.js +1 -0
  109. package/dist/atoms/toggle-group.js.map +1 -0
  110. package/dist/atoms/toggle.js +1 -0
  111. package/dist/atoms/toggle.js.map +1 -0
  112. package/dist/atoms/tooltip.js +1 -0
  113. package/dist/atoms/tooltip.js.map +1 -0
  114. package/dist/default-layout.js +78 -0
  115. package/dist/default-layout.js.map +1 -0
  116. package/dist/hooks/index.d.ts +1 -0
  117. package/dist/hooks/index.js +5 -0
  118. package/dist/hooks/index.js.map +1 -0
  119. package/dist/hooks/use-mobile.js +1 -0
  120. package/dist/hooks/use-mobile.js.map +1 -0
  121. package/dist/index.d.ts +3 -6
  122. package/dist/index.js +342 -347
  123. package/dist/index.js.map +1 -0
  124. package/dist/lib/index.d.ts +1 -0
  125. package/dist/lib/index.js +5 -0
  126. package/dist/lib/index.js.map +1 -0
  127. package/dist/lib/utils.js +1 -0
  128. package/dist/lib/utils.js.map +1 -0
  129. package/dist/molecules/index.d.ts +3 -0
  130. package/dist/molecules/index.js +9 -0
  131. package/dist/molecules/index.js.map +1 -0
  132. package/dist/{organisms/app-sidebar-client.js → molecules/sidebar-theme-toggle.js} +1 -0
  133. package/dist/molecules/sidebar-theme-toggle.js.map +1 -0
  134. package/dist/molecules/theme-toggle.js +1 -0
  135. package/dist/molecules/theme-toggle.js.map +1 -0
  136. package/dist/molecules/user-menu.js +1 -0
  137. package/dist/molecules/user-menu.js.map +1 -0
  138. package/dist/organisms/app-navbar.d.ts +26 -3
  139. package/dist/organisms/app-navbar.js +77 -64
  140. package/dist/organisms/app-navbar.js.map +1 -0
  141. package/dist/organisms/app-sidebar.d.ts +30 -7
  142. package/dist/organisms/app-sidebar.js +110 -106
  143. package/dist/organisms/app-sidebar.js.map +1 -0
  144. package/dist/organisms/index.d.ts +2 -0
  145. package/dist/organisms/index.js +7 -0
  146. package/dist/organisms/index.js.map +1 -0
  147. package/package.json +28 -24
  148. package/dist/config/blog-layout.config.js +0 -19
  149. package/dist/config/default-Sidebar.js +0 -83
  150. package/dist/config/default-layout.js +0 -21
  151. package/dist/config/default-navigation.js +0 -57
  152. package/dist/config/sidebar.config.js +0 -11
  153. package/dist/layouts/blog-layout.d.ts +0 -7
  154. package/dist/layouts/blog-layout.js +0 -29
  155. package/dist/layouts/default-layout.d.ts +0 -7
  156. package/dist/layouts/default-layout.js +0 -54
  157. package/dist/layouts/sidebar-scroll-layout.d.ts +0 -8
  158. package/dist/layouts/sidebar-scroll-layout.js +0 -49
  159. /package/dist/{organisms/app-sidebar-client.d.ts → molecules/sidebar-theme-toggle.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1 @@
1
+ export * from './utils';
@@ -0,0 +1,5 @@
1
+ import { cn as c } from "./utils.js";
2
+ export {
3
+ c as cn
4
+ };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
package/dist/lib/utils.js CHANGED
@@ -6,3 +6,4 @@ function n(...r) {
6
6
  export {
7
7
  n as cn
8
8
  };
9
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sources":["../../src/lib/utils.ts"],"sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n"],"names":["clsx","twMerge","cn","inputs"],"mappings":"AAGO,SAAA,QAAAA,SAAA;AAAA,SAAA,WAAAC,SAAA;AAAA,SAASC,KAAMC,GAAsB;AAC1C,SAAOF,EAAQD,EAAKG,CAAM,CAAC;AAC7B;"}
@@ -0,0 +1,3 @@
1
+ export * from './sidebar-theme-toggle';
2
+ export * from './theme-toggle';
3
+ export * from './user-menu';
@@ -0,0 +1,9 @@
1
+ import { SidebarThemeToggle as r } from "./sidebar-theme-toggle.js";
2
+ import { ThemeToggle as g } from "./theme-toggle.js";
3
+ import { UserMenu as f } from "./user-menu.js";
4
+ export {
5
+ r as SidebarThemeToggle,
6
+ g as ThemeToggle,
7
+ f as UserMenu
8
+ };
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
@@ -36,3 +36,4 @@ function k() {
36
36
  export {
37
37
  k as SidebarThemeToggle
38
38
  };
39
+ //# sourceMappingURL=sidebar-theme-toggle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar-theme-toggle.js","sources":["../../src/molecules/sidebar-theme-toggle.tsx"],"sourcesContent":["\"use client\";\n\nimport { ChevronDown, Moon, Sun } from \"lucide-react\";\nimport { useTheme } from \"next-themes\";\nimport { SidebarMenu, SidebarMenuButton, SidebarMenuItem } from \"@/atoms/sidebar\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/atoms/dropdown-menu\";\n\n/**\n * Client-only theme toggle component for sidebar footer.\n * This component uses next-themes hooks and must remain client-side.\n */\nexport function SidebarThemeToggle() {\n const { setTheme } = useTheme();\n\n return (\n <SidebarMenu>\n <SidebarMenuItem>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <SidebarMenuButton size=\"lg\">\n <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n <Sun className=\"size-4 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0\" />\n <Moon className=\"absolute size-4 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100\" />\n </div>\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-semibold\">Theme</span>\n <span className=\"truncate text-xs\">Toggle theme</span>\n </div>\n <ChevronDown className=\"ml-auto size-4\" />\n </SidebarMenuButton>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n side=\"bottom\"\n align=\"end\"\n sideOffset={4}\n >\n <DropdownMenuItem onClick={() => setTheme(\"light\")}>Light</DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme(\"dark\")}>Dark</DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme(\"system\")}>System</DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </SidebarMenuItem>\n </SidebarMenu>\n );\n}\n"],"names":["jsx","jsxs","Sun","Moon","ChevronDown","useTheme","SidebarMenu","SidebarMenuItem","SidebarMenuButton","DropdownMenu","DropdownMenuTrigger","DropdownMenuContent","DropdownMenuItem","SidebarThemeToggle","setTheme"],"mappings":"AAgBO,SAAA,OAAAA,GAAA,QAAAC,SAAA;AAAA,SAAA,OAAAC,GAAA,QAAAC,GAAA,eAAAC,SAAA;AAAA,SAAA,YAAAC,SAAA;AAAA,SAAA,eAAAC,GAAA,mBAAAC,GAAA,qBAAAC,SAAA;AAAA,SAAA,gBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,oBAAAC,SAAA;AAAA,SAASC,IAAqB;AACnC,QAAM,EAAE,UAAAC,EAAA,IAAaT,EAAA;AAErB,SACE,gBAAAL,EAACM,GAAA,EACC,UAAA,gBAAAN,EAACO,GAAA,EACC,4BAACE,GAAA,EACC,UAAA;AAAA,IAAA,gBAAAT,EAACU,KAAoB,SAAO,IAC1B,UAAA,gBAAAT,EAACO,GAAA,EAAkB,MAAK,MACtB,UAAA;AAAA,MAAA,gBAAAP,EAAC,OAAA,EAAI,WAAU,uHACb,UAAA;AAAA,QAAA,gBAAAD,EAACE,GAAA,EAAI,WAAU,wEAAA,CAAwE;AAAA,QACvF,gBAAAF,EAACG,GAAA,EAAK,WAAU,gFAAA,CAAgF;AAAA,MAAA,GAClG;AAAA,MACA,gBAAAF,EAAC,OAAA,EAAI,WAAU,+CACb,UAAA;AAAA,QAAA,gBAAAD,EAAC,QAAA,EAAK,WAAU,0BAAyB,UAAA,SAAK;AAAA,QAC9C,gBAAAA,EAAC,QAAA,EAAK,WAAU,oBAAmB,UAAA,eAAA,CAAY;AAAA,MAAA,GACjD;AAAA,MACA,gBAAAA,EAACI,GAAA,EAAY,WAAU,iBAAA,CAAiB;AAAA,IAAA,EAAA,CAC1C,EAAA,CACF;AAAA,IACA,gBAAAH;AAAA,MAACU;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,MAAK;AAAA,QACL,OAAM;AAAA,QACN,YAAY;AAAA,QAEZ,UAAA;AAAA,UAAA,gBAAAX,EAACY,KAAiB,SAAS,MAAME,EAAS,OAAO,GAAG,UAAA,SAAK;AAAA,4BACxDF,GAAA,EAAiB,SAAS,MAAME,EAAS,MAAM,GAAG,UAAA,QAAI;AAAA,4BACtDF,GAAA,EAAiB,SAAS,MAAME,EAAS,QAAQ,GAAG,UAAA,SAAA,CAAM;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAC7D,EAAA,CACF,GACF,GACF;AAEJ;"}
@@ -28,3 +28,4 @@ function N({
28
28
  export {
29
29
  N as ThemeToggle
30
30
  };
31
+ //# sourceMappingURL=theme-toggle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-toggle.js","sources":["../../src/molecules/theme-toggle.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Moon, Sun } from \"lucide-react\";\nimport { useTheme } from \"next-themes\";\n\nimport { Button } from \"@/atoms/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/atoms/dropdown-menu\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface ThemeToggleProps {\n align?: \"center\" | \"start\" | \"end\";\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n sideOffset?: number;\n className?: string;\n trigger?: React.ReactNode;\n}\n\nexport function ThemeToggle({\n align = \"end\",\n side = \"bottom\",\n sideOffset = 4,\n className,\n trigger,\n}: ThemeToggleProps) {\n const { setTheme } = useTheme();\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n {trigger ? (\n trigger\n ) : (\n <Button variant=\"ghost\" size=\"icon\" className={cn(\"h-9 w-9\", className)}>\n <Sun className=\"h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0\" />\n <Moon className=\"absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100\" />\n <span className=\"sr-only\">Toggle theme</span>\n </Button>\n )}\n </DropdownMenuTrigger>\n <DropdownMenuContent align={align} side={side} sideOffset={sideOffset}>\n <DropdownMenuItem onClick={() => setTheme(\"light\")}>Light</DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme(\"dark\")}>Dark</DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme(\"system\")}>System</DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n"],"names":["jsxs","jsx","Sun","Moon","useTheme","Button","DropdownMenu","DropdownMenuTrigger","DropdownMenuContent","DropdownMenuItem","cn","ThemeToggle","align","side","sideOffset","className","trigger","setTheme"],"mappings":"AAuBO,SAAA,QAAAA,GAAA,OAAAC,SAAA;AAAA,SAAA,OAAAC,GAAA,QAAAC,SAAA;AAAA,SAAA,YAAAC,SAAA;AAAA,SAAA,UAAAC,SAAA;AAAA,SAAA,gBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,oBAAAC,SAAA;AAAA,SAAA,MAAAC,SAAA;AAAA,SAASC,EAAY;AAAA,EAC1B,OAAAC,IAAQ;AAAA,EACR,MAAAC,IAAO;AAAA,EACP,YAAAC,IAAa;AAAA,EACb,WAAAC;AAAA,EACA,SAAAC;AACF,GAAqB;AACnB,QAAM,EAAE,UAAAC,EAAA,IAAab,EAAA;AAErB,2BACGE,GAAA,EACC,UAAA;AAAA,IAAA,gBAAAL,EAACM,GAAA,EAAoB,SAAO,IACzB,UAAAS,KAGC,gBAAAhB,EAACK,GAAA,EAAO,SAAQ,SAAQ,MAAK,QAAO,WAAWK,EAAG,WAAWK,CAAS,GACpE,UAAA;AAAA,MAAA,gBAAAd,EAACC,GAAA,EAAI,WAAU,uFAAA,CAAuF;AAAA,MACtG,gBAAAD,EAACE,GAAA,EAAK,WAAU,+FAAA,CAA+F;AAAA,MAC/G,gBAAAF,EAAC,QAAA,EAAK,WAAU,WAAU,UAAA,eAAA,CAAY;AAAA,IAAA,EAAA,CACxC,EAAA,CAEJ;AAAA,IACA,gBAAAD,EAACQ,GAAA,EAAoB,OAAAI,GAAc,MAAAC,GAAY,YAAAC,GAC7C,UAAA;AAAA,MAAA,gBAAAb,EAACQ,KAAiB,SAAS,MAAMQ,EAAS,OAAO,GAAG,UAAA,SAAK;AAAA,wBACxDR,GAAA,EAAiB,SAAS,MAAMQ,EAAS,MAAM,GAAG,UAAA,QAAI;AAAA,wBACtDR,GAAA,EAAiB,SAAS,MAAMQ,EAAS,QAAQ,GAAG,UAAA,SAAA,CAAM;AAAA,IAAA,EAAA,CAC7D;AAAA,EAAA,GACF;AAEJ;"}
@@ -27,3 +27,4 @@ function b({ user: n, items: l, className: i }) {
27
27
  export {
28
28
  b as UserMenu
29
29
  };
30
+ //# sourceMappingURL=user-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-menu.js","sources":["../../src/molecules/user-menu.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/atoms/avatar\";\nimport { Button } from \"@/atoms/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@/atoms/dropdown-menu\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface UserMenuProps {\n user: {\n name: string;\n email: string;\n avatar?: string;\n };\n items?: Array<{\n label: string;\n href?: string;\n onClick?: () => void;\n icon?: React.ComponentType<{ className?: string }>;\n }>;\n className?: string;\n}\n\nexport function UserMenu({ user, items, className }: UserMenuProps) {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className={cn(\"rounded-full\", className)}>\n <Avatar className=\"h-8 w-8\">\n <AvatarImage src={user.avatar} alt={user.name} />\n <AvatarFallback>{user.name?.[0] ?? \"U\"}</AvatarFallback>\n </Avatar>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuLabel className=\"p-0 font-normal\">\n <div className=\"flex flex-col space-y-1\">\n <p className=\"text-sm font-medium leading-none\">{user.name}</p>\n <p className=\"text-xs leading-none text-muted-foreground\">{user.email}</p>\n </div>\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n {items?.map((item, i) => (\n <DropdownMenuItem key={i} asChild>\n <a href={item.href ?? \"#\"} onClick={item.onClick}>\n {item.icon && React.createElement(item.icon, { className: \"mr-2 h-4 w-4\" })}\n <span>{item.label}</span>\n </a>\n </DropdownMenuItem>\n ))}\n {!items?.length && (\n <DropdownMenuItem asChild>\n <a href=\"#profile\">Profile</a>\n </DropdownMenuItem>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n"],"names":["UserMenu","user","items","className","DropdownMenu","jsx","DropdownMenuTrigger","Button","cn","jsxs","Avatar","AvatarImage","AvatarFallback","DropdownMenuContent","DropdownMenuLabel","DropdownMenuSeparator","item","i","DropdownMenuItem","React"],"mappings":";;;;;;AA8BO,SAASA,EAAS,EAAE,MAAAC,GAAM,OAAAC,GAAO,WAAAC,KAA4B;AAClE,2BACGC,GAAA,EACC,UAAA;AAAA,IAAA,gBAAAC,EAACC,KAAoB,SAAO,IAC1B,UAAA,gBAAAD,EAACE,GAAA,EAAO,SAAQ,SAAQ,MAAK,QAAO,WAAWC,EAAG,gBAAgBL,CAAS,GACzE,UAAA,gBAAAM,EAACC,GAAA,EAAO,WAAU,WAChB,UAAA;AAAA,MAAA,gBAAAL,EAACM,KAAY,KAAKV,EAAK,QAAQ,KAAKA,EAAK,MAAM;AAAA,wBAC9CW,GAAA,EAAgB,UAAAX,EAAK,OAAO,CAAC,KAAK,IAAA,CAAI;AAAA,IAAA,EAAA,CACzC,GACF,GACF;AAAA,IACA,gBAAAQ,EAACI,GAAA,EAAoB,OAAM,OACzB,UAAA;AAAA,MAAA,gBAAAR,EAACS,KAAkB,WAAU,mBAC3B,UAAA,gBAAAL,EAAC,OAAA,EAAI,WAAU,2BACb,UAAA;AAAA,QAAA,gBAAAJ,EAAC,KAAA,EAAE,WAAU,oCAAoC,UAAAJ,EAAK,MAAK;AAAA,QAC3D,gBAAAI,EAAC,KAAA,EAAE,WAAU,8CAA8C,YAAK,MAAA,CAAM;AAAA,MAAA,EAAA,CACxE,EAAA,CACF;AAAA,wBACCU,GAAA,EAAsB;AAAA,MACtBb,GAAO,IAAI,CAACc,GAAMC,wBAChBC,GAAA,EAAyB,SAAO,IAC/B,UAAA,gBAAAT,EAAC,OAAE,MAAMO,EAAK,QAAQ,KAAK,SAASA,EAAK,SACtC,UAAA;AAAA,QAAAA,EAAK,QAAQG,EAAM,cAAcH,EAAK,MAAM,EAAE,WAAW,gBAAgB;AAAA,QAC1E,gBAAAX,EAAC,QAAA,EAAM,UAAAW,EAAK,MAAA,CAAM;AAAA,MAAA,GACpB,EAAA,GAJqBC,CAKvB,CACD;AAAA,MACA,CAACf,GAAO,UACP,gBAAAG,EAACa,GAAA,EAAiB,SAAO,IACvB,UAAA,gBAAAb,EAAC,KAAA,EAAE,MAAK,YAAW,UAAA,UAAA,CAAO,EAAA,CAC5B;AAAA,IAAA,EAAA,CAEJ;AAAA,EAAA,GACF;AAEJ;"}
@@ -1,6 +1,29 @@
1
- import { NavbarConfig } from '../types/navigation';
1
+ import { UserConfig, BrandingConfig, MenuItem, NotificationsList } from '../default-layout';
2
+ interface NavbarLabels {
3
+ profile?: string;
4
+ notifications?: string;
5
+ noNotifications?: string;
6
+ }
7
+ interface UserMenuItem {
8
+ label: string;
9
+ href?: string;
10
+ icon?: React.ComponentType<{
11
+ className?: string;
12
+ }>;
13
+ onClick?: () => void;
14
+ }
2
15
  interface AppNavbarProps {
3
- config?: Partial<NavbarConfig>;
16
+ items?: (MenuItem & {
17
+ icon?: React.ComponentType<{
18
+ className?: string;
19
+ }>;
20
+ })[];
21
+ searchPlaceholder?: string;
22
+ user?: UserConfig;
23
+ userMenuItems?: UserMenuItem[];
24
+ notifications?: NotificationsList[];
25
+ branding?: BrandingConfig;
26
+ labels?: NavbarLabels;
4
27
  showSearch?: boolean;
5
28
  showSidebarTrigger?: boolean;
6
29
  showUserMenu?: boolean;
@@ -9,5 +32,5 @@ interface AppNavbarProps {
9
32
  className?: string;
10
33
  style?: React.CSSProperties;
11
34
  }
12
- export declare function AppNavbar({ config, showSearch, showSidebarTrigger, showUserMenu, showThemeToggle, showNotifications, className, style, }: AppNavbarProps): import("react/jsx-runtime").JSX.Element;
35
+ export declare function AppNavbar({ items, searchPlaceholder, user, userMenuItems, notifications, branding, labels, showSearch, showSidebarTrigger, showUserMenu, showThemeToggle, showNotifications, className, style, }: AppNavbarProps): import("react/jsx-runtime").JSX.Element;
13
36
  export {};
@@ -1,82 +1,94 @@
1
- import { jsxs as t, Fragment as h, jsx as e } from "react/jsx-runtime";
2
- import { Search as f, Bell as g } from "lucide-react";
3
- import { Input as N } from "../atoms/input.js";
4
- import { SidebarTrigger as b } from "../atoms/sidebar.js";
5
- import { Separator as x } from "../atoms/separator.js";
6
- import { defaultNavbarConfig as n } from "../config/default-navigation.js";
7
- import { Button as w } from "../atoms/button.js";
8
- import { DropdownMenu as M, DropdownMenuTrigger as v, DropdownMenuContent as D, DropdownMenuLabel as I, DropdownMenuSeparator as C, DropdownMenuItem as P } from "../atoms/dropdown-menu.js";
9
- import { ThemeToggle as S } from "../molecules/theme-toggle.js";
1
+ import { jsxs as r, jsx as e, Fragment as w } from "react/jsx-runtime";
2
+ import { Search as v, Bell as b } from "lucide-react";
3
+ import { Input as M } from "../atoms/input.js";
4
+ import { Button as D } from "../atoms/button.js";
5
+ import { SidebarTrigger as S } from "../atoms/sidebar.js";
6
+ import { Separator as k } from "../atoms/separator.js";
7
+ import { ThemeToggle as y } from "../molecules/theme-toggle.js";
10
8
  import { UserMenu as T } from "../molecules/user-menu.js";
11
- function q({
12
- config: a,
13
- showSearch: o = !0,
14
- showSidebarTrigger: l = !0,
15
- showUserMenu: m = !0,
16
- showThemeToggle: c = !0,
17
- showNotifications: d = !0,
18
- className: i,
19
- style: u
9
+ import { DropdownMenu as j, DropdownMenuTrigger as I, DropdownMenuContent as U, DropdownMenuLabel as z, DropdownMenuSeparator as A, DropdownMenuItem as B } from "../atoms/dropdown-menu.js";
10
+ function K({
11
+ items: c = [],
12
+ searchPlaceholder: d = "Search...",
13
+ user: a,
14
+ userMenuItems: p,
15
+ notifications: o = [],
16
+ branding: l,
17
+ labels: n,
18
+ showSearch: h = !0,
19
+ showSidebarTrigger: u = !0,
20
+ showUserMenu: f = !0,
21
+ showThemeToggle: g = !0,
22
+ showNotifications: N = !0,
23
+ className: m,
24
+ style: x
20
25
  }) {
21
- const r = {
22
- items: a?.items || n.items,
23
- searchPlaceholder: a?.searchPlaceholder || n.searchPlaceholder,
24
- user: a?.user || n.user,
25
- userMenuItems: a?.userMenuItems || n.userMenuItems,
26
- notifications: a?.notifications || n.notifications,
27
- branding: a?.branding || n.branding
28
- };
29
- return /* @__PURE__ */ t(
26
+ return /* @__PURE__ */ r(
30
27
  "header",
31
28
  {
32
- className: "flex h-16 shrink-0 items-center gap-2 border-b px-4 bg-background sticky top-0 z-50" + (i ? ` ${i}` : ""),
33
- style: u,
29
+ className: "flex h-16 shrink-0 items-center gap-2 border-b px-4 bg-background sticky top-0 z-50" + (m ? ` ${m}` : ""),
30
+ style: x,
34
31
  children: [
35
- l && /* @__PURE__ */ t(h, { children: [
36
- /* @__PURE__ */ e(b, { className: "-ml-1" }),
37
- /* @__PURE__ */ e(x, { orientation: "vertical", className: "mr-2 h-4" })
32
+ u && /* @__PURE__ */ r(w, { children: [
33
+ /* @__PURE__ */ e(S, { className: "-ml-1" }),
34
+ /* @__PURE__ */ e(k, { orientation: "vertical", className: "mr-2 h-4" })
38
35
  ] }),
39
- r.branding && /* @__PURE__ */ t("a", { href: r.branding.href || "#", className: "flex items-center gap-2 mr-4", children: [
40
- r.branding.logo && /* @__PURE__ */ e(r.branding.logo, { className: "h-6 w-6" }),
41
- /* @__PURE__ */ e("span", { className: "font-semibold", children: r.branding.name })
36
+ l && /* @__PURE__ */ r("a", { href: "#", className: "flex items-center gap-2 mr-4", children: [
37
+ l.logoUrl && /* @__PURE__ */ e("img", { src: l.logoUrl, alt: l.logoAlt || "Logo", className: "h-6 w-6" }),
38
+ l.title && /* @__PURE__ */ e("span", { className: "font-semibold", children: l.title })
42
39
  ] }),
43
- /* @__PURE__ */ t("div", { className: "ml-auto flex items-center gap-2", children: [
44
- o && /* @__PURE__ */ t("div", { className: "relative", children: [
45
- /* @__PURE__ */ e(f, { className: "absolute left-2 top-2.5 h-4 w-4 text-muted-foreground" }),
46
- /* @__PURE__ */ e(
47
- N,
48
- {
49
- placeholder: r.searchPlaceholder,
50
- className: "pl-8 w-[200px] lg:w-[300px]"
51
- }
52
- )
40
+ /* @__PURE__ */ e("nav", { className: "flex items-center gap-6 text-sm font-medium", children: c?.map((t, s) => {
41
+ const i = t.icon;
42
+ return /* @__PURE__ */ r(
43
+ "a",
44
+ {
45
+ href: t.href,
46
+ className: `transition-colors hover:text-foreground/80 ${t.disabled ? "pointer-events-none opacity-50" : "text-foreground/60"}`,
47
+ children: [
48
+ i && /* @__PURE__ */ e(i, { className: "inline-block mr-1 h-4 w-4" }),
49
+ t.label
50
+ ]
51
+ },
52
+ s
53
+ );
54
+ }) }),
55
+ /* @__PURE__ */ r("div", { className: "ml-auto flex items-center gap-2", children: [
56
+ h && /* @__PURE__ */ r("div", { className: "relative", children: [
57
+ /* @__PURE__ */ e(v, { className: "absolute left-2 top-2.5 h-4 w-4 text-muted-foreground" }),
58
+ /* @__PURE__ */ e(M, { placeholder: d, className: "pl-8 w-[200px] lg:w-[300px]" })
53
59
  ] }),
54
- c && /* @__PURE__ */ e(S, {}),
55
- m && r.user && /* @__PURE__ */ e(T, { user: r.user, items: r.userMenuItems }),
56
- d && r.notifications && /* @__PURE__ */ t(M, { children: [
57
- /* @__PURE__ */ e(v, { asChild: !0, children: /* @__PURE__ */ t(w, { variant: "ghost", size: "icon", className: "relative", children: [
58
- /* @__PURE__ */ e(g, { className: "h-5 w-5" }),
59
- r.notifications.some((s) => !s.read) && /* @__PURE__ */ e("span", { className: "absolute right-2 top-2 h-2 w-2 rounded-full bg-red-600" }),
60
- /* @__PURE__ */ e("span", { className: "sr-only", children: "Notifications" })
60
+ g && /* @__PURE__ */ e(y, {}),
61
+ f && a && a.name && a.email && /* @__PURE__ */ e(
62
+ T,
63
+ {
64
+ user: { name: a.name, email: a.email, avatar: a.image },
65
+ items: p
66
+ }
67
+ ),
68
+ N && o && o.length > 0 && /* @__PURE__ */ r(j, { children: [
69
+ /* @__PURE__ */ e(I, { asChild: !0, children: /* @__PURE__ */ r(D, { variant: "ghost", size: "icon", className: "relative", children: [
70
+ /* @__PURE__ */ e(b, { className: "h-5 w-5" }),
71
+ o.some((t) => !t.read) && /* @__PURE__ */ e("span", { className: "absolute right-2 top-2 h-2 w-2 rounded-full bg-red-600" }),
72
+ /* @__PURE__ */ e("span", { className: "sr-only", children: n?.notifications || "Notifications" })
61
73
  ] }) }),
62
- /* @__PURE__ */ t(D, { align: "end", className: "w-80", children: [
63
- /* @__PURE__ */ e(I, { children: "Notifications" }),
64
- /* @__PURE__ */ e(C, {}),
65
- r.notifications.map((s, p) => /* @__PURE__ */ t(
66
- P,
74
+ /* @__PURE__ */ r(U, { align: "end", className: "w-80", children: [
75
+ /* @__PURE__ */ e(z, { children: n?.notifications || "Notifications" }),
76
+ /* @__PURE__ */ e(A, {}),
77
+ o.map((t, s) => /* @__PURE__ */ r(
78
+ B,
67
79
  {
68
80
  className: "flex flex-col items-start gap-1 p-3 cursor-pointer",
69
81
  children: [
70
- /* @__PURE__ */ t("div", { className: "flex w-full items-center justify-between", children: [
71
- /* @__PURE__ */ e("span", { className: "font-medium", children: s.title }),
72
- /* @__PURE__ */ e("span", { className: "text-xs text-muted-foreground", children: s.date })
82
+ /* @__PURE__ */ r("div", { className: "flex w-full items-center justify-between", children: [
83
+ /* @__PURE__ */ e("span", { className: "font-medium", children: t.title }),
84
+ /* @__PURE__ */ e("span", { className: "text-xs text-muted-foreground", children: t.date })
73
85
  ] }),
74
- /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground line-clamp-2", children: s.description })
86
+ /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground line-clamp-2", children: t.description })
75
87
  ]
76
88
  },
77
- p
89
+ s
78
90
  )),
79
- r.notifications.length === 0 && /* @__PURE__ */ e("div", { className: "p-4 text-center text-sm text-muted-foreground", children: "No new notifications" })
91
+ o.length === 0 && /* @__PURE__ */ e("div", { className: "p-4 text-center text-sm text-muted-foreground", children: n?.noNotifications || "No new notifications" })
80
92
  ] })
81
93
  ] })
82
94
  ] })
@@ -85,5 +97,6 @@ function q({
85
97
  );
86
98
  }
87
99
  export {
88
- q as AppNavbar
100
+ K as AppNavbar
89
101
  };
102
+ //# sourceMappingURL=app-navbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-navbar.js","sources":["../../src/organisms/app-navbar.tsx"],"sourcesContent":["\"use client\";\n\nimport { Search, Bell } from \"lucide-react\";\nimport { Input } from \"@/atoms/input\";\nimport { Button } from \"@/atoms/button\";\nimport { SidebarTrigger } from \"@/atoms/sidebar\";\nimport { Separator } from \"@/atoms/separator\";\nimport { ThemeToggle } from \"@/molecules/theme-toggle\";\nimport { UserMenu } from \"@/molecules/user-menu\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@/atoms/dropdown-menu\";\nimport type { UserConfig, BrandingConfig, MenuItem, NotificationsList } from \"@/default-layout\";\n\ninterface NavbarLabels {\n profile?: string;\n notifications?: string;\n noNotifications?: string;\n}\n\ninterface UserMenuItem {\n label: string;\n href?: string;\n icon?: React.ComponentType<{ className?: string }>;\n onClick?: () => void;\n}\n\ninterface AppNavbarProps {\n items?: (MenuItem & { icon?: React.ComponentType<{ className?: string }> })[];\n searchPlaceholder?: string;\n user?: UserConfig;\n userMenuItems?: UserMenuItem[];\n notifications?: NotificationsList[];\n branding?: BrandingConfig;\n labels?: NavbarLabels;\n showSearch?: boolean;\n showSidebarTrigger?: boolean;\n showUserMenu?: boolean;\n showThemeToggle?: boolean;\n showNotifications?: boolean;\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport function AppNavbar({\n items = [],\n searchPlaceholder = \"Search...\",\n user,\n userMenuItems,\n notifications = [],\n branding,\n labels,\n showSearch = true,\n showSidebarTrigger = true,\n showUserMenu = true,\n showThemeToggle = true,\n showNotifications = true,\n className,\n style,\n}: AppNavbarProps) {\n return (\n <header\n className={\n \"flex h-16 shrink-0 items-center gap-2 border-b px-4 bg-background sticky top-0 z-50\" +\n (className ? ` ${className}` : \"\")\n }\n style={style}\n >\n {showSidebarTrigger && (\n <>\n <SidebarTrigger className=\"-ml-1\" />\n <Separator orientation=\"vertical\" className=\"mr-2 h-4\" />\n </>\n )}\n\n {branding && (\n <a href=\"#\" className=\"flex items-center gap-2 mr-4\">\n {branding.logoUrl && (\n <img src={branding.logoUrl} alt={branding.logoAlt || \"Logo\"} className=\"h-6 w-6\" />\n )}\n {branding.title && <span className=\"font-semibold\">{branding.title}</span>}\n </a>\n )}\n\n <nav className=\"flex items-center gap-6 text-sm font-medium\">\n {items?.map((item, index) => {\n const Icon = item.icon;\n return (\n <a\n key={index}\n href={item.href}\n className={`transition-colors hover:text-foreground/80 ${\n item.disabled ? \"pointer-events-none opacity-50\" : \"text-foreground/60\"\n }`}\n >\n {Icon && <Icon className=\"inline-block mr-1 h-4 w-4\" />}\n {item.label}\n </a>\n );\n })}\n </nav>\n\n <div className=\"ml-auto flex items-center gap-2\">\n {showSearch && (\n <div className=\"relative\">\n <Search className=\"absolute left-2 top-2.5 h-4 w-4 text-muted-foreground\" />\n <Input placeholder={searchPlaceholder} className=\"pl-8 w-[200px] lg:w-[300px]\" />\n </div>\n )}\n\n {showThemeToggle && <ThemeToggle />}\n {showUserMenu && user && user.name && user.email && (\n <UserMenu\n user={{ name: user.name, email: user.email, avatar: user.image }}\n items={userMenuItems}\n />\n )}\n\n {showNotifications && notifications && notifications.length > 0 && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"relative\">\n <Bell className=\"h-5 w-5\" />\n {notifications.some((n) => !n.read) && (\n <span className=\"absolute right-2 top-2 h-2 w-2 rounded-full bg-red-600\" />\n )}\n <span className=\"sr-only\">{labels?.notifications || \"Notifications\"}</span>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-80\">\n <DropdownMenuLabel>{labels?.notifications || \"Notifications\"}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {notifications.map((notification, index) => (\n <DropdownMenuItem\n key={index}\n className=\"flex flex-col items-start gap-1 p-3 cursor-pointer\"\n >\n <div className=\"flex w-full items-center justify-between\">\n <span className=\"font-medium\">{notification.title}</span>\n <span className=\"text-xs text-muted-foreground\">{notification.date}</span>\n </div>\n <p className=\"text-sm text-muted-foreground line-clamp-2\">\n {notification.description}\n </p>\n </DropdownMenuItem>\n ))}\n {notifications.length === 0 && (\n <div className=\"p-4 text-center text-sm text-muted-foreground\">\n {labels?.noNotifications || \"No new notifications\"}\n </div>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n </div>\n </header>\n );\n}\n"],"names":["jsxs","jsx","Fragment","Search","Bell","Input","Button","SidebarTrigger","Separator","ThemeToggle","UserMenu","DropdownMenu","DropdownMenuTrigger","DropdownMenuContent","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuItem","AppNavbar","items","searchPlaceholder","user","userMenuItems","notifications","branding","labels","showSearch","showSidebarTrigger","showUserMenu","showThemeToggle","showNotifications","className","style","item","index","Icon","n","notification"],"mappings":"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"}
@@ -1,12 +1,35 @@
1
1
  import { Sidebar } from '../atoms/sidebar';
2
- import { SidebarConfig } from '../types/navigation';
3
- interface AppSidebarProps {
4
- config?: Partial<SidebarConfig>;
5
- side?: "left" | "right";
6
- variant?: "sidebar" | "floating" | "inset";
7
- collapsible?: "offcanvas" | "icon" | "none";
2
+ import { UserConfig, BrandingConfig, SidebarGroup as SidebarGroupType, MenuItem } from '../default-layout';
3
+ interface SidebarLabels {
4
+ logout?: string;
5
+ }
6
+ interface UserMenuItem {
7
+ label: string;
8
+ href?: string;
9
+ icon?: React.ComponentType<{
10
+ className?: string;
11
+ }>;
12
+ onClick?: () => void;
13
+ }
14
+ interface AppSidebarProps extends React.ComponentProps<typeof Sidebar> {
15
+ groups?: (SidebarGroupType & {
16
+ items: (MenuItem & {
17
+ icon?: React.ComponentType<{
18
+ className?: string;
19
+ }>;
20
+ items?: MenuItem[];
21
+ })[];
22
+ })[];
23
+ header?: React.ReactNode;
24
+ footer?: React.ReactNode;
25
+ user?: UserConfig;
26
+ userMenuItems?: UserMenuItem[];
27
+ branding?: BrandingConfig;
28
+ labels?: SidebarLabels;
29
+ fixed?: boolean;
8
30
  hideBranding?: boolean;
9
31
  showThemeToggle?: boolean;
32
+ scrollable?: boolean;
10
33
  }
11
- export declare function AppSidebar({ config, side, variant, collapsible, hideBranding, showThemeToggle, className, style, scrollable, ...props }: AppSidebarProps & React.ComponentProps<typeof Sidebar>): import("react/jsx-runtime").JSX.Element;
34
+ export declare function AppSidebar({ groups, header, footer, user, userMenuItems, branding, labels, fixed, hideBranding, showThemeToggle, className, style, side, variant, collapsible, scrollable, ...props }: AppSidebarProps): import("react/jsx-runtime").JSX.Element;
12
35
  export {};