react-shadcn-kit 0.1.1 → 0.2.1

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 (337) hide show
  1. package/README.md +145 -71
  2. package/dist/assets/global.css +1 -1
  3. package/dist/components/composites/ComponentSearch.d.ts +43 -0
  4. package/dist/components/composites/ComponentSearch.js +141 -0
  5. package/dist/components/composites/ComponentSearch.js.map +1 -0
  6. package/dist/components/composites/action-button.d.ts +16 -0
  7. package/dist/components/composites/action-button.js +71 -0
  8. package/dist/components/composites/action-button.js.map +1 -0
  9. package/dist/components/composites/index.d.ts +9 -0
  10. package/dist/components/composites/sidebar-wrapper.d.ts +27 -0
  11. package/dist/components/composites/sidebar-wrapper.js +21 -0
  12. package/dist/components/composites/sidebar-wrapper.js.map +1 -0
  13. package/dist/{molecules → components/composites}/theme-toggle.js +3 -3
  14. package/dist/components/composites/theme-toggle.js.map +1 -0
  15. package/dist/{molecules → components/composites}/user-menu.js +4 -4
  16. package/dist/components/composites/user-menu.js.map +1 -0
  17. package/dist/components/marketing/hero.d.ts +12 -0
  18. package/dist/components/marketing/hero.js +87 -0
  19. package/dist/components/marketing/hero.js.map +1 -0
  20. package/dist/components/marketing/index.d.ts +6 -0
  21. package/dist/components/marketing/social-proof.d.ts +10 -0
  22. package/dist/components/marketing/social-proof.js +21 -0
  23. package/dist/components/marketing/social-proof.js.map +1 -0
  24. package/dist/components/marketing/value-props.d.ts +14 -0
  25. package/dist/components/marketing/value-props.js +25 -0
  26. package/dist/components/marketing/value-props.js.map +1 -0
  27. package/dist/{atoms → components/primitives}/accordion.js +1 -1
  28. package/dist/components/primitives/accordion.js.map +1 -0
  29. package/dist/{atoms → components/primitives}/alert-dialog.js +2 -2
  30. package/dist/components/primitives/alert-dialog.js.map +1 -0
  31. package/dist/{atoms → components/primitives}/alert.js +1 -1
  32. package/dist/components/primitives/alert.js.map +1 -0
  33. package/dist/components/primitives/aspect-ratio.js.map +1 -0
  34. package/dist/{atoms → components/primitives}/avatar.js +1 -1
  35. package/dist/components/primitives/avatar.js.map +1 -0
  36. package/dist/components/primitives/badge-variants.d.ts +3 -0
  37. package/dist/{atoms/badge.js → components/primitives/badge-variants.js} +7 -19
  38. package/dist/components/primitives/badge-variants.js.map +1 -0
  39. package/dist/components/primitives/badge.d.ts +9 -0
  40. package/dist/components/primitives/badge.js +21 -0
  41. package/dist/components/primitives/badge.js.map +1 -0
  42. package/dist/{atoms → components/primitives}/breadcrumb.js +1 -1
  43. package/dist/components/primitives/breadcrumb.js.map +1 -0
  44. package/dist/components/primitives/button-group-variants.d.ts +3 -0
  45. package/dist/components/primitives/button-group-variants.js +19 -0
  46. package/dist/components/primitives/button-group-variants.js.map +1 -0
  47. package/dist/components/primitives/button-group.d.ts +13 -0
  48. package/dist/components/primitives/button-group.js +52 -0
  49. package/dist/components/primitives/button-group.js.map +1 -0
  50. package/dist/components/primitives/button-variants.d.ts +4 -0
  51. package/dist/{atoms/button.js → components/primitives/button-variants.js} +8 -28
  52. package/dist/components/primitives/button-variants.js.map +1 -0
  53. package/dist/components/primitives/button.d.ts +9 -0
  54. package/dist/components/primitives/button.js +21 -0
  55. package/dist/components/primitives/button.js.map +1 -0
  56. package/dist/{atoms → components/primitives}/calendar.d.ts +1 -1
  57. package/dist/{atoms → components/primitives}/calendar.js +5 -4
  58. package/dist/components/primitives/calendar.js.map +1 -0
  59. package/dist/{atoms → components/primitives}/card.js +1 -1
  60. package/dist/components/primitives/card.js.map +1 -0
  61. package/dist/{atoms → components/primitives}/carousel.d.ts +1 -1
  62. package/dist/{atoms → components/primitives}/carousel.js +1 -1
  63. package/dist/components/primitives/carousel.js.map +1 -0
  64. package/dist/{atoms → components/primitives}/chart.js +1 -1
  65. package/dist/components/primitives/chart.js.map +1 -0
  66. package/dist/{atoms → components/primitives}/checkbox.js +1 -1
  67. package/dist/components/primitives/checkbox.js.map +1 -0
  68. package/dist/components/primitives/collapsible.js.map +1 -0
  69. package/dist/{atoms → components/primitives}/command.d.ts +1 -1
  70. package/dist/{atoms → components/primitives}/command.js +1 -1
  71. package/dist/components/primitives/command.js.map +1 -0
  72. package/dist/{atoms → components/primitives}/context-menu.js +1 -1
  73. package/dist/components/primitives/context-menu.js.map +1 -0
  74. package/dist/components/primitives/custom-button-variants.d.ts +5 -0
  75. package/dist/components/primitives/custom-button-variants.js +38 -0
  76. package/dist/components/primitives/custom-button-variants.js.map +1 -0
  77. package/dist/components/primitives/custom-button.d.ts +22 -0
  78. package/dist/components/primitives/custom-button.js +64 -0
  79. package/dist/components/primitives/custom-button.js.map +1 -0
  80. package/dist/{atoms → components/primitives}/dialog.js +8 -8
  81. package/dist/components/primitives/dialog.js.map +1 -0
  82. package/dist/{atoms → components/primitives}/drawer.js +1 -1
  83. package/dist/components/primitives/drawer.js.map +1 -0
  84. package/dist/{atoms → components/primitives}/dropdown-menu.js +1 -1
  85. package/dist/components/primitives/dropdown-menu.js.map +1 -0
  86. package/dist/{atoms → components/primitives}/empty.js +1 -1
  87. package/dist/components/primitives/empty.js.map +1 -0
  88. package/dist/{atoms → components/primitives}/field.d.ts +1 -1
  89. package/dist/{atoms → components/primitives}/field.js +1 -1
  90. package/dist/components/primitives/field.js.map +1 -0
  91. package/dist/components/primitives/form-context.d.ts +23 -0
  92. package/dist/components/primitives/form-context.js +26 -0
  93. package/dist/components/primitives/form-context.js.map +1 -0
  94. package/dist/components/primitives/form.d.ts +11 -0
  95. package/dist/components/primitives/form.js +85 -0
  96. package/dist/components/primitives/form.js.map +1 -0
  97. package/dist/{atoms → components/primitives}/hover-card.js +1 -1
  98. package/dist/components/primitives/hover-card.js.map +1 -0
  99. package/dist/components/primitives/index.d.ts +116 -0
  100. package/dist/{atoms → components/primitives}/input-group.d.ts +2 -2
  101. package/dist/{atoms → components/primitives}/input-group.js +1 -1
  102. package/dist/components/primitives/input-group.js.map +1 -0
  103. package/dist/{atoms → components/primitives}/input-otp.js +1 -1
  104. package/dist/components/primitives/input-otp.js.map +1 -0
  105. package/dist/{atoms → components/primitives}/input.js +1 -1
  106. package/dist/components/primitives/input.js.map +1 -0
  107. package/dist/{atoms → components/primitives}/item.d.ts +2 -2
  108. package/dist/{atoms → components/primitives}/item.js +1 -1
  109. package/dist/components/primitives/item.js.map +1 -0
  110. package/dist/{atoms → components/primitives}/kbd.js +1 -1
  111. package/dist/components/primitives/kbd.js.map +1 -0
  112. package/dist/{atoms → components/primitives}/label.js +1 -1
  113. package/dist/components/primitives/label.js.map +1 -0
  114. package/dist/components/primitives/loading-swap.d.ts +8 -0
  115. package/dist/components/primitives/loading-swap.js +25 -0
  116. package/dist/components/primitives/loading-swap.js.map +1 -0
  117. package/dist/{atoms → components/primitives}/menubar.js +1 -1
  118. package/dist/components/primitives/menubar.js.map +1 -0
  119. package/dist/components/primitives/navigation-menu-variants.d.ts +1 -0
  120. package/dist/components/primitives/navigation-menu-variants.js +8 -0
  121. package/dist/components/primitives/navigation-menu-variants.js.map +1 -0
  122. package/dist/components/primitives/navigation-menu.d.ts +13 -0
  123. package/dist/components/primitives/navigation-menu.js +102 -0
  124. package/dist/components/primitives/navigation-menu.js.map +1 -0
  125. package/dist/{atoms → components/primitives}/pagination.d.ts +1 -1
  126. package/dist/{atoms → components/primitives}/pagination.js +2 -2
  127. package/dist/components/primitives/pagination.js.map +1 -0
  128. package/dist/{atoms → components/primitives}/popover.js +1 -1
  129. package/dist/components/primitives/popover.js.map +1 -0
  130. package/dist/{atoms → components/primitives}/progress.js +1 -1
  131. package/dist/components/primitives/progress.js.map +1 -0
  132. package/dist/{atoms → components/primitives}/radio-group.js +1 -1
  133. package/dist/components/primitives/radio-group.js.map +1 -0
  134. package/dist/{atoms → components/primitives}/resizable.js +1 -1
  135. package/dist/components/primitives/resizable.js.map +1 -0
  136. package/dist/{atoms → components/primitives}/scroll-area.js +1 -1
  137. package/dist/components/primitives/scroll-area.js.map +1 -0
  138. package/dist/{atoms → components/primitives}/select.js +1 -1
  139. package/dist/components/primitives/select.js.map +1 -0
  140. package/dist/{atoms → components/primitives}/separator.js +1 -1
  141. package/dist/components/primitives/separator.js.map +1 -0
  142. package/dist/{atoms → components/primitives}/sheet.js +5 -5
  143. package/dist/components/primitives/sheet.js.map +1 -0
  144. package/dist/components/primitives/sidebar-context.d.ts +12 -0
  145. package/dist/components/primitives/sidebar-context.js +13 -0
  146. package/dist/components/primitives/sidebar-context.js.map +1 -0
  147. package/dist/components/primitives/sidebar-variants.d.ts +4 -0
  148. package/dist/components/primitives/sidebar-variants.js +25 -0
  149. package/dist/components/primitives/sidebar-variants.js.map +1 -0
  150. package/dist/components/primitives/sidebar.d.ts +56 -0
  151. package/dist/components/primitives/sidebar.js +542 -0
  152. package/dist/components/primitives/sidebar.js.map +1 -0
  153. package/dist/{atoms → components/primitives}/skeleton.js +1 -1
  154. package/dist/components/primitives/skeleton.js.map +1 -0
  155. package/dist/{atoms → components/primitives}/slider.js +1 -1
  156. package/dist/components/primitives/slider.js.map +1 -0
  157. package/dist/components/primitives/sonner.js.map +1 -0
  158. package/dist/{atoms → components/primitives}/spinner.js +1 -1
  159. package/dist/components/primitives/spinner.js.map +1 -0
  160. package/dist/{atoms → components/primitives}/switch.js +1 -1
  161. package/dist/components/primitives/switch.js.map +1 -0
  162. package/dist/{atoms → components/primitives}/table.js +1 -1
  163. package/dist/components/primitives/table.js.map +1 -0
  164. package/dist/{atoms → components/primitives}/tabs.js +1 -1
  165. package/dist/components/primitives/tabs.js.map +1 -0
  166. package/dist/{atoms → components/primitives}/textarea.js +1 -1
  167. package/dist/components/primitives/textarea.js.map +1 -0
  168. package/dist/components/primitives/theme-provider.js.map +1 -0
  169. package/dist/{atoms → components/primitives}/toggle-group.d.ts +1 -1
  170. package/dist/{atoms → components/primitives}/toggle-group.js +2 -2
  171. package/dist/components/primitives/toggle-group.js.map +1 -0
  172. package/dist/components/primitives/toggle-variants.d.ts +4 -0
  173. package/dist/{atoms/toggle.js → components/primitives/toggle-variants.js} +5 -24
  174. package/dist/components/primitives/toggle-variants.js.map +1 -0
  175. package/dist/components/primitives/toggle.d.ts +9 -0
  176. package/dist/components/primitives/toggle.js +21 -0
  177. package/dist/components/primitives/toggle.js.map +1 -0
  178. package/dist/{atoms → components/primitives}/tooltip.js +1 -1
  179. package/dist/components/primitives/tooltip.js.map +1 -0
  180. package/dist/composites/index.js +13 -0
  181. package/dist/{organisms → composites}/index.js.map +1 -1
  182. package/dist/hooks/index.d.ts +7 -0
  183. package/dist/hooks/index.js +8 -2
  184. package/dist/hooks/index.js.map +1 -1
  185. package/dist/hooks/use-aria-live.d.ts +22 -0
  186. package/dist/hooks/use-aria-live.js +18 -0
  187. package/dist/hooks/use-aria-live.js.map +1 -0
  188. package/dist/hooks/use-focus-visible.d.ts +15 -0
  189. package/dist/hooks/use-focus-visible.js +16 -0
  190. package/dist/hooks/use-focus-visible.js.map +1 -0
  191. package/dist/hooks/use-screen-reader-only.d.ts +14 -0
  192. package/dist/hooks/use-screen-reader-only.js +10 -0
  193. package/dist/hooks/use-screen-reader-only.js.map +1 -0
  194. package/dist/index.d.ts +10 -58
  195. package/dist/index.js +372 -343
  196. package/dist/index.js.map +1 -1
  197. package/dist/lib/index.d.ts +3 -0
  198. package/dist/lib/index.js +8 -2
  199. package/dist/lib/index.js.map +1 -1
  200. package/dist/lib/utils-enhanced.d.ts +27 -0
  201. package/dist/lib/utils-enhanced.js +28 -0
  202. package/dist/lib/utils-enhanced.js.map +1 -0
  203. package/dist/lib/utils-enhanced.test.d.ts +1 -0
  204. package/dist/marketing/index.js +9 -0
  205. package/dist/primitives/index.js +345 -0
  206. package/dist/{atoms → primitives}/index.js.map +1 -1
  207. package/package.json +24 -27
  208. package/dist/atoms/accordion.js.map +0 -1
  209. package/dist/atoms/alert-dialog.js.map +0 -1
  210. package/dist/atoms/alert.js.map +0 -1
  211. package/dist/atoms/aspect-ratio.js.map +0 -1
  212. package/dist/atoms/avatar.js.map +0 -1
  213. package/dist/atoms/badge.d.ts +0 -9
  214. package/dist/atoms/badge.js.map +0 -1
  215. package/dist/atoms/breadcrumb.js.map +0 -1
  216. package/dist/atoms/button-group.d.ts +0 -11
  217. package/dist/atoms/button-group.js +0 -76
  218. package/dist/atoms/button-group.js.map +0 -1
  219. package/dist/atoms/button.d.ts +0 -10
  220. package/dist/atoms/button.js.map +0 -1
  221. package/dist/atoms/calendar.js.map +0 -1
  222. package/dist/atoms/card.js.map +0 -1
  223. package/dist/atoms/carousel.js.map +0 -1
  224. package/dist/atoms/chart.js.map +0 -1
  225. package/dist/atoms/checkbox.js.map +0 -1
  226. package/dist/atoms/collapsible.js.map +0 -1
  227. package/dist/atoms/command.js.map +0 -1
  228. package/dist/atoms/context-menu.js.map +0 -1
  229. package/dist/atoms/dialog.js.map +0 -1
  230. package/dist/atoms/drawer.js.map +0 -1
  231. package/dist/atoms/dropdown-menu.js.map +0 -1
  232. package/dist/atoms/empty.js.map +0 -1
  233. package/dist/atoms/field.js.map +0 -1
  234. package/dist/atoms/form.d.ts +0 -24
  235. package/dist/atoms/form.js +0 -88
  236. package/dist/atoms/form.js.map +0 -1
  237. package/dist/atoms/hover-card.js.map +0 -1
  238. package/dist/atoms/index.d.ts +0 -54
  239. package/dist/atoms/index.js +0 -342
  240. package/dist/atoms/input-group.js.map +0 -1
  241. package/dist/atoms/input-otp.js.map +0 -1
  242. package/dist/atoms/input.js.map +0 -1
  243. package/dist/atoms/item.js.map +0 -1
  244. package/dist/atoms/kbd.js.map +0 -1
  245. package/dist/atoms/label.js.map +0 -1
  246. package/dist/atoms/menubar.js.map +0 -1
  247. package/dist/atoms/navigation-menu.d.ts +0 -14
  248. package/dist/atoms/navigation-menu.js +0 -160
  249. package/dist/atoms/navigation-menu.js.map +0 -1
  250. package/dist/atoms/pagination.js.map +0 -1
  251. package/dist/atoms/popover.js.map +0 -1
  252. package/dist/atoms/progress.js.map +0 -1
  253. package/dist/atoms/radio-group.js.map +0 -1
  254. package/dist/atoms/resizable.js.map +0 -1
  255. package/dist/atoms/scroll-area.js.map +0 -1
  256. package/dist/atoms/select.js.map +0 -1
  257. package/dist/atoms/separator.js.map +0 -1
  258. package/dist/atoms/sheet.js.map +0 -1
  259. package/dist/atoms/sidebar.d.ts +0 -70
  260. package/dist/atoms/sidebar.js +0 -573
  261. package/dist/atoms/sidebar.js.map +0 -1
  262. package/dist/atoms/skeleton.js.map +0 -1
  263. package/dist/atoms/slider.js.map +0 -1
  264. package/dist/atoms/sonner.js.map +0 -1
  265. package/dist/atoms/spinner.js.map +0 -1
  266. package/dist/atoms/switch.js.map +0 -1
  267. package/dist/atoms/table.js.map +0 -1
  268. package/dist/atoms/tabs.js.map +0 -1
  269. package/dist/atoms/textarea.js.map +0 -1
  270. package/dist/atoms/theme-provider.js.map +0 -1
  271. package/dist/atoms/toggle-group.js.map +0 -1
  272. package/dist/atoms/toggle.d.ts +0 -9
  273. package/dist/atoms/toggle.js.map +0 -1
  274. package/dist/atoms/tooltip.js.map +0 -1
  275. package/dist/default-layout.js +0 -114
  276. package/dist/default-layout.js.map +0 -1
  277. package/dist/molecules/index.d.ts +0 -3
  278. package/dist/molecules/index.js +0 -9
  279. package/dist/molecules/sidebar-theme-toggle.d.ts +0 -5
  280. package/dist/molecules/sidebar-theme-toggle.js +0 -39
  281. package/dist/molecules/sidebar-theme-toggle.js.map +0 -1
  282. package/dist/molecules/theme-toggle.js.map +0 -1
  283. package/dist/molecules/user-menu.js.map +0 -1
  284. package/dist/organisms/app-navbar.d.ts +0 -73
  285. package/dist/organisms/app-navbar.js +0 -142
  286. package/dist/organisms/app-navbar.js.map +0 -1
  287. package/dist/organisms/app-sidebar.d.ts +0 -67
  288. package/dist/organisms/app-sidebar.js +0 -161
  289. package/dist/organisms/app-sidebar.js.map +0 -1
  290. package/dist/organisms/index.d.ts +0 -2
  291. package/dist/organisms/index.js +0 -7
  292. /package/dist/{molecules → components/composites}/theme-toggle.d.ts +0 -0
  293. /package/dist/{molecules → components/composites}/user-menu.d.ts +0 -0
  294. /package/dist/{atoms → components/primitives}/accordion.d.ts +0 -0
  295. /package/dist/{atoms → components/primitives}/alert-dialog.d.ts +0 -0
  296. /package/dist/{atoms → components/primitives}/alert.d.ts +0 -0
  297. /package/dist/{atoms → components/primitives}/aspect-ratio.d.ts +0 -0
  298. /package/dist/{atoms → components/primitives}/aspect-ratio.js +0 -0
  299. /package/dist/{atoms → components/primitives}/avatar.d.ts +0 -0
  300. /package/dist/{atoms → components/primitives}/breadcrumb.d.ts +0 -0
  301. /package/dist/{atoms → components/primitives}/card.d.ts +0 -0
  302. /package/dist/{atoms → components/primitives}/chart.d.ts +0 -0
  303. /package/dist/{atoms → components/primitives}/checkbox.d.ts +0 -0
  304. /package/dist/{atoms → components/primitives}/collapsible.d.ts +0 -0
  305. /package/dist/{atoms → components/primitives}/collapsible.js +0 -0
  306. /package/dist/{atoms → components/primitives}/context-menu.d.ts +0 -0
  307. /package/dist/{atoms → components/primitives}/dialog.d.ts +0 -0
  308. /package/dist/{atoms → components/primitives}/drawer.d.ts +0 -0
  309. /package/dist/{atoms → components/primitives}/dropdown-menu.d.ts +0 -0
  310. /package/dist/{atoms → components/primitives}/empty.d.ts +0 -0
  311. /package/dist/{atoms → components/primitives}/hover-card.d.ts +0 -0
  312. /package/dist/{atoms → components/primitives}/input-otp.d.ts +0 -0
  313. /package/dist/{atoms → components/primitives}/input.d.ts +0 -0
  314. /package/dist/{atoms → components/primitives}/kbd.d.ts +0 -0
  315. /package/dist/{atoms → components/primitives}/label.d.ts +0 -0
  316. /package/dist/{atoms → components/primitives}/menubar.d.ts +0 -0
  317. /package/dist/{atoms → components/primitives}/popover.d.ts +0 -0
  318. /package/dist/{atoms → components/primitives}/progress.d.ts +0 -0
  319. /package/dist/{atoms → components/primitives}/radio-group.d.ts +0 -0
  320. /package/dist/{atoms → components/primitives}/resizable.d.ts +0 -0
  321. /package/dist/{atoms → components/primitives}/scroll-area.d.ts +0 -0
  322. /package/dist/{atoms → components/primitives}/select.d.ts +0 -0
  323. /package/dist/{atoms → components/primitives}/separator.d.ts +0 -0
  324. /package/dist/{atoms → components/primitives}/sheet.d.ts +0 -0
  325. /package/dist/{atoms → components/primitives}/skeleton.d.ts +0 -0
  326. /package/dist/{atoms → components/primitives}/slider.d.ts +0 -0
  327. /package/dist/{atoms → components/primitives}/sonner.d.ts +0 -0
  328. /package/dist/{atoms → components/primitives}/sonner.js +0 -0
  329. /package/dist/{atoms → components/primitives}/spinner.d.ts +0 -0
  330. /package/dist/{atoms → components/primitives}/switch.d.ts +0 -0
  331. /package/dist/{atoms → components/primitives}/table.d.ts +0 -0
  332. /package/dist/{atoms → components/primitives}/tabs.d.ts +0 -0
  333. /package/dist/{atoms → components/primitives}/textarea.d.ts +0 -0
  334. /package/dist/{atoms → components/primitives}/theme-provider.d.ts +0 -0
  335. /package/dist/{atoms → components/primitives}/theme-provider.js +0 -0
  336. /package/dist/{atoms → components/primitives}/tooltip.d.ts +0 -0
  337. /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,114 +0,0 @@
1
- import { jsx as n, jsxs as d } from "react/jsx-runtime";
2
- import { useState as O, useRef as N, useEffect as W } from "react";
3
- import { SidebarProvider as T, SidebarInset as I } from "./atoms/sidebar.js";
4
- import { AppSidebar as M } from "./organisms/app-sidebar.js";
5
- import { AppNavbar as U } from "./organisms/app-navbar.js";
6
- import * as E from "lucide-react";
7
- const A = (o) => E[o] ?? E.Circle, p = (o) => o?.map((r) => ({
8
- ...r,
9
- icon: r.icon ? A(r.icon) : void 0,
10
- items: r.items ? p(r.items) : void 0
11
- })), L = (o) => o?.map((r) => ({
12
- ...r,
13
- icon: r.icon ? A(r.icon) : void 0
14
- })), Y = (o) => o?.map((r) => ({
15
- ...r,
16
- items: p(r.items) || []
17
- })), P = "250px", R = "calc(var(--spacing, 14))";
18
- function k({ children: o, config: r }) {
19
- const {
20
- showNavbar: g = !0,
21
- showSidebar: u = !0,
22
- user: t,
23
- navbar: e = {},
24
- sidebar: s = {},
25
- content: v = {},
26
- sidebarDefaultOpen: b = !0
27
- } = r, a = s.fullHeight ?? !1, [D, h] = O(!0), m = N(0), w = N(null);
28
- W(() => {
29
- if (e.scrollBehavior !== "hide-on-scroll") {
30
- h(!0);
31
- return;
32
- }
33
- const l = a ? w.current : window;
34
- if (!l) return;
35
- const c = () => {
36
- const i = l === window ? window.scrollY : l.scrollTop;
37
- i < m.current || i < 50 ? e.showOnScrollUp !== !1 && h(!0) : i > m.current && i > 50 && h(!1), m.current = i;
38
- };
39
- return l === window ? (window.addEventListener("scroll", c, { passive: !0 }), () => window.removeEventListener("scroll", c)) : (l.addEventListener("scroll", c, { passive: !0 }), () => l.removeEventListener("scroll", c));
40
- }, [e.scrollBehavior, e.showOnScrollUp, a]);
41
- const x = {
42
- placement: "top",
43
- sticky: e.scrollBehavior === "sticky" || e.scrollBehavior === "hide-on-scroll",
44
- branding: e.branding,
45
- items: p(e.items),
46
- search: e.search,
47
- notifications: e.notifications,
48
- showThemeToggle: e.showThemeToggle ?? !1,
49
- showSidebarTrigger: u && !a && (e.showSidebarTrigger ?? !0),
50
- showUserMenu: e.showUserMenu ?? !1,
51
- user: t,
52
- userMenuItems: L(e.userMenuItems),
53
- loginButton: e.loginButton,
54
- style: {
55
- ...e.height ? { height: e.height } : {},
56
- ...e.scrollBehavior === "hide-on-scroll" ? {
57
- transform: D ? "translateY(0)" : "translateY(-100%)",
58
- transition: "transform 0.3s ease-in-out"
59
- } : {}
60
- },
61
- className: e.blendWithBody ? "border-0 bg-transparent" : void 0
62
- }, H = t ? {
63
- name: t.name,
64
- email: t.email,
65
- image: t.image,
66
- username: t.username,
67
- roles: t.roles
68
- } : void 0, f = {
69
- side: s.placement ?? "left",
70
- fixed: s.fixed ?? !0,
71
- scrollable: s.scrollable ?? !0,
72
- groups: Y(s.groups),
73
- showThemeToggle: s.showThemeToggle ?? !1,
74
- showUserMenu: s.showUserMenu ?? !1,
75
- user: H,
76
- userMenuItems: L(s.userMenuItems),
77
- branding: s.branding,
78
- hideBranding: s.hideBranding ?? !1,
79
- loginButton: s.loginButton,
80
- className: s.blendWithBody ? "border-0 bg-transparent" : void 0
81
- }, S = {
82
- "--sidebar-width": s.width || P
83
- }, y = {
84
- padding: v.padding,
85
- maxWidth: v.maxWidth
86
- }, B = {
87
- "--header-height": e.height || R
88
- };
89
- return a && u ? /* @__PURE__ */ n("div", { style: B, className: "flex h-screen", children: /* @__PURE__ */ d(T, { defaultOpen: b, style: S, children: [
90
- /* @__PURE__ */ n(M, { ...f, className: `h-screen ${f.className || ""}` }),
91
- /* @__PURE__ */ d("div", { className: "flex flex-col flex-1 overflow-hidden", children: [
92
- g && /* @__PURE__ */ n(U, { ...x }),
93
- /* @__PURE__ */ n(I, { ref: w, className: "flex-1 overflow-auto", children: /* @__PURE__ */ n("div", { className: "p-4 mx-auto w-full", style: y, children: o }) })
94
- ] })
95
- ] }) }) : /* @__PURE__ */ n("div", { style: B, children: /* @__PURE__ */ d(
96
- T,
97
- {
98
- defaultOpen: b,
99
- className: "flex flex-col",
100
- style: S,
101
- children: [
102
- g && /* @__PURE__ */ n(U, { ...x }),
103
- /* @__PURE__ */ d("div", { className: "flex flex-1", children: [
104
- u && /* @__PURE__ */ n(M, { ...f }),
105
- /* @__PURE__ */ n(I, { children: /* @__PURE__ */ n("div", { className: "p-4 mx-auto w-full", style: y, children: o }) })
106
- ] })
107
- ]
108
- }
109
- ) });
110
- }
111
- export {
112
- k as default
113
- };
114
- //# sourceMappingURL=default-layout.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"default-layout.js","sources":["../src/default-layout.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { useState, useEffect, useRef } from \"react\";\nimport { SidebarProvider, SidebarInset } from \"@/atoms/sidebar\";\nimport { AppSidebar, type AppSidebarProps } from \"@/organisms/app-sidebar\";\nimport { AppNavbar, type AppNavbarProps } from \"@/organisms/app-navbar\";\nimport * as LucideIcons from \"lucide-react\";\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport type User = {\n name: string;\n email: string;\n image?: string;\n username?: string;\n roles?: string[];\n};\n\ntype MenuItem = {\n label: string;\n href: string;\n icon?: React.ComponentType<{ className?: string }>;\n disabled?: boolean;\n items?: MenuItem[];\n};\n\ntype MenuGroup = {\n label?: string;\n items: MenuItem[];\n collapsible?: boolean;\n};\n\ntype UserMenuItem = {\n label: string;\n href?: string;\n icon?: React.ComponentType<{ className?: string }>;\n onClick?: () => void;\n};\n\nexport type Branding = {\n logoUrl?: string;\n logoAlt?: string;\n title?: string;\n subtitle?: string;\n href?: string;\n};\n\nexport type LoginButton = {\n label?: string;\n href?: string;\n variant?: \"default\" | \"destructive\" | \"outline\" | \"secondary\" | \"ghost\" | \"link\";\n onClick?: () => void;\n};\n\nexport type SearchConfig = {\n enabled?: boolean;\n placeholder?: string;\n onSearch?: (value: string) => void;\n};\n\nexport type NotificationItem = {\n title: string;\n description: string;\n date: string;\n read: boolean;\n image?: string;\n};\n\nexport type NotificationsConfig = {\n enabled?: boolean;\n items?: NotificationItem[];\n onNotificationClick?: (notification: NotificationItem, index: number) => void;\n};\n\nexport type NavbarConfig = {\n height?: string;\n items?: MenuItemInput[];\n search?: SearchConfig;\n notifications?: NotificationsConfig;\n showThemeToggle?: boolean;\n showUserMenu?: boolean;\n showSidebarTrigger?: boolean;\n branding?: Branding;\n userMenuItems?: UserMenuItemInput[];\n loginButton?: LoginButton;\n // Removed fullWidth option\n blendWithBody?: boolean;\n // New scroll behavior options\n scrollBehavior?: \"sticky\" | \"hide-on-scroll\" | \"static\";\n showOnScrollUp?: boolean;\n};\n\nexport type SidebarConfig = {\n width?: string;\n placement?: \"left\" | \"right\";\n groups?: MenuGroupInput[];\n showThemeToggle?: boolean;\n showUserMenu?: boolean;\n branding?: Branding;\n hideBranding?: boolean;\n userMenuItems?: UserMenuItemInput[];\n loginButton?: LoginButton;\n scrollable?: boolean;\n fixed?: boolean;\n fullHeight?: boolean;\n blendWithBody?: boolean;\n};\n\nexport type ContentConfig = {\n maxWidth?: string;\n padding?: string;\n};\n\n// Input types (with string icons)\nexport type MenuItemInput = {\n label: string;\n href: string;\n icon?: string;\n disabled?: boolean;\n items?: MenuItemInput[];\n};\n\nexport type MenuGroupInput = {\n label?: string;\n items: MenuItemInput[];\n collapsible?: boolean;\n};\n\nexport type UserMenuItemInput = {\n label: string;\n href?: string;\n icon?: string;\n onClick?: () => void;\n};\n\nexport type LayoutConfig = {\n showNavbar?: boolean;\n showSidebar?: boolean;\n user?: User;\n navbar?: NavbarConfig;\n sidebar?: SidebarConfig;\n content?: ContentConfig;\n sidebarDefaultOpen?: boolean;\n};\n\nexport type DefaultLayoutProps = {\n children: React.ReactNode;\n config: LayoutConfig;\n};\n\n// ============================================================================\n// UTILITIES\n// ============================================================================\n\nconst getIcon = (name: string): React.ComponentType<{ className?: string }> => {\n return (LucideIcons as any)[name] ?? (LucideIcons as any)[\"Circle\"];\n};\n\nconst mapMenuItems = (items?: MenuItemInput[]): MenuItem[] | undefined => {\n return items?.map((item) => ({\n ...item,\n icon: item.icon ? getIcon(item.icon) : undefined,\n items: item.items ? mapMenuItems(item.items) : undefined,\n }));\n};\n\nconst mapUserMenuItems = (items?: UserMenuItemInput[]): UserMenuItem[] | undefined => {\n return items?.map((item) => ({\n ...item,\n icon: item.icon ? getIcon(item.icon) : undefined,\n }));\n};\n\nconst mapSidebarGroups = (groups?: MenuGroupInput[]): MenuGroup[] | undefined => {\n return groups?.map((group) => ({\n ...group,\n items: mapMenuItems(group.items) || [],\n }));\n};\n\n// ============================================================================\n// DEFAULTS\n// ============================================================================\n\nconst DEFAULT_SIDEBAR_WIDTH = \"250px\";\nconst DEFAULT_NAVBAR_HEIGHT = \"calc(var(--spacing, 14))\";\n\n// ============================================================================\n// MAIN COMPONENT\n// ============================================================================\n\nexport default function DefaultLayout({ children, config }: DefaultLayoutProps) {\n const {\n showNavbar = true,\n showSidebar = true,\n user,\n navbar = {},\n sidebar = {},\n content = {},\n sidebarDefaultOpen = true,\n } = config;\n\n // Layout mode calculations\n const sidebarFullHeight = sidebar.fullHeight ?? false;\n\n // Scroll behavior logic\n const [navbarVisible, setNavbarVisible] = useState(true);\n const lastScrollY = useRef(0);\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (navbar.scrollBehavior !== \"hide-on-scroll\") {\n setNavbarVisible(true);\n return;\n }\n\n // Determine the scroll container based on layout variant\n const scrollContainer = sidebarFullHeight ? scrollContainerRef.current : window;\n\n if (!scrollContainer) return;\n\n const handleScroll = () => {\n const currentScrollY =\n scrollContainer === window ? window.scrollY : (scrollContainer as HTMLDivElement).scrollTop;\n\n // Show if scrolling up or at top, hide if scrolling down\n if (currentScrollY < lastScrollY.current || currentScrollY < 50) {\n if (navbar.showOnScrollUp !== false) {\n setNavbarVisible(true);\n }\n } else if (currentScrollY > lastScrollY.current && currentScrollY > 50) {\n setNavbarVisible(false);\n }\n lastScrollY.current = currentScrollY;\n };\n\n if (scrollContainer === window) {\n window.addEventListener(\"scroll\", handleScroll, { passive: true });\n return () => window.removeEventListener(\"scroll\", handleScroll);\n } else {\n scrollContainer.addEventListener(\"scroll\", handleScroll, { passive: true });\n return () => scrollContainer.removeEventListener(\"scroll\", handleScroll);\n }\n }, [navbar.scrollBehavior, navbar.showOnScrollUp, sidebarFullHeight]);\n\n // Prepare navbar props\n const navbarProps: AppNavbarProps = {\n placement: \"top\",\n sticky: navbar.scrollBehavior === \"sticky\" || navbar.scrollBehavior === \"hide-on-scroll\",\n branding: navbar.branding,\n items: mapMenuItems(navbar.items),\n search: navbar.search,\n notifications: navbar.notifications,\n showThemeToggle: navbar.showThemeToggle ?? false,\n showSidebarTrigger: showSidebar && !sidebarFullHeight && (navbar.showSidebarTrigger ?? true),\n showUserMenu: navbar.showUserMenu ?? false,\n user: user,\n userMenuItems: mapUserMenuItems(navbar.userMenuItems),\n loginButton: navbar.loginButton,\n style: {\n ...(navbar.height ? { height: navbar.height } : {}),\n ...(navbar.scrollBehavior === \"hide-on-scroll\"\n ? {\n transform: navbarVisible ? \"translateY(0)\" : \"translateY(-100%)\",\n transition: \"transform 0.3s ease-in-out\",\n }\n : {}),\n },\n className: navbar.blendWithBody ? \"border-0 bg-transparent\" : undefined,\n };\n\n // Prepare sidebar props - convert User to match sidebar's optional fields\n const sidebarUser = user\n ? {\n name: user.name,\n email: user.email,\n image: user.image,\n username: user.username,\n roles: user.roles,\n }\n : undefined;\n\n const sidebarProps: AppSidebarProps = {\n side: sidebar.placement ?? \"left\",\n fixed: sidebar.fixed ?? true,\n scrollable: sidebar.scrollable ?? true,\n groups: mapSidebarGroups(sidebar.groups),\n showThemeToggle: sidebar.showThemeToggle ?? false,\n showUserMenu: sidebar.showUserMenu ?? false,\n user: sidebarUser,\n userMenuItems: mapUserMenuItems(sidebar.userMenuItems),\n branding: sidebar.branding,\n hideBranding: sidebar.hideBranding ?? false,\n loginButton: sidebar.loginButton,\n className: sidebar.blendWithBody ? \"border-0 bg-transparent\" : undefined,\n };\n\n // Sidebar provider styles\n const sidebarProviderStyle: React.CSSProperties = {\n \"--sidebar-width\": sidebar.width || DEFAULT_SIDEBAR_WIDTH,\n } as React.CSSProperties;\n\n // Content styles\n const contentStyle: React.CSSProperties = {\n padding: content.padding,\n maxWidth: content.maxWidth,\n };\n\n const containerStyle: React.CSSProperties = {\n \"--header-height\": navbar.height || DEFAULT_NAVBAR_HEIGHT,\n } as React.CSSProperties;\n\n // ============================================================================\n // LAYOUT VARIANTS\n // ============================================================================\n\n // Variant 1: Full-height sidebar (sidebar spans entire viewport, navbar is indented)\n if (sidebarFullHeight && showSidebar) {\n return (\n <div style={containerStyle} className=\"flex h-screen\">\n <SidebarProvider defaultOpen={sidebarDefaultOpen} style={sidebarProviderStyle}>\n <AppSidebar {...sidebarProps} className={`h-screen ${sidebarProps.className || \"\"}`} />\n\n <div className=\"flex flex-col flex-1 overflow-hidden\">\n {showNavbar && <AppNavbar {...navbarProps} />}\n\n <SidebarInset ref={scrollContainerRef} className=\"flex-1 overflow-auto\">\n <div className=\"p-4 mx-auto w-full\" style={contentStyle}>\n {children}\n </div>\n </SidebarInset>\n </div>\n </SidebarProvider>\n </div>\n );\n }\n\n // Variant 3: Default (navbar and sidebar share space)\n return (\n <div style={containerStyle}>\n <SidebarProvider\n defaultOpen={sidebarDefaultOpen}\n className=\"flex flex-col\"\n style={sidebarProviderStyle}\n >\n {showNavbar && <AppNavbar {...navbarProps} />}\n\n <div className=\"flex flex-1\">\n {showSidebar && <AppSidebar {...sidebarProps} />}\n\n <SidebarInset>\n <div className=\"p-4 mx-auto w-full\" style={contentStyle}>\n {children}\n </div>\n </SidebarInset>\n </div>\n </SidebarProvider>\n </div>\n );\n}\n"],"names":["jsx","jsxs","useState","useRef","useEffect","SidebarProvider","SidebarInset","AppSidebar","AppNavbar","LucideIcons","getIcon","name","mapMenuItems","items","item","mapUserMenuItems","mapSidebarGroups","groups","group","DEFAULT_SIDEBAR_WIDTH","DEFAULT_NAVBAR_HEIGHT","DefaultLayout","children","config","showNavbar","showSidebar","user","navbar","sidebar","content","sidebarDefaultOpen","sidebarFullHeight","navbarVisible","setNavbarVisible","lastScrollY","scrollContainerRef","scrollContainer","handleScroll","currentScrollY","navbarProps","sidebarUser","sidebarProps","sidebarProviderStyle","contentStyle","containerStyle"],"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 +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 </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,EAAA,CACpB,EAAA,GAJqBC,CAKvB,CACD;AAAA,IAAA,EAAA,CACH;AAAA,EAAA,GACF;AAEJ;"}
@@ -1,73 +0,0 @@
1
- type Placement = "top" | "bottom";
2
- type NavItem = {
3
- label: string;
4
- href: string;
5
- icon?: React.ComponentType<{
6
- className?: string;
7
- }>;
8
- disabled?: boolean;
9
- };
10
- type User = {
11
- name: string;
12
- email: string;
13
- image?: string;
14
- };
15
- type UserMenuItem = {
16
- label: string;
17
- href?: string;
18
- icon?: React.ComponentType<{
19
- className?: string;
20
- }>;
21
- onClick?: () => void;
22
- };
23
- type Notification = {
24
- title: string;
25
- description: string;
26
- date: string;
27
- read: boolean;
28
- };
29
- type Branding = {
30
- logoUrl?: string;
31
- logoAlt?: string;
32
- title?: string;
33
- href?: string;
34
- };
35
- type LoginButton = {
36
- label?: string;
37
- href?: string;
38
- variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link";
39
- onClick?: () => void;
40
- };
41
- type SearchConfig = {
42
- enabled?: boolean;
43
- placeholder?: string;
44
- onSearch?: (value: string) => void;
45
- };
46
- type NotificationsConfig = {
47
- enabled?: boolean;
48
- items?: Notification[];
49
- onNotificationClick?: (notification: Notification, index: number) => void;
50
- };
51
- type Labels = {
52
- notifications?: string;
53
- noNotifications?: string;
54
- };
55
- export type AppNavbarProps = {
56
- placement?: Placement;
57
- sticky?: boolean;
58
- className?: string;
59
- style?: React.CSSProperties;
60
- branding?: Branding;
61
- items?: NavItem[];
62
- search?: SearchConfig;
63
- notifications?: NotificationsConfig;
64
- showThemeToggle?: boolean;
65
- showSidebarTrigger?: boolean;
66
- user?: User;
67
- userMenuItems?: UserMenuItem[];
68
- loginButton?: LoginButton;
69
- showUserMenu?: boolean;
70
- labels?: Labels;
71
- };
72
- export declare function AppNavbar({ placement, sticky, className, style, branding, items, search, notifications, showThemeToggle, showSidebarTrigger, user, userMenuItems, loginButton, labels, showUserMenu, }: AppNavbarProps): import("react/jsx-runtime").JSX.Element;
73
- export {};
@@ -1,142 +0,0 @@
1
- import { jsxs as o, jsx as e, Fragment as v } from "react/jsx-runtime";
2
- import { Search as w, Bell as b } from "lucide-react";
3
- import { Input as C } from "../atoms/input.js";
4
- import { Button as m } from "../atoms/button.js";
5
- import { SidebarTrigger as k } from "../atoms/sidebar.js";
6
- import { Separator as S } from "../atoms/separator.js";
7
- import { ThemeToggle as M } from "../molecules/theme-toggle.js";
8
- import { UserMenu as D } from "../molecules/user-menu.js";
9
- import { DropdownMenu as y, DropdownMenuTrigger as U, DropdownMenuContent as I, DropdownMenuLabel as L, DropdownMenuSeparator as T, DropdownMenuItem as $ } from "../atoms/dropdown-menu.js";
10
- function j({ branding: r }) {
11
- const t = r.href ? "a" : "div", a = r.href ? { href: r.href } : {};
12
- return /* @__PURE__ */ o(t, { ...a, className: "flex items-center gap-2 mr-4", children: [
13
- r.logoUrl && /* @__PURE__ */ e("img", { src: r.logoUrl, alt: r.logoAlt || "Logo", className: "h-6 w-6" }),
14
- r.title && /* @__PURE__ */ e("span", { className: "font-semibold", children: r.title })
15
- ] });
16
- }
17
- function z({ items: r }) {
18
- return /* @__PURE__ */ e("nav", { className: "flex items-center gap-6 text-sm font-medium overflow-x-auto scrollbar-hide max-w-full", children: r.map((t, a) => {
19
- const l = t.icon;
20
- return /* @__PURE__ */ o(
21
- "a",
22
- {
23
- href: t.href,
24
- className: `transition-colors hover:text-foreground/80 ${t.disabled ? "pointer-events-none opacity-50" : "text-foreground/60"}`,
25
- children: [
26
- l && /* @__PURE__ */ e(l, { className: "inline-block mr-1 h-4 w-4" }),
27
- t.label
28
- ]
29
- },
30
- a
31
- );
32
- }) });
33
- }
34
- function A({ config: r }) {
35
- return /* @__PURE__ */ o("div", { className: "relative", children: [
36
- /* @__PURE__ */ e(w, { className: "absolute left-2 top-2.5 h-4 w-4 text-muted-foreground" }),
37
- /* @__PURE__ */ e(
38
- C,
39
- {
40
- placeholder: r.placeholder || "Search...",
41
- className: "pl-8 w-[200px] lg:w-[300px]",
42
- onChange: (t) => r.onSearch?.(t.target.value)
43
- }
44
- )
45
- ] });
46
- }
47
- function F({ config: r, labels: t }) {
48
- const a = r.items || [], l = a.some((s) => !s.read);
49
- return /* @__PURE__ */ o(y, { children: [
50
- /* @__PURE__ */ e(U, { asChild: !0, children: /* @__PURE__ */ o(m, { variant: "ghost", size: "icon", className: "relative", children: [
51
- /* @__PURE__ */ e(b, { className: "h-5 w-5" }),
52
- l && /* @__PURE__ */ e("span", { className: "absolute right-2 top-2 h-2 w-2 rounded-full bg-red-600" }),
53
- /* @__PURE__ */ e("span", { className: "sr-only", children: t?.notifications || "Notifications" })
54
- ] }) }),
55
- /* @__PURE__ */ o(I, { align: "end", className: "w-80", children: [
56
- /* @__PURE__ */ e(L, { children: t?.notifications || "Notifications" }),
57
- /* @__PURE__ */ e(T, {}),
58
- a.length > 0 ? a.map((s, n) => /* @__PURE__ */ o(
59
- $,
60
- {
61
- className: "flex flex-col items-start gap-1 p-3 cursor-pointer",
62
- onClick: () => r.onNotificationClick?.(s, n),
63
- children: [
64
- /* @__PURE__ */ o("div", { className: "flex w-full items-center justify-between", children: [
65
- /* @__PURE__ */ e("span", { className: "font-medium", children: s.title }),
66
- /* @__PURE__ */ e("span", { className: "text-xs text-muted-foreground", children: s.date })
67
- ] }),
68
- /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground line-clamp-2", children: s.description })
69
- ]
70
- },
71
- n
72
- )) : /* @__PURE__ */ e("div", { className: "p-4 text-center text-sm text-muted-foreground", children: t?.noNotifications || "No new notifications" })
73
- ] })
74
- ] });
75
- }
76
- function P({
77
- user: r,
78
- userMenuItems: t,
79
- loginButton: a,
80
- showUserMenu: l
81
- }) {
82
- return l ? r?.name && r?.email ? /* @__PURE__ */ e(
83
- D,
84
- {
85
- user: { name: r.name, email: r.email, avatar: r.image },
86
- items: t
87
- }
88
- ) : a ? /* @__PURE__ */ e(
89
- m,
90
- {
91
- variant: a.variant || "default",
92
- onClick: a.onClick,
93
- asChild: !!a.href,
94
- children: a.href ? /* @__PURE__ */ e("a", { href: a.href, children: a.label || "Login" }) : a.label || "Login"
95
- }
96
- ) : null : null;
97
- }
98
- function X({
99
- placement: r = "top",
100
- sticky: t = !0,
101
- className: a,
102
- style: l,
103
- branding: s,
104
- items: n,
105
- search: i,
106
- notifications: c,
107
- showThemeToggle: d = !1,
108
- showSidebarTrigger: f = !1,
109
- user: p,
110
- userMenuItems: h,
111
- loginButton: u,
112
- labels: N,
113
- showUserMenu: x = !1
114
- }) {
115
- const g = `flex h-16 shrink-0 items-center gap-2 border-b px-4 bg-background ${t ? r === "top" ? "sticky top-0 z-50" : "sticky bottom-0 z-50" : ""} ${a || ""}`.trim();
116
- return /* @__PURE__ */ o("header", { className: g, style: l, children: [
117
- f && /* @__PURE__ */ o(v, { children: [
118
- /* @__PURE__ */ e(k, { className: "-ml-1" }),
119
- /* @__PURE__ */ e(S, { orientation: "vertical", className: "mr-2 h-4" })
120
- ] }),
121
- s && /* @__PURE__ */ e(j, { branding: s }),
122
- n && n.length > 0 && /* @__PURE__ */ e(z, { items: n }),
123
- /* @__PURE__ */ o("div", { className: "ml-auto flex items-center gap-2", children: [
124
- i?.enabled && /* @__PURE__ */ e(A, { config: i }),
125
- d && /* @__PURE__ */ e(M, {}),
126
- c?.enabled && /* @__PURE__ */ e(F, { config: c, labels: N }),
127
- /* @__PURE__ */ e(
128
- P,
129
- {
130
- user: p,
131
- userMenuItems: h,
132
- loginButton: u,
133
- showUserMenu: x
134
- }
135
- )
136
- ] })
137
- ] });
138
- }
139
- export {
140
- X as AppNavbar
141
- };
142
- //# 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\";\n\ntype Placement = \"top\" | \"bottom\";\n\ntype NavItem = {\n label: string;\n href: string;\n icon?: React.ComponentType<{ className?: string }>;\n disabled?: boolean;\n};\n\ntype User = {\n name: string;\n email: string;\n image?: string;\n};\n\ntype UserMenuItem = {\n label: string;\n href?: string;\n icon?: React.ComponentType<{ className?: string }>;\n onClick?: () => void;\n};\n\ntype Notification = {\n title: string;\n description: string;\n date: string;\n read: boolean;\n};\n\ntype Branding = {\n logoUrl?: string;\n logoAlt?: string;\n title?: string;\n href?: string;\n};\n\ntype LoginButton = {\n label?: string;\n href?: string;\n variant?: \"default\" | \"destructive\" | \"outline\" | \"secondary\" | \"ghost\" | \"link\";\n onClick?: () => void;\n};\n\ntype SearchConfig = {\n enabled?: boolean;\n placeholder?: string;\n onSearch?: (value: string) => void;\n};\n\ntype NotificationsConfig = {\n enabled?: boolean;\n items?: Notification[];\n onNotificationClick?: (notification: Notification, index: number) => void;\n};\n\ntype Labels = {\n notifications?: string;\n noNotifications?: string;\n};\n\nexport type AppNavbarProps = {\n // Layout\n placement?: Placement;\n sticky?: boolean;\n className?: string;\n style?: React.CSSProperties;\n\n // Branding\n branding?: Branding;\n\n // Navigation\n items?: NavItem[];\n\n // Features\n search?: SearchConfig;\n notifications?: NotificationsConfig;\n showThemeToggle?: boolean;\n showSidebarTrigger?: boolean;\n\n // User\n user?: User;\n userMenuItems?: UserMenuItem[];\n loginButton?: LoginButton;\n showUserMenu?: boolean;\n\n // Customization\n labels?: Labels;\n};\n\nfunction NavbarBranding({ branding }: { branding: Branding }) {\n const Wrapper = branding.href ? \"a\" : \"div\";\n const wrapperProps = branding.href ? { href: branding.href } : {};\n\n return (\n <Wrapper {...wrapperProps} 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 </Wrapper>\n );\n}\n\nfunction NavbarItems({ items }: { items: NavItem[] }) {\n return (\n <nav className=\"flex items-center gap-6 text-sm font-medium overflow-x-auto scrollbar-hide max-w-full\">\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}\n\nfunction NavbarSearch({ config }: { config: SearchConfig }) {\n return (\n <div className=\"relative\">\n <Search className=\"absolute left-2 top-2.5 h-4 w-4 text-muted-foreground\" />\n <Input\n placeholder={config.placeholder || \"Search...\"}\n className=\"pl-8 w-[200px] lg:w-[300px]\"\n onChange={(e) => config.onSearch?.(e.target.value)}\n />\n </div>\n );\n}\n\nfunction NavbarNotifications({ config, labels }: { config: NotificationsConfig; labels?: Labels }) {\n const notifications = config.items || [];\n const hasUnread = notifications.some((n) => !n.read);\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"relative\">\n <Bell className=\"h-5 w-5\" />\n {hasUnread && <span className=\"absolute right-2 top-2 h-2 w-2 rounded-full bg-red-600\" />}\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.length > 0 ? (\n notifications.map((notification, index) => (\n <DropdownMenuItem\n key={index}\n className=\"flex flex-col items-start gap-1 p-3 cursor-pointer\"\n onClick={() => config.onNotificationClick?.(notification, index)}\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 ) : (\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}\n\nfunction NavbarUserSection({\n user,\n userMenuItems,\n loginButton,\n showUserMenu,\n}: {\n user?: User;\n userMenuItems?: UserMenuItem[];\n loginButton?: LoginButton;\n showUserMenu?: boolean;\n}) {\n if (!showUserMenu) return null;\n\n if (user?.name && user?.email) {\n return (\n <UserMenu\n user={{ name: user.name, email: user.email, avatar: user.image }}\n items={userMenuItems}\n />\n );\n }\n\n if (loginButton) {\n return (\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 return null;\n}\n\nexport function AppNavbar({\n placement = \"top\",\n sticky = true,\n className,\n style,\n branding,\n items,\n search,\n notifications,\n showThemeToggle = false,\n showSidebarTrigger = false,\n user,\n userMenuItems,\n loginButton,\n labels,\n showUserMenu = false,\n}: AppNavbarProps) {\n const baseClasses = \"flex h-16 shrink-0 items-center gap-2 border-b px-4 bg-background\";\n const positionClasses = sticky\n ? placement === \"top\"\n ? \"sticky top-0 z-50\"\n : \"sticky bottom-0 z-50\"\n : \"\";\n const combinedClasses = `${baseClasses} ${positionClasses} ${className || \"\"}`.trim();\n\n return (\n <header className={combinedClasses} style={style}>\n {/* Left Section */}\n {showSidebarTrigger && (\n <>\n <SidebarTrigger className=\"-ml-1\" />\n <Separator orientation=\"vertical\" className=\"mr-2 h-4\" />\n </>\n )}\n\n {branding && <NavbarBranding branding={branding} />}\n\n {items && items.length > 0 && <NavbarItems items={items} />}\n\n {/* Right Section */}\n <div className=\"ml-auto flex items-center gap-2\">\n {search?.enabled && <NavbarSearch config={search} />}\n\n {showThemeToggle && <ThemeToggle />}\n\n {notifications?.enabled && <NavbarNotifications config={notifications} labels={labels} />}\n\n <NavbarUserSection\n user={user}\n userMenuItems={userMenuItems}\n loginButton={loginButton}\n showUserMenu={showUserMenu}\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","NavbarBranding","branding","Wrapper","wrapperProps","NavbarItems","items","item","index","Icon","NavbarSearch","config","e","NavbarNotifications","labels","notifications","hasUnread","n","notification","NavbarUserSection","user","userMenuItems","loginButton","showUserMenu","AppNavbar","placement","sticky","className","style","search","showThemeToggle","showSidebarTrigger","combinedClasses"],"mappings":"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"}