@goplusvn/core 0.1.0 → 0.1.2

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 (591) hide show
  1. package/package.json +31 -175
  2. package/src/assets/erp_wallpaper.png +0 -0
  3. package/src/assets/goeat_logo.png +0 -0
  4. package/src/audit/audit-manager.ts +139 -0
  5. package/src/audit/index.ts +11 -0
  6. package/src/audit/memory-audit-logger.ts +86 -0
  7. package/src/audit/types.ts +50 -0
  8. package/src/auth/auth-service.ts +97 -0
  9. package/src/auth/index.ts +266 -0
  10. package/src/code-generation/index.ts +69 -0
  11. package/src/configs/auth-routes.ts +17 -0
  12. package/src/configs/crud.ts +136 -0
  13. package/src/configs/data/navigations.ts +781 -0
  14. package/src/configs/data/oauth-links.ts +10 -0
  15. package/src/configs/entities/material-categories.config.ts +125 -0
  16. package/src/configs/i18n.ts +12 -0
  17. package/src/configs/index.ts +26 -0
  18. package/src/configs/status.ts +25 -0
  19. package/src/configs/themes.ts +100 -0
  20. package/src/crud/components/crud-bulk-actions.tsx +91 -0
  21. package/src/crud/components/crud-card-view.tsx +241 -0
  22. package/src/crud/components/crud-context.tsx +122 -0
  23. package/src/crud/components/crud-delete-dialog.tsx +145 -0
  24. package/src/crud/components/crud-dialog.tsx +406 -0
  25. package/src/crud/components/crud-empty-state.tsx +104 -0
  26. package/src/crud/components/crud-export-button.tsx +170 -0
  27. package/src/crud/components/crud-field-renderer.tsx +653 -0
  28. package/src/crud/components/crud-filter-chips.tsx +102 -0
  29. package/src/crud/components/crud-filters/checkbox-filter.tsx +97 -0
  30. package/src/crud/components/crud-filters/datetime-filter.tsx +83 -0
  31. package/src/crud/components/crud-filters/filter-builder.tsx +66 -0
  32. package/src/crud/components/crud-filters/index.tsx +76 -0
  33. package/src/crud/components/crud-filters/radio-filter.tsx +86 -0
  34. package/src/crud/components/crud-filters/select-filter.tsx +141 -0
  35. package/src/crud/components/crud-filters/text-filter.tsx +86 -0
  36. package/src/crud/components/crud-form.tsx +642 -0
  37. package/src/crud/components/crud-import-dialog.tsx +440 -0
  38. package/src/crud/components/crud-infinite-scroll.tsx +116 -0
  39. package/src/crud/components/crud-page.tsx +1017 -0
  40. package/src/crud/components/crud-provider.tsx +277 -0
  41. package/src/crud/components/crud-row-actions.tsx +189 -0
  42. package/src/crud/components/crud-search.tsx +82 -0
  43. package/src/crud/components/crud-sheet.tsx +336 -0
  44. package/src/crud/components/crud-table-skeleton.tsx +26 -0
  45. package/src/crud/components/crud-table-toolbar.tsx +91 -0
  46. package/src/crud/components/crud-table.tsx +352 -0
  47. package/src/crud/components/crud-virtual-table.tsx +55 -0
  48. package/src/crud/components/index.tsx +20 -0
  49. package/src/crud/crud-filters/checkbox-filter.tsx +87 -0
  50. package/src/crud/crud-filters/datetime-filter.tsx +82 -0
  51. package/src/crud/crud-filters/filter-builder.tsx +64 -0
  52. package/src/crud/crud-filters/index.tsx +78 -0
  53. package/src/crud/crud-filters/radio-filter.tsx +79 -0
  54. package/src/crud/crud-filters/select-filter.tsx +148 -0
  55. package/src/crud/crud-filters/text-filter.tsx +81 -0
  56. package/src/crud/index.ts +43 -0
  57. package/src/crud/lib/crud-service.test.ts +334 -0
  58. package/src/crud/lib/crud-service.ts +358 -0
  59. package/src/crud/lib/crud-utils.test.ts +354 -0
  60. package/src/crud/lib/crud-utils.ts +299 -0
  61. package/src/crud/lib/crud-validator.ts +247 -0
  62. package/src/crud/lib/data-loader.ts +234 -0
  63. package/src/crud/lib/field-calculator.ts +241 -0
  64. package/src/crud/lib/field-formatter.ts +240 -0
  65. package/src/crud/lib/import-export-service.test.ts +290 -0
  66. package/src/crud/lib/import-export-service.ts +352 -0
  67. package/src/crud/lib/import-server-utils.ts +109 -0
  68. package/src/crud/lib/lazy-loader.ts +241 -0
  69. package/src/crud/lib/parse-filters.ts +85 -0
  70. package/src/crud/lib/permissions.ts +52 -0
  71. package/src/crud/lib/serialize-config.ts +60 -0
  72. package/src/crud/lib/stream-loader.ts +145 -0
  73. package/src/crud/lib/translate-config.ts +335 -0
  74. package/src/crud/lib/types.ts +11 -0
  75. package/src/crud/pages/entity-crud-page.tsx +144 -0
  76. package/src/crud/server.ts +8 -0
  77. package/src/home/constants.tsx +142 -0
  78. package/src/home/feature-showcase.tsx +171 -0
  79. package/src/home/home-page.tsx +191 -0
  80. package/src/home/hooks/index.ts +1 -0
  81. package/src/home/hooks/useWidgetPreferences.ts +167 -0
  82. package/src/home/index.ts +33 -0
  83. package/src/home/quick-access-dialog.tsx +271 -0
  84. package/src/home/quick-access-menu.tsx +267 -0
  85. package/src/home/types.ts +140 -0
  86. package/src/home/welcome-card.tsx +92 -0
  87. package/src/home/widget-container.tsx +258 -0
  88. package/src/home/widgets/base-widget.tsx +200 -0
  89. package/src/home/widgets/customers-widget.tsx +74 -0
  90. package/src/home/widgets/index.ts +6 -0
  91. package/src/home/widgets/orders-widget.tsx +87 -0
  92. package/src/home/widgets/revenue-widget.tsx +71 -0
  93. package/src/home/widgets/stock-widget.tsx +109 -0
  94. package/src/hooks/index.tsx +598 -0
  95. package/src/hooks/use-tenant.test.tsx +30 -0
  96. package/src/hooks/use-tenant.ts +5 -0
  97. package/src/index.ts +17 -0
  98. package/src/infrastructure/__tests__/architecture-verification.spec.ts +103 -0
  99. package/src/infrastructure/api-service.ts +317 -0
  100. package/src/infrastructure/cache/cache-manager.ts +107 -0
  101. package/src/infrastructure/cache/cache.ts +120 -0
  102. package/src/infrastructure/cache/index.ts +8 -0
  103. package/src/infrastructure/cache/types.ts +48 -0
  104. package/src/infrastructure/cron/cron-manager.ts +239 -0
  105. package/src/infrastructure/cron/index.ts +6 -0
  106. package/src/infrastructure/cron/types.ts +41 -0
  107. package/src/infrastructure/event-bus/event-bus.ts +145 -0
  108. package/src/infrastructure/event-bus/index.ts +2 -0
  109. package/src/infrastructure/event-bus/types.ts +22 -0
  110. package/src/infrastructure/index.ts +32 -0
  111. package/src/infrastructure/lock/decorators.ts +67 -0
  112. package/src/infrastructure/lock/index.ts +2 -0
  113. package/src/infrastructure/lock/lock-manager.ts +33 -0
  114. package/src/infrastructure/logger/index.ts +2 -0
  115. package/src/infrastructure/logger/logger.ts +96 -0
  116. package/src/infrastructure/logger/types.ts +25 -0
  117. package/src/layout/index.tsx +185 -0
  118. package/src/navigation/index.ts +91 -0
  119. package/src/notification/index.ts +14 -0
  120. package/src/notification/notification-service.ts +120 -0
  121. package/src/notification/storage/in-memory.ts +56 -0
  122. package/src/notification/storage/index.ts +1 -0
  123. package/src/notification/types.ts +51 -0
  124. package/src/organization/branch-service.ts +299 -0
  125. package/src/organization/branches.config.ts +154 -0
  126. package/src/organization/index.ts +5 -0
  127. package/src/plugin/apps-registry.ts +97 -0
  128. package/src/plugin/index.ts +5 -0
  129. package/src/plugin/types.ts +41 -0
  130. package/src/providers/index.tsx +109 -0
  131. package/src/providers/tenant-provider.tsx +45 -0
  132. package/src/rbac/components/roles/role-card.tsx +158 -0
  133. package/src/rbac/components/roles/role-stats-cards.tsx +29 -0
  134. package/src/rbac/components/roles/role-toolbar.tsx +123 -0
  135. package/src/rbac/hooks/use-role-operations.ts +159 -0
  136. package/src/rbac/hooks/use-roles-data.ts +59 -0
  137. package/src/rbac/index.ts +297 -0
  138. package/src/rbac/lib/permission-helpers.ts +63 -0
  139. package/src/rbac/pages/action-list-page.tsx +25 -0
  140. package/src/rbac/pages/resource-list-page.tsx +25 -0
  141. package/src/rbac/pages/role-list-page.tsx +378 -0
  142. package/src/rbac/permission-service.ts +140 -0
  143. package/src/rbac/permissions.ts +135 -0
  144. package/src/rbac/resource-service.ts +115 -0
  145. package/src/rbac/resource-validator.ts +119 -0
  146. package/src/rbac/role-service.ts +165 -0
  147. package/src/rbac/server.ts +16 -0
  148. package/src/rbac/types.ts +38 -0
  149. package/src/schemas/action.schema.ts +66 -0
  150. package/src/schemas/branch.schema.ts +52 -0
  151. package/src/schemas/coming-soon-schema.ts +9 -0
  152. package/src/schemas/company.schema.ts +44 -0
  153. package/src/schemas/forgot-passward-schema.ts +9 -0
  154. package/src/schemas/index.ts +30 -0
  155. package/src/schemas/material-category.schema.ts +43 -0
  156. package/src/schemas/material-pricing.schema.ts +74 -0
  157. package/src/schemas/material.schema.ts +76 -0
  158. package/src/schemas/materials.ts +52 -0
  159. package/src/schemas/new-passward-schema.ts +15 -0
  160. package/src/schemas/partner-company.schema.ts +149 -0
  161. package/src/schemas/register-schema.ts +36 -0
  162. package/src/schemas/resource.schema.ts +133 -0
  163. package/src/schemas/role.schema.ts +11 -0
  164. package/src/schemas/sign-in-schema.ts +24 -0
  165. package/src/schemas/supplier-pricing.schema.ts +15 -0
  166. package/src/schemas/supplier.schema.ts +120 -0
  167. package/src/schemas/system-category-group.schema.ts +67 -0
  168. package/src/schemas/system-category.schema.ts +77 -0
  169. package/src/schemas/system-config.schema.ts +118 -0
  170. package/src/schemas/uom.schema.ts +75 -0
  171. package/src/schemas/user-supplier.schema.ts +179 -0
  172. package/src/schemas/user.schema.ts +18 -0
  173. package/src/schemas/verify-email-schema.ts +9 -0
  174. package/src/schemas/warehouse.schema.ts +49 -0
  175. package/src/system/components/categories/category-list.tsx +529 -0
  176. package/src/system/components/categories/category-manager.tsx +89 -0
  177. package/src/system/components/categories/group-sidebar.tsx +308 -0
  178. package/src/system/components/settings/setting-dialogs.tsx +197 -0
  179. package/src/system/components/settings/setting-field.tsx +291 -0
  180. package/src/system/components/settings/setting-form-dialog.tsx +308 -0
  181. package/src/system/components/settings/settings-groups.ts +80 -0
  182. package/src/system/components/settings/settings-search.tsx +71 -0
  183. package/src/system/components/settings/settings-section.tsx +74 -0
  184. package/src/system/components/settings/settings-sidebar.tsx +81 -0
  185. package/src/system/constants.ts +3 -0
  186. package/src/system/index.ts +150 -0
  187. package/src/system/job-manager.ts +176 -0
  188. package/src/system/pages/components/categories/category-list.tsx +537 -0
  189. package/src/system/pages/components/categories/category-manager.tsx +90 -0
  190. package/src/system/pages/components/categories/group-sidebar.tsx +311 -0
  191. package/src/system/pages/components/settings/sales-rules-settings.tsx +222 -0
  192. package/src/system/pages/components/settings/setting-dialogs.tsx +197 -0
  193. package/src/system/pages/components/settings/setting-field.tsx +292 -0
  194. package/src/system/pages/components/settings/setting-form-dialog.tsx +308 -0
  195. package/src/system/pages/components/settings/settings-groups.ts +87 -0
  196. package/src/system/pages/components/settings/settings-page.tsx +372 -0
  197. package/src/system/pages/components/settings/settings-search.tsx +71 -0
  198. package/src/system/pages/components/settings/settings-section.tsx +74 -0
  199. package/src/system/pages/components/settings/settings-sidebar.tsx +81 -0
  200. package/src/system/pages/components/settings/system-settings.tsx +244 -0
  201. package/src/system/pages/system-category-page.tsx +15 -0
  202. package/src/system/pages/system-settings-page.tsx +380 -0
  203. package/src/system/schemas/system-category-group.schema.ts +46 -0
  204. package/src/system/schemas/system-category.schema.ts +56 -0
  205. package/src/system/services/settings-service.ts +127 -0
  206. package/src/system/services/system-category-service.ts +63 -0
  207. package/src/system/types.ts +45 -0
  208. package/src/types/index.ts +703 -0
  209. package/src/ui/auth/auth-layout.tsx +135 -0
  210. package/src/ui/auth/forgot-password-form.tsx +98 -0
  211. package/src/ui/auth/index.tsx +7 -0
  212. package/src/ui/auth/new-password-form.tsx +107 -0
  213. package/src/ui/auth/oauth-links.tsx +30 -0
  214. package/src/ui/auth/register-form.tsx +202 -0
  215. package/src/ui/auth/sign-in-form.tsx +238 -0
  216. package/src/ui/auth/verify-email-form.tsx +104 -0
  217. package/src/ui/crud/index.tsx +10 -0
  218. package/src/ui/data-display/accordion.tsx +65 -0
  219. package/src/ui/data-display/aspect-ratio.tsx +11 -0
  220. package/src/ui/data-display/avatar.tsx +163 -0
  221. package/src/ui/data-display/bento-grid.tsx +77 -0
  222. package/src/ui/data-display/carousel.tsx +249 -0
  223. package/src/ui/data-display/chart.tsx +363 -0
  224. package/src/ui/data-display/code-block-highlight.tsx +54 -0
  225. package/src/ui/data-display/collapsible.tsx +42 -0
  226. package/src/ui/data-display/compact-stat-bar.tsx +149 -0
  227. package/src/ui/data-display/data-table/data-table-context.tsx +255 -0
  228. package/src/ui/data-display/data-table/data-table-empty-state.tsx +133 -0
  229. package/src/ui/data-display/data-table/data-table-skeleton.tsx +145 -0
  230. package/src/ui/data-display/data-table/data-table-toolbar.tsx +353 -0
  231. package/src/ui/data-display/data-table/data-table.tsx +597 -0
  232. package/src/ui/data-display/data-table/index.ts +44 -0
  233. package/src/ui/data-display/data-table-column-header.tsx +75 -0
  234. package/src/ui/data-display/data-table-pagination.tsx +130 -0
  235. package/src/ui/data-display/data-table-view-options.tsx +59 -0
  236. package/src/ui/data-display/formatted-number-input.tsx +210 -0
  237. package/src/ui/data-display/highlight.tsx +20 -0
  238. package/src/ui/data-display/hover-card.tsx +48 -0
  239. package/src/ui/data-display/index.tsx +50 -0
  240. package/src/ui/data-display/iphone-15-pro.tsx +114 -0
  241. package/src/ui/data-display/kanban/index.ts +4 -0
  242. package/src/ui/data-display/kanban/kanban-board.tsx +192 -0
  243. package/src/ui/data-display/kanban/kanban-column.tsx +74 -0
  244. package/src/ui/data-display/kanban/kanban-item.tsx +50 -0
  245. package/src/ui/data-display/kanban/kanban-types.ts +21 -0
  246. package/src/ui/data-display/kpi-card.tsx +68 -0
  247. package/src/ui/data-display/media-grid.tsx +110 -0
  248. package/src/ui/data-display/safari.tsx +175 -0
  249. package/src/ui/data-display/show-more-text.tsx +55 -0
  250. package/src/ui/data-display/tabs.tsx +68 -0
  251. package/src/ui/data-display/timeline.tsx +256 -0
  252. package/src/ui/feedback/alert.tsx +60 -0
  253. package/src/ui/feedback/context-menu.tsx +245 -0
  254. package/src/ui/feedback/drawer.tsx +132 -0
  255. package/src/ui/feedback/error-dialog.tsx +273 -0
  256. package/src/ui/feedback/index.tsx +183 -0
  257. package/src/ui/feedback/progress.tsx +32 -0
  258. package/src/ui/feedback/sheet.tsx +148 -0
  259. package/src/ui/feedback/sonner.tsx +36 -0
  260. package/src/ui/forms/command.tsx +157 -0
  261. package/src/ui/forms/date-picker.tsx +73 -0
  262. package/src/ui/forms/date-range-picker.tsx +76 -0
  263. package/src/ui/forms/date-time-picker.tsx +109 -0
  264. package/src/ui/forms/editor/editor-menu-bar.tsx +394 -0
  265. package/src/ui/forms/editor/index.tsx +130 -0
  266. package/src/ui/forms/editor/multi-select-example.tsx +1234 -0
  267. package/src/ui/forms/emoji-picker.tsx +109 -0
  268. package/src/ui/forms/file-dropzone.tsx +169 -0
  269. package/src/ui/forms/file-thumbnail.tsx +29 -0
  270. package/src/ui/forms/index.tsx +201 -0
  271. package/src/ui/forms/input-file.tsx +99 -0
  272. package/src/ui/forms/input-group.tsx +46 -0
  273. package/src/ui/forms/input-otp.tsx +81 -0
  274. package/src/ui/forms/input-phone.tsx +172 -0
  275. package/src/ui/forms/input-spin.tsx +116 -0
  276. package/src/ui/forms/input-tags.tsx +219 -0
  277. package/src/ui/forms/input-time.tsx +42 -0
  278. package/src/ui/forms/multi-select.tsx +629 -0
  279. package/src/ui/forms/multiple-date-picker.tsx +74 -0
  280. package/src/ui/forms/radio-group.tsx +42 -0
  281. package/src/ui/forms/rating.tsx +158 -0
  282. package/src/ui/forms/time-picker.tsx +57 -0
  283. package/src/ui/index.tsx +17 -0
  284. package/src/ui/layout/animated-list.tsx +77 -0
  285. package/src/ui/layout/animated-sidebar.tsx +294 -0
  286. package/src/ui/layout/command-menu.tsx +355 -0
  287. package/src/ui/layout/customizer.tsx +324 -0
  288. package/src/ui/layout/footer.tsx +43 -0
  289. package/src/ui/layout/full-screen-toggle.tsx +52 -0
  290. package/src/ui/layout/header-breadcrumb.tsx +77 -0
  291. package/src/ui/layout/horizontal-layout-header.tsx +83 -0
  292. package/src/ui/layout/horizontal-layout.tsx +50 -0
  293. package/src/ui/layout/index.tsx +25 -0
  294. package/src/ui/layout/language-dropdown.tsx +103 -0
  295. package/src/ui/layout/logo.tsx +63 -0
  296. package/src/ui/layout/main-layout.tsx +57 -0
  297. package/src/ui/layout/mode-dropdown.tsx +58 -0
  298. package/src/ui/layout/notification-dropdown.tsx +127 -0
  299. package/src/ui/layout/page-tabs.tsx +306 -0
  300. package/src/ui/layout/route-cache.tsx +214 -0
  301. package/src/ui/layout/sidebar-group-icon-menu.tsx +195 -0
  302. package/src/ui/layout/sidebar.tsx +279 -0
  303. package/src/ui/layout/tab-content-cache.tsx +201 -0
  304. package/src/ui/layout/tab-navigation-provider.tsx +536 -0
  305. package/src/ui/layout/toggle-mobile-sidebar.tsx +33 -0
  306. package/src/ui/layout/top-bar-header-menubar.tsx +412 -0
  307. package/src/ui/layout/user-dropdown.tsx +188 -0
  308. package/src/ui/layout/vertical-layout-header.tsx +65 -0
  309. package/src/ui/layout/vertical-layout.tsx +47 -0
  310. package/src/ui/management/audit-log-page.tsx +209 -0
  311. package/src/ui/management/cache-management.tsx +349 -0
  312. package/src/ui/management/index.ts +3 -0
  313. package/src/ui/management/job-management.tsx +308 -0
  314. package/src/ui/pages/not-found.tsx +30 -0
  315. package/src/ui/primitives/badge.tsx +66 -0
  316. package/src/ui/primitives/breadcrumb.tsx +103 -0
  317. package/src/ui/primitives/button.tsx +129 -0
  318. package/src/ui/primitives/calendar.tsx +74 -0
  319. package/src/ui/primitives/card.tsx +86 -0
  320. package/src/ui/primitives/checkbox.tsx +31 -0
  321. package/src/ui/primitives/client.ts +30 -0
  322. package/src/ui/primitives/combobox.tsx +290 -0
  323. package/src/ui/primitives/dialog.tsx +121 -0
  324. package/src/ui/primitives/dropdown-menu.tsx +239 -0
  325. package/src/ui/primitives/dynamic-icon.tsx +24 -0
  326. package/src/ui/primitives/index.tsx +134 -0
  327. package/src/ui/primitives/input-number.tsx +131 -0
  328. package/src/ui/primitives/input.tsx +22 -0
  329. package/src/ui/primitives/keyboard.tsx +23 -0
  330. package/src/ui/primitives/label.tsx +24 -0
  331. package/src/ui/primitives/menubar.tsx +262 -0
  332. package/src/ui/primitives/navigation-menu.tsx +157 -0
  333. package/src/ui/primitives/pagination.tsx +118 -0
  334. package/src/ui/primitives/popover.tsx +56 -0
  335. package/src/ui/primitives/prefetch-link.tsx +60 -0
  336. package/src/ui/primitives/resizable.tsx +59 -0
  337. package/src/ui/primitives/scroll-area.tsx +63 -0
  338. package/src/ui/primitives/select.tsx +172 -0
  339. package/src/ui/primitives/separator.tsx +51 -0
  340. package/src/ui/primitives/sidebar.tsx +844 -0
  341. package/src/ui/primitives/slider.tsx +27 -0
  342. package/src/ui/primitives/status-badge.tsx +47 -0
  343. package/src/ui/primitives/sticky-layout.tsx +50 -0
  344. package/src/ui/primitives/switch.tsx +29 -0
  345. package/src/ui/primitives/table.tsx +116 -0
  346. package/src/ui/primitives/tabs.tsx +55 -0
  347. package/src/ui/primitives/toggle-group.tsx +70 -0
  348. package/src/ui/primitives/toggle.tsx +47 -0
  349. package/src/ui/primitives/tooltip.tsx +59 -0
  350. package/src/user/components/dangerous-zone.tsx +34 -0
  351. package/src/user/components/delete-account-form.tsx +40 -0
  352. package/src/user/components/index.ts +4 -0
  353. package/src/user/components/profile-info-form.tsx +390 -0
  354. package/src/user/components/profile-info.tsx +32 -0
  355. package/src/user/components/unified-profile-dialog.tsx +1019 -0
  356. package/src/user/components/user-stats.tsx +27 -0
  357. package/src/user/components/user-toolbar.tsx +137 -0
  358. package/src/user/components/users-card-view.tsx +253 -0
  359. package/src/user/index.ts +11 -0
  360. package/src/user/pages/user-list-page.tsx +234 -0
  361. package/src/user/pages/users-client-page.tsx +385 -0
  362. package/src/user/profile-page.tsx +19 -0
  363. package/src/user/schemas.ts +68 -0
  364. package/src/user/types.ts +34 -0
  365. package/src/user/user-service.ts +538 -0
  366. package/src/utils/index.ts +906 -0
  367. package/src/workflow/activity-timeline.tsx +412 -0
  368. package/src/workflow/approval-workflow.tsx +31 -0
  369. package/src/workflow/index.ts +2 -0
  370. package/dist/audit/index.d.mts +0 -115
  371. package/dist/audit/index.d.ts +0 -115
  372. package/dist/audit/index.js +0 -204
  373. package/dist/audit/index.js.map +0 -1
  374. package/dist/audit/index.mjs +0 -200
  375. package/dist/audit/index.mjs.map +0 -1
  376. package/dist/auth/index.d.mts +0 -86
  377. package/dist/auth/index.d.ts +0 -86
  378. package/dist/auth/index.js +0 -210
  379. package/dist/auth/index.js.map +0 -1
  380. package/dist/auth/index.mjs +0 -198
  381. package/dist/auth/index.mjs.map +0 -1
  382. package/dist/button-1dWvP9Ib.d.mts +0 -30
  383. package/dist/button-1dWvP9Ib.d.ts +0 -30
  384. package/dist/calendar-2QzdEo1z.d.mts +0 -20
  385. package/dist/calendar-2QzdEo1z.d.ts +0 -20
  386. package/dist/code-generation/index.d.mts +0 -30
  387. package/dist/code-generation/index.d.ts +0 -30
  388. package/dist/code-generation/index.js +0 -31
  389. package/dist/code-generation/index.js.map +0 -1
  390. package/dist/code-generation/index.mjs +0 -28
  391. package/dist/code-generation/index.mjs.map +0 -1
  392. package/dist/configs/index.d.mts +0 -175
  393. package/dist/configs/index.d.ts +0 -175
  394. package/dist/configs/index.js +0 -254
  395. package/dist/configs/index.js.map +0 -1
  396. package/dist/configs/index.mjs +0 -233
  397. package/dist/configs/index.mjs.map +0 -1
  398. package/dist/crud/index.d.mts +0 -646
  399. package/dist/crud/index.d.ts +0 -646
  400. package/dist/crud/index.js +0 -11772
  401. package/dist/crud/index.js.map +0 -1
  402. package/dist/crud/index.mjs +0 -11665
  403. package/dist/crud/index.mjs.map +0 -1
  404. package/dist/crud/server.d.mts +0 -20
  405. package/dist/crud/server.d.ts +0 -20
  406. package/dist/crud/server.js +0 -123
  407. package/dist/crud/server.js.map +0 -1
  408. package/dist/crud/server.mjs +0 -120
  409. package/dist/crud/server.mjs.map +0 -1
  410. package/dist/data-table-skeleton-12NA8Mjx.d.mts +0 -39
  411. package/dist/data-table-skeleton-12NA8Mjx.d.ts +0 -39
  412. package/dist/dialog-bKfjZMTd.d.mts +0 -22
  413. package/dist/dialog-bKfjZMTd.d.ts +0 -22
  414. package/dist/dynamic-icon-DrGIiu2N.d.mts +0 -10
  415. package/dist/dynamic-icon-DrGIiu2N.d.ts +0 -10
  416. package/dist/home/index.d.mts +0 -269
  417. package/dist/home/index.d.ts +0 -269
  418. package/dist/home/index.js +0 -1678
  419. package/dist/home/index.js.map +0 -1
  420. package/dist/home/index.mjs +0 -1635
  421. package/dist/home/index.mjs.map +0 -1
  422. package/dist/hooks/index.d.mts +0 -7
  423. package/dist/hooks/index.d.ts +0 -7
  424. package/dist/hooks/index.js +0 -8316
  425. package/dist/hooks/index.js.map +0 -1
  426. package/dist/hooks/index.mjs +0 -8255
  427. package/dist/hooks/index.mjs.map +0 -1
  428. package/dist/index-50hpiPrV.d.ts +0 -116
  429. package/dist/index-B9zQVEVi.d.mts +0 -116
  430. package/dist/index.d.mts +0 -5
  431. package/dist/index.d.ts +0 -5
  432. package/dist/index.js +0 -123
  433. package/dist/index.js.map +0 -1
  434. package/dist/index.mjs +0 -118
  435. package/dist/index.mjs.map +0 -1
  436. package/dist/infrastructure/index.d.mts +0 -423
  437. package/dist/infrastructure/index.d.ts +0 -423
  438. package/dist/infrastructure/index.js +0 -633
  439. package/dist/infrastructure/index.js.map +0 -1
  440. package/dist/infrastructure/index.mjs +0 -619
  441. package/dist/infrastructure/index.mjs.map +0 -1
  442. package/dist/label-DWTEkNPo.d.ts +0 -226
  443. package/dist/label-LPpdcoBx.d.mts +0 -226
  444. package/dist/layout/index.d.mts +0 -48
  445. package/dist/layout/index.d.ts +0 -48
  446. package/dist/layout/index.js +0 -117
  447. package/dist/layout/index.js.map +0 -1
  448. package/dist/layout/index.mjs +0 -90
  449. package/dist/layout/index.mjs.map +0 -1
  450. package/dist/navigation/index.d.mts +0 -16
  451. package/dist/navigation/index.d.ts +0 -16
  452. package/dist/navigation/index.js +0 -53
  453. package/dist/navigation/index.js.map +0 -1
  454. package/dist/navigation/index.mjs +0 -50
  455. package/dist/navigation/index.mjs.map +0 -1
  456. package/dist/notification/index.d.mts +0 -105
  457. package/dist/notification/index.d.ts +0 -105
  458. package/dist/notification/index.js +0 -278
  459. package/dist/notification/index.js.map +0 -1
  460. package/dist/notification/index.mjs +0 -274
  461. package/dist/notification/index.mjs.map +0 -1
  462. package/dist/organization/index.d.mts +0 -99
  463. package/dist/organization/index.d.ts +0 -99
  464. package/dist/organization/index.js +0 -360
  465. package/dist/organization/index.js.map +0 -1
  466. package/dist/organization/index.mjs +0 -352
  467. package/dist/organization/index.mjs.map +0 -1
  468. package/dist/plugin/index.d.mts +0 -83
  469. package/dist/plugin/index.d.ts +0 -83
  470. package/dist/plugin/index.js +0 -86
  471. package/dist/plugin/index.js.map +0 -1
  472. package/dist/plugin/index.mjs +0 -84
  473. package/dist/plugin/index.mjs.map +0 -1
  474. package/dist/providers/index.d.mts +0 -25
  475. package/dist/providers/index.d.ts +0 -25
  476. package/dist/providers/index.js +0 -84
  477. package/dist/providers/index.js.map +0 -1
  478. package/dist/providers/index.mjs +0 -77
  479. package/dist/providers/index.mjs.map +0 -1
  480. package/dist/rbac/index.d.mts +0 -226
  481. package/dist/rbac/index.d.ts +0 -226
  482. package/dist/rbac/index.js +0 -4784
  483. package/dist/rbac/index.js.map +0 -1
  484. package/dist/rbac/index.mjs +0 -4722
  485. package/dist/rbac/index.mjs.map +0 -1
  486. package/dist/rbac/permissions.d.mts +0 -26
  487. package/dist/rbac/permissions.d.ts +0 -26
  488. package/dist/rbac/permissions.js +0 -94
  489. package/dist/rbac/permissions.js.map +0 -1
  490. package/dist/rbac/permissions.mjs +0 -90
  491. package/dist/rbac/permissions.mjs.map +0 -1
  492. package/dist/rbac/server.d.mts +0 -1
  493. package/dist/rbac/server.d.ts +0 -1
  494. package/dist/rbac/server.js +0 -128
  495. package/dist/rbac/server.js.map +0 -1
  496. package/dist/rbac/server.mjs +0 -124
  497. package/dist/rbac/server.mjs.map +0 -1
  498. package/dist/schemas/index.d.mts +0 -1257
  499. package/dist/schemas/index.d.ts +0 -1257
  500. package/dist/schemas/index.js +0 -572
  501. package/dist/schemas/index.js.map +0 -1
  502. package/dist/schemas/index.mjs +0 -523
  503. package/dist/schemas/index.mjs.map +0 -1
  504. package/dist/server-QuYCTa89.d.mts +0 -83
  505. package/dist/server-QuYCTa89.d.ts +0 -83
  506. package/dist/sonner-C74GlRDQ.d.mts +0 -71
  507. package/dist/sonner-C74GlRDQ.d.ts +0 -71
  508. package/dist/status-BOXZgIqX.d.mts +0 -12
  509. package/dist/status-BOXZgIqX.d.ts +0 -12
  510. package/dist/system/index.d.mts +0 -77
  511. package/dist/system/index.d.ts +0 -77
  512. package/dist/system/index.js +0 -102
  513. package/dist/system/index.js.map +0 -1
  514. package/dist/system/index.mjs +0 -100
  515. package/dist/system/index.mjs.map +0 -1
  516. package/dist/tabs-C6FfBwPY.d.mts +0 -18
  517. package/dist/tabs-C6FfBwPY.d.ts +0 -18
  518. package/dist/tenant-provider-B8eC_Wpb.d.mts +0 -27
  519. package/dist/tenant-provider-B8eC_Wpb.d.ts +0 -27
  520. package/dist/types/index.d.mts +0 -469
  521. package/dist/types/index.d.ts +0 -469
  522. package/dist/types/index.js +0 -25
  523. package/dist/types/index.js.map +0 -1
  524. package/dist/types/index.mjs +0 -21
  525. package/dist/types/index.mjs.map +0 -1
  526. package/dist/ui/auth.d.mts +0 -39
  527. package/dist/ui/auth.d.ts +0 -39
  528. package/dist/ui/auth.js +0 -4941
  529. package/dist/ui/auth.js.map +0 -1
  530. package/dist/ui/auth.mjs +0 -4896
  531. package/dist/ui/auth.mjs.map +0 -1
  532. package/dist/ui/crud.d.mts +0 -2
  533. package/dist/ui/crud.d.ts +0 -2
  534. package/dist/ui/crud.js +0 -4
  535. package/dist/ui/crud.js.map +0 -1
  536. package/dist/ui/crud.mjs +0 -3
  537. package/dist/ui/crud.mjs.map +0 -1
  538. package/dist/ui/data-display.d.mts +0 -596
  539. package/dist/ui/data-display.d.ts +0 -596
  540. package/dist/ui/data-display.js +0 -5307
  541. package/dist/ui/data-display.js.map +0 -1
  542. package/dist/ui/data-display.mjs +0 -5212
  543. package/dist/ui/data-display.mjs.map +0 -1
  544. package/dist/ui/feedback.d.mts +0 -55
  545. package/dist/ui/feedback.d.ts +0 -55
  546. package/dist/ui/feedback.js +0 -2608
  547. package/dist/ui/feedback.js.map +0 -1
  548. package/dist/ui/feedback.mjs +0 -2526
  549. package/dist/ui/feedback.mjs.map +0 -1
  550. package/dist/ui/forms.d.mts +0 -309
  551. package/dist/ui/forms.d.ts +0 -309
  552. package/dist/ui/forms.js +0 -4656
  553. package/dist/ui/forms.js.map +0 -1
  554. package/dist/ui/forms.mjs +0 -4571
  555. package/dist/ui/forms.mjs.map +0 -1
  556. package/dist/ui/index.d.mts +0 -331
  557. package/dist/ui/index.d.ts +0 -331
  558. package/dist/ui/index.js +0 -16953
  559. package/dist/ui/index.js.map +0 -1
  560. package/dist/ui/index.mjs +0 -16598
  561. package/dist/ui/index.mjs.map +0 -1
  562. package/dist/ui/primitives/client.d.mts +0 -61
  563. package/dist/ui/primitives/client.d.ts +0 -61
  564. package/dist/ui/primitives/client.js +0 -3408
  565. package/dist/ui/primitives/client.js.map +0 -1
  566. package/dist/ui/primitives/client.mjs +0 -3256
  567. package/dist/ui/primitives/client.mjs.map +0 -1
  568. package/dist/ui/primitives.d.mts +0 -113
  569. package/dist/ui/primitives.d.ts +0 -113
  570. package/dist/ui/primitives.js +0 -3356
  571. package/dist/ui/primitives.js.map +0 -1
  572. package/dist/ui/primitives.mjs +0 -3227
  573. package/dist/ui/primitives.mjs.map +0 -1
  574. package/dist/user/index.d.mts +0 -228
  575. package/dist/user/index.d.ts +0 -228
  576. package/dist/user/index.js +0 -4306
  577. package/dist/user/index.js.map +0 -1
  578. package/dist/user/index.mjs +0 -4260
  579. package/dist/user/index.mjs.map +0 -1
  580. package/dist/utils/index.d.mts +0 -205
  581. package/dist/utils/index.d.ts +0 -205
  582. package/dist/utils/index.js +0 -574
  583. package/dist/utils/index.js.map +0 -1
  584. package/dist/utils/index.mjs +0 -514
  585. package/dist/utils/index.mjs.map +0 -1
  586. package/dist/workflow/index.d.mts +0 -40
  587. package/dist/workflow/index.d.ts +0 -40
  588. package/dist/workflow/index.js +0 -3710
  589. package/dist/workflow/index.js.map +0 -1
  590. package/dist/workflow/index.mjs +0 -3677
  591. package/dist/workflow/index.mjs.map +0 -1
@@ -1,3227 +0,0 @@
1
- import { clsx } from 'clsx';
2
- import { twMerge } from 'tailwind-merge';
3
- import * as React10 from 'react';
4
- import { useState, useRef, useMemo, useEffect, useCallback, useContext, createContext } from 'react';
5
- import { cva } from 'class-variance-authority';
6
- import { Slot } from '@radix-ui/react-slot';
7
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
8
- import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
9
- import { ChevronRight, Check, Dot, Ellipsis, ChevronLeft, MoreHorizontal, X, ChevronsUpDown, Search, ChevronDown, ChevronUp, GripVertical, PanelLeft } from 'lucide-react';
10
- import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
11
- import * as DialogPrimitive from '@radix-ui/react-dialog';
12
- import * as TabsPrimitive from '@radix-ui/react-tabs';
13
- import Link from 'next/link';
14
- import { DayPicker } from 'react-day-picker';
15
- import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
16
- import * as SelectPrimitive from '@radix-ui/react-select';
17
- import * as PopoverPrimitive from '@radix-ui/react-popover';
18
- import * as SwitchPrimitives from '@radix-ui/react-switch';
19
- import * as LabelPrimitive from '@radix-ui/react-label';
20
- import * as TooltipPrimitive from '@radix-ui/react-tooltip';
21
- import * as ResizablePrimitive from 'react-resizable-panels';
22
- import * as SliderPrimitive from '@radix-ui/react-slider';
23
- import * as TogglePrimitive from '@radix-ui/react-toggle';
24
- import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
25
- import * as MenubarPrimitive from '@radix-ui/react-menubar';
26
- import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu';
27
- import '@radix-ui/react-context-menu';
28
- import 'vaul';
29
- import '@radix-ui/react-progress';
30
- import 'sonner';
31
- import '@radix-ui/react-alert-dialog';
32
- import 'next/navigation';
33
- import 'react-use';
34
- import '@radix-ui/react-direction';
35
-
36
- var __getOwnPropNames = Object.getOwnPropertyNames;
37
- var __esm = (fn, res) => function __init() {
38
- return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
39
- };
40
-
41
- // src/configs/status.ts
42
- var STATUS_ACTIVE, STATUS_INACTIVE, STATUS_COLORS;
43
- var init_status = __esm({
44
- "src/configs/status.ts"() {
45
- STATUS_ACTIVE = "active";
46
- STATUS_INACTIVE = "inactive";
47
- STATUS_COLORS = {
48
- [STATUS_ACTIVE]: "success",
49
- [STATUS_INACTIVE]: "warning"
50
- };
51
- }
52
- });
53
- function cn(...inputs) {
54
- return twMerge(clsx(inputs));
55
- }
56
- var Logger;
57
- var init_utils = __esm({
58
- "src/utils/index.ts"() {
59
- init_status();
60
- Logger = class {
61
- log(level, message, context, error) {
62
- const entry = {
63
- timestamp: (/* @__PURE__ */ new Date()).toISOString(),
64
- level,
65
- message,
66
- context
67
- };
68
- if (error instanceof Error) {
69
- entry.error = {
70
- name: error.name,
71
- message: error.message,
72
- stack: error.stack
73
- };
74
- } else if (error) {
75
- entry.error = error;
76
- }
77
- const logString = JSON.stringify(entry);
78
- switch (level) {
79
- case "error":
80
- console.error(logString);
81
- break;
82
- case "warn":
83
- console.warn(logString);
84
- break;
85
- case "debug":
86
- if (process.env.NODE_ENV === "development") console.debug(logString);
87
- break;
88
- default:
89
- console.log(logString);
90
- }
91
- }
92
- info(message, context) {
93
- this.log("info", message, context);
94
- }
95
- warn(message, context) {
96
- this.log("warn", message, context);
97
- }
98
- error(message, error, context) {
99
- this.log("error", message, context, error);
100
- }
101
- debug(message, context) {
102
- this.log("debug", message, context);
103
- }
104
- };
105
- new Logger();
106
- }
107
- });
108
- var buttonVariants, Button;
109
- var init_button = __esm({
110
- "src/ui/primitives/button.tsx"() {
111
- init_utils();
112
- buttonVariants = cva(
113
- "inline-flex items-center justify-center gap-1.5 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
114
- {
115
- variants: {
116
- variant: {
117
- // Existing variants (backwards-compatible)
118
- default: "bg-primary text-primary-foreground hover:bg-primary/90",
119
- destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
120
- outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
121
- secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
122
- ghost: "hover:bg-accent hover:text-accent-foreground",
123
- link: "text-primary underline-offset-4 hover:underline",
124
- // New Plane-inspired variants using semantic tokens
125
- accent: "bg-accent-primary text-text-on-color hover:bg-accent-primary-hover active:bg-accent-primary-active disabled:bg-layer-disabled disabled:text-text-disabled",
126
- danger: "bg-danger text-text-on-color hover:bg-danger-hover active:bg-danger-hover disabled:bg-layer-disabled disabled:text-text-disabled",
127
- "danger-outline": "border border-danger bg-layer-2 text-danger-text hover:bg-danger-subtle active:bg-danger-subtle disabled:border-border-subtle disabled:bg-layer-2 disabled:text-text-disabled",
128
- success: "bg-success-semantic text-text-on-color hover:bg-success-semantic/90 active:bg-success-semantic/80 disabled:bg-layer-disabled disabled:text-text-disabled",
129
- tertiary: "bg-layer-3 text-text-secondary hover:bg-layer-3-hover active:bg-layer-3-hover disabled:bg-transparent disabled:text-text-disabled"
130
- },
131
- size: {
132
- // Existing sizes (backwards-compatible)
133
- default: "h-10 px-4 py-2",
134
- sm: "h-9 rounded-md px-3",
135
- lg: "h-11 rounded-md px-8",
136
- icon: "h-10 w-10",
137
- // New ERP-specific compact sizes
138
- xs: "h-7 rounded-sm px-2 text-xs",
139
- compact: "h-8 rounded-md px-3 text-xs",
140
- "icon-sm": "h-8 w-8",
141
- "icon-xs": "h-7 w-7"
142
- }
143
- },
144
- defaultVariants: {
145
- variant: "default",
146
- size: "default"
147
- }
148
- }
149
- );
150
- Button = React10.forwardRef(
151
- ({ className, variant, size, asChild = false, loading = false, prependIcon, appendIcon, children, disabled, ...props }, ref) => {
152
- if (asChild) {
153
- return /* @__PURE__ */ jsx(
154
- Slot,
155
- {
156
- className: cn(buttonVariants({ variant, size }), className),
157
- ref,
158
- ...{ disabled: disabled || loading },
159
- ...props,
160
- children: React10.isValidElement(children) && (prependIcon || appendIcon) ? React10.cloneElement(children, {}, /* @__PURE__ */ jsxs(Fragment, { children: [
161
- prependIcon && React10.cloneElement(prependIcon, {
162
- className: cn("shrink-0", size === "xs" || size === "compact" ? "size-3.5" : "size-4")
163
- }),
164
- children.props.children,
165
- appendIcon && React10.cloneElement(appendIcon, {
166
- className: cn("shrink-0", size === "xs" || size === "compact" ? "size-3.5" : "size-4")
167
- })
168
- ] })) : children
169
- }
170
- );
171
- }
172
- return /* @__PURE__ */ jsxs(
173
- "button",
174
- {
175
- className: cn(buttonVariants({ variant, size }), className),
176
- ref,
177
- disabled: disabled || loading,
178
- ...props,
179
- children: [
180
- prependIcon && React10.cloneElement(prependIcon, {
181
- className: cn("shrink-0", size === "xs" || size === "compact" ? "size-3.5" : "size-4")
182
- }),
183
- children,
184
- appendIcon && React10.cloneElement(appendIcon, {
185
- className: cn("shrink-0", size === "xs" || size === "compact" ? "size-3.5" : "size-4")
186
- })
187
- ]
188
- }
189
- );
190
- }
191
- );
192
- Button.displayName = "Button";
193
- }
194
- });
195
- function Badge({ className, variant, size, ...props }) {
196
- return /* @__PURE__ */ jsx("div", { className: cn(badgeVariants({ variant, size }), className), ...props });
197
- }
198
- var badgeVariants;
199
- var init_badge = __esm({
200
- "src/ui/primitives/badge.tsx"() {
201
- init_utils();
202
- badgeVariants = cva(
203
- "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
204
- {
205
- variants: {
206
- variant: {
207
- // Existing variants (backwards-compatible)
208
- default: "border-transparent bg-primary text-primary-foreground",
209
- secondary: "border-transparent bg-secondary text-secondary-foreground",
210
- destructive: "border-transparent bg-destructive text-destructive-foreground",
211
- outline: "text-foreground",
212
- // Enhanced semantic variants (using Design Tokens)
213
- success: "border-transparent bg-success-subtle text-success-text",
214
- warning: "border-transparent bg-warning-subtle text-warning-text",
215
- danger: "border-transparent bg-danger-subtle text-danger-text",
216
- info: "border-transparent bg-info-subtle text-info-text",
217
- accent: "border-transparent bg-accent-primary-subtle text-accent-primary"
218
- },
219
- size: {
220
- default: "",
221
- sm: "px-1.5 py-0 text-[10px]",
222
- lg: "px-3 py-1 text-sm"
223
- }
224
- },
225
- defaultVariants: {
226
- variant: "default",
227
- size: "default"
228
- }
229
- }
230
- );
231
- }
232
- });
233
- var Input;
234
- var init_input = __esm({
235
- "src/ui/primitives/input.tsx"() {
236
- init_utils();
237
- Input = React10.forwardRef(
238
- ({ className, type, ...props }, ref) => {
239
- return /* @__PURE__ */ jsx(
240
- "input",
241
- {
242
- type,
243
- className: cn(
244
- "flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
245
- className
246
- ),
247
- ref,
248
- ...props
249
- }
250
- );
251
- }
252
- );
253
- Input.displayName = "Input";
254
- }
255
- });
256
- var Checkbox;
257
- var init_checkbox = __esm({
258
- "src/ui/primitives/checkbox.tsx"() {
259
- "use client";
260
- init_utils();
261
- Checkbox = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
262
- CheckboxPrimitive.Root,
263
- {
264
- ref,
265
- className: cn(
266
- "peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",
267
- className
268
- ),
269
- ...props,
270
- children: /* @__PURE__ */ jsx(
271
- CheckboxPrimitive.Indicator,
272
- {
273
- className: cn("flex items-center justify-center text-current"),
274
- children: /* @__PURE__ */ jsx(Check, { className: "h-4 w-4" })
275
- }
276
- )
277
- }
278
- ));
279
- Checkbox.displayName = CheckboxPrimitive.Root.displayName;
280
- }
281
- });
282
- var Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter;
283
- var init_card = __esm({
284
- "src/ui/primitives/card.tsx"() {
285
- init_utils();
286
- Card = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
287
- "div",
288
- {
289
- ref,
290
- className: cn(
291
- "rounded-lg border bg-card text-card-foreground shadow-sm",
292
- className
293
- ),
294
- ...props
295
- }
296
- ));
297
- Card.displayName = "Card";
298
- CardHeader = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
299
- "div",
300
- {
301
- ref,
302
- className: cn("flex flex-col space-y-1.5 p-6", className),
303
- ...props
304
- }
305
- ));
306
- CardHeader.displayName = "CardHeader";
307
- CardTitle = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
308
- "h3",
309
- {
310
- ref,
311
- className: cn(
312
- "text-2xl font-semibold leading-none tracking-tight",
313
- className
314
- ),
315
- ...props
316
- }
317
- ));
318
- CardTitle.displayName = "CardTitle";
319
- CardDescription = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
320
- "p",
321
- {
322
- ref,
323
- className: cn("text-sm text-muted-foreground", className),
324
- ...props
325
- }
326
- ));
327
- CardDescription.displayName = "CardDescription";
328
- CardContent = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("p-6 pt-0", className), ...props }));
329
- CardContent.displayName = "CardContent";
330
- CardFooter = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
331
- "div",
332
- {
333
- ref,
334
- className: cn("flex items-center p-6 pt-0", className),
335
- ...props
336
- }
337
- ));
338
- CardFooter.displayName = "CardFooter";
339
- }
340
- });
341
- function SeparatorWithText({
342
- className,
343
- orientation = "horizontal",
344
- children,
345
- ...props
346
- }) {
347
- return /* @__PURE__ */ jsxs(
348
- "div",
349
- {
350
- className: cn(
351
- "flex justify-between items-center",
352
- orientation === "horizontal" ? "w-full" : "flex-col h-full",
353
- className
354
- ),
355
- children: [
356
- /* @__PURE__ */ jsx(Separator, { orientation, className: "shrink", ...props }),
357
- /* @__PURE__ */ jsx(
358
- "span",
359
- {
360
- className: cn(
361
- "shrink-0 px-2 text-sm text-muted-foreground uppercase",
362
- orientation === "vertical" && "-rotate-90 rtl:rotate-90"
363
- ),
364
- children
365
- }
366
- ),
367
- /* @__PURE__ */ jsx(Separator, { orientation, className: "shrink", ...props })
368
- ]
369
- }
370
- );
371
- }
372
- var Separator;
373
- var init_separator = __esm({
374
- "src/ui/primitives/separator.tsx"() {
375
- init_utils();
376
- Separator = React10.forwardRef(
377
- ({ className, orientation = "horizontal", ...props }, ref) => /* @__PURE__ */ jsx(
378
- "div",
379
- {
380
- ref,
381
- className: cn(
382
- "shrink-0 bg-border",
383
- orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
384
- className
385
- ),
386
- ...props
387
- }
388
- )
389
- );
390
- Separator.displayName = "Separator";
391
- }
392
- });
393
- var Table, TableHeader, TableBody, TableFooter, TableRow, TableHead, TableCell, TableCaption;
394
- var init_table = __esm({
395
- "src/ui/primitives/table.tsx"() {
396
- init_utils();
397
- Table = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ jsx(
398
- "table",
399
- {
400
- ref,
401
- className: cn("w-max min-w-full caption-bottom text-xs", className),
402
- ...props
403
- }
404
- ) }));
405
- Table.displayName = "Table";
406
- TableHeader = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("thead", { ref, className: cn("[&_tr]:border-b", className), ...props }));
407
- TableHeader.displayName = "TableHeader";
408
- TableBody = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
409
- "tbody",
410
- {
411
- ref,
412
- className: cn("[&_tr:last-child]:border-0", className),
413
- ...props
414
- }
415
- ));
416
- TableBody.displayName = "TableBody";
417
- TableFooter = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
418
- "tfoot",
419
- {
420
- ref,
421
- className: cn(
422
- "border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",
423
- className
424
- ),
425
- ...props
426
- }
427
- ));
428
- TableFooter.displayName = "TableFooter";
429
- TableRow = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
430
- "tr",
431
- {
432
- ref,
433
- className: cn(
434
- "border-b transition-colors even:bg-muted/30 data-[state=selected]:bg-muted",
435
- className
436
- ),
437
- ...props
438
- }
439
- ));
440
- TableRow.displayName = "TableRow";
441
- TableHead = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
442
- "th",
443
- {
444
- ref,
445
- className: cn(
446
- "h-9 px-3 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",
447
- className
448
- ),
449
- ...props
450
- }
451
- ));
452
- TableHead.displayName = "TableHead";
453
- TableCell = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
454
- "td",
455
- {
456
- ref,
457
- className: cn("px-3 py-1.5 align-middle [&:has([role=checkbox])]:pr-0 text-xs", className),
458
- ...props
459
- }
460
- ));
461
- TableCell.displayName = "TableCell";
462
- TableCaption = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
463
- "caption",
464
- {
465
- ref,
466
- className: cn("mt-4 text-sm text-muted-foreground", className),
467
- ...props
468
- }
469
- ));
470
- TableCaption.displayName = "TableCaption";
471
- }
472
- });
473
- function DropdownMenu({
474
- ...props
475
- }) {
476
- return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Root, { "data-slot": "dropdown-menu", ...props });
477
- }
478
- function DropdownMenuPortal({
479
- ...props
480
- }) {
481
- return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { "data-slot": "dropdown-menu-portal", ...props });
482
- }
483
- function DropdownMenuTrigger({
484
- className,
485
- ...props
486
- }) {
487
- return /* @__PURE__ */ jsx(
488
- DropdownMenuPrimitive.Trigger,
489
- {
490
- "data-slot": "dropdown-menu-trigger",
491
- className: cn("cursor-pointer", className),
492
- ...props
493
- }
494
- );
495
- }
496
- function DropdownMenuGroup({
497
- ...props
498
- }) {
499
- return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Group, { "data-slot": "dropdown-menu-group", ...props });
500
- }
501
- function DropdownMenuRadioGroup({
502
- ...props
503
- }) {
504
- return /* @__PURE__ */ jsx(
505
- DropdownMenuPrimitive.RadioGroup,
506
- {
507
- "data-slot": "dropdown-menu-radio-group",
508
- ...props
509
- }
510
- );
511
- }
512
- function DropdownMenuSub({
513
- ...props
514
- }) {
515
- return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Sub, { "data-slot": "dropdown-menu-sub", ...props });
516
- }
517
- function DropdownMenuSubTrigger({
518
- className,
519
- inset,
520
- children,
521
- ...props
522
- }) {
523
- return /* @__PURE__ */ jsxs(
524
- DropdownMenuPrimitive.SubTrigger,
525
- {
526
- "data-slot": "dropdown-menu-sub-trigger",
527
- "data-inset": inset,
528
- className: cn(
529
- "cursor-pointer flex items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:ps-8 focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
530
- className
531
- ),
532
- ...props,
533
- children: [
534
- children,
535
- /* @__PURE__ */ jsx(ChevronRight, { className: "ms-auto h-4 w-4 rtl:-scale-100" })
536
- ]
537
- }
538
- );
539
- }
540
- function DropdownMenuSubContent({
541
- className,
542
- ...props
543
- }) {
544
- return /* @__PURE__ */ jsx(
545
- DropdownMenuPrimitive.SubContent,
546
- {
547
- "data-slot": "dropdown-menu-sub-content",
548
- className: cn(
549
- "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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",
550
- className
551
- ),
552
- ...props
553
- }
554
- );
555
- }
556
- function DropdownMenuContent({
557
- className,
558
- sideOffset = 4,
559
- ...props
560
- }) {
561
- return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
562
- DropdownMenuPrimitive.Content,
563
- {
564
- "data-slot": "dropdown-menu-content",
565
- sideOffset,
566
- className: cn(
567
- "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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",
568
- className
569
- ),
570
- ...props
571
- }
572
- ) });
573
- }
574
- function DropdownMenuItem({
575
- className,
576
- inset,
577
- ...props
578
- }) {
579
- return /* @__PURE__ */ jsx(
580
- DropdownMenuPrimitive.Item,
581
- {
582
- "data-slot": "dropdown-menu-item",
583
- "data-inset": inset,
584
- className: cn(
585
- "relative flex cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-hidden transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 data-[inset]:ps-8",
586
- className
587
- ),
588
- ...props
589
- }
590
- );
591
- }
592
- function DropdownMenuCheckboxItem({
593
- className,
594
- children,
595
- checked,
596
- ...props
597
- }) {
598
- return /* @__PURE__ */ jsxs(
599
- DropdownMenuPrimitive.CheckboxItem,
600
- {
601
- "data-slot": "dropdown-menu-checkbox-item",
602
- className: cn(
603
- "relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-hidden transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
604
- className
605
- ),
606
- checked,
607
- ...props,
608
- children: [
609
- /* @__PURE__ */ jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { className: "h-4 w-4" }) }) }),
610
- children
611
- ]
612
- }
613
- );
614
- }
615
- function DropdownMenuRadioItem({
616
- className,
617
- children,
618
- ...props
619
- }) {
620
- return /* @__PURE__ */ jsxs(
621
- DropdownMenuPrimitive.RadioItem,
622
- {
623
- "data-slot": "dropdown-menu-radio-item",
624
- className: cn(
625
- "relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-hidden transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
626
- className
627
- ),
628
- ...props,
629
- children: [
630
- /* @__PURE__ */ jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(Dot, { className: "h-4 w-4 fill-current" }) }) }),
631
- children
632
- ]
633
- }
634
- );
635
- }
636
- function DropdownMenuLabel({
637
- className,
638
- inset,
639
- ...props
640
- }) {
641
- return /* @__PURE__ */ jsx(
642
- DropdownMenuPrimitive.Label,
643
- {
644
- "data-slot": "dropdown-menu-label",
645
- "data-inset": inset,
646
- className: cn(
647
- "px-2 py-1.5 text-sm font-semibold data-[inset]:ps-8",
648
- className
649
- ),
650
- ...props
651
- }
652
- );
653
- }
654
- function DropdownMenuSeparator({
655
- className,
656
- ...props
657
- }) {
658
- return /* @__PURE__ */ jsx(
659
- DropdownMenuPrimitive.Separator,
660
- {
661
- "data-slot": "dropdown-menu-separator",
662
- className: cn("-mx-1 my-1 h-px bg-muted", className),
663
- ...props
664
- }
665
- );
666
- }
667
- function DropdownMenuShortcut({
668
- className,
669
- ...props
670
- }) {
671
- return /* @__PURE__ */ jsx(
672
- "span",
673
- {
674
- "data-slot": "dropdown-menu-shortcut",
675
- className: cn("ml-auto text-xs tracking-widest opacity-60", className),
676
- ...props
677
- }
678
- );
679
- }
680
- var init_dropdown_menu = __esm({
681
- "src/ui/primitives/dropdown-menu.tsx"() {
682
- "use client";
683
- init_utils();
684
- }
685
- });
686
- var Dialog, DialogTrigger, DialogPortal, DialogClose, DialogOverlay, DialogContent, DialogHeader, DialogFooter, DialogTitle, DialogDescription;
687
- var init_dialog = __esm({
688
- "src/ui/primitives/dialog.tsx"() {
689
- "use client";
690
- init_utils();
691
- Dialog = DialogPrimitive.Root;
692
- DialogTrigger = DialogPrimitive.Trigger;
693
- DialogPortal = DialogPrimitive.Portal;
694
- DialogClose = DialogPrimitive.Close;
695
- DialogOverlay = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
696
- DialogPrimitive.Overlay,
697
- {
698
- ref,
699
- className: cn(
700
- "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
701
- className
702
- ),
703
- ...props
704
- }
705
- ));
706
- DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
707
- DialogContent = React10.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(DialogPortal, { children: [
708
- /* @__PURE__ */ jsx(DialogOverlay, {}),
709
- /* @__PURE__ */ jsxs(
710
- DialogPrimitive.Content,
711
- {
712
- ref,
713
- className: cn(
714
- "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",
715
- className
716
- ),
717
- ...props,
718
- children: [
719
- children,
720
- /* @__PURE__ */ jsxs(DialogPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [
721
- /* @__PURE__ */ jsx(X, { className: "h-4 w-4" }),
722
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
723
- ] })
724
- ]
725
- }
726
- )
727
- ] }));
728
- DialogContent.displayName = DialogPrimitive.Content.displayName;
729
- DialogHeader = ({
730
- className,
731
- ...props
732
- }) => /* @__PURE__ */ jsx(
733
- "div",
734
- {
735
- className: cn(
736
- "flex flex-col space-y-1.5 text-center sm:text-left",
737
- className
738
- ),
739
- ...props
740
- }
741
- );
742
- DialogHeader.displayName = "DialogHeader";
743
- DialogFooter = ({
744
- className,
745
- ...props
746
- }) => /* @__PURE__ */ jsx(
747
- "div",
748
- {
749
- className: cn(
750
- "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
751
- className
752
- ),
753
- ...props
754
- }
755
- );
756
- DialogFooter.displayName = "DialogFooter";
757
- DialogTitle = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
758
- DialogPrimitive.Title,
759
- {
760
- ref,
761
- className: cn(
762
- "text-lg font-semibold leading-none tracking-tight",
763
- className
764
- ),
765
- ...props
766
- }
767
- ));
768
- DialogTitle.displayName = DialogPrimitive.Title.displayName;
769
- DialogDescription = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
770
- DialogPrimitive.Description,
771
- {
772
- ref,
773
- className: cn("text-sm text-muted-foreground", className),
774
- ...props
775
- }
776
- ));
777
- DialogDescription.displayName = DialogPrimitive.Description.displayName;
778
- }
779
- });
780
- var Tabs, TabsList, TabsTrigger, TabsContent;
781
- var init_tabs = __esm({
782
- "src/ui/primitives/tabs.tsx"() {
783
- "use client";
784
- init_utils();
785
- Tabs = TabsPrimitive.Root;
786
- TabsList = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
787
- TabsPrimitive.List,
788
- {
789
- ref,
790
- className: cn(
791
- "inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",
792
- className
793
- ),
794
- ...props
795
- }
796
- ));
797
- TabsList.displayName = TabsPrimitive.List.displayName;
798
- TabsTrigger = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
799
- TabsPrimitive.Trigger,
800
- {
801
- ref,
802
- className: cn(
803
- "inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm",
804
- className
805
- ),
806
- ...props
807
- }
808
- ));
809
- TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
810
- TabsContent = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
811
- TabsPrimitive.Content,
812
- {
813
- ref,
814
- className: cn(
815
- "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
816
- className
817
- ),
818
- ...props
819
- }
820
- ));
821
- TabsContent.displayName = TabsPrimitive.Content.displayName;
822
- }
823
- });
824
- function Breadcrumb({ ...props }) {
825
- return /* @__PURE__ */ jsx("nav", { "aria-label": "breadcrumb", "data-slot": "breadcrumb", ...props });
826
- }
827
- function BreadcrumbList({ className, ...props }) {
828
- return /* @__PURE__ */ jsx(
829
- "ol",
830
- {
831
- "data-slot": "breadcrumb-list",
832
- className: cn(
833
- "flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5",
834
- className
835
- ),
836
- ...props
837
- }
838
- );
839
- }
840
- function BreadcrumbItem({ className, ...props }) {
841
- return /* @__PURE__ */ jsx(
842
- "li",
843
- {
844
- "data-slot": "breadcrumb-item",
845
- className: cn("inline-flex items-center gap-1.5", className),
846
- ...props
847
- }
848
- );
849
- }
850
- function BreadcrumbLink({
851
- asChild,
852
- className,
853
- ...props
854
- }) {
855
- const Comp = asChild ? Slot : "a";
856
- return /* @__PURE__ */ jsx(
857
- Comp,
858
- {
859
- "data-slot": "breadcrumb-link",
860
- className: cn("transition-colors hover:text-foreground", className),
861
- ...props
862
- }
863
- );
864
- }
865
- function BreadcrumbPage({
866
- className,
867
- ...props
868
- }) {
869
- return /* @__PURE__ */ jsx(
870
- "span",
871
- {
872
- "data-slot": "breadcrumb-page",
873
- role: "link",
874
- "aria-disabled": "true",
875
- "aria-current": "page",
876
- className: cn("font-normal text-foreground", className),
877
- ...props
878
- }
879
- );
880
- }
881
- function BreadcrumbSeparator({
882
- children,
883
- className,
884
- ...props
885
- }) {
886
- return /* @__PURE__ */ jsx(
887
- "li",
888
- {
889
- "data-slot": "breadcrumb-separator",
890
- role: "presentation",
891
- "aria-hidden": "true",
892
- className: cn("[&>svg]:size-3.5", className),
893
- ...props,
894
- children: children ?? /* @__PURE__ */ jsx(ChevronRight, {})
895
- }
896
- );
897
- }
898
- function BreadcrumbEllipsis({
899
- className,
900
- ...props
901
- }) {
902
- return /* @__PURE__ */ jsx(
903
- "span",
904
- {
905
- "data-slot": "breadcrumb-ellipsis",
906
- role: "presentation",
907
- "aria-hidden": "true",
908
- "aria-label": "More",
909
- className: cn("flex h-9 w-9 items-center justify-center", className),
910
- ...props,
911
- children: /* @__PURE__ */ jsx(Ellipsis, { className: "h-4 w-4" })
912
- }
913
- );
914
- }
915
- var init_breadcrumb = __esm({
916
- "src/ui/primitives/breadcrumb.tsx"() {
917
- init_utils();
918
- }
919
- });
920
- function Keyboard({
921
- className,
922
- children,
923
- ...props
924
- }) {
925
- return /* @__PURE__ */ jsx(
926
- "kbd",
927
- {
928
- "data-slot": "keyboard",
929
- className: cn(
930
- "pointer-events-none select-none h-5 inline-flex items-center gap-x-1 px-1.5 bg-muted text-sm text-muted-foreground font-mono border rounded-sm",
931
- "before:content-['\u2318']",
932
- className
933
- ),
934
- ...props,
935
- children
936
- }
937
- );
938
- }
939
- var init_keyboard = __esm({
940
- "src/ui/primitives/keyboard.tsx"() {
941
- init_utils();
942
- }
943
- });
944
- function Pagination({ className, ...props }) {
945
- return /* @__PURE__ */ jsx(
946
- "nav",
947
- {
948
- "data-slot": "pagination",
949
- role: "navigation",
950
- className: cn("mx-auto flex w-full justify-center", className),
951
- "aria-label": "pagination",
952
- ...props
953
- }
954
- );
955
- }
956
- function PaginationContent({
957
- className,
958
- ...props
959
- }) {
960
- return /* @__PURE__ */ jsx(
961
- "ul",
962
- {
963
- "data-slot": "pagination-content",
964
- className: cn("flex flex-row items-center gap-1", className),
965
- ...props
966
- }
967
- );
968
- }
969
- function PaginationItem({ ...props }) {
970
- return /* @__PURE__ */ jsx("li", { "data-slot": "pagination-item", ...props });
971
- }
972
- function PaginationLink({
973
- className,
974
- isActive,
975
- size = "icon",
976
- href = "",
977
- ...props
978
- }) {
979
- return /* @__PURE__ */ jsx(
980
- Link,
981
- {
982
- "data-slot": "pagination-link",
983
- className: cn(
984
- buttonVariants({
985
- variant: isActive ? "outline" : "ghost",
986
- size
987
- }),
988
- className
989
- ),
990
- href,
991
- "aria-current": isActive ? "page" : void 0,
992
- ...props
993
- }
994
- );
995
- }
996
- function PaginationPrevious({
997
- className,
998
- ...props
999
- }) {
1000
- return /* @__PURE__ */ jsxs(
1001
- PaginationLink,
1002
- {
1003
- size: "default",
1004
- className: cn("gap-1 ps-2.5", className),
1005
- "aria-label": "Go to previous page",
1006
- ...props,
1007
- children: [
1008
- /* @__PURE__ */ jsx(ChevronLeft, { className: "h-4 w-4 rtl:-scale-100" }),
1009
- /* @__PURE__ */ jsx("span", { children: "Previous" })
1010
- ]
1011
- }
1012
- );
1013
- }
1014
- function PaginationNext({
1015
- className,
1016
- ...props
1017
- }) {
1018
- return /* @__PURE__ */ jsxs(
1019
- PaginationLink,
1020
- {
1021
- size: "default",
1022
- className: cn("gap-1 pe-2.5", className),
1023
- "aria-label": "Go to next page",
1024
- ...props,
1025
- children: [
1026
- /* @__PURE__ */ jsx("span", { children: "Next" }),
1027
- /* @__PURE__ */ jsx(ChevronRight, { className: "h-4 w-4 rtl:-scale-100" })
1028
- ]
1029
- }
1030
- );
1031
- }
1032
- function PaginationEllipsis({
1033
- className,
1034
- ...props
1035
- }) {
1036
- return /* @__PURE__ */ jsx(
1037
- "span",
1038
- {
1039
- "data-slot": "pagination-ellipsis",
1040
- className: cn("flex h-9 w-9 items-center justify-center", className),
1041
- "aria-label": "More pages",
1042
- "aria-hidden": true,
1043
- ...props,
1044
- children: /* @__PURE__ */ jsx(MoreHorizontal, { className: "h-4 w-4" })
1045
- }
1046
- );
1047
- }
1048
- var init_pagination = __esm({
1049
- "src/ui/primitives/pagination.tsx"() {
1050
- init_utils();
1051
- init_button();
1052
- }
1053
- });
1054
- function StatusBadge({
1055
- status,
1056
- className,
1057
- label: customLabel
1058
- }) {
1059
- const statusStr = String(status);
1060
- const variant = STATUS_COLORS[statusStr] || "secondary";
1061
- let badgeClass = "";
1062
- if (variant === "success") {
1063
- badgeClass = "bg-green-500 hover:bg-green-600 text-white border-transparent";
1064
- } else if (variant === "warning") {
1065
- badgeClass = "bg-yellow-500 hover:bg-yellow-600 text-white border-transparent";
1066
- }
1067
- let label = customLabel || statusStr;
1068
- if (!customLabel) {
1069
- if (statusStr === STATUS_ACTIVE) label = "Active";
1070
- }
1071
- return /* @__PURE__ */ jsx(
1072
- Badge,
1073
- {
1074
- variant: variant === "success" || variant === "warning" ? "default" : variant,
1075
- className: cn(badgeClass, className),
1076
- children: label
1077
- }
1078
- );
1079
- }
1080
- var init_status_badge = __esm({
1081
- "src/ui/primitives/status-badge.tsx"() {
1082
- init_badge();
1083
- init_utils();
1084
- init_utils();
1085
- }
1086
- });
1087
- function Calendar({
1088
- className,
1089
- classNames,
1090
- showOutsideDays = true,
1091
- ...props
1092
- }) {
1093
- return /* @__PURE__ */ jsx(
1094
- DayPicker,
1095
- {
1096
- showOutsideDays,
1097
- className: cn("p-3", className),
1098
- classNames: {
1099
- month: "space-y-4",
1100
- month_caption: "flex justify-center pt-1 items-center",
1101
- caption_label: "text-sm font-medium",
1102
- nav: "relative gap-x-1 flex items-center",
1103
- button_previous: cn(
1104
- buttonVariants({ variant: "outline" }),
1105
- "absolute top-0 start-0 h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100"
1106
- ),
1107
- button_next: cn(
1108
- buttonVariants({ variant: "outline" }),
1109
- "absolute top-0 end-0 h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100"
1110
- ),
1111
- month_grid: "w-full border-collapse space-y-1",
1112
- weekdays: "flex",
1113
- weekday: "text-muted-foreground rounded-md w-8 font-normal text-[0.8rem]",
1114
- week: "flex w-full mt-2",
1115
- day: cn(
1116
- buttonVariants({ variant: "ghost" }),
1117
- "relative h-8 w-8 p-0 font-normal text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected].day-range-end)]:rounded-e-md"
1118
- ),
1119
- day_button: "cursor-pointer h-full w-full aria-selected:opacity-100",
1120
- range_start: "rounded-md!",
1121
- range_end: "rounded-md!",
1122
- selected: cn(
1123
- "bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground",
1124
- props.mode === "range" && "rounded-none"
1125
- ),
1126
- today: "bg-accent text-accent-foreground",
1127
- outside: "day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30",
1128
- disabled: "text-muted-foreground opacity-50",
1129
- range_middle: "aria-selected:bg-accent aria-selected:text-accent-foreground",
1130
- hidden: "invisible",
1131
- ...classNames
1132
- },
1133
- components: {
1134
- Chevron: (props2) => {
1135
- if (props2.orientation === "left") {
1136
- return /* @__PURE__ */ jsx(ChevronLeft, { className: "h-4 w-4" });
1137
- }
1138
- return /* @__PURE__ */ jsx(ChevronRight, { className: "h-4 w-4" });
1139
- }
1140
- },
1141
- ...props
1142
- }
1143
- );
1144
- }
1145
- var init_calendar = __esm({
1146
- "src/ui/primitives/calendar.tsx"() {
1147
- "use client";
1148
- init_utils();
1149
- init_button();
1150
- Calendar.displayName = "Calendar";
1151
- }
1152
- });
1153
- function ScrollArea({
1154
- orientation,
1155
- className,
1156
- children,
1157
- ...props
1158
- }) {
1159
- return /* @__PURE__ */ jsxs(
1160
- ScrollAreaPrimitive.Root,
1161
- {
1162
- "data-slot": "scroll-area",
1163
- className: cn("relative overflow-hidden", className),
1164
- ...props,
1165
- children: [
1166
- /* @__PURE__ */ jsx(
1167
- ScrollAreaPrimitive.Viewport,
1168
- {
1169
- "data-slot": "scroll-area-viewport",
1170
- className: "h-full w-full rounded-[inherit]",
1171
- children
1172
- }
1173
- ),
1174
- /* @__PURE__ */ jsx(ScrollBar, { orientation }),
1175
- /* @__PURE__ */ jsx(ScrollAreaPrimitive.Corner, {})
1176
- ]
1177
- }
1178
- );
1179
- }
1180
- function ScrollBar({
1181
- className,
1182
- orientation = "vertical",
1183
- ...props
1184
- }) {
1185
- return /* @__PURE__ */ jsx(
1186
- ScrollAreaPrimitive.ScrollAreaScrollbar,
1187
- {
1188
- "data-slot": "scroll-area-scrollbar",
1189
- orientation,
1190
- className: cn(
1191
- "flex touch-none select-none transition-colors",
1192
- orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent p-[1px]",
1193
- orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent p-[1px]",
1194
- className
1195
- ),
1196
- ...props,
1197
- children: /* @__PURE__ */ jsx(ScrollAreaPrimitive.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" })
1198
- }
1199
- );
1200
- }
1201
- var init_scroll_area = __esm({
1202
- "src/ui/primitives/scroll-area.tsx"() {
1203
- "use client";
1204
- init_utils();
1205
- }
1206
- });
1207
- function Combobox({
1208
- options,
1209
- value,
1210
- onValueChange,
1211
- placeholder = "Select option...",
1212
- searchPlaceholder = "Search...",
1213
- emptyText = "No option found.",
1214
- disabled = false,
1215
- className,
1216
- id
1217
- }) {
1218
- const [open, setOpen] = useState(false);
1219
- const [searchValue, setSearchValue] = useState("");
1220
- const containerRef = useRef(null);
1221
- const searchInputRef = useRef(null);
1222
- const dropdownRef = useRef(null);
1223
- const selectedOption = options.find(
1224
- (option) => String(option.value) === String(value)
1225
- );
1226
- const filteredOptions = useMemo(() => {
1227
- if (!searchValue.trim()) {
1228
- return options;
1229
- }
1230
- const searchLower = searchValue.toLowerCase();
1231
- return options.filter(
1232
- (option) => option.label.toLowerCase().includes(searchLower) || String(option.value).toLowerCase().includes(searchLower)
1233
- );
1234
- }, [options, searchValue]);
1235
- useEffect(() => {
1236
- if (!open) {
1237
- setSearchValue("");
1238
- }
1239
- }, [open]);
1240
- useEffect(() => {
1241
- if (open && searchInputRef.current) {
1242
- setTimeout(() => {
1243
- searchInputRef.current?.focus();
1244
- }, 50);
1245
- }
1246
- }, [open]);
1247
- useEffect(() => {
1248
- if (!open) return;
1249
- const handleClickOutside = (event) => {
1250
- const target = event.target;
1251
- if (containerRef.current && !containerRef.current.contains(target) && dropdownRef.current && !dropdownRef.current.contains(target)) {
1252
- if (target.closest('[data-slot="dialog-content"]')) {
1253
- return;
1254
- }
1255
- setOpen(false);
1256
- }
1257
- };
1258
- const handleEscape = (event) => {
1259
- if (event.key === "Escape" && open) {
1260
- event.stopPropagation();
1261
- setOpen(false);
1262
- }
1263
- };
1264
- document.addEventListener("mousedown", handleClickOutside, true);
1265
- document.addEventListener("keydown", handleEscape, true);
1266
- return () => {
1267
- document.removeEventListener("mousedown", handleClickOutside, true);
1268
- document.removeEventListener("keydown", handleEscape, true);
1269
- };
1270
- }, [open]);
1271
- const handleSelect = useCallback(
1272
- (optionValue) => {
1273
- if (onValueChange) {
1274
- onValueChange(optionValue);
1275
- setOpen(false);
1276
- }
1277
- },
1278
- [onValueChange]
1279
- );
1280
- const handleClear = useCallback(
1281
- (e) => {
1282
- e.preventDefault();
1283
- e.stopPropagation();
1284
- if (onValueChange) {
1285
- onValueChange(void 0);
1286
- }
1287
- },
1288
- [onValueChange]
1289
- );
1290
- return /* @__PURE__ */ jsxs("div", { ref: containerRef, className: "relative w-full", children: [
1291
- /* @__PURE__ */ jsxs(
1292
- Button,
1293
- {
1294
- type: "button",
1295
- variant: "outline",
1296
- role: "combobox",
1297
- "aria-expanded": open,
1298
- disabled,
1299
- className: cn("w-full justify-between", className),
1300
- id,
1301
- onClick: (e) => {
1302
- e.stopPropagation();
1303
- setOpen(!open);
1304
- },
1305
- children: [
1306
- /* @__PURE__ */ jsx("span", { className: "truncate", children: selectedOption ? selectedOption.label : placeholder }),
1307
- /* @__PURE__ */ jsxs("div", { className: "ml-2 flex items-center gap-1 shrink-0", children: [
1308
- selectedOption && /* @__PURE__ */ jsx(
1309
- "div",
1310
- {
1311
- role: "button",
1312
- tabIndex: 0,
1313
- className: "h-4 w-4 p-0 hover:bg-transparent cursor-pointer flex items-center justify-center",
1314
- onClick: handleClear,
1315
- onKeyDown: (e) => {
1316
- if (e.key === "Enter" || e.key === " ") {
1317
- e.preventDefault();
1318
- e.stopPropagation();
1319
- handleClear(e);
1320
- }
1321
- },
1322
- children: /* @__PURE__ */ jsx(X, { className: "h-3.5 w-3.5 text-red-500 hover:text-red-600" })
1323
- }
1324
- ),
1325
- /* @__PURE__ */ jsx(ChevronsUpDown, { className: "h-4 w-4 opacity-50" })
1326
- ] })
1327
- ]
1328
- }
1329
- ),
1330
- open && /* @__PURE__ */ jsx(
1331
- "div",
1332
- {
1333
- ref: dropdownRef,
1334
- className: "absolute z-[100] mt-1 w-full rounded-md border bg-popover text-popover-foreground shadow-md",
1335
- style: {
1336
- top: "100%",
1337
- left: 0
1338
- },
1339
- children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
1340
- /* @__PURE__ */ jsxs("div", { className: "flex items-center border-b px-3 py-2", children: [
1341
- /* @__PURE__ */ jsx(Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
1342
- /* @__PURE__ */ jsx(
1343
- Input,
1344
- {
1345
- ref: searchInputRef,
1346
- placeholder: searchPlaceholder,
1347
- value: searchValue,
1348
- onChange: (e) => {
1349
- e.stopPropagation();
1350
- setSearchValue(e.target.value);
1351
- },
1352
- onKeyDown: (e) => {
1353
- e.stopPropagation();
1354
- if (e.key === "Escape") {
1355
- e.preventDefault();
1356
- setOpen(false);
1357
- }
1358
- if (e.key === "Enter") {
1359
- e.preventDefault();
1360
- if (filteredOptions.length > 0) {
1361
- handleSelect(filteredOptions[0].value);
1362
- }
1363
- }
1364
- },
1365
- onClick: (e) => {
1366
- e.stopPropagation();
1367
- },
1368
- onFocus: (e) => {
1369
- e.stopPropagation();
1370
- },
1371
- className: "border-0 focus-visible:ring-0 focus-visible:ring-offset-0 h-9 bg-transparent px-0"
1372
- }
1373
- ),
1374
- searchValue && /* @__PURE__ */ jsx(
1375
- Button,
1376
- {
1377
- type: "button",
1378
- variant: "ghost",
1379
- size: "sm",
1380
- className: "h-6 w-6 p-0",
1381
- onClick: (e) => {
1382
- e.stopPropagation();
1383
- setSearchValue("");
1384
- searchInputRef.current?.focus();
1385
- },
1386
- children: /* @__PURE__ */ jsx(X, { className: "h-3 w-3" })
1387
- }
1388
- )
1389
- ] }),
1390
- /* @__PURE__ */ jsx(ScrollArea, { className: "max-h-[300px]", children: filteredOptions.length === 0 ? /* @__PURE__ */ jsx("div", { className: "py-6 text-center text-sm text-muted-foreground", children: emptyText }) : /* @__PURE__ */ jsx("div", { className: "p-1", children: filteredOptions.map((option) => {
1391
- const isSelected = String(value) === String(option.value);
1392
- return /* @__PURE__ */ jsxs(
1393
- "div",
1394
- {
1395
- role: "option",
1396
- "aria-selected": isSelected,
1397
- className: cn(
1398
- "relative flex cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none",
1399
- "hover:bg-accent hover:text-accent-foreground",
1400
- isSelected && "bg-accent text-accent-foreground"
1401
- ),
1402
- onMouseDown: (e) => {
1403
- e.preventDefault();
1404
- e.stopPropagation();
1405
- handleSelect(option.value);
1406
- },
1407
- onClick: (e) => {
1408
- e.preventDefault();
1409
- e.stopPropagation();
1410
- handleSelect(option.value);
1411
- },
1412
- children: [
1413
- /* @__PURE__ */ jsx(
1414
- Check,
1415
- {
1416
- className: cn(
1417
- "mr-2 h-4 w-4 shrink-0",
1418
- isSelected ? "opacity-100" : "opacity-0"
1419
- )
1420
- }
1421
- ),
1422
- /* @__PURE__ */ jsx("span", { className: "flex-1 truncate", children: option.label })
1423
- ]
1424
- },
1425
- String(option.value)
1426
- );
1427
- }) }) })
1428
- ] })
1429
- }
1430
- )
1431
- ] });
1432
- }
1433
- var init_combobox = __esm({
1434
- "src/ui/primitives/combobox.tsx"() {
1435
- "use client";
1436
- init_utils();
1437
- init_button();
1438
- init_input();
1439
- init_scroll_area();
1440
- }
1441
- });
1442
- function Select({
1443
- ...props
1444
- }) {
1445
- return /* @__PURE__ */ jsx(SelectPrimitive.Root, { "data-slot": "select", ...props });
1446
- }
1447
- function SelectGroup({
1448
- ...props
1449
- }) {
1450
- return /* @__PURE__ */ jsx(SelectPrimitive.Group, { "data-slot": "select-group", ...props });
1451
- }
1452
- function SelectValue({
1453
- ...props
1454
- }) {
1455
- return /* @__PURE__ */ jsx(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
1456
- }
1457
- function SelectTrigger({
1458
- className,
1459
- children,
1460
- ...props
1461
- }) {
1462
- return /* @__PURE__ */ jsxs(
1463
- SelectPrimitive.Trigger,
1464
- {
1465
- "data-slot": "select-trigger",
1466
- className: cn(
1467
- "cursor-pointer flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-hidden focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
1468
- className
1469
- ),
1470
- ...props,
1471
- children: [
1472
- children,
1473
- /* @__PURE__ */ jsx(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx(ChevronDown, { className: "h-4 w-4 opacity-50" }) })
1474
- ]
1475
- }
1476
- );
1477
- }
1478
- function SelectScrollUpButton({
1479
- className,
1480
- ...props
1481
- }) {
1482
- return /* @__PURE__ */ jsx(
1483
- SelectPrimitive.ScrollUpButton,
1484
- {
1485
- "data-slot": "select-scroll-up-button",
1486
- className: cn(
1487
- "flex cursor-pointer items-center justify-center py-1",
1488
- className
1489
- ),
1490
- ...props,
1491
- children: /* @__PURE__ */ jsx(ChevronUp, { className: "h-4 w-4" })
1492
- }
1493
- );
1494
- }
1495
- function SelectScrollDownButton({
1496
- className,
1497
- ...props
1498
- }) {
1499
- return /* @__PURE__ */ jsx(
1500
- SelectPrimitive.ScrollDownButton,
1501
- {
1502
- "data-slot": "select-scroll-down-button",
1503
- className: cn(
1504
- "flex cursor-pointer items-center justify-center py-1",
1505
- className
1506
- ),
1507
- ...props,
1508
- children: /* @__PURE__ */ jsx(ChevronDown, { className: "h-4 w-4" })
1509
- }
1510
- );
1511
- }
1512
- function SelectContent({
1513
- className,
1514
- children,
1515
- position = "popper",
1516
- ...props
1517
- }) {
1518
- return /* @__PURE__ */ jsx(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs(
1519
- SelectPrimitive.Content,
1520
- {
1521
- "data-slot": "select-content",
1522
- className: cn(
1523
- "relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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",
1524
- position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
1525
- className
1526
- ),
1527
- position,
1528
- ...props,
1529
- children: [
1530
- /* @__PURE__ */ jsx(SelectScrollUpButton, {}),
1531
- /* @__PURE__ */ jsx(
1532
- SelectPrimitive.Viewport,
1533
- {
1534
- className: cn(
1535
- "p-1",
1536
- position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
1537
- ),
1538
- children
1539
- }
1540
- ),
1541
- /* @__PURE__ */ jsx(SelectScrollDownButton, {})
1542
- ]
1543
- }
1544
- ) });
1545
- }
1546
- function SelectLabel({
1547
- className,
1548
- ...props
1549
- }) {
1550
- return /* @__PURE__ */ jsx(
1551
- SelectPrimitive.Label,
1552
- {
1553
- "data-slot": "select-label",
1554
- className: cn("px-2 py-1.5 text-sm font-semibold", className),
1555
- ...props
1556
- }
1557
- );
1558
- }
1559
- function SelectItem({
1560
- className,
1561
- children,
1562
- ...props
1563
- }) {
1564
- return /* @__PURE__ */ jsxs(
1565
- SelectPrimitive.Item,
1566
- {
1567
- "data-slot": "select-item",
1568
- className: cn(
1569
- "relative flex w-full cursor-pointer select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-hidden focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
1570
- className
1571
- ),
1572
- ...props,
1573
- children: [
1574
- /* @__PURE__ */ jsx("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { className: "h-4 w-4" }) }) }),
1575
- /* @__PURE__ */ jsx(SelectPrimitive.ItemText, { children })
1576
- ]
1577
- }
1578
- );
1579
- }
1580
- function SelectSeparator({
1581
- className,
1582
- ...props
1583
- }) {
1584
- return /* @__PURE__ */ jsx(
1585
- SelectPrimitive.Separator,
1586
- {
1587
- "data-slot": "select-separator",
1588
- className: cn("-mx-1 my-1 h-px bg-muted", className),
1589
- ...props
1590
- }
1591
- );
1592
- }
1593
- var init_select = __esm({
1594
- "src/ui/primitives/select.tsx"() {
1595
- "use client";
1596
- init_utils();
1597
- }
1598
- });
1599
- function Popover({
1600
- ...props
1601
- }) {
1602
- return /* @__PURE__ */ jsx(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
1603
- }
1604
- function PopoverTrigger({
1605
- className,
1606
- ...props
1607
- }) {
1608
- return /* @__PURE__ */ jsx(
1609
- PopoverPrimitive.Trigger,
1610
- {
1611
- "data-slot": "popover-trigger",
1612
- className: cn("cursor-pointer", className),
1613
- ...props
1614
- }
1615
- );
1616
- }
1617
- function PopoverAnchor({
1618
- ...props
1619
- }) {
1620
- return /* @__PURE__ */ jsx(PopoverPrimitive.Anchor, { "data-slot": "popover-anchor", ...props });
1621
- }
1622
- function PopoverContent({
1623
- className,
1624
- align = "center",
1625
- sideOffset = 4,
1626
- container,
1627
- ...props
1628
- }) {
1629
- return /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { container, children: /* @__PURE__ */ jsx(
1630
- PopoverPrimitive.Content,
1631
- {
1632
- "data-slot": "popover-content",
1633
- align,
1634
- sideOffset,
1635
- className: cn(
1636
- "z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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",
1637
- className
1638
- ),
1639
- ...props
1640
- }
1641
- ) });
1642
- }
1643
- var init_popover = __esm({
1644
- "src/ui/primitives/popover.tsx"() {
1645
- "use client";
1646
- init_utils();
1647
- }
1648
- });
1649
- function Switch({ className, ...props }) {
1650
- return /* @__PURE__ */ jsx(
1651
- SwitchPrimitives.Root,
1652
- {
1653
- "data-slot": "switch",
1654
- className: cn(
1655
- "peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",
1656
- className
1657
- ),
1658
- ...props,
1659
- children: /* @__PURE__ */ jsx(
1660
- SwitchPrimitives.Thumb,
1661
- {
1662
- "data-slot": "switch-thumb",
1663
- className: cn(
1664
- "pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0 rtl:data-[state=checked]:-translate-x-4"
1665
- )
1666
- }
1667
- )
1668
- }
1669
- );
1670
- }
1671
- var init_switch = __esm({
1672
- "src/ui/primitives/switch.tsx"() {
1673
- "use client";
1674
- init_utils();
1675
- }
1676
- });
1677
- var Label3;
1678
- var init_label = __esm({
1679
- "src/ui/primitives/label.tsx"() {
1680
- "use client";
1681
- init_utils();
1682
- Label3 = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1683
- LabelPrimitive.Root,
1684
- {
1685
- ref,
1686
- className: cn(
1687
- "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
1688
- className
1689
- ),
1690
- ...props
1691
- }
1692
- ));
1693
- Label3.displayName = LabelPrimitive.Root.displayName;
1694
- }
1695
- });
1696
- function TooltipProvider({
1697
- delayDuration = 0,
1698
- ...props
1699
- }) {
1700
- return /* @__PURE__ */ jsx(
1701
- TooltipPrimitive.Provider,
1702
- {
1703
- "data-slot": "tooltip-provider",
1704
- delayDuration,
1705
- ...props
1706
- }
1707
- );
1708
- }
1709
- function Tooltip({
1710
- ...props
1711
- }) {
1712
- return /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsx(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props }) });
1713
- }
1714
- function TooltipTrigger({
1715
- className,
1716
- ...props
1717
- }) {
1718
- return /* @__PURE__ */ jsx(
1719
- TooltipPrimitive.Trigger,
1720
- {
1721
- "data-slot": "tooltip-trigger",
1722
- className: cn("cursor-pointer", className),
1723
- ...props
1724
- }
1725
- );
1726
- }
1727
- function TooltipContent({
1728
- className,
1729
- sideOffset = 0,
1730
- ...props
1731
- }) {
1732
- return /* @__PURE__ */ jsx(
1733
- TooltipPrimitive.Content,
1734
- {
1735
- "data-slot": "tooltip-content",
1736
- sideOffset,
1737
- className: cn(
1738
- "z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-sm text-primary-foreground 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",
1739
- className
1740
- ),
1741
- ...props
1742
- }
1743
- );
1744
- }
1745
- var init_tooltip = __esm({
1746
- "src/ui/primitives/tooltip.tsx"() {
1747
- "use client";
1748
- init_utils();
1749
- }
1750
- });
1751
- function ResizablePanelGroup({
1752
- className,
1753
- ...props
1754
- }) {
1755
- return /* @__PURE__ */ jsx(
1756
- ResizablePrimitive.PanelGroup,
1757
- {
1758
- "data-slot": "resizable-panel-group",
1759
- className: cn(
1760
- "flex h-full w-full data-[panel-group-direction=vertical]:flex-col",
1761
- className
1762
- ),
1763
- ...props
1764
- }
1765
- );
1766
- }
1767
- function ResizablePanel({
1768
- ...props
1769
- }) {
1770
- return /* @__PURE__ */ jsx(ResizablePrimitive.Panel, { "data-slot": "resizable-panel", ...props });
1771
- }
1772
- function ResizableHandle({
1773
- withHandle,
1774
- className,
1775
- ...props
1776
- }) {
1777
- return /* @__PURE__ */ jsx(
1778
- ResizablePrimitive.PanelResizeHandle,
1779
- {
1780
- "data-slot": "resizable-handle",
1781
- className: cn(
1782
- "relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90",
1783
- className
1784
- ),
1785
- ...props,
1786
- children: withHandle && /* @__PURE__ */ jsx("div", { className: "z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border", children: /* @__PURE__ */ jsx(GripVertical, { className: "h-2.5 w-2.5" }) })
1787
- }
1788
- );
1789
- }
1790
- var init_resizable = __esm({
1791
- "src/ui/primitives/resizable.tsx"() {
1792
- "use client";
1793
- init_utils();
1794
- }
1795
- });
1796
- function Slider({
1797
- className,
1798
- ...props
1799
- }) {
1800
- return /* @__PURE__ */ jsxs(
1801
- SliderPrimitive.Root,
1802
- {
1803
- className: cn(
1804
- "relative flex w-full touch-none select-none items-center",
1805
- className
1806
- ),
1807
- ...props,
1808
- children: [
1809
- /* @__PURE__ */ jsx(SliderPrimitive.Track, { className: "relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20", children: /* @__PURE__ */ jsx(SliderPrimitive.Range, { className: "absolute h-full bg-primary" }) }),
1810
- /* @__PURE__ */ jsx(SliderPrimitive.Thumb, { className: "cursor-pointer block h-4 w-4 rounded-full border border-primary/50 bg-background shadow-sm transition-colors focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50" })
1811
- ]
1812
- }
1813
- );
1814
- }
1815
- var init_slider = __esm({
1816
- "src/ui/primitives/slider.tsx"() {
1817
- "use client";
1818
- init_utils();
1819
- }
1820
- });
1821
- function Toggle({
1822
- className,
1823
- variant,
1824
- size,
1825
- ...props
1826
- }) {
1827
- return /* @__PURE__ */ jsx(
1828
- TogglePrimitive.Root,
1829
- {
1830
- "data-slot": "toggle",
1831
- className: cn(toggleVariants({ variant, size, className })),
1832
- ...props
1833
- }
1834
- );
1835
- }
1836
- var toggleVariants;
1837
- var init_toggle = __esm({
1838
- "src/ui/primitives/toggle.tsx"() {
1839
- "use client";
1840
- init_utils();
1841
- toggleVariants = cva(
1842
- "cursor-pointer inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground",
1843
- {
1844
- variants: {
1845
- variant: {
1846
- default: "bg-transparent",
1847
- outline: "border border-input bg-transparent hover:bg-accent hover:text-accent-foreground"
1848
- },
1849
- size: {
1850
- default: "h-9 px-3",
1851
- sm: "h-8 px-2",
1852
- lg: "h-10 px-3"
1853
- }
1854
- },
1855
- defaultVariants: {
1856
- variant: "default",
1857
- size: "default"
1858
- }
1859
- }
1860
- );
1861
- }
1862
- });
1863
- function ToggleGroup({
1864
- className,
1865
- variant,
1866
- size,
1867
- children,
1868
- ...props
1869
- }) {
1870
- return /* @__PURE__ */ jsx(
1871
- ToggleGroupPrimitive.Root,
1872
- {
1873
- "data-slot": "toggle-group",
1874
- className: cn("flex items-center justify-center gap-1", className),
1875
- ...props,
1876
- children: /* @__PURE__ */ jsx(ToggleGroupContext.Provider, { value: { variant, size }, children })
1877
- }
1878
- );
1879
- }
1880
- function ToggleGroupItem({
1881
- className,
1882
- children,
1883
- variant,
1884
- size,
1885
- ...props
1886
- }) {
1887
- const context = useContext(ToggleGroupContext);
1888
- return /* @__PURE__ */ jsx(
1889
- ToggleGroupPrimitive.Item,
1890
- {
1891
- "data-slot": "toggle-group-item",
1892
- className: cn(
1893
- toggleVariants({
1894
- variant: context.variant || variant,
1895
- size: context.size || size
1896
- }),
1897
- className
1898
- ),
1899
- ...props,
1900
- children
1901
- }
1902
- );
1903
- }
1904
- var ToggleGroupContext;
1905
- var init_toggle_group = __esm({
1906
- "src/ui/primitives/toggle-group.tsx"() {
1907
- "use client";
1908
- init_utils();
1909
- init_toggle();
1910
- ToggleGroupContext = createContext({
1911
- size: "default",
1912
- variant: "default"
1913
- });
1914
- }
1915
- });
1916
- function MenubarMenu({
1917
- ...props
1918
- }) {
1919
- return /* @__PURE__ */ jsx(MenubarPrimitive.Menu, { "data-slot": "menubar-menu", ...props });
1920
- }
1921
- function MenubarGroup({
1922
- ...props
1923
- }) {
1924
- return /* @__PURE__ */ jsx(MenubarPrimitive.Group, { "data-slot": "menubar-group", ...props });
1925
- }
1926
- function MenubarPortal({
1927
- ...props
1928
- }) {
1929
- return /* @__PURE__ */ jsx(MenubarPrimitive.Portal, { "data-slot": "menubar-portal", ...props });
1930
- }
1931
- function MenubarRadioGroup({
1932
- ...props
1933
- }) {
1934
- return /* @__PURE__ */ jsx(MenubarPrimitive.RadioGroup, { "data-slot": "menubar-radio-group", ...props });
1935
- }
1936
- function Menubar({
1937
- className,
1938
- ...props
1939
- }) {
1940
- return /* @__PURE__ */ jsx(
1941
- MenubarPrimitive.Root,
1942
- {
1943
- "data-slot": "menubar",
1944
- className: cn(
1945
- "flex h-9 items-center gap-x-1 rounded-md border bg-background p-1",
1946
- className
1947
- ),
1948
- ...props
1949
- }
1950
- );
1951
- }
1952
- function MenubarTrigger({
1953
- className,
1954
- ...props
1955
- }) {
1956
- return /* @__PURE__ */ jsx(
1957
- MenubarPrimitive.Trigger,
1958
- {
1959
- "data-slot": "menubar-trigger",
1960
- className: cn(
1961
- "flex cursor-pointer select-none items-center rounded-sm px-3 py-1 text-sm font-medium outline-hidden focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
1962
- className
1963
- ),
1964
- ...props
1965
- }
1966
- );
1967
- }
1968
- function MenubarSubTrigger({
1969
- className,
1970
- inset,
1971
- children,
1972
- ...props
1973
- }) {
1974
- return /* @__PURE__ */ jsxs(
1975
- MenubarPrimitive.SubTrigger,
1976
- {
1977
- "data-slot": "menubar-sub-trigger",
1978
- "data-inset": inset,
1979
- className: cn(
1980
- "focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground cursor-pointer flex items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[inset]:ps-8",
1981
- className
1982
- ),
1983
- ...props,
1984
- children: [
1985
- children,
1986
- /* @__PURE__ */ jsx(ChevronRight, { className: "ms-auto h-4 w-4 rtl:-scale-x-100" })
1987
- ]
1988
- }
1989
- );
1990
- }
1991
- function MenubarSub({
1992
- ...props
1993
- }) {
1994
- return /* @__PURE__ */ jsx(MenubarPrimitive.Sub, { "data-slot": "menubar-sub", ...props });
1995
- }
1996
- function MenubarSubContent({
1997
- className,
1998
- ...props
1999
- }) {
2000
- return /* @__PURE__ */ jsx(
2001
- MenubarPrimitive.SubContent,
2002
- {
2003
- "data-slot": "menubar-sub-content",
2004
- className: cn(
2005
- "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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",
2006
- className
2007
- ),
2008
- ...props
2009
- }
2010
- );
2011
- }
2012
- function MenubarContent({
2013
- className,
2014
- align = "start",
2015
- alignOffset = -4,
2016
- sideOffset = 8,
2017
- ...props
2018
- }) {
2019
- return /* @__PURE__ */ jsx(MenubarPortal, { children: /* @__PURE__ */ jsx(
2020
- MenubarPrimitive.Content,
2021
- {
2022
- "data-slot": "menubar-content",
2023
- align,
2024
- alignOffset,
2025
- sideOffset,
2026
- className: cn(
2027
- "z-50 min-w-[12rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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",
2028
- className
2029
- ),
2030
- ...props
2031
- }
2032
- ) });
2033
- }
2034
- function MenubarItem({
2035
- className,
2036
- inset,
2037
- variant = "default",
2038
- ...props
2039
- }) {
2040
- return /* @__PURE__ */ jsx(
2041
- MenubarPrimitive.Item,
2042
- {
2043
- "data-slot": "menubar-item",
2044
- "data-inset": inset,
2045
- "data-variant": variant,
2046
- className: cn(
2047
- "relative flex cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground",
2048
- className
2049
- ),
2050
- ...props
2051
- }
2052
- );
2053
- }
2054
- function MenubarCheckboxItem({
2055
- className,
2056
- children,
2057
- checked,
2058
- ...props
2059
- }) {
2060
- return /* @__PURE__ */ jsxs(
2061
- MenubarPrimitive.CheckboxItem,
2062
- {
2063
- "data-slot": "menubar-checkbox-item",
2064
- className: cn(
2065
- "relative flex cursor-pointer select-none items-center rounded-sm py-1.5 ps-8 pe-2 text-sm outline-hidden focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
2066
- className
2067
- ),
2068
- checked,
2069
- ...props,
2070
- children: [
2071
- /* @__PURE__ */ jsx("span", { className: "absolute start-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { className: "h-4 w-4" }) }) }),
2072
- children
2073
- ]
2074
- }
2075
- );
2076
- }
2077
- function MenubarRadioItem({
2078
- className,
2079
- children,
2080
- ...props
2081
- }) {
2082
- return /* @__PURE__ */ jsxs(
2083
- MenubarPrimitive.RadioItem,
2084
- {
2085
- "data-slot": "menubar-radio-item",
2086
- className: cn(
2087
- "relative flex cursor-pointer select-none items-center rounded-sm py-1.5 ps-8 pe-2 text-sm outline-hidden focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
2088
- className
2089
- ),
2090
- ...props,
2091
- children: [
2092
- /* @__PURE__ */ jsx("span", { className: "absolute start-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(Dot, { className: "h-4 w-4 fill-current" }) }) }),
2093
- children
2094
- ]
2095
- }
2096
- );
2097
- }
2098
- function MenubarLabel({
2099
- className,
2100
- inset,
2101
- ...props
2102
- }) {
2103
- return /* @__PURE__ */ jsx(
2104
- MenubarPrimitive.Label,
2105
- {
2106
- "data-slot": "menubar-label",
2107
- className: cn(
2108
- "px-2 py-1.5 text-sm font-semibold",
2109
- inset && "ps-8",
2110
- className
2111
- ),
2112
- ...props
2113
- }
2114
- );
2115
- }
2116
- function MenubarSeparator({
2117
- className,
2118
- ...props
2119
- }) {
2120
- return /* @__PURE__ */ jsx(
2121
- MenubarPrimitive.Separator,
2122
- {
2123
- "data-slot": "menubar-separator",
2124
- className: cn("-mx-1 my-1 h-px bg-muted", className),
2125
- ...props
2126
- }
2127
- );
2128
- }
2129
- function MenubarShortcut({
2130
- className,
2131
- ...props
2132
- }) {
2133
- return /* @__PURE__ */ jsx(
2134
- "span",
2135
- {
2136
- "data-slot": "menubar-shortcut",
2137
- className: cn(
2138
- "ms-auto text-xs tracking-widest text-muted-foreground",
2139
- className
2140
- ),
2141
- ...props
2142
- }
2143
- );
2144
- }
2145
- var init_menubar = __esm({
2146
- "src/ui/primitives/menubar.tsx"() {
2147
- "use client";
2148
- init_utils();
2149
- }
2150
- });
2151
- function NavigationMenu({
2152
- className,
2153
- children,
2154
- viewport = true,
2155
- ...props
2156
- }) {
2157
- return /* @__PURE__ */ jsxs(
2158
- NavigationMenuPrimitive.Root,
2159
- {
2160
- "data-slot": "navigation-menu",
2161
- "data-viewport": viewport,
2162
- className: cn(
2163
- "group/navigation-menu relative flex max-w-max flex-1 items-center justify-center",
2164
- className
2165
- ),
2166
- ...props,
2167
- children: [
2168
- children,
2169
- viewport && /* @__PURE__ */ jsx(NavigationMenuViewport, {})
2170
- ]
2171
- }
2172
- );
2173
- }
2174
- function NavigationMenuList({
2175
- className,
2176
- ...props
2177
- }) {
2178
- return /* @__PURE__ */ jsx(
2179
- NavigationMenuPrimitive.List,
2180
- {
2181
- "data-slot": "navigation-menu-list",
2182
- className: cn(
2183
- "group flex flex-1 list-none items-center justify-center gap-1",
2184
- className
2185
- ),
2186
- ...props
2187
- }
2188
- );
2189
- }
2190
- function NavigationMenuItem({
2191
- className,
2192
- ...props
2193
- }) {
2194
- return /* @__PURE__ */ jsx(
2195
- NavigationMenuPrimitive.Item,
2196
- {
2197
- "data-slot": "navigation-menu-item",
2198
- className: cn("relative", className),
2199
- ...props
2200
- }
2201
- );
2202
- }
2203
- function NavigationMenuTrigger({
2204
- className,
2205
- children,
2206
- ...props
2207
- }) {
2208
- return /* @__PURE__ */ jsxs(
2209
- NavigationMenuPrimitive.Trigger,
2210
- {
2211
- "data-slot": "navigation-menu-trigger",
2212
- className: cn(navigationMenuTriggerStyle(), "group", className),
2213
- ...props,
2214
- children: [
2215
- children,
2216
- " ",
2217
- /* @__PURE__ */ jsx(
2218
- ChevronDown,
2219
- {
2220
- className: "relative top-[1px] ms-1 size-3 transition duration-300 group-data-[state=open]:rotate-180",
2221
- "aria-hidden": "true"
2222
- }
2223
- )
2224
- ]
2225
- }
2226
- );
2227
- }
2228
- function NavigationMenuContent({
2229
- className,
2230
- ...props
2231
- }) {
2232
- return /* @__PURE__ */ jsx(
2233
- NavigationMenuPrimitive.Content,
2234
- {
2235
- "data-slot": "navigation-menu-content",
2236
- className: cn(
2237
- "data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 w-full p-2 pr-2.5 md:absolute md:w-auto",
2238
- "group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none",
2239
- className
2240
- ),
2241
- ...props
2242
- }
2243
- );
2244
- }
2245
- function NavigationMenuLink({
2246
- className,
2247
- ...props
2248
- }) {
2249
- return /* @__PURE__ */ jsx(
2250
- NavigationMenuPrimitive.Link,
2251
- {
2252
- "data-slot": "navigation-menu-link",
2253
- className: cn(
2254
- "data-[active=true]:focus:bg-accent data-[active=true]:hover:bg-accent data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4",
2255
- className
2256
- ),
2257
- ...props
2258
- }
2259
- );
2260
- }
2261
- function NavigationMenuViewport({
2262
- className,
2263
- ...props
2264
- }) {
2265
- return /* @__PURE__ */ jsx("div", { className: cn("absolute start-0 top-full flex justify-center"), children: /* @__PURE__ */ jsx(
2266
- NavigationMenuPrimitive.Viewport,
2267
- {
2268
- "data-slot": "navigation-menu-viewport",
2269
- className: cn(
2270
- "origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]",
2271
- className
2272
- ),
2273
- ...props
2274
- }
2275
- ) });
2276
- }
2277
- function NavigationMenuIndicator({
2278
- className,
2279
- ...props
2280
- }) {
2281
- return /* @__PURE__ */ jsx(
2282
- NavigationMenuPrimitive.Indicator,
2283
- {
2284
- "data-slot": "navigation-menu-indicator",
2285
- className: cn(
2286
- "top-full z-1 flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in",
2287
- className
2288
- ),
2289
- ...props,
2290
- children: /* @__PURE__ */ jsx("div", { className: "relative top-[60%] h-2 w-2 rotate-45 rounded-te-sm bg-border shadow-md" })
2291
- }
2292
- );
2293
- }
2294
- var navigationMenuTriggerStyle;
2295
- var init_navigation_menu = __esm({
2296
- "src/ui/primitives/navigation-menu.tsx"() {
2297
- init_utils();
2298
- navigationMenuTriggerStyle = cva(
2299
- "group cursor-pointer inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1"
2300
- );
2301
- }
2302
- });
2303
- function Sheet({
2304
- ...props
2305
- }) {
2306
- return /* @__PURE__ */ jsx(DialogPrimitive.Root, { "data-slot": "sheet", ...props });
2307
- }
2308
- function SheetPortal({
2309
- ...props
2310
- }) {
2311
- return /* @__PURE__ */ jsx(DialogPrimitive.Portal, { "data-slot": "sheet-portal", ...props });
2312
- }
2313
- function SheetOverlay({
2314
- className,
2315
- ...props
2316
- }) {
2317
- return /* @__PURE__ */ jsx(
2318
- DialogPrimitive.Overlay,
2319
- {
2320
- "data-slot": "sheet-overlay",
2321
- className: cn(
2322
- "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
2323
- className
2324
- ),
2325
- ...props
2326
- }
2327
- );
2328
- }
2329
- function SheetContent({
2330
- className,
2331
- children,
2332
- side = "right",
2333
- ...props
2334
- }) {
2335
- return /* @__PURE__ */ jsxs(SheetPortal, { children: [
2336
- /* @__PURE__ */ jsx(SheetOverlay, {}),
2337
- /* @__PURE__ */ jsx(
2338
- DialogPrimitive.Content,
2339
- {
2340
- "data-slot": "sheet-content",
2341
- className: cn(sheetVariants({ side }), className),
2342
- ...props,
2343
- children
2344
- }
2345
- )
2346
- ] });
2347
- }
2348
- function SheetTitle({
2349
- className,
2350
- ...props
2351
- }) {
2352
- return /* @__PURE__ */ jsx(
2353
- DialogPrimitive.Title,
2354
- {
2355
- "data-slot": "sheet-title",
2356
- className: cn("text-lg font-semibold text-foreground", className),
2357
- ...props
2358
- }
2359
- );
2360
- }
2361
- var sheetVariants;
2362
- var init_sheet = __esm({
2363
- "src/ui/feedback/sheet.tsx"() {
2364
- "use client";
2365
- init_utils();
2366
- sheetVariants = cva(
2367
- "fixed z-50 gap-4 bg-background p-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out",
2368
- {
2369
- variants: {
2370
- side: {
2371
- top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
2372
- bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
2373
- left: "inset-y-0 left-0 h-full w-72 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",
2374
- right: "inset-y-0 right-0 h-full w-72 border-s data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm",
2375
- start: "inset-y-0 start-0 h-full w-72 border-e data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left data-[state=closed]:rtl:slide-out-to-right data-[state=open]:rtl:slide-in-from-right sm:max-w-sm",
2376
- end: "inset-y-0 end-0 h-full w-72 border-s data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right data-[state=closed]:rtl:slide-out-to-left data-[state=open]:rtl:slide-in-from-left sm:max-w-sm"
2377
- }
2378
- },
2379
- defaultVariants: {
2380
- side: "right"
2381
- }
2382
- }
2383
- );
2384
- }
2385
- });
2386
- var init_context_menu = __esm({
2387
- "src/ui/feedback/context-menu.tsx"() {
2388
- "use client";
2389
- }
2390
- });
2391
- var init_drawer = __esm({
2392
- "src/ui/feedback/drawer.tsx"() {
2393
- "use client";
2394
- }
2395
- });
2396
- var init_progress = __esm({
2397
- "src/ui/feedback/progress.tsx"() {
2398
- "use client";
2399
- }
2400
- });
2401
- var init_sonner = __esm({
2402
- "src/ui/feedback/sonner.tsx"() {
2403
- "use client";
2404
- }
2405
- });
2406
- var init_alert = __esm({
2407
- "src/ui/feedback/alert.tsx"() {
2408
- cva(
2409
- "relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7",
2410
- {
2411
- variants: {
2412
- variant: {
2413
- default: "bg-background text-foreground",
2414
- destructive: "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive"
2415
- }
2416
- },
2417
- defaultVariants: {
2418
- variant: "default"
2419
- }
2420
- }
2421
- );
2422
- }
2423
- });
2424
- var GlobalErrorEmitter;
2425
- var init_error_dialog = __esm({
2426
- "src/ui/feedback/error-dialog.tsx"() {
2427
- "use client";
2428
- GlobalErrorEmitter = class {
2429
- constructor() {
2430
- this.listeners = [];
2431
- }
2432
- subscribe(listener) {
2433
- this.listeners.push(listener);
2434
- return () => {
2435
- this.listeners = this.listeners.filter((l) => l !== listener);
2436
- };
2437
- }
2438
- emit(data) {
2439
- this.listeners.forEach((listener) => listener(data));
2440
- }
2441
- };
2442
- new GlobalErrorEmitter();
2443
- createContext(null);
2444
- }
2445
- });
2446
- var init_feedback = __esm({
2447
- "src/ui/feedback/index.tsx"() {
2448
- init_progress();
2449
- init_sheet();
2450
- init_alert();
2451
- init_context_menu();
2452
- init_drawer();
2453
- init_sonner();
2454
- init_error_dialog();
2455
- }
2456
- });
2457
-
2458
- // src/hooks/use-tenant.ts
2459
- var init_use_tenant = __esm({
2460
- "src/hooks/use-tenant.ts"() {
2461
- }
2462
- });
2463
- function useMediaQuery(query) {
2464
- const [matches, setMatches] = useState(false);
2465
- useEffect(() => {
2466
- if (typeof window !== "undefined") {
2467
- const media = window.matchMedia(query);
2468
- setMatches(media.matches);
2469
- const listener = (event) => setMatches(event.matches);
2470
- media.addEventListener("change", listener);
2471
- return () => media.removeEventListener("change", listener);
2472
- }
2473
- }, [query]);
2474
- return matches;
2475
- }
2476
- function useMobile() {
2477
- return useMediaQuery("(max-width: 768px)");
2478
- }
2479
- var init_hooks = __esm({
2480
- "src/hooks/index.tsx"() {
2481
- "use client";
2482
- init_use_tenant();
2483
- createContext(null);
2484
- }
2485
- });
2486
- function useSidebar() {
2487
- const context = React10.useContext(SidebarContext);
2488
- if (!context) {
2489
- throw new Error("useSidebar must be used within a SidebarProvider.");
2490
- }
2491
- return context;
2492
- }
2493
- var SIDEBAR_WIDTH, SIDEBAR_WIDTH_MOBILE, SIDEBAR_WIDTH_ICON, SIDEBAR_KEYBOARD_SHORTCUT, SidebarContext, SidebarProvider, Sidebar, SidebarTrigger, SidebarRail, SidebarInset, SidebarInput, SidebarHeader, SidebarFooter, SidebarSeparator, SidebarContent, SidebarGroup, SidebarGroupLabel, SidebarGroupAction, SidebarGroupContent, SidebarMenu, SidebarMenuItem, sidebarMenuButtonVariants, SidebarMenuButton, SidebarMenuAction, SidebarMenuBadge, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubItem, SidebarMenuSubButton;
2494
- var init_sidebar = __esm({
2495
- "src/ui/primitives/sidebar.tsx"() {
2496
- "use client";
2497
- init_hooks();
2498
- init_utils();
2499
- init_button();
2500
- init_feedback();
2501
- init_tooltip();
2502
- SIDEBAR_WIDTH = "16rem";
2503
- SIDEBAR_WIDTH_MOBILE = "18rem";
2504
- SIDEBAR_WIDTH_ICON = "3rem";
2505
- SIDEBAR_KEYBOARD_SHORTCUT = "b";
2506
- SidebarContext = React10.createContext(null);
2507
- SidebarProvider = React10.forwardRef(
2508
- ({
2509
- defaultOpen = false,
2510
- open: openProp,
2511
- onOpenChange: setOpenProp,
2512
- className,
2513
- style,
2514
- children,
2515
- ...props
2516
- }, ref) => {
2517
- const isMobile = useMobile();
2518
- const [openMobile, setOpenMobile] = React10.useState(false);
2519
- const [hoverOpen, setHoverOpen] = React10.useState(false);
2520
- const [_open, _setOpen] = React10.useState(defaultOpen);
2521
- const open = openProp ?? _open;
2522
- const setOpen = React10.useCallback(
2523
- (value) => {
2524
- if (setOpenProp) {
2525
- return setOpenProp(typeof value === "function" ? value(open) : value);
2526
- }
2527
- _setOpen(value);
2528
- },
2529
- [setOpenProp, open]
2530
- );
2531
- const toggleSidebar = React10.useCallback(() => {
2532
- return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
2533
- }, [isMobile, setOpen, setOpenMobile]);
2534
- React10.useEffect(() => {
2535
- const handleKeyDown = (event) => {
2536
- if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
2537
- event.preventDefault();
2538
- toggleSidebar();
2539
- }
2540
- };
2541
- window.addEventListener("keydown", handleKeyDown);
2542
- return () => window.removeEventListener("keydown", handleKeyDown);
2543
- }, [toggleSidebar]);
2544
- const state = open ? "expanded" : "collapsed";
2545
- const isHoverExpanded = !open && hoverOpen;
2546
- const contextValue = React10.useMemo(
2547
- () => ({
2548
- state,
2549
- open,
2550
- setOpen,
2551
- isMobile,
2552
- openMobile,
2553
- setOpenMobile,
2554
- toggleSidebar,
2555
- hoverOpen,
2556
- setHoverOpen,
2557
- isHoverExpanded
2558
- }),
2559
- [
2560
- state,
2561
- open,
2562
- setOpen,
2563
- isMobile,
2564
- openMobile,
2565
- setOpenMobile,
2566
- toggleSidebar,
2567
- hoverOpen,
2568
- setHoverOpen,
2569
- isHoverExpanded
2570
- ]
2571
- );
2572
- return /* @__PURE__ */ jsx(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsx(
2573
- "div",
2574
- {
2575
- style: {
2576
- "--sidebar-width": SIDEBAR_WIDTH,
2577
- "--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
2578
- ...style
2579
- },
2580
- className: cn(
2581
- "group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar",
2582
- className
2583
- ),
2584
- ref,
2585
- ...props,
2586
- children
2587
- }
2588
- ) }) });
2589
- }
2590
- );
2591
- SidebarProvider.displayName = "SidebarProvider";
2592
- Sidebar = React10.forwardRef(
2593
- ({
2594
- side = "left",
2595
- variant = "sidebar",
2596
- collapsible = "offcanvas",
2597
- hoverExpandEnabled = true,
2598
- className,
2599
- children,
2600
- ...props
2601
- }, ref) => {
2602
- const {
2603
- isMobile,
2604
- state,
2605
- openMobile,
2606
- setOpenMobile,
2607
- setHoverOpen,
2608
- isHoverExpanded
2609
- } = useSidebar();
2610
- const handleMouseEnter = React10.useCallback(() => {
2611
- if (hoverExpandEnabled && state === "collapsed" && collapsible === "icon") {
2612
- setHoverOpen(true);
2613
- }
2614
- }, [hoverExpandEnabled, state, collapsible, setHoverOpen]);
2615
- const handleMouseLeave = React10.useCallback(() => {
2616
- if (hoverExpandEnabled) {
2617
- setHoverOpen(false);
2618
- }
2619
- }, [hoverExpandEnabled, setHoverOpen]);
2620
- if (collapsible === "none") {
2621
- return /* @__PURE__ */ jsx(
2622
- "div",
2623
- {
2624
- className: cn(
2625
- "flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",
2626
- className
2627
- ),
2628
- ref,
2629
- ...props,
2630
- children
2631
- }
2632
- );
2633
- }
2634
- if (isMobile) {
2635
- return /* @__PURE__ */ jsx(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxs(
2636
- SheetContent,
2637
- {
2638
- "data-sidebar": "sidebar",
2639
- "data-mobile": "true",
2640
- className: "w-(--sidebar-width) bg-background p-0 text-foreground [&>button]:hidden",
2641
- style: {
2642
- "--sidebar-width": SIDEBAR_WIDTH_MOBILE
2643
- },
2644
- side,
2645
- children: [
2646
- /* @__PURE__ */ jsx(SheetTitle, { className: "sr-only", children: "Mobile Menu" }),
2647
- /* @__PURE__ */ jsx("div", { className: "flex h-full w-full flex-col", children })
2648
- ]
2649
- }
2650
- ) });
2651
- }
2652
- return /* @__PURE__ */ jsxs(
2653
- "div",
2654
- {
2655
- ref,
2656
- className: cn(
2657
- "group peer hidden md:block transition-colors duration-200",
2658
- // Blue bg + white text when collapsed, white bg + dark text when expanded/hover
2659
- state === "collapsed" && !isHoverExpanded ? "text-sidebar-foreground" : "text-foreground"
2660
- ),
2661
- "data-state": state,
2662
- "data-hover-expanded": isHoverExpanded,
2663
- "data-collapsible": state === "collapsed" ? collapsible : "",
2664
- "data-variant": variant,
2665
- "data-side": side,
2666
- onMouseEnter: handleMouseEnter,
2667
- onMouseLeave: handleMouseLeave,
2668
- children: [
2669
- /* @__PURE__ */ jsx(
2670
- "div",
2671
- {
2672
- className: cn(
2673
- "duration-200 relative h-svh w-(--sidebar-width) bg-transparent transition-[width] ease-linear",
2674
- "group-data-[collapsible=offcanvas]:w-0",
2675
- "group-data-[collapsible=icon]:w-(--sidebar-width-icon)",
2676
- variant === "floating" || variant === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)"
2677
- )
2678
- }
2679
- ),
2680
- /* @__PURE__ */ jsx(
2681
- "div",
2682
- {
2683
- className: cn(
2684
- "duration-200 fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] ease-linear md:flex",
2685
- side === "left" ? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]" : "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",
2686
- // Adjustments for collapsible=icon
2687
- variant === "floating" || variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_8px)] group-data-[collapsible=icon]:px-2.5" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[collapsible=icon]:border-r group-data-[collapsible=icon]:px-0",
2688
- // Hover expand - override icon width to full width on hover
2689
- "group-data-[hover-expanded=true]:!w-(--sidebar-width) group-data-[hover-expanded=true]:shadow-xl group-data-[hover-expanded=true]:z-[100]",
2690
- className
2691
- ),
2692
- ...props,
2693
- children: /* @__PURE__ */ jsx(
2694
- "div",
2695
- {
2696
- "data-sidebar": "sidebar",
2697
- className: cn(
2698
- "flex h-full w-full flex-col border-r transition-colors duration-200",
2699
- // Blue background when collapsed, white when expanded/hover
2700
- "group-data-[state=collapsed]:bg-sidebar group-data-[state=collapsed]:border-sidebar-border",
2701
- "group-data-[state=expanded]:bg-background group-data-[state=expanded]:border-border",
2702
- "group-data-[hover-expanded=true]:!bg-background group-data-[hover-expanded=true]:!border-border",
2703
- "group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow"
2704
- ),
2705
- children
2706
- }
2707
- )
2708
- }
2709
- )
2710
- ]
2711
- }
2712
- );
2713
- }
2714
- );
2715
- Sidebar.displayName = "Sidebar";
2716
- SidebarTrigger = React10.forwardRef(({ className, onClick, ...props }, ref) => {
2717
- const { toggleSidebar } = useSidebar();
2718
- return /* @__PURE__ */ jsxs(
2719
- Button,
2720
- {
2721
- ref,
2722
- "data-sidebar": "trigger",
2723
- variant: "ghost",
2724
- size: "icon",
2725
- className: cn("h-7 w-7", className),
2726
- onClick: (event) => {
2727
- onClick?.(event);
2728
- toggleSidebar();
2729
- },
2730
- ...props,
2731
- children: [
2732
- /* @__PURE__ */ jsx(PanelLeft, {}),
2733
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Toggle Sidebar" })
2734
- ]
2735
- }
2736
- );
2737
- });
2738
- SidebarTrigger.displayName = "SidebarTrigger";
2739
- SidebarRail = React10.forwardRef(({ className, ...props }, ref) => {
2740
- const { toggleSidebar } = useSidebar();
2741
- return /* @__PURE__ */ jsx(
2742
- "button",
2743
- {
2744
- ref,
2745
- "data-sidebar": "rail",
2746
- "aria-label": "Toggle Sidebar",
2747
- tabIndex: -1,
2748
- onClick: toggleSidebar,
2749
- title: "Toggle Sidebar",
2750
- className: cn(
2751
- "absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex",
2752
- "[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize",
2753
- "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",
2754
- "group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar",
2755
- "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2",
2756
- "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",
2757
- className
2758
- ),
2759
- ...props
2760
- }
2761
- );
2762
- });
2763
- SidebarRail.displayName = "SidebarRail";
2764
- SidebarInset = React10.forwardRef(({ className, ...props }, ref) => {
2765
- return /* @__PURE__ */ jsx(
2766
- "main",
2767
- {
2768
- ref,
2769
- className: cn(
2770
- "relative flex min-h-svh flex-1 flex-col bg-muted/40 transition-[margin] duration-200 ease-linear",
2771
- "peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow",
2772
- className
2773
- ),
2774
- ...props
2775
- }
2776
- );
2777
- });
2778
- SidebarInset.displayName = "SidebarInset";
2779
- SidebarInput = React10.forwardRef(({ className, ...props }, ref) => {
2780
- return /* @__PURE__ */ jsx(
2781
- "input",
2782
- {
2783
- ref,
2784
- "data-sidebar": "input",
2785
- className: cn(
2786
- "flex h-8 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sidebar-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
2787
- className
2788
- ),
2789
- ...props
2790
- }
2791
- );
2792
- });
2793
- SidebarInput.displayName = "SidebarInput";
2794
- SidebarHeader = React10.forwardRef(({ className, ...props }, ref) => {
2795
- return /* @__PURE__ */ jsx(
2796
- "div",
2797
- {
2798
- ref,
2799
- "data-sidebar": "header",
2800
- className: cn("flex flex-col gap-2 p-2", className),
2801
- ...props
2802
- }
2803
- );
2804
- });
2805
- SidebarHeader.displayName = "SidebarHeader";
2806
- SidebarFooter = React10.forwardRef(({ className, ...props }, ref) => {
2807
- return /* @__PURE__ */ jsx(
2808
- "div",
2809
- {
2810
- ref,
2811
- "data-sidebar": "footer",
2812
- className: cn("flex flex-col gap-2 p-2", className),
2813
- ...props
2814
- }
2815
- );
2816
- });
2817
- SidebarFooter.displayName = "SidebarFooter";
2818
- SidebarSeparator = React10.forwardRef(({ className, ...props }, ref) => {
2819
- return /* @__PURE__ */ jsx(
2820
- "div",
2821
- {
2822
- ref,
2823
- "data-sidebar": "separator",
2824
- className: cn("mx-2 h-[1px] w-auto bg-sidebar-border", className),
2825
- ...props
2826
- }
2827
- );
2828
- });
2829
- SidebarSeparator.displayName = "SidebarSeparator";
2830
- SidebarContent = React10.forwardRef(({ className, ...props }, ref) => {
2831
- return /* @__PURE__ */ jsx(
2832
- "div",
2833
- {
2834
- ref,
2835
- "data-sidebar": "content",
2836
- className: cn(
2837
- "flex min-h-0 flex-1 flex-col gap-2 overflow-auto",
2838
- // Hide overflow when collapsed, but show when hover-expanded
2839
- "group-data-[collapsible=icon]:overflow-hidden group-data-[hover-expanded=true]:!overflow-auto",
2840
- className
2841
- ),
2842
- ...props
2843
- }
2844
- );
2845
- });
2846
- SidebarContent.displayName = "SidebarContent";
2847
- SidebarGroup = React10.forwardRef(({ className, ...props }, ref) => {
2848
- return /* @__PURE__ */ jsx(
2849
- "div",
2850
- {
2851
- ref,
2852
- "data-sidebar": "group",
2853
- className: cn("relative flex w-full min-w-0 flex-col p-2", className),
2854
- ...props
2855
- }
2856
- );
2857
- });
2858
- SidebarGroup.displayName = "SidebarGroup";
2859
- SidebarGroupLabel = React10.forwardRef(({ className, asChild = false, ...props }, ref) => {
2860
- const Comp = asChild ? Slot : "div";
2861
- return /* @__PURE__ */ jsx(
2862
- Comp,
2863
- {
2864
- ref,
2865
- "data-sidebar": "group-label",
2866
- className: cn(
2867
- "duration-200 flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-bold text-primary uppercase tracking-wider outline-none ring-sidebar-ring transition-[margin,opa] ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
2868
- // Hide when collapsed, show when hover-expanded
2869
- "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",
2870
- "group-data-[hover-expanded=true]:!mt-0 group-data-[hover-expanded=true]:!opacity-100",
2871
- className
2872
- ),
2873
- ...props
2874
- }
2875
- );
2876
- });
2877
- SidebarGroupLabel.displayName = "SidebarGroupLabel";
2878
- SidebarGroupAction = React10.forwardRef(({ className, asChild = false, ...props }, ref) => {
2879
- const Comp = asChild ? Slot : "button";
2880
- return /* @__PURE__ */ jsx(
2881
- Comp,
2882
- {
2883
- ref,
2884
- "data-sidebar": "group-action",
2885
- className: cn(
2886
- "absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
2887
- // Increases the hit area of the button on mobile.
2888
- "after:absolute after:-inset-2 after:md:hidden",
2889
- "group-data-[collapsible=icon]:hidden",
2890
- className
2891
- ),
2892
- ...props
2893
- }
2894
- );
2895
- });
2896
- SidebarGroupAction.displayName = "SidebarGroupAction";
2897
- SidebarGroupContent = React10.forwardRef(({ className, ...props }, ref) => {
2898
- return /* @__PURE__ */ jsx(
2899
- "div",
2900
- {
2901
- ref,
2902
- "data-sidebar": "group-content",
2903
- className: cn("w-full text-sm", className),
2904
- ...props
2905
- }
2906
- );
2907
- });
2908
- SidebarGroupContent.displayName = "SidebarGroupContent";
2909
- SidebarMenu = React10.forwardRef(({ className, ...props }, ref) => {
2910
- return /* @__PURE__ */ jsx(
2911
- "ul",
2912
- {
2913
- ref,
2914
- "data-sidebar": "menu",
2915
- className: cn("flex w-full min-w-0 flex-col gap-1", className),
2916
- ...props
2917
- }
2918
- );
2919
- });
2920
- SidebarMenu.displayName = "SidebarMenu";
2921
- SidebarMenuItem = React10.forwardRef(({ className, ...props }, ref) => {
2922
- return /* @__PURE__ */ jsx(
2923
- "li",
2924
- {
2925
- ref,
2926
- "data-sidebar": "menu-item",
2927
- className: cn("group/menu-item relative", className),
2928
- ...props
2929
- }
2930
- );
2931
- });
2932
- SidebarMenuItem.displayName = "SidebarMenuItem";
2933
- sidebarMenuButtonVariants = cva(
2934
- // Base styles + hover-expand overrides
2935
- "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 group-data-[hover-expanded=true]:!size-auto group-data-[hover-expanded=true]:!w-full group-data-[hover-expanded=true]:!p-2",
2936
- {
2937
- variants: {
2938
- variant: {
2939
- default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
2940
- outline: "bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"
2941
- },
2942
- size: {
2943
- default: "h-8 text-sm",
2944
- sm: "h-7 text-xs",
2945
- lg: "h-12 text-sm group-data-[collapsible=icon]:!p-0"
2946
- },
2947
- isActive: {
2948
- true: "bg-primary/10 text-primary font-bold"
2949
- }
2950
- },
2951
- defaultVariants: {
2952
- variant: "default",
2953
- size: "default"
2954
- }
2955
- }
2956
- );
2957
- SidebarMenuButton = React10.forwardRef(
2958
- ({
2959
- asChild = false,
2960
- isActive = false,
2961
- variant = "default",
2962
- size = "default",
2963
- tooltip,
2964
- className,
2965
- ...props
2966
- }, ref) => {
2967
- const Comp = asChild ? Slot : "button";
2968
- const { isMobile, state } = useSidebar();
2969
- const button = /* @__PURE__ */ jsx(
2970
- Comp,
2971
- {
2972
- ref,
2973
- "data-sidebar": "menu-button",
2974
- "data-size": size,
2975
- "data-active": isActive,
2976
- className: cn(
2977
- sidebarMenuButtonVariants({ variant, size, isActive }),
2978
- className
2979
- ),
2980
- ...props
2981
- }
2982
- );
2983
- if (!tooltip) {
2984
- return button;
2985
- }
2986
- if (typeof tooltip === "string") {
2987
- tooltip = {
2988
- children: tooltip
2989
- };
2990
- }
2991
- return /* @__PURE__ */ jsxs(Tooltip, { children: [
2992
- /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: button }),
2993
- /* @__PURE__ */ jsx(
2994
- TooltipContent,
2995
- {
2996
- side: "right",
2997
- align: "center",
2998
- hidden: state !== "collapsed" || isMobile,
2999
- ...tooltip
3000
- }
3001
- )
3002
- ] });
3003
- }
3004
- );
3005
- SidebarMenuButton.displayName = "SidebarMenuButton";
3006
- SidebarMenuAction = React10.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
3007
- const Comp = asChild ? Slot : "button";
3008
- return /* @__PURE__ */ jsx(
3009
- Comp,
3010
- {
3011
- ref,
3012
- "data-sidebar": "menu-action",
3013
- className: cn(
3014
- "absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
3015
- // Increases the hit area of the button on mobile.
3016
- "after:absolute after:-inset-2 after:md:hidden",
3017
- "peer-data-[size=sm]/menu-button:top-1",
3018
- "peer-data-[size=default]/menu-button:top-1.5",
3019
- "peer-data-[size=lg]/menu-button:top-2.5",
3020
- "group-data-[collapsible=icon]:hidden",
3021
- showOnHover && "group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0",
3022
- className
3023
- ),
3024
- ...props
3025
- }
3026
- );
3027
- });
3028
- SidebarMenuAction.displayName = "SidebarMenuAction";
3029
- SidebarMenuBadge = React10.forwardRef(({ className, ...props }, ref) => {
3030
- return /* @__PURE__ */ jsx(
3031
- "div",
3032
- {
3033
- ref,
3034
- "data-sidebar": "menu-badge",
3035
- className: cn(
3036
- "pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground select-none",
3037
- "peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground",
3038
- "peer-data-[size=sm]/menu-button:top-1",
3039
- "peer-data-[size=default]/menu-button:top-1.5",
3040
- "peer-data-[size=lg]/menu-button:top-2.5",
3041
- "group-data-[collapsible=icon]:hidden",
3042
- className
3043
- ),
3044
- ...props
3045
- }
3046
- );
3047
- });
3048
- SidebarMenuBadge.displayName = "SidebarMenuBadge";
3049
- SidebarMenuSkeleton = React10.forwardRef(({ className, showIcon = false, ...props }, ref) => {
3050
- const width = React10.useMemo(() => {
3051
- return `${Math.floor(Math.random() * 40) + 50}%`;
3052
- }, []);
3053
- return /* @__PURE__ */ jsxs(
3054
- "div",
3055
- {
3056
- ref,
3057
- "data-sidebar": "menu-skeleton",
3058
- className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
3059
- ...props,
3060
- children: [
3061
- showIcon && /* @__PURE__ */ jsx(
3062
- "div",
3063
- {
3064
- className: "size-4 rounded-md animate-pulse bg-muted",
3065
- "data-sidebar": "menu-skeleton-icon"
3066
- }
3067
- ),
3068
- /* @__PURE__ */ jsx(
3069
- "div",
3070
- {
3071
- className: "h-4 flex-1 max-w-[--skeleton-width] animate-pulse bg-muted rounded-full",
3072
- "data-sidebar": "menu-skeleton-text",
3073
- style: {
3074
- "--skeleton-width": width
3075
- }
3076
- }
3077
- )
3078
- ]
3079
- }
3080
- );
3081
- });
3082
- SidebarMenuSkeleton.displayName = "SidebarMenuSkeleton";
3083
- SidebarMenuSub = React10.forwardRef(({ className, ...props }, ref) => {
3084
- return /* @__PURE__ */ jsx(
3085
- "ul",
3086
- {
3087
- ref,
3088
- "data-sidebar": "menu-sub",
3089
- className: cn(
3090
- "mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5",
3091
- // Hide when collapsed, show when hover-expanded
3092
- "group-data-[collapsible=icon]:hidden group-data-[hover-expanded=true]:!flex",
3093
- className
3094
- ),
3095
- ...props
3096
- }
3097
- );
3098
- });
3099
- SidebarMenuSub.displayName = "SidebarMenuSub";
3100
- SidebarMenuSubItem = React10.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx("li", { ref, ...props }));
3101
- SidebarMenuSubItem.displayName = "SidebarMenuSubItem";
3102
- SidebarMenuSubButton = React10.forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref) => {
3103
- const Comp = asChild ? Slot : "a";
3104
- return /* @__PURE__ */ jsx(
3105
- Comp,
3106
- {
3107
- ref,
3108
- "data-sidebar": "menu-sub-button",
3109
- "data-size": size,
3110
- "data-active": isActive,
3111
- className: cn(
3112
- "flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 text-xs",
3113
- "data-[active=true]:bg-primary/15 data-[active=true]:!text-primary data-[active=true]:font-bold",
3114
- size === "sm" && "text-xs",
3115
- size === "md" && "text-sm",
3116
- className
3117
- ),
3118
- ...props
3119
- }
3120
- );
3121
- });
3122
- SidebarMenuSubButton.displayName = "SidebarMenuSubButton";
3123
- }
3124
- });
3125
- function Spinner({ size = "md", className }) {
3126
- const sizeClasses = {
3127
- sm: "h-4 w-4",
3128
- md: "h-6 w-6",
3129
- lg: "h-8 w-8"
3130
- };
3131
- return /* @__PURE__ */ jsx(
3132
- "div",
3133
- {
3134
- className: cn(
3135
- "animate-spin rounded-full border-2 border-current border-t-transparent",
3136
- sizeClasses[size],
3137
- className
3138
- )
3139
- }
3140
- );
3141
- }
3142
- function Skeleton({
3143
- className,
3144
- ...props
3145
- }) {
3146
- return /* @__PURE__ */ jsx(
3147
- "div",
3148
- {
3149
- className: cn("animate-pulse rounded-md bg-muted", className),
3150
- ...props
3151
- }
3152
- );
3153
- }
3154
- var Textarea, ButtonLoading;
3155
- var init_primitives = __esm({
3156
- "src/ui/primitives/index.tsx"() {
3157
- init_utils();
3158
- init_button();
3159
- init_badge();
3160
- init_button();
3161
- init_input();
3162
- init_checkbox();
3163
- init_card();
3164
- init_separator();
3165
- init_card();
3166
- init_table();
3167
- init_dropdown_menu();
3168
- init_dialog();
3169
- init_tabs();
3170
- init_breadcrumb();
3171
- init_keyboard();
3172
- init_pagination();
3173
- init_status_badge();
3174
- init_sidebar();
3175
- init_popover();
3176
- init_scroll_area();
3177
- init_calendar();
3178
- init_resizable();
3179
- init_slider();
3180
- init_switch();
3181
- init_tooltip();
3182
- init_select();
3183
- init_menubar();
3184
- init_navigation_menu();
3185
- init_toggle();
3186
- init_toggle_group();
3187
- init_combobox();
3188
- init_label();
3189
- Textarea = React10.forwardRef(
3190
- ({ className, ...props }, ref) => {
3191
- return /* @__PURE__ */ jsx(
3192
- "textarea",
3193
- {
3194
- className: cn(
3195
- "flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
3196
- className
3197
- ),
3198
- ref,
3199
- ...props
3200
- }
3201
- );
3202
- }
3203
- );
3204
- Textarea.displayName = "Textarea";
3205
- ButtonLoading = React10.forwardRef(({ className, isLoading, children, disabled, ...props }, ref) => {
3206
- return /* @__PURE__ */ jsxs(
3207
- Button,
3208
- {
3209
- className: cn("gap-2", className),
3210
- disabled: isLoading || disabled,
3211
- ref,
3212
- ...props,
3213
- children: [
3214
- isLoading && /* @__PURE__ */ jsx(Spinner, { size: "sm" }),
3215
- children
3216
- ]
3217
- }
3218
- );
3219
- });
3220
- ButtonLoading.displayName = "ButtonLoading";
3221
- }
3222
- });
3223
- init_primitives();
3224
-
3225
- export { Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonLoading, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, Combobox, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Input, Keyboard, Label3 as Label, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, SeparatorWithText, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, Spinner, StatusBadge, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, buttonVariants, navigationMenuTriggerStyle, toggleVariants, useSidebar };
3226
- //# sourceMappingURL=primitives.mjs.map
3227
- //# sourceMappingURL=primitives.mjs.map