react-shadcn-kit 0.1.0 → 0.2.0

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 (335) hide show
  1. package/README.md +59 -75
  2. package/dist/assets/global.css +1 -1
  3. package/dist/components/composites/action-button.d.ts +16 -0
  4. package/dist/components/composites/action-button.js +71 -0
  5. package/dist/components/composites/action-button.js.map +1 -0
  6. package/dist/components/composites/index.d.ts +8 -0
  7. package/dist/components/composites/sidebar-wrapper.d.ts +27 -0
  8. package/dist/components/composites/sidebar-wrapper.js +21 -0
  9. package/dist/components/composites/sidebar-wrapper.js.map +1 -0
  10. package/dist/{molecules → components/composites}/theme-toggle.js +3 -3
  11. package/dist/components/composites/theme-toggle.js.map +1 -0
  12. package/dist/components/composites/user-menu.js +29 -0
  13. package/dist/components/composites/user-menu.js.map +1 -0
  14. package/dist/components/marketing/hero.d.ts +12 -0
  15. package/dist/components/marketing/hero.js +87 -0
  16. package/dist/components/marketing/hero.js.map +1 -0
  17. package/dist/components/marketing/index.d.ts +6 -0
  18. package/dist/components/marketing/social-proof.d.ts +10 -0
  19. package/dist/components/marketing/social-proof.js +21 -0
  20. package/dist/components/marketing/social-proof.js.map +1 -0
  21. package/dist/components/marketing/value-props.d.ts +14 -0
  22. package/dist/components/marketing/value-props.js +25 -0
  23. package/dist/components/marketing/value-props.js.map +1 -0
  24. package/dist/{atoms → components/primitives}/accordion.js +1 -1
  25. package/dist/components/primitives/accordion.js.map +1 -0
  26. package/dist/{atoms → components/primitives}/alert-dialog.js +2 -2
  27. package/dist/components/primitives/alert-dialog.js.map +1 -0
  28. package/dist/{atoms → components/primitives}/alert.js +1 -1
  29. package/dist/components/primitives/alert.js.map +1 -0
  30. package/dist/components/primitives/aspect-ratio.js.map +1 -0
  31. package/dist/{atoms → components/primitives}/avatar.js +1 -1
  32. package/dist/components/primitives/avatar.js.map +1 -0
  33. package/dist/components/primitives/badge-variants.d.ts +3 -0
  34. package/dist/{atoms/badge.js → components/primitives/badge-variants.js} +7 -19
  35. package/dist/components/primitives/badge-variants.js.map +1 -0
  36. package/dist/components/primitives/badge.d.ts +9 -0
  37. package/dist/components/primitives/badge.js +21 -0
  38. package/dist/components/primitives/badge.js.map +1 -0
  39. package/dist/{atoms → components/primitives}/breadcrumb.js +1 -1
  40. package/dist/components/primitives/breadcrumb.js.map +1 -0
  41. package/dist/components/primitives/button-group-variants.d.ts +3 -0
  42. package/dist/components/primitives/button-group-variants.js +19 -0
  43. package/dist/components/primitives/button-group-variants.js.map +1 -0
  44. package/dist/components/primitives/button-group.d.ts +13 -0
  45. package/dist/components/primitives/button-group.js +52 -0
  46. package/dist/components/primitives/button-group.js.map +1 -0
  47. package/dist/components/primitives/button-variants.d.ts +4 -0
  48. package/dist/{atoms/button.js → components/primitives/button-variants.js} +8 -28
  49. package/dist/components/primitives/button-variants.js.map +1 -0
  50. package/dist/components/primitives/button.d.ts +9 -0
  51. package/dist/components/primitives/button.js +21 -0
  52. package/dist/components/primitives/button.js.map +1 -0
  53. package/dist/{atoms → components/primitives}/calendar.d.ts +1 -1
  54. package/dist/{atoms → components/primitives}/calendar.js +5 -4
  55. package/dist/components/primitives/calendar.js.map +1 -0
  56. package/dist/{atoms → components/primitives}/card.js +1 -1
  57. package/dist/components/primitives/card.js.map +1 -0
  58. package/dist/{atoms → components/primitives}/carousel.d.ts +1 -1
  59. package/dist/{atoms → components/primitives}/carousel.js +1 -1
  60. package/dist/components/primitives/carousel.js.map +1 -0
  61. package/dist/{atoms → components/primitives}/chart.js +1 -1
  62. package/dist/components/primitives/chart.js.map +1 -0
  63. package/dist/{atoms → components/primitives}/checkbox.js +1 -1
  64. package/dist/components/primitives/checkbox.js.map +1 -0
  65. package/dist/components/primitives/collapsible.js.map +1 -0
  66. package/dist/{atoms → components/primitives}/command.d.ts +1 -1
  67. package/dist/{atoms → components/primitives}/command.js +1 -1
  68. package/dist/components/primitives/command.js.map +1 -0
  69. package/dist/{atoms → components/primitives}/context-menu.js +1 -1
  70. package/dist/components/primitives/context-menu.js.map +1 -0
  71. package/dist/components/primitives/custom-button-variants.d.ts +5 -0
  72. package/dist/components/primitives/custom-button-variants.js +38 -0
  73. package/dist/components/primitives/custom-button-variants.js.map +1 -0
  74. package/dist/components/primitives/custom-button.d.ts +22 -0
  75. package/dist/components/primitives/custom-button.js +64 -0
  76. package/dist/components/primitives/custom-button.js.map +1 -0
  77. package/dist/{atoms → components/primitives}/dialog.js +8 -8
  78. package/dist/components/primitives/dialog.js.map +1 -0
  79. package/dist/{atoms → components/primitives}/drawer.js +1 -1
  80. package/dist/components/primitives/drawer.js.map +1 -0
  81. package/dist/{atoms → components/primitives}/dropdown-menu.js +1 -1
  82. package/dist/components/primitives/dropdown-menu.js.map +1 -0
  83. package/dist/{atoms → components/primitives}/empty.js +1 -1
  84. package/dist/components/primitives/empty.js.map +1 -0
  85. package/dist/{atoms → components/primitives}/field.d.ts +1 -1
  86. package/dist/{atoms → components/primitives}/field.js +1 -1
  87. package/dist/components/primitives/field.js.map +1 -0
  88. package/dist/components/primitives/form-context.d.ts +23 -0
  89. package/dist/components/primitives/form-context.js +26 -0
  90. package/dist/components/primitives/form-context.js.map +1 -0
  91. package/dist/components/primitives/form.d.ts +11 -0
  92. package/dist/components/primitives/form.js +85 -0
  93. package/dist/components/primitives/form.js.map +1 -0
  94. package/dist/{atoms → components/primitives}/hover-card.js +1 -1
  95. package/dist/components/primitives/hover-card.js.map +1 -0
  96. package/dist/components/primitives/index.d.ts +116 -0
  97. package/dist/{atoms → components/primitives}/input-group.d.ts +2 -2
  98. package/dist/{atoms → components/primitives}/input-group.js +1 -1
  99. package/dist/components/primitives/input-group.js.map +1 -0
  100. package/dist/{atoms → components/primitives}/input-otp.js +1 -1
  101. package/dist/components/primitives/input-otp.js.map +1 -0
  102. package/dist/{atoms → components/primitives}/input.js +1 -1
  103. package/dist/components/primitives/input.js.map +1 -0
  104. package/dist/{atoms → components/primitives}/item.d.ts +2 -2
  105. package/dist/{atoms → components/primitives}/item.js +1 -1
  106. package/dist/components/primitives/item.js.map +1 -0
  107. package/dist/{atoms → components/primitives}/kbd.js +1 -1
  108. package/dist/components/primitives/kbd.js.map +1 -0
  109. package/dist/{atoms → components/primitives}/label.js +1 -1
  110. package/dist/components/primitives/label.js.map +1 -0
  111. package/dist/components/primitives/loading-swap.d.ts +8 -0
  112. package/dist/components/primitives/loading-swap.js +25 -0
  113. package/dist/components/primitives/loading-swap.js.map +1 -0
  114. package/dist/{atoms → components/primitives}/menubar.js +1 -1
  115. package/dist/components/primitives/menubar.js.map +1 -0
  116. package/dist/components/primitives/navigation-menu-variants.d.ts +1 -0
  117. package/dist/components/primitives/navigation-menu-variants.js +8 -0
  118. package/dist/components/primitives/navigation-menu-variants.js.map +1 -0
  119. package/dist/components/primitives/navigation-menu.d.ts +13 -0
  120. package/dist/components/primitives/navigation-menu.js +102 -0
  121. package/dist/components/primitives/navigation-menu.js.map +1 -0
  122. package/dist/{atoms → components/primitives}/pagination.d.ts +1 -1
  123. package/dist/{atoms → components/primitives}/pagination.js +2 -2
  124. package/dist/components/primitives/pagination.js.map +1 -0
  125. package/dist/{atoms → components/primitives}/popover.js +1 -1
  126. package/dist/components/primitives/popover.js.map +1 -0
  127. package/dist/{atoms → components/primitives}/progress.js +1 -1
  128. package/dist/components/primitives/progress.js.map +1 -0
  129. package/dist/{atoms → components/primitives}/radio-group.js +1 -1
  130. package/dist/components/primitives/radio-group.js.map +1 -0
  131. package/dist/{atoms → components/primitives}/resizable.js +1 -1
  132. package/dist/components/primitives/resizable.js.map +1 -0
  133. package/dist/{atoms → components/primitives}/scroll-area.js +1 -1
  134. package/dist/components/primitives/scroll-area.js.map +1 -0
  135. package/dist/{atoms → components/primitives}/select.js +1 -1
  136. package/dist/components/primitives/select.js.map +1 -0
  137. package/dist/{atoms → components/primitives}/separator.js +1 -1
  138. package/dist/components/primitives/separator.js.map +1 -0
  139. package/dist/{atoms → components/primitives}/sheet.js +5 -5
  140. package/dist/components/primitives/sheet.js.map +1 -0
  141. package/dist/components/primitives/sidebar-context.d.ts +12 -0
  142. package/dist/components/primitives/sidebar-context.js +13 -0
  143. package/dist/components/primitives/sidebar-context.js.map +1 -0
  144. package/dist/components/primitives/sidebar-variants.d.ts +4 -0
  145. package/dist/components/primitives/sidebar-variants.js +25 -0
  146. package/dist/components/primitives/sidebar-variants.js.map +1 -0
  147. package/dist/components/primitives/sidebar.d.ts +56 -0
  148. package/dist/components/primitives/sidebar.js +542 -0
  149. package/dist/components/primitives/sidebar.js.map +1 -0
  150. package/dist/{atoms → components/primitives}/skeleton.js +1 -1
  151. package/dist/components/primitives/skeleton.js.map +1 -0
  152. package/dist/{atoms → components/primitives}/slider.js +1 -1
  153. package/dist/components/primitives/slider.js.map +1 -0
  154. package/dist/components/primitives/sonner.js.map +1 -0
  155. package/dist/{atoms → components/primitives}/spinner.js +1 -1
  156. package/dist/components/primitives/spinner.js.map +1 -0
  157. package/dist/{atoms → components/primitives}/switch.js +1 -1
  158. package/dist/components/primitives/switch.js.map +1 -0
  159. package/dist/{atoms → components/primitives}/table.js +1 -1
  160. package/dist/components/primitives/table.js.map +1 -0
  161. package/dist/{atoms → components/primitives}/tabs.js +1 -1
  162. package/dist/components/primitives/tabs.js.map +1 -0
  163. package/dist/{atoms → components/primitives}/textarea.js +1 -1
  164. package/dist/components/primitives/textarea.js.map +1 -0
  165. package/dist/components/primitives/theme-provider.js.map +1 -0
  166. package/dist/{atoms → components/primitives}/toggle-group.d.ts +1 -1
  167. package/dist/{atoms → components/primitives}/toggle-group.js +2 -2
  168. package/dist/components/primitives/toggle-group.js.map +1 -0
  169. package/dist/components/primitives/toggle-variants.d.ts +4 -0
  170. package/dist/{atoms/toggle.js → components/primitives/toggle-variants.js} +5 -24
  171. package/dist/components/primitives/toggle-variants.js.map +1 -0
  172. package/dist/components/primitives/toggle.d.ts +9 -0
  173. package/dist/components/primitives/toggle.js +21 -0
  174. package/dist/components/primitives/toggle.js.map +1 -0
  175. package/dist/{atoms → components/primitives}/tooltip.js +1 -1
  176. package/dist/components/primitives/tooltip.js.map +1 -0
  177. package/dist/composites/index.js +11 -0
  178. package/dist/{organisms → composites}/index.js.map +1 -1
  179. package/dist/hooks/index.d.ts +7 -0
  180. package/dist/hooks/index.js +8 -2
  181. package/dist/hooks/index.js.map +1 -1
  182. package/dist/hooks/use-aria-live.d.ts +22 -0
  183. package/dist/hooks/use-aria-live.js +18 -0
  184. package/dist/hooks/use-aria-live.js.map +1 -0
  185. package/dist/hooks/use-focus-visible.d.ts +15 -0
  186. package/dist/hooks/use-focus-visible.js +16 -0
  187. package/dist/hooks/use-focus-visible.js.map +1 -0
  188. package/dist/hooks/use-screen-reader-only.d.ts +14 -0
  189. package/dist/hooks/use-screen-reader-only.js +10 -0
  190. package/dist/hooks/use-screen-reader-only.js.map +1 -0
  191. package/dist/index.d.ts +10 -58
  192. package/dist/index.js +371 -344
  193. package/dist/index.js.map +1 -1
  194. package/dist/lib/index.d.ts +3 -0
  195. package/dist/lib/index.js +8 -2
  196. package/dist/lib/index.js.map +1 -1
  197. package/dist/lib/utils-enhanced.d.ts +27 -0
  198. package/dist/lib/utils-enhanced.js +28 -0
  199. package/dist/lib/utils-enhanced.js.map +1 -0
  200. package/dist/lib/utils-enhanced.test.d.ts +1 -0
  201. package/dist/marketing/index.js +9 -0
  202. package/dist/primitives/index.js +345 -0
  203. package/dist/{atoms → primitives}/index.js.map +1 -1
  204. package/package.json +18 -26
  205. package/dist/atoms/accordion.js.map +0 -1
  206. package/dist/atoms/alert-dialog.js.map +0 -1
  207. package/dist/atoms/alert.js.map +0 -1
  208. package/dist/atoms/aspect-ratio.js.map +0 -1
  209. package/dist/atoms/avatar.js.map +0 -1
  210. package/dist/atoms/badge.d.ts +0 -9
  211. package/dist/atoms/badge.js.map +0 -1
  212. package/dist/atoms/breadcrumb.js.map +0 -1
  213. package/dist/atoms/button-group.d.ts +0 -11
  214. package/dist/atoms/button-group.js +0 -76
  215. package/dist/atoms/button-group.js.map +0 -1
  216. package/dist/atoms/button.d.ts +0 -10
  217. package/dist/atoms/button.js.map +0 -1
  218. package/dist/atoms/calendar.js.map +0 -1
  219. package/dist/atoms/card.js.map +0 -1
  220. package/dist/atoms/carousel.js.map +0 -1
  221. package/dist/atoms/chart.js.map +0 -1
  222. package/dist/atoms/checkbox.js.map +0 -1
  223. package/dist/atoms/collapsible.js.map +0 -1
  224. package/dist/atoms/command.js.map +0 -1
  225. package/dist/atoms/context-menu.js.map +0 -1
  226. package/dist/atoms/dialog.js.map +0 -1
  227. package/dist/atoms/drawer.js.map +0 -1
  228. package/dist/atoms/dropdown-menu.js.map +0 -1
  229. package/dist/atoms/empty.js.map +0 -1
  230. package/dist/atoms/field.js.map +0 -1
  231. package/dist/atoms/form.d.ts +0 -24
  232. package/dist/atoms/form.js +0 -88
  233. package/dist/atoms/form.js.map +0 -1
  234. package/dist/atoms/hover-card.js.map +0 -1
  235. package/dist/atoms/index.d.ts +0 -54
  236. package/dist/atoms/index.js +0 -342
  237. package/dist/atoms/input-group.js.map +0 -1
  238. package/dist/atoms/input-otp.js.map +0 -1
  239. package/dist/atoms/input.js.map +0 -1
  240. package/dist/atoms/item.js.map +0 -1
  241. package/dist/atoms/kbd.js.map +0 -1
  242. package/dist/atoms/label.js.map +0 -1
  243. package/dist/atoms/menubar.js.map +0 -1
  244. package/dist/atoms/navigation-menu.d.ts +0 -14
  245. package/dist/atoms/navigation-menu.js +0 -160
  246. package/dist/atoms/navigation-menu.js.map +0 -1
  247. package/dist/atoms/pagination.js.map +0 -1
  248. package/dist/atoms/popover.js.map +0 -1
  249. package/dist/atoms/progress.js.map +0 -1
  250. package/dist/atoms/radio-group.js.map +0 -1
  251. package/dist/atoms/resizable.js.map +0 -1
  252. package/dist/atoms/scroll-area.js.map +0 -1
  253. package/dist/atoms/select.js.map +0 -1
  254. package/dist/atoms/separator.js.map +0 -1
  255. package/dist/atoms/sheet.js.map +0 -1
  256. package/dist/atoms/sidebar.d.ts +0 -70
  257. package/dist/atoms/sidebar.js +0 -573
  258. package/dist/atoms/sidebar.js.map +0 -1
  259. package/dist/atoms/skeleton.js.map +0 -1
  260. package/dist/atoms/slider.js.map +0 -1
  261. package/dist/atoms/sonner.js.map +0 -1
  262. package/dist/atoms/spinner.js.map +0 -1
  263. package/dist/atoms/switch.js.map +0 -1
  264. package/dist/atoms/table.js.map +0 -1
  265. package/dist/atoms/tabs.js.map +0 -1
  266. package/dist/atoms/textarea.js.map +0 -1
  267. package/dist/atoms/theme-provider.js.map +0 -1
  268. package/dist/atoms/toggle-group.js.map +0 -1
  269. package/dist/atoms/toggle.d.ts +0 -9
  270. package/dist/atoms/toggle.js.map +0 -1
  271. package/dist/atoms/tooltip.js.map +0 -1
  272. package/dist/default-layout.js +0 -81
  273. package/dist/default-layout.js.map +0 -1
  274. package/dist/molecules/index.d.ts +0 -3
  275. package/dist/molecules/index.js +0 -9
  276. package/dist/molecules/sidebar-theme-toggle.d.ts +0 -5
  277. package/dist/molecules/sidebar-theme-toggle.js +0 -39
  278. package/dist/molecules/sidebar-theme-toggle.js.map +0 -1
  279. package/dist/molecules/theme-toggle.js.map +0 -1
  280. package/dist/molecules/user-menu.js +0 -30
  281. package/dist/molecules/user-menu.js.map +0 -1
  282. package/dist/organisms/app-navbar.d.ts +0 -37
  283. package/dist/organisms/app-navbar.js +0 -111
  284. package/dist/organisms/app-navbar.js.map +0 -1
  285. package/dist/organisms/app-sidebar.d.ts +0 -37
  286. package/dist/organisms/app-sidebar.js +0 -159
  287. package/dist/organisms/app-sidebar.js.map +0 -1
  288. package/dist/organisms/index.d.ts +0 -2
  289. package/dist/organisms/index.js +0 -7
  290. /package/dist/{molecules → components/composites}/theme-toggle.d.ts +0 -0
  291. /package/dist/{molecules → components/composites}/user-menu.d.ts +0 -0
  292. /package/dist/{atoms → components/primitives}/accordion.d.ts +0 -0
  293. /package/dist/{atoms → components/primitives}/alert-dialog.d.ts +0 -0
  294. /package/dist/{atoms → components/primitives}/alert.d.ts +0 -0
  295. /package/dist/{atoms → components/primitives}/aspect-ratio.d.ts +0 -0
  296. /package/dist/{atoms → components/primitives}/aspect-ratio.js +0 -0
  297. /package/dist/{atoms → components/primitives}/avatar.d.ts +0 -0
  298. /package/dist/{atoms → components/primitives}/breadcrumb.d.ts +0 -0
  299. /package/dist/{atoms → components/primitives}/card.d.ts +0 -0
  300. /package/dist/{atoms → components/primitives}/chart.d.ts +0 -0
  301. /package/dist/{atoms → components/primitives}/checkbox.d.ts +0 -0
  302. /package/dist/{atoms → components/primitives}/collapsible.d.ts +0 -0
  303. /package/dist/{atoms → components/primitives}/collapsible.js +0 -0
  304. /package/dist/{atoms → components/primitives}/context-menu.d.ts +0 -0
  305. /package/dist/{atoms → components/primitives}/dialog.d.ts +0 -0
  306. /package/dist/{atoms → components/primitives}/drawer.d.ts +0 -0
  307. /package/dist/{atoms → components/primitives}/dropdown-menu.d.ts +0 -0
  308. /package/dist/{atoms → components/primitives}/empty.d.ts +0 -0
  309. /package/dist/{atoms → components/primitives}/hover-card.d.ts +0 -0
  310. /package/dist/{atoms → components/primitives}/input-otp.d.ts +0 -0
  311. /package/dist/{atoms → components/primitives}/input.d.ts +0 -0
  312. /package/dist/{atoms → components/primitives}/kbd.d.ts +0 -0
  313. /package/dist/{atoms → components/primitives}/label.d.ts +0 -0
  314. /package/dist/{atoms → components/primitives}/menubar.d.ts +0 -0
  315. /package/dist/{atoms → components/primitives}/popover.d.ts +0 -0
  316. /package/dist/{atoms → components/primitives}/progress.d.ts +0 -0
  317. /package/dist/{atoms → components/primitives}/radio-group.d.ts +0 -0
  318. /package/dist/{atoms → components/primitives}/resizable.d.ts +0 -0
  319. /package/dist/{atoms → components/primitives}/scroll-area.d.ts +0 -0
  320. /package/dist/{atoms → components/primitives}/select.d.ts +0 -0
  321. /package/dist/{atoms → components/primitives}/separator.d.ts +0 -0
  322. /package/dist/{atoms → components/primitives}/sheet.d.ts +0 -0
  323. /package/dist/{atoms → components/primitives}/skeleton.d.ts +0 -0
  324. /package/dist/{atoms → components/primitives}/slider.d.ts +0 -0
  325. /package/dist/{atoms → components/primitives}/sonner.d.ts +0 -0
  326. /package/dist/{atoms → components/primitives}/sonner.js +0 -0
  327. /package/dist/{atoms → components/primitives}/spinner.d.ts +0 -0
  328. /package/dist/{atoms → components/primitives}/switch.d.ts +0 -0
  329. /package/dist/{atoms → components/primitives}/table.d.ts +0 -0
  330. /package/dist/{atoms → components/primitives}/tabs.d.ts +0 -0
  331. /package/dist/{atoms → components/primitives}/textarea.d.ts +0 -0
  332. /package/dist/{atoms → components/primitives}/theme-provider.d.ts +0 -0
  333. /package/dist/{atoms → components/primitives}/theme-provider.js +0 -0
  334. /package/dist/{atoms → components/primitives}/tooltip.d.ts +0 -0
  335. /package/dist/{molecules → marketing}/index.js.map +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"sonner.js","sources":["../../src/atoms/sonner.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n CircleCheckIcon,\n InfoIcon,\n Loader2Icon,\n OctagonXIcon,\n TriangleAlertIcon,\n} from \"lucide-react\";\nimport { useTheme } from \"next-themes\";\nimport { Toaster as Sonner, type ToasterProps } from \"sonner\";\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = \"system\" } = useTheme();\n\n return (\n <Sonner\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n icons={{\n success: <CircleCheckIcon className=\"size-4\" />,\n info: <InfoIcon className=\"size-4\" />,\n warning: <TriangleAlertIcon className=\"size-4\" />,\n error: <OctagonXIcon className=\"size-4\" />,\n loading: <Loader2Icon className=\"size-4 animate-spin\" />,\n }}\n style={\n {\n \"--normal-bg\": \"var(--popover)\",\n \"--normal-text\": \"var(--popover-foreground)\",\n \"--normal-border\": \"var(--border)\",\n \"--border-radius\": \"var(--radius)\",\n } as React.CSSProperties\n }\n {...props}\n />\n );\n};\n\nexport { Toaster };\n"],"names":["jsx","Loader2Icon","OctagonXIcon","TriangleAlertIcon","InfoIcon","CircleCheckIcon","useTheme","Toaster$1","Toaster","props","theme","Sonner"],"mappings":"AAYA,SAAA,OAAAA,SAAA;AAAA,SAAA,eAAAC,GAAA,gBAAAC,GAAA,qBAAAC,GAAA,YAAAC,GAAA,mBAAAC,SAAA;AAAA,SAAA,YAAAC,SAAA;AAAA,SAAA,WAAAC,SAAA;AAAA,MAAMC,IAAU,CAAC,EAAE,GAAGC,QAA0B;AAC9C,QAAM,EAAE,OAAAC,IAAQ,SAAA,IAAaJ,EAAA;AAE7B,SACE,gBAAAN;AAAA,IAACW;AAAAA,IAAA;AAAA,MACC,OAAAD;AAAA,MACA,WAAU;AAAA,MACV,OAAO;AAAA,QACL,SAAS,gBAAAV,EAACK,GAAA,EAAgB,WAAU,SAAA,CAAS;AAAA,QAC7C,MAAM,gBAAAL,EAACI,GAAA,EAAS,WAAU,SAAA,CAAS;AAAA,QACnC,SAAS,gBAAAJ,EAACG,GAAA,EAAkB,WAAU,SAAA,CAAS;AAAA,QAC/C,OAAO,gBAAAH,EAACE,GAAA,EAAa,WAAU,SAAA,CAAS;AAAA,QACxC,SAAS,gBAAAF,EAACC,GAAA,EAAY,WAAU,sBAAA,CAAsB;AAAA,MAAA;AAAA,MAExD,OACE;AAAA,QACE,eAAe;AAAA,QACf,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,mBAAmB;AAAA,MAAA;AAAA,MAGtB,GAAGQ;AAAA,IAAA;AAAA,EAAA;AAGV;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"spinner.js","sources":["../../src/atoms/spinner.tsx"],"sourcesContent":["import { Loader2Icon } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Spinner({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <Loader2Icon\n role=\"status\"\n aria-label=\"Loading\"\n className={cn(\"size-4 animate-spin\", className)}\n {...props}\n />\n );\n}\n\nexport { Spinner };\n"],"names":["Spinner","className","props","jsx","Loader2Icon","cn"],"mappings":";;;AAIA,SAASA,EAAQ,EAAE,WAAAC,GAAW,GAAGC,KAAsC;AACrE,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAW;AAAA,MACX,WAAWC,EAAG,uBAAuBJ,CAAS;AAAA,MAC7C,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"switch.js","sources":["../../src/atoms/switch.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Switch({ className, ...props }: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n \"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\",\n )}\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n"],"names":["Switch","className","props","jsx","SwitchPrimitive","cn"],"mappings":";;;AAOA,SAASA,EAAO,EAAE,WAAAC,GAAW,GAAGC,KAA4D;AAC1F,SACE,gBAAAC;AAAA,IAACC,EAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAJ;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,MAEJ,UAAA,gBAAAC;AAAA,QAACC,EAAgB;AAAA,QAAhB;AAAA,UACC,aAAU;AAAA,UACV,WAAWC;AAAA,YACT;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"table.js","sources":["../../src/atoms/table.tsx"],"sourcesContent":["import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <div data-slot=\"table-container\" className=\"relative w-full overflow-x-auto\">\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return <thead data-slot=\"table-header\" className={cn(\"[&_tr]:border-b\", className)} {...props} />;\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\", className)}\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n \"hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableCaption({ className, ...props }: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption };\n"],"names":["Table","className","props","jsx","cn","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption"],"mappings":";;AAIA,SAASA,EAAM,EAAE,WAAAC,GAAW,GAAGC,KAAwC;AACrE,SACE,gBAAAC,EAAC,OAAA,EAAI,aAAU,mBAAkB,WAAU,mCACzC,UAAA,gBAAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,EAAG,iCAAiCH,CAAS;AAAA,MACvD,GAAGC;AAAA,IAAA;AAAA,EAAA,GAER;AAEJ;AAEA,SAASG,EAAY,EAAE,WAAAJ,GAAW,GAAGC,KAAwC;AAC3E,SAAO,gBAAAC,EAAC,SAAA,EAAM,aAAU,gBAAe,WAAWC,EAAG,mBAAmBH,CAAS,GAAI,GAAGC,EAAA,CAAO;AACjG;AAEA,SAASI,EAAU,EAAE,WAAAL,GAAW,GAAGC,KAAwC;AACzE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,EAAG,8BAA8BH,CAAS;AAAA,MACpD,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASK,EAAY,EAAE,WAAAN,GAAW,GAAGC,KAAwC;AAC3E,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,EAAG,2DAA2DH,CAAS;AAAA,MACjF,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASM,EAAS,EAAE,WAAAP,GAAW,GAAGC,KAAqC;AACrE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAH;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASO,EAAU,EAAE,WAAAR,GAAW,GAAGC,KAAqC;AACtE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAH;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASQ,EAAU,EAAE,WAAAT,GAAW,GAAGC,KAAqC;AACtE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAH;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASS,EAAa,EAAE,WAAAV,GAAW,GAAGC,KAA0C;AAC9E,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,EAAG,sCAAsCH,CAAS;AAAA,MAC5D,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tabs.js","sources":["../../src/atoms/tabs.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Tabs({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n );\n}\n\nfunction TabsList({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.List>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(\n \"bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TabsTrigger({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n \"data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TabsContent({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n );\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n"],"names":["Tabs","className","props","jsx","TabsPrimitive","cn","TabsList","TabsTrigger","TabsContent"],"mappings":";;;AAOA,SAASA,EAAK,EAAE,WAAAC,GAAW,GAAGC,KAA0D;AACtF,SACE,gBAAAC;AAAA,IAACC,EAAc;AAAA,IAAd;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,EAAG,uBAAuBJ,CAAS;AAAA,MAC7C,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASI,EAAS,EAAE,WAAAL,GAAW,GAAGC,KAA0D;AAC1F,SACE,gBAAAC;AAAA,IAACC,EAAc;AAAA,IAAd;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAJ;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASK,EAAY,EAAE,WAAAN,GAAW,GAAGC,KAA6D;AAChG,SACE,gBAAAC;AAAA,IAACC,EAAc;AAAA,IAAd;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAJ;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASM,EAAY,EAAE,WAAAP,GAAW,GAAGC,KAA6D;AAChG,SACE,gBAAAC;AAAA,IAACC,EAAc;AAAA,IAAd;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,EAAG,uBAAuBJ,CAAS;AAAA,MAC7C,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"textarea.js","sources":["../../src/atoms/textarea.tsx"],"sourcesContent":["import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n"],"names":["Textarea","className","props","jsx","cn"],"mappings":";;AAIA,SAASA,EAAS,EAAE,WAAAC,GAAW,GAAGC,KAA2C;AAC3E,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAH;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"theme-provider.js","sources":["../../src/atoms/theme-provider.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { ThemeProvider as NextThemesProvider } from \"next-themes\";\n\nexport function ThemeProvider({\n children,\n ...props\n}: React.ComponentProps<typeof NextThemesProvider>) {\n return <NextThemesProvider {...props}>{children}</NextThemesProvider>;\n}\n"],"names":["jsx","ThemeProvider$1","ThemeProvider","children","props","NextThemesProvider"],"mappings":"AAKO,SAAA,OAAAA,SAAA;AAAA,SAAA,iBAAAC,SAAA;AAAA,SAASC,EAAc;AAAA,EAC5B,UAAAC;AAAA,EACA,GAAGC;AACL,GAAoD;AAClD,SAAO,gBAAAJ,EAACK,GAAA,EAAoB,GAAGD,GAAQ,UAAAD,EAAA,CAAS;AAClD;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"toggle-group.js","sources":["../../src/atoms/toggle-group.tsx"],"sourcesContent":["import * as React from \"react\";\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\";\nimport { type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@/lib/utils\";\nimport { toggleVariants } from \"@/atoms/toggle\";\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants> & {\n spacing?: number;\n }\n>({\n size: \"default\",\n variant: \"default\",\n spacing: 0,\n});\n\nfunction ToggleGroup({\n className,\n variant,\n size,\n spacing = 0,\n children,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants> & {\n spacing?: number;\n }) {\n return (\n <ToggleGroupPrimitive.Root\n data-slot=\"toggle-group\"\n data-variant={variant}\n data-size={size}\n data-spacing={spacing}\n style={{ \"--gap\": spacing } as React.CSSProperties}\n className={cn(\n \"group/toggle-group flex w-fit items-center gap-[--spacing(var(--gap))] rounded-md data-[spacing=default]:data-[variant=outline]:shadow-xs\",\n className,\n )}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size, spacing }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n );\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> & VariantProps<typeof toggleVariants>) {\n const context = React.useContext(ToggleGroupContext);\n\n return (\n <ToggleGroupPrimitive.Item\n data-slot=\"toggle-group-item\"\n data-variant={context.variant || variant}\n data-size={context.size || size}\n data-spacing={context.spacing}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n \"w-auto min-w-0 shrink-0 px-3 focus:z-10 focus-visible:z-10\",\n \"data-[spacing=0]:rounded-none data-[spacing=0]:shadow-none data-[spacing=0]:first:rounded-l-md data-[spacing=0]:last:rounded-r-md data-[spacing=0]:data-[variant=outline]:border-l-0 data-[spacing=0]:data-[variant=outline]:first:border-l\",\n className,\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n );\n}\n\nexport { ToggleGroup, ToggleGroupItem };\n"],"names":["jsx","React","ToggleGroupPrimitive","cn","toggleVariants","ToggleGroupContext","ToggleGroup","className","variant","size","spacing","children","props","ToggleGroupItem","context"],"mappings":"AAOA,SAAA,OAAAA,SAAA;AAAA,YAAAC,OAAA;AAAA,YAAAC,OAAA;AAAA,SAAA,MAAAC,SAAA;AAAA,SAAA,kBAAAC,SAAA;AAAA,MAAMC,IAAqBJ,EAAM,cAI/B;AAAA,EACA,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AACX,CAAC;AAED,SAASK,EAAY;AAAA,EACnB,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,UAAAC;AAAA,EACA,GAAGC;AACL,GAGK;AACH,SACE,gBAAAZ;AAAA,IAACE,EAAqB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACV,gBAAcM;AAAA,MACd,aAAWC;AAAA,MACX,gBAAcC;AAAA,MACd,OAAO,EAAE,SAASA,EAAA;AAAA,MAClB,WAAWP;AAAA,QACT;AAAA,QACAI;AAAA,MAAA;AAAA,MAED,GAAGK;AAAA,MAEJ,UAAA,gBAAAZ,EAACK,EAAmB,UAAnB,EAA4B,OAAO,EAAE,SAAAG,GAAS,MAAAC,GAAM,SAAAC,EAAA,GAClD,UAAAC,EAAA,CACH;AAAA,IAAA;AAAA,EAAA;AAGN;AAEA,SAASE,EAAgB;AAAA,EACvB,WAAAN;AAAA,EACA,UAAAI;AAAA,EACA,SAAAH;AAAA,EACA,MAAAC;AAAA,EACA,GAAGG;AACL,GAAiG;AAC/F,QAAME,IAAUb,EAAM,WAAWI,CAAkB;AAEnD,SACE,gBAAAL;AAAA,IAACE,EAAqB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACV,gBAAcY,EAAQ,WAAWN;AAAA,MACjC,aAAWM,EAAQ,QAAQL;AAAA,MAC3B,gBAAcK,EAAQ;AAAA,MACtB,WAAWX;AAAA,QACTC,EAAe;AAAA,UACb,SAASU,EAAQ,WAAWN;AAAA,UAC5B,MAAMM,EAAQ,QAAQL;AAAA,QAAA,CACvB;AAAA,QACD;AAAA,QACA;AAAA,QACAF;AAAA,MAAA;AAAA,MAED,GAAGK;AAAA,MAEH,UAAAD;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -1,9 +0,0 @@
1
- import { VariantProps } from 'class-variance-authority';
2
- import * as React from "react";
3
- import * as TogglePrimitive from "@radix-ui/react-toggle";
4
- declare const toggleVariants: (props?: ({
5
- variant?: "default" | "outline" | null | undefined;
6
- size?: "default" | "sm" | "lg" | null | undefined;
7
- } & import('class-variance-authority/types').ClassProp) | undefined) => string;
8
- declare function Toggle({ className, variant, size, ...props }: React.ComponentProps<typeof TogglePrimitive.Root> & VariantProps<typeof toggleVariants>): import("react/jsx-runtime").JSX.Element;
9
- export { Toggle, toggleVariants };
@@ -1 +0,0 @@
1
- {"version":3,"file":"toggle.js","sources":["../../src/atoms/toggle.tsx"],"sourcesContent":["import * as React from \"react\";\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline:\n \"border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground\",\n },\n size: {\n default: \"h-9 px-2 min-w-9\",\n sm: \"h-8 px-1.5 min-w-8\",\n lg: \"h-10 px-2.5 min-w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Toggle({\n className,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> & VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive.Root\n data-slot=\"toggle\"\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nexport { Toggle, toggleVariants };\n"],"names":["toggleVariants","cva","Toggle","className","variant","size","props","jsx","TogglePrimitive","cn"],"mappings":";;;;AAMA,MAAMA,IAAiBC;AAAA,EACrB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,SACE;AAAA,MAAA;AAAA,MAEJ,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA;AAAA,IACN;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ;AAEA,SAASC,EAAO;AAAA,EACd,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,MAAAC;AAAA,EACA,GAAGC;AACL,GAA4F;AAC1F,SACE,gBAAAC;AAAA,IAACC,EAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,EAAGT,EAAe,EAAE,SAAAI,GAAS,MAAAC,GAAM,WAAAF,EAAA,CAAW,CAAC;AAAA,MACzD,GAAGG;AAAA,IAAA;AAAA,EAAA;AAGV;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tooltip.js","sources":["../../src/atoms/tooltip.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n );\n}\n\nfunction Tooltip({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n );\n}\n\nfunction TooltipTrigger({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n className,\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n"],"names":["jsx","jsxs","TooltipPrimitive","cn","TooltipProvider","delayDuration","props","Tooltip","TooltipTrigger","TooltipContent","className","sideOffset","children"],"mappings":"AAOA,SAAA,OAAAA,GAAA,QAAAC,SAAA;AAAA,YAAAC,OAAA;AAAA,SAAA,MAAAC,SAAA;AAAA,SAASC,EAAgB;AAAA,EACvB,eAAAC,IAAgB;AAAA,EAChB,GAAGC;AACL,GAA2D;AACzD,SACE,gBAAAN;AAAA,IAACE,EAAiB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV,eAAAG;AAAA,MACC,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASC,EAAQ,EAAE,GAAGD,KAA6D;AACjF,SACE,gBAAAN,EAACI,GAAA,EACC,UAAA,gBAAAJ,EAACE,EAAiB,MAAjB,EAAsB,aAAU,WAAW,GAAGI,EAAA,CAAO,EAAA,CACxD;AAEJ;AAEA,SAASE,EAAe,EAAE,GAAGF,KAAgE;AAC3F,2BAAQJ,EAAiB,SAAjB,EAAyB,aAAU,mBAAmB,GAAGI,GAAO;AAC1E;AAEA,SAASG,EAAe;AAAA,EACtB,WAAAC;AAAA,EACA,YAAAC,IAAa;AAAA,EACb,UAAAC;AAAA,EACA,GAAGN;AACL,GAA0D;AACxD,SACE,gBAAAN,EAACE,EAAiB,QAAjB,EACC,UAAA,gBAAAD;AAAA,IAACC,EAAiB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV,YAAAS;AAAA,MACA,WAAWR;AAAA,QACT;AAAA,QACAO;AAAA,MAAA;AAAA,MAED,GAAGJ;AAAA,MAEH,UAAA;AAAA,QAAAM;AAAA,QACD,gBAAAZ,EAACE,EAAiB,OAAjB,EAAuB,WAAU,qGAAA,CAAqG;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAE3I;AAEJ;"}
@@ -1,81 +0,0 @@
1
- import { jsx as i, jsxs as u } from "react/jsx-runtime";
2
- import { SidebarProvider as x, SidebarInset as I } from "./atoms/sidebar.js";
3
- import { AppSidebar as M } from "./organisms/app-sidebar.js";
4
- import { AppNavbar as N } from "./organisms/app-navbar.js";
5
- import * as d from "lucide-react";
6
- const r = (t) => d[t] ?? d.Circle;
7
- function B({
8
- children: t,
9
- layoutConfig: n
10
- }) {
11
- const { navbar: e = {}, sidebar: s = {} } = n.components || {}, h = e.items?.map((o) => ({
12
- ...o,
13
- icon: r(o.icon || "")
14
- })), b = e.userMenuItems?.map((o) => ({
15
- ...o,
16
- icon: o.icon ? r(o.icon) : void 0
17
- })), m = s.groups?.map((o) => ({
18
- ...o,
19
- items: o.items.map((l) => ({
20
- ...l,
21
- icon: r(l.icon || "")
22
- }))
23
- })), p = s.userMenuItems?.map((o) => ({
24
- ...o,
25
- icon: o.icon ? r(o.icon) : void 0
26
- })), g = {
27
- "--sidebar-width": s.width || "250px"
28
- }, a = n.layoutRules || {
29
- public: { navbar: !0, sidebar: !0 }
30
- }, c = a.public?.sidebar ?? !0, f = a.public?.navbar ?? !0, w = e.notifications?.enabled && e.notifications.count ? Array.from({ length: e.notifications.count }).map(() => ({
31
- title: "New Notification",
32
- description: "You have a new notification.",
33
- date: "Just now",
34
- read: !e.notifications?.isNewNotification
35
- })) : [], v = s.scrollable ?? !0;
36
- return /* @__PURE__ */ i("div", { style: { "--header-height": "calc(var(--spacing, 14))" }, children: /* @__PURE__ */ u(x, { defaultOpen: !0, className: "flex flex-col", style: g, children: [
37
- f && /* @__PURE__ */ i(
38
- N,
39
- {
40
- items: h,
41
- searchPlaceholder: e.search?.placeholder,
42
- showSearch: e.search?.enabled ?? !1,
43
- showThemeToggle: e.showThemeToggle,
44
- showUserMenu: e.showUserMenu,
45
- showNotifications: e.notifications?.enabled,
46
- notifications: w,
47
- user: n.user,
48
- userMenuItems: b,
49
- branding: e.branding,
50
- labels: void 0,
51
- style: { height: e.height },
52
- showSidebarTrigger: c && (e.showSidebarTrigger ?? !0),
53
- loginButton: e.loginButton
54
- }
55
- ),
56
- /* @__PURE__ */ u("div", { className: "flex flex-1", children: [
57
- c && /* @__PURE__ */ i(
58
- M,
59
- {
60
- side: s.placement === "right" ? "right" : "left",
61
- scrollable: v,
62
- fixed: !0,
63
- groups: m,
64
- showThemeToggle: s.showThemeToggle,
65
- user: n.user,
66
- userMenuItems: p,
67
- branding: s.branding,
68
- labels: void 0,
69
- hideBranding: !1,
70
- showUserMenu: s.showUserMenu,
71
- loginButton: s.loginButton
72
- }
73
- ),
74
- /* @__PURE__ */ i(I, { children: /* @__PURE__ */ i("div", { className: "p-4 mx-auto w-full", style: void 0, children: t }) })
75
- ] })
76
- ] }) });
77
- }
78
- export {
79
- B as default
80
- };
81
- //# sourceMappingURL=default-layout.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"default-layout.js","sources":["../src/default-layout.tsx"],"sourcesContent":["import React from \"react\";\nimport { SidebarProvider, SidebarInset } from \"@/atoms/sidebar\";\nimport { AppSidebar } from \"@/organisms/app-sidebar\";\nimport { AppNavbar } from \"@/organisms/app-navbar\";\nimport * as LucideIcons from \"lucide-react\";\n\nexport type Placement = \"left\" | \"right\" | \"top\" | \"bottom\";\nexport type NavbarHeight = \"sm\" | \"md\" | \"lg\" | string;\nexport type RouteType = \"public\" | \"auth\" | \"private\";\nexport type HttpMethod = \"GET\" | \"POST\";\n\nexport type LayoutRules = {\n [key in RouteType]?: { navbar?: boolean; sidebar?: boolean };\n};\n\nexport type UserConfig = {\n name?: string;\n image?: string;\n username?: string;\n email?: string;\n roles?: string[];\n};\n\nexport type SearchConfig = {\n enabled?: boolean;\n placeholder?: string;\n action?: string;\n method?: HttpMethod;\n debounceTimeMs?: number;\n suggestionsApi?: string;\n};\n\nexport type NotificationsList = {\n title: string;\n image?: string;\n description: string;\n date: string;\n read: boolean;\n};\n\nexport type NotificationConfig = {\n enabled?: boolean;\n isNewNotification?: boolean;\n count?: number;\n showBadge?: boolean;\n notifications?: NotificationsList[];\n};\n\nexport type MenuItem = {\n label: string;\n href: string;\n icon?: string;\n disabled?: boolean;\n};\n\nexport type BrandingConfig = {\n logoUrl?: string;\n logoAlt?: string;\n title?: string;\n subtitle?: string;\n};\n\nexport type LoginButtonConfig = {\n label?: string;\n href?: string;\n variant?: \"default\" | \"destructive\" | \"outline\" | \"secondary\" | \"ghost\" | \"link\";\n onClick?: () => void;\n};\n\nexport type BaseComponentConfig = {\n showThemeToggle?: boolean;\n showUserMenu?: boolean;\n loginButton?: LoginButtonConfig;\n search?: SearchConfig;\n scrollable?: boolean;\n branding?: BrandingConfig;\n showSidebarTrigger?: boolean;\n customContent?: React.ReactNode;\n notifications?: NotificationConfig;\n};\n\nexport type NavbarConfig = BaseComponentConfig & {\n height?: NavbarHeight;\n items?: MenuItem[];\n userMenuItems?: { label: string; href?: string; icon?: string; onClick?: () => void }[];\n};\n\nexport type SidebarGroup = {\n label: string;\n items: MenuItem[];\n collapsible?: boolean;\n};\n\nexport type SidebarConfig = BaseComponentConfig & {\n width?: string;\n placement?: Placement;\n groups?: SidebarGroup[];\n userMenuItems?: { label: string; href?: string; icon?: string; onClick?: () => void }[];\n};\n\nexport type ComponentConfig = {\n navbar?: NavbarConfig;\n sidebar?: SidebarConfig;\n};\n\nexport type LayoutConfig = {\n layoutRules?: LayoutRules;\n user?: UserConfig;\n search?: SearchConfig;\n components?: ComponentConfig;\n appName?: string;\n theme?: \"light\" | \"dark\" | \"system\";\n};\n\nconst getIcon = (name: string) => {\n // @ts-ignore – dynamic access to lucide icons\n return (LucideIcons as any)[name] ?? (LucideIcons as any)[\"Circle\"];\n};\n\nexport default function DefaultLayout({\n children,\n layoutConfig,\n}: {\n children: React.ReactNode;\n layoutConfig: LayoutConfig;\n}) {\n const { navbar = {}, sidebar = {} } = layoutConfig.components || {};\n\n const navbarItems = navbar.items?.map((item) => ({\n ...item,\n icon: getIcon(item.icon || \"\"),\n }));\n\n const navbarUserMenuItems = navbar.userMenuItems?.map((item) => ({\n ...item,\n icon: item.icon ? getIcon(item.icon) : undefined,\n }));\n\n const sidebarGroups = sidebar.groups?.map((group) => ({\n ...group,\n items: group.items.map((item) => ({\n ...item,\n icon: getIcon(item.icon || \"\"),\n })),\n }));\n\n const sidebarUserMenuItems = sidebar.userMenuItems?.map((item) => ({\n ...item,\n icon: item.icon ? getIcon(item.icon) : undefined,\n }));\n\n const sidebarProviderStyle: React.CSSProperties = {\n \"--sidebar-width\": sidebar.width || \"250px\",\n } as React.CSSProperties;\n\n const layoutRules = layoutConfig.layoutRules || {\n public: { navbar: true, sidebar: true },\n auth: { navbar: true, sidebar: true },\n private: { navbar: true, sidebar: true },\n };\n\n const showSidebar = layoutRules.public?.sidebar ?? true;\n const showNavbar = layoutRules.public?.navbar ?? true;\n\n const notifications =\n navbar.notifications?.enabled && navbar.notifications.count\n ? Array.from({ length: navbar.notifications.count }).map(() => ({\n title: \"New Notification\",\n description: \"You have a new notification.\",\n date: \"Just now\",\n read: !navbar.notifications?.isNewNotification,\n }))\n : [];\n\n const scrollable = sidebar.scrollable ?? true;\n const maxWidth = undefined;\n\n return (\n <div style={{ \"--header-height\": \"calc(var(--spacing, 14))\" } as React.CSSProperties}>\n <SidebarProvider defaultOpen={true} className=\"flex flex-col\" style={sidebarProviderStyle}>\n {showNavbar && (\n <AppNavbar\n items={navbarItems}\n searchPlaceholder={navbar.search?.placeholder}\n showSearch={navbar.search?.enabled ?? false}\n showThemeToggle={navbar.showThemeToggle}\n showUserMenu={navbar.showUserMenu}\n showNotifications={navbar.notifications?.enabled}\n notifications={notifications}\n user={layoutConfig.user}\n userMenuItems={navbarUserMenuItems}\n branding={navbar.branding}\n labels={undefined}\n style={{ height: navbar.height }}\n showSidebarTrigger={showSidebar && (navbar.showSidebarTrigger ?? true)}\n loginButton={navbar.loginButton}\n />\n )}\n <div className=\"flex flex-1\">\n {showSidebar && (\n <AppSidebar\n side={sidebar.placement === \"right\" ? \"right\" : \"left\"}\n scrollable={scrollable}\n fixed={true}\n groups={sidebarGroups}\n showThemeToggle={sidebar.showThemeToggle}\n user={layoutConfig.user}\n userMenuItems={sidebarUserMenuItems}\n branding={sidebar.branding}\n labels={undefined}\n hideBranding={false}\n showUserMenu={sidebar.showUserMenu}\n loginButton={sidebar.loginButton}\n />\n )}\n <SidebarInset>\n <div className=\"p-4 mx-auto w-full\" style={maxWidth ? { maxWidth } : undefined}>\n {children}\n </div>\n </SidebarInset>\n </div>\n </SidebarProvider>\n </div>\n );\n}\n"],"names":["jsx","jsxs","SidebarProvider","SidebarInset","AppSidebar","AppNavbar","LucideIcons","getIcon","name","DefaultLayout","children","layoutConfig","navbar","sidebar","navbarItems","item","navbarUserMenuItems","sidebarGroups","group","sidebarUserMenuItems","sidebarProviderStyle","layoutRules","showSidebar","showNavbar","notifications","scrollable"],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export * from './sidebar-theme-toggle';
2
- export * from './theme-toggle';
3
- export * from './user-menu';
@@ -1,9 +0,0 @@
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
@@ -1,5 +0,0 @@
1
- /**
2
- * Client-only theme toggle component for sidebar footer.
3
- * This component uses next-themes hooks and must remain client-side.
4
- */
5
- export declare function SidebarThemeToggle(): import("react/jsx-runtime").JSX.Element;
@@ -1,39 +0,0 @@
1
- import { jsx as e, jsxs as r } from "react/jsx-runtime";
2
- import { Sun as n, Moon as a, ChevronDown as s } from "lucide-react";
3
- import { useTheme as o } from "next-themes";
4
- import { SidebarMenu as l, SidebarMenuItem as d, SidebarMenuButton as m } from "../atoms/sidebar.js";
5
- import { DropdownMenu as c, DropdownMenuTrigger as h, DropdownMenuContent as u, DropdownMenuItem as i } from "../atoms/dropdown-menu.js";
6
- function k() {
7
- const { setTheme: t } = o();
8
- return /* @__PURE__ */ e(l, { children: /* @__PURE__ */ e(d, { children: /* @__PURE__ */ r(c, { children: [
9
- /* @__PURE__ */ e(h, { asChild: !0, children: /* @__PURE__ */ r(m, { size: "lg", children: [
10
- /* @__PURE__ */ r("div", { className: "flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground", children: [
11
- /* @__PURE__ */ e(n, { className: "size-4 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" }),
12
- /* @__PURE__ */ e(a, { className: "absolute size-4 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" })
13
- ] }),
14
- /* @__PURE__ */ r("div", { className: "grid flex-1 text-left text-sm leading-tight", children: [
15
- /* @__PURE__ */ e("span", { className: "truncate font-semibold", children: "Theme" }),
16
- /* @__PURE__ */ e("span", { className: "truncate text-xs", children: "Toggle theme" })
17
- ] }),
18
- /* @__PURE__ */ e(s, { className: "ml-auto size-4" })
19
- ] }) }),
20
- /* @__PURE__ */ r(
21
- u,
22
- {
23
- className: "w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg",
24
- side: "bottom",
25
- align: "end",
26
- sideOffset: 4,
27
- children: [
28
- /* @__PURE__ */ e(i, { onClick: () => t("light"), children: "Light" }),
29
- /* @__PURE__ */ e(i, { onClick: () => t("dark"), children: "Dark" }),
30
- /* @__PURE__ */ e(i, { onClick: () => t("system"), children: "System" })
31
- ]
32
- }
33
- )
34
- ] }) }) });
35
- }
36
- export {
37
- k as SidebarThemeToggle
38
- };
39
- //# sourceMappingURL=sidebar-theme-toggle.js.map
@@ -1 +0,0 @@
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;"}
@@ -1 +0,0 @@
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;"}
@@ -1,30 +0,0 @@
1
- import { jsxs as a, jsx as e } from "react/jsx-runtime";
2
- import * as d from "react";
3
- import { Avatar as t, AvatarImage as m, AvatarFallback as h } from "../atoms/avatar.js";
4
- import { Button as s } from "../atoms/button.js";
5
- import { DropdownMenu as p, DropdownMenuTrigger as f, DropdownMenuContent as u, DropdownMenuLabel as g, DropdownMenuSeparator as x, DropdownMenuItem as o } from "../atoms/dropdown-menu.js";
6
- import { cn as w } from "../lib/utils.js";
7
- function b({ user: n, items: l, className: i }) {
8
- return /* @__PURE__ */ a(p, { children: [
9
- /* @__PURE__ */ e(f, { asChild: !0, children: /* @__PURE__ */ e(s, { variant: "ghost", size: "icon", className: w("rounded-full", i), children: /* @__PURE__ */ a(t, { className: "h-8 w-8", children: [
10
- /* @__PURE__ */ e(m, { src: n.avatar, alt: n.name }),
11
- /* @__PURE__ */ e(h, { children: n.name?.[0] ?? "U" })
12
- ] }) }) }),
13
- /* @__PURE__ */ a(u, { align: "end", children: [
14
- /* @__PURE__ */ e(g, { className: "p-0 font-normal", children: /* @__PURE__ */ a("div", { className: "flex flex-col space-y-1", children: [
15
- /* @__PURE__ */ e("p", { className: "text-sm font-medium leading-none", children: n.name }),
16
- /* @__PURE__ */ e("p", { className: "text-xs leading-none text-muted-foreground", children: n.email })
17
- ] }) }),
18
- /* @__PURE__ */ e(x, {}),
19
- l?.map((r, c) => /* @__PURE__ */ e(o, { asChild: !0, children: /* @__PURE__ */ a("a", { href: r.href ?? "#", onClick: r.onClick, children: [
20
- r.icon && d.createElement(r.icon, { className: "mr-2 h-4 w-4" }),
21
- /* @__PURE__ */ e("span", { children: r.label })
22
- ] }) }, c)),
23
- !l?.length && /* @__PURE__ */ e(o, { asChild: !0, children: /* @__PURE__ */ e("a", { href: "#profile", children: "Profile" }) })
24
- ] })
25
- ] });
26
- }
27
- export {
28
- b as UserMenu
29
- };
30
- //# sourceMappingURL=user-menu.js.map
@@ -1 +0,0 @@
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,37 +0,0 @@
1
- import { UserConfig, BrandingConfig, MenuItem, NotificationsList, LoginButtonConfig } 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
- }
15
- interface AppNavbarProps {
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;
27
- showSearch?: boolean;
28
- showSidebarTrigger?: boolean;
29
- showUserMenu?: boolean;
30
- showThemeToggle?: boolean;
31
- showNotifications?: boolean;
32
- className?: string;
33
- style?: React.CSSProperties;
34
- loginButton?: LoginButtonConfig;
35
- }
36
- export declare function AppNavbar({ items, searchPlaceholder, user, userMenuItems, notifications, branding, labels, showSearch, showSidebarTrigger, showUserMenu, showThemeToggle, showNotifications, className, style, loginButton, }: AppNavbarProps): import("react/jsx-runtime").JSX.Element;
37
- export {};
@@ -1,111 +0,0 @@
1
- import { jsxs as r, jsx as e, Fragment as b } from "react/jsx-runtime";
2
- import { Search as M, Bell as k } from "lucide-react";
3
- import { Input as D } from "../atoms/input.js";
4
- import { Button as d } from "../atoms/button.js";
5
- import { SidebarTrigger as C } from "../atoms/sidebar.js";
6
- import { Separator as S } from "../atoms/separator.js";
7
- import { ThemeToggle as y } from "../molecules/theme-toggle.js";
8
- import { UserMenu as L } from "../molecules/user-menu.js";
9
- import { DropdownMenu as T, DropdownMenuTrigger as j, DropdownMenuContent as I, DropdownMenuLabel as U, DropdownMenuSeparator as z, DropdownMenuItem as A } from "../atoms/dropdown-menu.js";
10
- function P({
11
- items: h = [],
12
- searchPlaceholder: p = "Search...",
13
- user: t,
14
- userMenuItems: f,
15
- notifications: s = [],
16
- branding: o,
17
- labels: m,
18
- showSearch: u = !0,
19
- showSidebarTrigger: N = !0,
20
- showUserMenu: x = !0,
21
- showThemeToggle: g = !0,
22
- showNotifications: w = !0,
23
- className: i,
24
- style: v,
25
- loginButton: l
26
- }) {
27
- return /* @__PURE__ */ r(
28
- "header",
29
- {
30
- className: "flex h-16 shrink-0 items-center gap-2 border-b px-4 bg-background sticky top-0 z-50" + (i ? ` ${i}` : ""),
31
- style: v,
32
- children: [
33
- N && /* @__PURE__ */ r(b, { children: [
34
- /* @__PURE__ */ e(C, { className: "-ml-1" }),
35
- /* @__PURE__ */ e(S, { orientation: "vertical", className: "mr-2 h-4" })
36
- ] }),
37
- o && /* @__PURE__ */ r("a", { href: "#", className: "flex items-center gap-2 mr-4", children: [
38
- o.logoUrl && /* @__PURE__ */ e("img", { src: o.logoUrl, alt: o.logoAlt || "Logo", className: "h-6 w-6" }),
39
- o.title && /* @__PURE__ */ e("span", { className: "font-semibold", children: o.title })
40
- ] }),
41
- /* @__PURE__ */ e("nav", { className: "flex items-center gap-6 text-sm font-medium", children: h?.map((a, n) => {
42
- const c = a.icon;
43
- return /* @__PURE__ */ r(
44
- "a",
45
- {
46
- href: a.href,
47
- className: `transition-colors hover:text-foreground/80 ${a.disabled ? "pointer-events-none opacity-50" : "text-foreground/60"}`,
48
- children: [
49
- c && /* @__PURE__ */ e(c, { className: "inline-block mr-1 h-4 w-4" }),
50
- a.label
51
- ]
52
- },
53
- n
54
- );
55
- }) }),
56
- /* @__PURE__ */ r("div", { className: "ml-auto flex items-center gap-2", children: [
57
- u && /* @__PURE__ */ r("div", { className: "relative", children: [
58
- /* @__PURE__ */ e(M, { className: "absolute left-2 top-2.5 h-4 w-4 text-muted-foreground" }),
59
- /* @__PURE__ */ e(D, { placeholder: p, className: "pl-8 w-[200px] lg:w-[300px]" })
60
- ] }),
61
- g && /* @__PURE__ */ e(y, {}),
62
- x && (t && t.name && t.email ? /* @__PURE__ */ e(
63
- L,
64
- {
65
- user: { name: t.name, email: t.email, avatar: t.image },
66
- items: f
67
- }
68
- ) : l && /* @__PURE__ */ e(
69
- d,
70
- {
71
- variant: l.variant || "default",
72
- onClick: l.onClick,
73
- asChild: !!l.href,
74
- children: l.href ? /* @__PURE__ */ e("a", { href: l.href, children: l.label || "Login" }) : l.label || "Login"
75
- }
76
- )),
77
- w && s && s.length > 0 && /* @__PURE__ */ r(T, { children: [
78
- /* @__PURE__ */ e(j, { asChild: !0, children: /* @__PURE__ */ r(d, { variant: "ghost", size: "icon", className: "relative", children: [
79
- /* @__PURE__ */ e(k, { className: "h-5 w-5" }),
80
- s.some((a) => !a.read) && /* @__PURE__ */ e("span", { className: "absolute right-2 top-2 h-2 w-2 rounded-full bg-red-600" }),
81
- /* @__PURE__ */ e("span", { className: "sr-only", children: m?.notifications || "Notifications" })
82
- ] }) }),
83
- /* @__PURE__ */ r(I, { align: "end", className: "w-80", children: [
84
- /* @__PURE__ */ e(U, { children: m?.notifications || "Notifications" }),
85
- /* @__PURE__ */ e(z, {}),
86
- s.map((a, n) => /* @__PURE__ */ r(
87
- A,
88
- {
89
- className: "flex flex-col items-start gap-1 p-3 cursor-pointer",
90
- children: [
91
- /* @__PURE__ */ r("div", { className: "flex w-full items-center justify-between", children: [
92
- /* @__PURE__ */ e("span", { className: "font-medium", children: a.title }),
93
- /* @__PURE__ */ e("span", { className: "text-xs text-muted-foreground", children: a.date })
94
- ] }),
95
- /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground line-clamp-2", children: a.description })
96
- ]
97
- },
98
- n
99
- )),
100
- s.length === 0 && /* @__PURE__ */ e("div", { className: "p-4 text-center text-sm text-muted-foreground", children: m?.noNotifications || "No new notifications" })
101
- ] })
102
- ] })
103
- ] })
104
- ]
105
- }
106
- );
107
- }
108
- export {
109
- P as AppNavbar
110
- };
111
- //# sourceMappingURL=app-navbar.js.map
@@ -1 +0,0 @@
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 {\n UserConfig,\n BrandingConfig,\n MenuItem,\n NotificationsList,\n LoginButtonConfig,\n} 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 loginButton?: LoginButtonConfig;\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 loginButton,\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 &&\n (user && user.name && user.email ? (\n <UserMenu\n user={{ name: user.name, email: user.email, avatar: user.image }}\n items={userMenuItems}\n />\n ) : (\n loginButton && (\n <Button\n variant={loginButton.variant || \"default\"}\n onClick={loginButton.onClick}\n asChild={!!loginButton.href}\n >\n {loginButton.href ? (\n <a href={loginButton.href}>{loginButton.label || \"Login\"}</a>\n ) : (\n loginButton.label || \"Login\"\n )}\n </Button>\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","loginButton","item","index","Icon","n","notification"],"mappings":"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"}
@@ -1,37 +0,0 @@
1
- import { Sidebar } from '../atoms/sidebar';
2
- import { UserConfig, BrandingConfig, SidebarGroup as SidebarGroupType, MenuItem, LoginButtonConfig } 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;
30
- hideBranding?: boolean;
31
- showThemeToggle?: boolean;
32
- scrollable?: boolean;
33
- showUserMenu?: boolean;
34
- loginButton?: LoginButtonConfig;
35
- }
36
- export declare function AppSidebar({ groups, header, footer, user, userMenuItems, branding, labels, fixed, hideBranding, showThemeToggle, className, style, side, variant, collapsible, scrollable, showUserMenu, loginButton, ...props }: AppSidebarProps): import("react/jsx-runtime").JSX.Element;
37
- export {};