@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,2608 +0,0 @@
1
- 'use strict';
2
-
3
- var clsx = require('clsx');
4
- var tailwindMerge = require('tailwind-merge');
5
- var React11 = require('react');
6
- var classVarianceAuthority = require('class-variance-authority');
7
- var reactSlot = require('@radix-ui/react-slot');
8
- var jsxRuntime = require('react/jsx-runtime');
9
- var CheckboxPrimitive = require('@radix-ui/react-checkbox');
10
- var lucideReact = require('lucide-react');
11
- require('@radix-ui/react-dropdown-menu');
12
- var DialogPrimitive = require('@radix-ui/react-dialog');
13
- var TabsPrimitive = require('@radix-ui/react-tabs');
14
- require('next/link');
15
- require('react-use');
16
- require('@radix-ui/react-direction');
17
- require('react-day-picker');
18
- var ScrollAreaPrimitive = require('@radix-ui/react-scroll-area');
19
- require('@radix-ui/react-select');
20
- require('@radix-ui/react-popover');
21
- require('@radix-ui/react-switch');
22
- var LabelPrimitive = require('@radix-ui/react-label');
23
- var TooltipPrimitive = require('@radix-ui/react-tooltip');
24
- require('react-resizable-panels');
25
- require('@radix-ui/react-slider');
26
- require('@radix-ui/react-toggle');
27
- require('@radix-ui/react-toggle-group');
28
- require('@radix-ui/react-menubar');
29
- require('@radix-ui/react-navigation-menu');
30
- var ContextMenuPrimitive = require('@radix-ui/react-context-menu');
31
- var vaul = require('vaul');
32
- var ProgressPrimitive = require('@radix-ui/react-progress');
33
- var sonner = require('sonner');
34
- require('next/navigation');
35
- var AlertDialogPrimitive = require('@radix-ui/react-alert-dialog');
36
-
37
- function _interopNamespace(e) {
38
- if (e && e.__esModule) return e;
39
- var n = Object.create(null);
40
- if (e) {
41
- Object.keys(e).forEach(function (k) {
42
- if (k !== 'default') {
43
- var d = Object.getOwnPropertyDescriptor(e, k);
44
- Object.defineProperty(n, k, d.get ? d : {
45
- enumerable: true,
46
- get: function () { return e[k]; }
47
- });
48
- }
49
- });
50
- }
51
- n.default = e;
52
- return Object.freeze(n);
53
- }
54
-
55
- var React11__namespace = /*#__PURE__*/_interopNamespace(React11);
56
- var CheckboxPrimitive__namespace = /*#__PURE__*/_interopNamespace(CheckboxPrimitive);
57
- var DialogPrimitive__namespace = /*#__PURE__*/_interopNamespace(DialogPrimitive);
58
- var TabsPrimitive__namespace = /*#__PURE__*/_interopNamespace(TabsPrimitive);
59
- var ScrollAreaPrimitive__namespace = /*#__PURE__*/_interopNamespace(ScrollAreaPrimitive);
60
- var LabelPrimitive__namespace = /*#__PURE__*/_interopNamespace(LabelPrimitive);
61
- var TooltipPrimitive__namespace = /*#__PURE__*/_interopNamespace(TooltipPrimitive);
62
- var ContextMenuPrimitive__namespace = /*#__PURE__*/_interopNamespace(ContextMenuPrimitive);
63
- var ProgressPrimitive__namespace = /*#__PURE__*/_interopNamespace(ProgressPrimitive);
64
- var AlertDialogPrimitive__namespace = /*#__PURE__*/_interopNamespace(AlertDialogPrimitive);
65
-
66
- var __getOwnPropNames = Object.getOwnPropertyNames;
67
- var __esm = (fn, res) => function __init() {
68
- return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
69
- };
70
- function cn(...inputs) {
71
- return tailwindMerge.twMerge(clsx.clsx(inputs));
72
- }
73
- var Logger;
74
- var init_utils = __esm({
75
- "src/utils/index.ts"() {
76
- Logger = class {
77
- log(level, message, context, error) {
78
- const entry = {
79
- timestamp: (/* @__PURE__ */ new Date()).toISOString(),
80
- level,
81
- message,
82
- context
83
- };
84
- if (error instanceof Error) {
85
- entry.error = {
86
- name: error.name,
87
- message: error.message,
88
- stack: error.stack
89
- };
90
- } else if (error) {
91
- entry.error = error;
92
- }
93
- const logString = JSON.stringify(entry);
94
- switch (level) {
95
- case "error":
96
- console.error(logString);
97
- break;
98
- case "warn":
99
- console.warn(logString);
100
- break;
101
- case "debug":
102
- if (process.env.NODE_ENV === "development") console.debug(logString);
103
- break;
104
- default:
105
- console.log(logString);
106
- }
107
- }
108
- info(message, context) {
109
- this.log("info", message, context);
110
- }
111
- warn(message, context) {
112
- this.log("warn", message, context);
113
- }
114
- error(message, error, context) {
115
- this.log("error", message, context, error);
116
- }
117
- debug(message, context) {
118
- this.log("debug", message, context);
119
- }
120
- };
121
- new Logger();
122
- }
123
- });
124
- var buttonVariants, Button;
125
- var init_button = __esm({
126
- "src/ui/primitives/button.tsx"() {
127
- init_utils();
128
- buttonVariants = classVarianceAuthority.cva(
129
- "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",
130
- {
131
- variants: {
132
- variant: {
133
- // Existing variants (backwards-compatible)
134
- default: "bg-primary text-primary-foreground hover:bg-primary/90",
135
- destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
136
- outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
137
- secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
138
- ghost: "hover:bg-accent hover:text-accent-foreground",
139
- link: "text-primary underline-offset-4 hover:underline",
140
- // New Plane-inspired variants using semantic tokens
141
- 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",
142
- danger: "bg-danger text-text-on-color hover:bg-danger-hover active:bg-danger-hover disabled:bg-layer-disabled disabled:text-text-disabled",
143
- "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",
144
- 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",
145
- tertiary: "bg-layer-3 text-text-secondary hover:bg-layer-3-hover active:bg-layer-3-hover disabled:bg-transparent disabled:text-text-disabled"
146
- },
147
- size: {
148
- // Existing sizes (backwards-compatible)
149
- default: "h-10 px-4 py-2",
150
- sm: "h-9 rounded-md px-3",
151
- lg: "h-11 rounded-md px-8",
152
- icon: "h-10 w-10",
153
- // New ERP-specific compact sizes
154
- xs: "h-7 rounded-sm px-2 text-xs",
155
- compact: "h-8 rounded-md px-3 text-xs",
156
- "icon-sm": "h-8 w-8",
157
- "icon-xs": "h-7 w-7"
158
- }
159
- },
160
- defaultVariants: {
161
- variant: "default",
162
- size: "default"
163
- }
164
- }
165
- );
166
- Button = React11__namespace.forwardRef(
167
- ({ className, variant, size, asChild = false, loading = false, prependIcon, appendIcon, children, disabled, ...props }, ref) => {
168
- if (asChild) {
169
- return /* @__PURE__ */ jsxRuntime.jsx(
170
- reactSlot.Slot,
171
- {
172
- className: cn(buttonVariants({ variant, size }), className),
173
- ref,
174
- ...{ disabled: disabled || loading },
175
- ...props,
176
- children: React11__namespace.isValidElement(children) && (prependIcon || appendIcon) ? React11__namespace.cloneElement(children, {}, /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
177
- prependIcon && React11__namespace.cloneElement(prependIcon, {
178
- className: cn("shrink-0", size === "xs" || size === "compact" ? "size-3.5" : "size-4")
179
- }),
180
- children.props.children,
181
- appendIcon && React11__namespace.cloneElement(appendIcon, {
182
- className: cn("shrink-0", size === "xs" || size === "compact" ? "size-3.5" : "size-4")
183
- })
184
- ] })) : children
185
- }
186
- );
187
- }
188
- return /* @__PURE__ */ jsxRuntime.jsxs(
189
- "button",
190
- {
191
- className: cn(buttonVariants({ variant, size }), className),
192
- ref,
193
- disabled: disabled || loading,
194
- ...props,
195
- children: [
196
- prependIcon && React11__namespace.cloneElement(prependIcon, {
197
- className: cn("shrink-0", size === "xs" || size === "compact" ? "size-3.5" : "size-4")
198
- }),
199
- children,
200
- appendIcon && React11__namespace.cloneElement(appendIcon, {
201
- className: cn("shrink-0", size === "xs" || size === "compact" ? "size-3.5" : "size-4")
202
- })
203
- ]
204
- }
205
- );
206
- }
207
- );
208
- Button.displayName = "Button";
209
- }
210
- });
211
- var init_badge = __esm({
212
- "src/ui/primitives/badge.tsx"() {
213
- classVarianceAuthority.cva(
214
- "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",
215
- {
216
- variants: {
217
- variant: {
218
- // Existing variants (backwards-compatible)
219
- default: "border-transparent bg-primary text-primary-foreground",
220
- secondary: "border-transparent bg-secondary text-secondary-foreground",
221
- destructive: "border-transparent bg-destructive text-destructive-foreground",
222
- outline: "text-foreground",
223
- // Enhanced semantic variants (using Design Tokens)
224
- success: "border-transparent bg-success-subtle text-success-text",
225
- warning: "border-transparent bg-warning-subtle text-warning-text",
226
- danger: "border-transparent bg-danger-subtle text-danger-text",
227
- info: "border-transparent bg-info-subtle text-info-text",
228
- accent: "border-transparent bg-accent-primary-subtle text-accent-primary"
229
- },
230
- size: {
231
- default: "",
232
- sm: "px-1.5 py-0 text-[10px]",
233
- lg: "px-3 py-1 text-sm"
234
- }
235
- },
236
- defaultVariants: {
237
- variant: "default",
238
- size: "default"
239
- }
240
- }
241
- );
242
- }
243
- });
244
- var Input;
245
- var init_input = __esm({
246
- "src/ui/primitives/input.tsx"() {
247
- init_utils();
248
- Input = React11__namespace.forwardRef(
249
- ({ className, type, ...props }, ref) => {
250
- return /* @__PURE__ */ jsxRuntime.jsx(
251
- "input",
252
- {
253
- type,
254
- className: cn(
255
- "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",
256
- className
257
- ),
258
- ref,
259
- ...props
260
- }
261
- );
262
- }
263
- );
264
- Input.displayName = "Input";
265
- }
266
- });
267
- var Checkbox;
268
- var init_checkbox = __esm({
269
- "src/ui/primitives/checkbox.tsx"() {
270
- "use client";
271
- init_utils();
272
- Checkbox = React11__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
273
- CheckboxPrimitive__namespace.Root,
274
- {
275
- ref,
276
- className: cn(
277
- "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",
278
- className
279
- ),
280
- ...props,
281
- children: /* @__PURE__ */ jsxRuntime.jsx(
282
- CheckboxPrimitive__namespace.Indicator,
283
- {
284
- className: cn("flex items-center justify-center text-current"),
285
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-4 w-4" })
286
- }
287
- )
288
- }
289
- ));
290
- Checkbox.displayName = CheckboxPrimitive__namespace.Root.displayName;
291
- }
292
- });
293
- var Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter;
294
- var init_card = __esm({
295
- "src/ui/primitives/card.tsx"() {
296
- init_utils();
297
- Card = React11__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
298
- "div",
299
- {
300
- ref,
301
- className: cn(
302
- "rounded-lg border bg-card text-card-foreground shadow-sm",
303
- className
304
- ),
305
- ...props
306
- }
307
- ));
308
- Card.displayName = "Card";
309
- CardHeader = React11__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
310
- "div",
311
- {
312
- ref,
313
- className: cn("flex flex-col space-y-1.5 p-6", className),
314
- ...props
315
- }
316
- ));
317
- CardHeader.displayName = "CardHeader";
318
- CardTitle = React11__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
319
- "h3",
320
- {
321
- ref,
322
- className: cn(
323
- "text-2xl font-semibold leading-none tracking-tight",
324
- className
325
- ),
326
- ...props
327
- }
328
- ));
329
- CardTitle.displayName = "CardTitle";
330
- CardDescription = React11__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
331
- "p",
332
- {
333
- ref,
334
- className: cn("text-sm text-muted-foreground", className),
335
- ...props
336
- }
337
- ));
338
- CardDescription.displayName = "CardDescription";
339
- CardContent = React11__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: cn("p-6 pt-0", className), ...props }));
340
- CardContent.displayName = "CardContent";
341
- CardFooter = React11__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
342
- "div",
343
- {
344
- ref,
345
- className: cn("flex items-center p-6 pt-0", className),
346
- ...props
347
- }
348
- ));
349
- CardFooter.displayName = "CardFooter";
350
- }
351
- });
352
- var Separator;
353
- var init_separator = __esm({
354
- "src/ui/primitives/separator.tsx"() {
355
- init_utils();
356
- Separator = React11__namespace.forwardRef(
357
- ({ className, orientation = "horizontal", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
358
- "div",
359
- {
360
- ref,
361
- className: cn(
362
- "shrink-0 bg-border",
363
- orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
364
- className
365
- ),
366
- ...props
367
- }
368
- )
369
- );
370
- Separator.displayName = "Separator";
371
- }
372
- });
373
- var Table, TableHeader, TableBody, TableFooter, TableRow, TableHead, TableCell, TableCaption;
374
- var init_table = __esm({
375
- "src/ui/primitives/table.tsx"() {
376
- init_utils();
377
- Table = React11__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ jsxRuntime.jsx(
378
- "table",
379
- {
380
- ref,
381
- className: cn("w-max min-w-full caption-bottom text-xs", className),
382
- ...props
383
- }
384
- ) }));
385
- Table.displayName = "Table";
386
- TableHeader = React11__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("thead", { ref, className: cn("[&_tr]:border-b", className), ...props }));
387
- TableHeader.displayName = "TableHeader";
388
- TableBody = React11__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
389
- "tbody",
390
- {
391
- ref,
392
- className: cn("[&_tr:last-child]:border-0", className),
393
- ...props
394
- }
395
- ));
396
- TableBody.displayName = "TableBody";
397
- TableFooter = React11__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
398
- "tfoot",
399
- {
400
- ref,
401
- className: cn(
402
- "border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",
403
- className
404
- ),
405
- ...props
406
- }
407
- ));
408
- TableFooter.displayName = "TableFooter";
409
- TableRow = React11__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
410
- "tr",
411
- {
412
- ref,
413
- className: cn(
414
- "border-b transition-colors even:bg-muted/30 data-[state=selected]:bg-muted",
415
- className
416
- ),
417
- ...props
418
- }
419
- ));
420
- TableRow.displayName = "TableRow";
421
- TableHead = React11__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
422
- "th",
423
- {
424
- ref,
425
- className: cn(
426
- "h-9 px-3 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",
427
- className
428
- ),
429
- ...props
430
- }
431
- ));
432
- TableHead.displayName = "TableHead";
433
- TableCell = React11__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
434
- "td",
435
- {
436
- ref,
437
- className: cn("px-3 py-1.5 align-middle [&:has([role=checkbox])]:pr-0 text-xs", className),
438
- ...props
439
- }
440
- ));
441
- TableCell.displayName = "TableCell";
442
- TableCaption = React11__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
443
- "caption",
444
- {
445
- ref,
446
- className: cn("mt-4 text-sm text-muted-foreground", className),
447
- ...props
448
- }
449
- ));
450
- TableCaption.displayName = "TableCaption";
451
- }
452
- });
453
- var init_dropdown_menu = __esm({
454
- "src/ui/primitives/dropdown-menu.tsx"() {
455
- "use client";
456
- }
457
- });
458
- exports.Dialog = void 0; exports.DialogTrigger = void 0; exports.DialogPortal = void 0; exports.DialogClose = void 0; exports.DialogOverlay = void 0; exports.DialogContent = void 0; exports.DialogHeader = void 0; exports.DialogFooter = void 0; exports.DialogTitle = void 0; exports.DialogDescription = void 0;
459
- var init_dialog = __esm({
460
- "src/ui/primitives/dialog.tsx"() {
461
- "use client";
462
- init_utils();
463
- exports.Dialog = DialogPrimitive__namespace.Root;
464
- exports.DialogTrigger = DialogPrimitive__namespace.Trigger;
465
- exports.DialogPortal = DialogPrimitive__namespace.Portal;
466
- exports.DialogClose = DialogPrimitive__namespace.Close;
467
- exports.DialogOverlay = React11__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
468
- DialogPrimitive__namespace.Overlay,
469
- {
470
- ref,
471
- className: cn(
472
- "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",
473
- className
474
- ),
475
- ...props
476
- }
477
- ));
478
- exports.DialogOverlay.displayName = DialogPrimitive__namespace.Overlay.displayName;
479
- exports.DialogContent = React11__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(exports.DialogPortal, { children: [
480
- /* @__PURE__ */ jsxRuntime.jsx(exports.DialogOverlay, {}),
481
- /* @__PURE__ */ jsxRuntime.jsxs(
482
- DialogPrimitive__namespace.Content,
483
- {
484
- ref,
485
- className: cn(
486
- "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",
487
- className
488
- ),
489
- ...props,
490
- children: [
491
- children,
492
- /* @__PURE__ */ jsxRuntime.jsxs(DialogPrimitive__namespace.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: [
493
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" }),
494
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
495
- ] })
496
- ]
497
- }
498
- )
499
- ] }));
500
- exports.DialogContent.displayName = DialogPrimitive__namespace.Content.displayName;
501
- exports.DialogHeader = ({
502
- className,
503
- ...props
504
- }) => /* @__PURE__ */ jsxRuntime.jsx(
505
- "div",
506
- {
507
- className: cn(
508
- "flex flex-col space-y-1.5 text-center sm:text-left",
509
- className
510
- ),
511
- ...props
512
- }
513
- );
514
- exports.DialogHeader.displayName = "DialogHeader";
515
- exports.DialogFooter = ({
516
- className,
517
- ...props
518
- }) => /* @__PURE__ */ jsxRuntime.jsx(
519
- "div",
520
- {
521
- className: cn(
522
- "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
523
- className
524
- ),
525
- ...props
526
- }
527
- );
528
- exports.DialogFooter.displayName = "DialogFooter";
529
- exports.DialogTitle = React11__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
530
- DialogPrimitive__namespace.Title,
531
- {
532
- ref,
533
- className: cn(
534
- "text-lg font-semibold leading-none tracking-tight",
535
- className
536
- ),
537
- ...props
538
- }
539
- ));
540
- exports.DialogTitle.displayName = DialogPrimitive__namespace.Title.displayName;
541
- exports.DialogDescription = React11__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
542
- DialogPrimitive__namespace.Description,
543
- {
544
- ref,
545
- className: cn("text-sm text-muted-foreground", className),
546
- ...props
547
- }
548
- ));
549
- exports.DialogDescription.displayName = DialogPrimitive__namespace.Description.displayName;
550
- }
551
- });
552
- var TabsList, TabsTrigger, TabsContent;
553
- var init_tabs = __esm({
554
- "src/ui/primitives/tabs.tsx"() {
555
- "use client";
556
- init_utils();
557
- TabsList = React11__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
558
- TabsPrimitive__namespace.List,
559
- {
560
- ref,
561
- className: cn(
562
- "inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",
563
- className
564
- ),
565
- ...props
566
- }
567
- ));
568
- TabsList.displayName = TabsPrimitive__namespace.List.displayName;
569
- TabsTrigger = React11__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
570
- TabsPrimitive__namespace.Trigger,
571
- {
572
- ref,
573
- className: cn(
574
- "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",
575
- className
576
- ),
577
- ...props
578
- }
579
- ));
580
- TabsTrigger.displayName = TabsPrimitive__namespace.Trigger.displayName;
581
- TabsContent = React11__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
582
- TabsPrimitive__namespace.Content,
583
- {
584
- ref,
585
- className: cn(
586
- "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
587
- className
588
- ),
589
- ...props
590
- }
591
- ));
592
- TabsContent.displayName = TabsPrimitive__namespace.Content.displayName;
593
- }
594
- });
595
- var init_breadcrumb = __esm({
596
- "src/ui/primitives/breadcrumb.tsx"() {
597
- }
598
- });
599
- var init_keyboard = __esm({
600
- "src/ui/primitives/keyboard.tsx"() {
601
- }
602
- });
603
- var init_pagination = __esm({
604
- "src/ui/primitives/pagination.tsx"() {
605
- }
606
- });
607
- var init_status_badge = __esm({
608
- "src/ui/primitives/status-badge.tsx"() {
609
- }
610
- });
611
- var init_tenant_provider = __esm({
612
- "src/providers/tenant-provider.tsx"() {
613
- React11.createContext(void 0);
614
- }
615
- });
616
- var defaultSettings, SettingsContext;
617
- var init_providers = __esm({
618
- "src/providers/index.tsx"() {
619
- "use client";
620
- init_tenant_provider();
621
- defaultSettings = {
622
- theme: "blue",
623
- mode: "system",
624
- radius: 0.5,
625
- layout: "vertical",
626
- locale: "vi",
627
- sidebarVariant: "sidebar",
628
- sidebarCollapsible: "icon",
629
- density: "comfortable"
630
- };
631
- SettingsContext = React11.createContext(void 0);
632
- }
633
- });
634
- var init_calendar = __esm({
635
- "src/ui/primitives/calendar.tsx"() {
636
- "use client";
637
- init_utils();
638
- init_button();
639
- }
640
- });
641
- function ScrollArea({
642
- orientation,
643
- className,
644
- children,
645
- ...props
646
- }) {
647
- return /* @__PURE__ */ jsxRuntime.jsxs(
648
- ScrollAreaPrimitive__namespace.Root,
649
- {
650
- "data-slot": "scroll-area",
651
- className: cn("relative overflow-hidden", className),
652
- ...props,
653
- children: [
654
- /* @__PURE__ */ jsxRuntime.jsx(
655
- ScrollAreaPrimitive__namespace.Viewport,
656
- {
657
- "data-slot": "scroll-area-viewport",
658
- className: "h-full w-full rounded-[inherit]",
659
- children
660
- }
661
- ),
662
- /* @__PURE__ */ jsxRuntime.jsx(ScrollBar, { orientation }),
663
- /* @__PURE__ */ jsxRuntime.jsx(ScrollAreaPrimitive__namespace.Corner, {})
664
- ]
665
- }
666
- );
667
- }
668
- function ScrollBar({
669
- className,
670
- orientation = "vertical",
671
- ...props
672
- }) {
673
- return /* @__PURE__ */ jsxRuntime.jsx(
674
- ScrollAreaPrimitive__namespace.ScrollAreaScrollbar,
675
- {
676
- "data-slot": "scroll-area-scrollbar",
677
- orientation,
678
- className: cn(
679
- "flex touch-none select-none transition-colors",
680
- orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent p-[1px]",
681
- orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent p-[1px]",
682
- className
683
- ),
684
- ...props,
685
- children: /* @__PURE__ */ jsxRuntime.jsx(ScrollAreaPrimitive__namespace.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" })
686
- }
687
- );
688
- }
689
- var init_scroll_area = __esm({
690
- "src/ui/primitives/scroll-area.tsx"() {
691
- "use client";
692
- init_utils();
693
- }
694
- });
695
- var init_combobox = __esm({
696
- "src/ui/primitives/combobox.tsx"() {
697
- "use client";
698
- }
699
- });
700
- var init_select = __esm({
701
- "src/ui/primitives/select.tsx"() {
702
- "use client";
703
- }
704
- });
705
- var init_popover = __esm({
706
- "src/ui/primitives/popover.tsx"() {
707
- "use client";
708
- }
709
- });
710
- var init_switch = __esm({
711
- "src/ui/primitives/switch.tsx"() {
712
- "use client";
713
- }
714
- });
715
- var Label3;
716
- var init_label = __esm({
717
- "src/ui/primitives/label.tsx"() {
718
- "use client";
719
- init_utils();
720
- Label3 = React11__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
721
- LabelPrimitive__namespace.Root,
722
- {
723
- ref,
724
- className: cn(
725
- "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
726
- className
727
- ),
728
- ...props
729
- }
730
- ));
731
- Label3.displayName = LabelPrimitive__namespace.Root.displayName;
732
- }
733
- });
734
- function TooltipProvider({
735
- delayDuration = 0,
736
- ...props
737
- }) {
738
- return /* @__PURE__ */ jsxRuntime.jsx(
739
- TooltipPrimitive__namespace.Provider,
740
- {
741
- "data-slot": "tooltip-provider",
742
- delayDuration,
743
- ...props
744
- }
745
- );
746
- }
747
- function Tooltip({
748
- ...props
749
- }) {
750
- return /* @__PURE__ */ jsxRuntime.jsx(TooltipProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive__namespace.Root, { "data-slot": "tooltip", ...props }) });
751
- }
752
- function TooltipTrigger({
753
- className,
754
- ...props
755
- }) {
756
- return /* @__PURE__ */ jsxRuntime.jsx(
757
- TooltipPrimitive__namespace.Trigger,
758
- {
759
- "data-slot": "tooltip-trigger",
760
- className: cn("cursor-pointer", className),
761
- ...props
762
- }
763
- );
764
- }
765
- function TooltipContent({
766
- className,
767
- sideOffset = 0,
768
- ...props
769
- }) {
770
- return /* @__PURE__ */ jsxRuntime.jsx(
771
- TooltipPrimitive__namespace.Content,
772
- {
773
- "data-slot": "tooltip-content",
774
- sideOffset,
775
- className: cn(
776
- "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",
777
- className
778
- ),
779
- ...props
780
- }
781
- );
782
- }
783
- var init_tooltip = __esm({
784
- "src/ui/primitives/tooltip.tsx"() {
785
- "use client";
786
- init_utils();
787
- }
788
- });
789
- var init_resizable = __esm({
790
- "src/ui/primitives/resizable.tsx"() {
791
- "use client";
792
- }
793
- });
794
- var init_slider = __esm({
795
- "src/ui/primitives/slider.tsx"() {
796
- "use client";
797
- }
798
- });
799
- var init_toggle = __esm({
800
- "src/ui/primitives/toggle.tsx"() {
801
- "use client";
802
- classVarianceAuthority.cva(
803
- "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",
804
- {
805
- variants: {
806
- variant: {
807
- default: "bg-transparent",
808
- outline: "border border-input bg-transparent hover:bg-accent hover:text-accent-foreground"
809
- },
810
- size: {
811
- default: "h-9 px-3",
812
- sm: "h-8 px-2",
813
- lg: "h-10 px-3"
814
- }
815
- },
816
- defaultVariants: {
817
- variant: "default",
818
- size: "default"
819
- }
820
- }
821
- );
822
- }
823
- });
824
- var init_toggle_group = __esm({
825
- "src/ui/primitives/toggle-group.tsx"() {
826
- "use client";
827
- React11.createContext({
828
- size: "default",
829
- variant: "default"
830
- });
831
- }
832
- });
833
- var init_menubar = __esm({
834
- "src/ui/primitives/menubar.tsx"() {
835
- "use client";
836
- }
837
- });
838
- var init_navigation_menu = __esm({
839
- "src/ui/primitives/navigation-menu.tsx"() {
840
- classVarianceAuthority.cva(
841
- "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"
842
- );
843
- }
844
- });
845
- function Sheet({
846
- ...props
847
- }) {
848
- return /* @__PURE__ */ jsxRuntime.jsx(DialogPrimitive__namespace.Root, { "data-slot": "sheet", ...props });
849
- }
850
- function SheetTrigger({
851
- className,
852
- ...props
853
- }) {
854
- return /* @__PURE__ */ jsxRuntime.jsx(
855
- DialogPrimitive__namespace.Trigger,
856
- {
857
- "data-slot": "sheet-trigger",
858
- className: cn("cursor-pointer", className),
859
- ...props
860
- }
861
- );
862
- }
863
- function SheetClose({
864
- ...props
865
- }) {
866
- return /* @__PURE__ */ jsxRuntime.jsx(DialogPrimitive__namespace.Close, { "data-slot": "sheet-close", ...props });
867
- }
868
- function SheetPortal({
869
- ...props
870
- }) {
871
- return /* @__PURE__ */ jsxRuntime.jsx(DialogPrimitive__namespace.Portal, { "data-slot": "sheet-portal", ...props });
872
- }
873
- function SheetOverlay({
874
- className,
875
- ...props
876
- }) {
877
- return /* @__PURE__ */ jsxRuntime.jsx(
878
- DialogPrimitive__namespace.Overlay,
879
- {
880
- "data-slot": "sheet-overlay",
881
- className: cn(
882
- "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",
883
- className
884
- ),
885
- ...props
886
- }
887
- );
888
- }
889
- function SheetContent({
890
- className,
891
- children,
892
- side = "right",
893
- ...props
894
- }) {
895
- return /* @__PURE__ */ jsxRuntime.jsxs(SheetPortal, { children: [
896
- /* @__PURE__ */ jsxRuntime.jsx(SheetOverlay, {}),
897
- /* @__PURE__ */ jsxRuntime.jsx(
898
- DialogPrimitive__namespace.Content,
899
- {
900
- "data-slot": "sheet-content",
901
- className: cn(exports.sheetVariants({ side }), className),
902
- ...props,
903
- children
904
- }
905
- )
906
- ] });
907
- }
908
- function SheetHeader({ className, ...props }) {
909
- return /* @__PURE__ */ jsxRuntime.jsx(
910
- "div",
911
- {
912
- "data-slot": "sheet-header",
913
- className: cn("flex flex-col space-y-1", className),
914
- ...props
915
- }
916
- );
917
- }
918
- function SheetFooter({ className, ...props }) {
919
- return /* @__PURE__ */ jsxRuntime.jsx(
920
- "div",
921
- {
922
- "data-slot": "sheet-footer",
923
- className: cn(
924
- "flex flex-col-reverse sm:flex-row sm:justify-end sm:gap-x-2",
925
- className
926
- ),
927
- ...props
928
- }
929
- );
930
- }
931
- function SheetTitle({
932
- className,
933
- ...props
934
- }) {
935
- return /* @__PURE__ */ jsxRuntime.jsx(
936
- DialogPrimitive__namespace.Title,
937
- {
938
- "data-slot": "sheet-title",
939
- className: cn("text-lg font-semibold text-foreground", className),
940
- ...props
941
- }
942
- );
943
- }
944
- function SheetDescription({
945
- className,
946
- ...props
947
- }) {
948
- return /* @__PURE__ */ jsxRuntime.jsx(
949
- DialogPrimitive__namespace.Description,
950
- {
951
- "data-slot": "sheet-description",
952
- className: cn("text-sm text-muted-foreground", className),
953
- ...props
954
- }
955
- );
956
- }
957
- exports.sheetVariants = void 0;
958
- var init_sheet = __esm({
959
- "src/ui/feedback/sheet.tsx"() {
960
- "use client";
961
- init_utils();
962
- exports.sheetVariants = classVarianceAuthority.cva(
963
- "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",
964
- {
965
- variants: {
966
- side: {
967
- top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
968
- bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
969
- 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",
970
- 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",
971
- 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",
972
- 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"
973
- }
974
- },
975
- defaultVariants: {
976
- side: "right"
977
- }
978
- }
979
- );
980
- }
981
- });
982
- function ContextMenu({
983
- ...props
984
- }) {
985
- return /* @__PURE__ */ jsxRuntime.jsx(ContextMenuPrimitive__namespace.Root, { "data-slot": "context-menu", ...props });
986
- }
987
- function ContextMenuTrigger({
988
- ...props
989
- }) {
990
- return /* @__PURE__ */ jsxRuntime.jsx(ContextMenuPrimitive__namespace.Trigger, { "data-slot": "context-menu-trigger", ...props });
991
- }
992
- function ContextMenuGroup({
993
- ...props
994
- }) {
995
- return /* @__PURE__ */ jsxRuntime.jsx(ContextMenuPrimitive__namespace.Group, { "data-slot": "context-menu-group", ...props });
996
- }
997
- function ContextMenuPortal({
998
- ...props
999
- }) {
1000
- return /* @__PURE__ */ jsxRuntime.jsx(ContextMenuPrimitive__namespace.Portal, { "data-slot": "context-menu-portal", ...props });
1001
- }
1002
- function ContextMenuSub({
1003
- ...props
1004
- }) {
1005
- return /* @__PURE__ */ jsxRuntime.jsx(ContextMenuPrimitive__namespace.Sub, { "data-slot": "context-menu-sub", ...props });
1006
- }
1007
- function ContextMenuRadioGroup({
1008
- ...props
1009
- }) {
1010
- return /* @__PURE__ */ jsxRuntime.jsx(
1011
- ContextMenuPrimitive__namespace.RadioGroup,
1012
- {
1013
- "data-slot": "context-menu-radio-group",
1014
- ...props
1015
- }
1016
- );
1017
- }
1018
- function ContextMenuSubTrigger({
1019
- className,
1020
- inset,
1021
- children,
1022
- ...props
1023
- }) {
1024
- return /* @__PURE__ */ jsxRuntime.jsxs(
1025
- ContextMenuPrimitive__namespace.SubTrigger,
1026
- {
1027
- "data-slot": "context-menu-sub-trigger",
1028
- className: cn(
1029
- "flex cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-hidden focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
1030
- inset && "ps-8",
1031
- className
1032
- ),
1033
- ...props,
1034
- children: [
1035
- children,
1036
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "ml-auto h-4 w-4" })
1037
- ]
1038
- }
1039
- );
1040
- }
1041
- function ContextMenuSubContent({
1042
- className,
1043
- ...props
1044
- }) {
1045
- return /* @__PURE__ */ jsxRuntime.jsx(
1046
- ContextMenuPrimitive__namespace.SubContent,
1047
- {
1048
- "data-slot": "context-menu-sub-content",
1049
- className: cn(
1050
- "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",
1051
- className
1052
- ),
1053
- ...props
1054
- }
1055
- );
1056
- }
1057
- function ContextMenuContent({
1058
- className,
1059
- ...props
1060
- }) {
1061
- return /* @__PURE__ */ jsxRuntime.jsx(ContextMenuPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
1062
- ContextMenuPrimitive__namespace.Content,
1063
- {
1064
- "data-slot": "context-menu-content",
1065
- className: cn(
1066
- "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",
1067
- className
1068
- ),
1069
- ...props
1070
- }
1071
- ) });
1072
- }
1073
- function ContextMenuItem({
1074
- className,
1075
- inset,
1076
- variant = "default",
1077
- ...props
1078
- }) {
1079
- return /* @__PURE__ */ jsxRuntime.jsx(
1080
- ContextMenuPrimitive__namespace.Item,
1081
- {
1082
- "data-slot": "context-menu-item",
1083
- "data-inset": inset,
1084
- "data-variant": variant,
1085
- className: cn(
1086
- "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",
1087
- className
1088
- ),
1089
- ...props
1090
- }
1091
- );
1092
- }
1093
- function ContextMenuCheckboxItem({
1094
- className,
1095
- children,
1096
- checked,
1097
- ...props
1098
- }) {
1099
- return /* @__PURE__ */ jsxRuntime.jsxs(
1100
- ContextMenuPrimitive__namespace.CheckboxItem,
1101
- {
1102
- "data-slot": "context-menu-checkbox-item",
1103
- className: cn(
1104
- "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",
1105
- className
1106
- ),
1107
- checked,
1108
- ...props,
1109
- children: [
1110
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute start-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(ContextMenuPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-4 w-4" }) }) }),
1111
- children
1112
- ]
1113
- }
1114
- );
1115
- }
1116
- function ContextMenuRadioItem({
1117
- className,
1118
- children,
1119
- ...props
1120
- }) {
1121
- return /* @__PURE__ */ jsxRuntime.jsxs(
1122
- ContextMenuPrimitive__namespace.RadioItem,
1123
- {
1124
- "data-slot": "context-menu-radio-item",
1125
- className: cn(
1126
- "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",
1127
- className
1128
- ),
1129
- ...props,
1130
- children: [
1131
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute start-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(ContextMenuPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Dot, { className: "h-4 w-4 fill-current" }) }) }),
1132
- children
1133
- ]
1134
- }
1135
- );
1136
- }
1137
- function ContextMenuLabel({
1138
- className,
1139
- inset,
1140
- ...props
1141
- }) {
1142
- return /* @__PURE__ */ jsxRuntime.jsx(
1143
- ContextMenuPrimitive__namespace.Label,
1144
- {
1145
- "data-slot": "context-menu-label",
1146
- className: cn(
1147
- "px-2 py-1.5 text-sm font-semibold text-foreground",
1148
- inset && "ps-8",
1149
- className
1150
- ),
1151
- ...props
1152
- }
1153
- );
1154
- }
1155
- function ContextMenuSeparator({
1156
- className,
1157
- ...props
1158
- }) {
1159
- return /* @__PURE__ */ jsxRuntime.jsx(
1160
- ContextMenuPrimitive__namespace.Separator,
1161
- {
1162
- "data-slot": "context-menu-separator",
1163
- className: cn("-mx-1 my-1 h-px bg-border", className),
1164
- ...props
1165
- }
1166
- );
1167
- }
1168
- function ContextMenuShortcut({
1169
- className,
1170
- ...props
1171
- }) {
1172
- return /* @__PURE__ */ jsxRuntime.jsx(
1173
- "span",
1174
- {
1175
- "data-slot": "context-menu-shortcut",
1176
- className: cn(
1177
- "ms-auto text-sm tracking-widest text-muted-foreground",
1178
- className
1179
- ),
1180
- ...props
1181
- }
1182
- );
1183
- }
1184
- var init_context_menu = __esm({
1185
- "src/ui/feedback/context-menu.tsx"() {
1186
- "use client";
1187
- init_utils();
1188
- }
1189
- });
1190
- function Drawer({
1191
- shouldScaleBackground = true,
1192
- ...props
1193
- }) {
1194
- return /* @__PURE__ */ jsxRuntime.jsx(
1195
- vaul.Drawer.Root,
1196
- {
1197
- "data-slot": "drawer",
1198
- shouldScaleBackground,
1199
- ...props
1200
- }
1201
- );
1202
- }
1203
- function DrawerTrigger({
1204
- className,
1205
- ...props
1206
- }) {
1207
- return /* @__PURE__ */ jsxRuntime.jsx(
1208
- vaul.Drawer.Trigger,
1209
- {
1210
- "data-slot": "drawer-trigger",
1211
- className: cn("cursor-pointer", className),
1212
- ...props
1213
- }
1214
- );
1215
- }
1216
- function DrawerPortal({
1217
- children,
1218
- ...props
1219
- }) {
1220
- const Portal9 = vaul.Drawer.Portal;
1221
- return /* @__PURE__ */ jsxRuntime.jsx(Portal9, { "data-slot": "drawer-portal", ...props, children });
1222
- }
1223
- function DrawerClose({
1224
- ...props
1225
- }) {
1226
- return /* @__PURE__ */ jsxRuntime.jsx(vaul.Drawer.Close, { "data-slot": "drawer-close", ...props });
1227
- }
1228
- function DrawerOverlay({
1229
- className,
1230
- ...props
1231
- }) {
1232
- return /* @__PURE__ */ jsxRuntime.jsx(
1233
- vaul.Drawer.Overlay,
1234
- {
1235
- "data-slot": "drawer-overlay",
1236
- className: cn("fixed inset-0 z-50 bg-black/80", className),
1237
- ...props
1238
- }
1239
- );
1240
- }
1241
- function DrawerContent({
1242
- className,
1243
- children,
1244
- ...props
1245
- }) {
1246
- return /* @__PURE__ */ jsxRuntime.jsxs(DrawerPortal, { "data-slot": "drawer-portal", children: [
1247
- /* @__PURE__ */ jsxRuntime.jsx(DrawerOverlay, {}),
1248
- /* @__PURE__ */ jsxRuntime.jsxs(
1249
- vaul.Drawer.Content,
1250
- {
1251
- "data-slot": "drawer-content",
1252
- className: cn(
1253
- "fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background",
1254
- className
1255
- ),
1256
- ...props,
1257
- children: [
1258
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted" }),
1259
- children
1260
- ]
1261
- }
1262
- )
1263
- ] });
1264
- }
1265
- function DrawerHeader({ className, ...props }) {
1266
- return /* @__PURE__ */ jsxRuntime.jsx(
1267
- "div",
1268
- {
1269
- "data-slot": "drawer-header",
1270
- className: cn("grid gap-1.5 p-4 text-center sm:text-start", className),
1271
- ...props
1272
- }
1273
- );
1274
- }
1275
- function DrawerFooter({ className, ...props }) {
1276
- return /* @__PURE__ */ jsxRuntime.jsx(
1277
- "div",
1278
- {
1279
- "data-slot": "drawer-footer",
1280
- className: cn("mt-auto flex flex-col gap-2 p-4", className),
1281
- ...props
1282
- }
1283
- );
1284
- }
1285
- function DrawerTitle({
1286
- className,
1287
- ...props
1288
- }) {
1289
- return /* @__PURE__ */ jsxRuntime.jsx(
1290
- vaul.Drawer.Title,
1291
- {
1292
- "data-slot": "drawer-title",
1293
- className: cn(
1294
- "text-lg font-semibold leading-none tracking-tight",
1295
- className
1296
- ),
1297
- ...props
1298
- }
1299
- );
1300
- }
1301
- function DrawerDescription({
1302
- className,
1303
- ...props
1304
- }) {
1305
- return /* @__PURE__ */ jsxRuntime.jsx(
1306
- vaul.Drawer.Description,
1307
- {
1308
- "data-slot": "drawer-description",
1309
- className: cn("text-sm text-muted-foreground", className),
1310
- ...props
1311
- }
1312
- );
1313
- }
1314
- var init_drawer = __esm({
1315
- "src/ui/feedback/drawer.tsx"() {
1316
- "use client";
1317
- init_utils();
1318
- }
1319
- });
1320
- function Progress({
1321
- className,
1322
- value,
1323
- max,
1324
- ...props
1325
- }) {
1326
- return /* @__PURE__ */ jsxRuntime.jsx(
1327
- ProgressPrimitive__namespace.Root,
1328
- {
1329
- "data-slot": "progress",
1330
- className: cn(
1331
- "relative h-2 w-full overflow-hidden rounded-lg bg-primary/20",
1332
- className
1333
- ),
1334
- max,
1335
- ...props,
1336
- children: /* @__PURE__ */ jsxRuntime.jsx(
1337
- ProgressPrimitive__namespace.Indicator,
1338
- {
1339
- "data-slot": "progress-indicator",
1340
- className: "h-full w-full flex-1 bg-primary transition-all",
1341
- style: {
1342
- transform: `translateX(-${100 - (value || 0) / (max || 100) * 100}%)`
1343
- }
1344
- }
1345
- )
1346
- }
1347
- );
1348
- }
1349
- var init_progress = __esm({
1350
- "src/ui/feedback/progress.tsx"() {
1351
- "use client";
1352
- init_utils();
1353
- }
1354
- });
1355
- function Toaster({ ...props }) {
1356
- const { settings } = useSettings();
1357
- const mode = settings.mode;
1358
- return /* @__PURE__ */ jsxRuntime.jsx(
1359
- sonner.Toaster,
1360
- {
1361
- theme: mode,
1362
- className: "toaster group",
1363
- toastOptions: {
1364
- classNames: {
1365
- toast: "group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",
1366
- description: "group-[.toast]:text-muted-foreground",
1367
- actionButton: "group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",
1368
- cancelButton: "group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"
1369
- }
1370
- },
1371
- richColors: true,
1372
- closeButton: true,
1373
- ...props
1374
- }
1375
- );
1376
- }
1377
- var init_sonner = __esm({
1378
- "src/ui/feedback/sonner.tsx"() {
1379
- "use client";
1380
- init_hooks();
1381
- }
1382
- });
1383
-
1384
- // src/hooks/use-tenant.ts
1385
- var init_use_tenant = __esm({
1386
- "src/hooks/use-tenant.ts"() {
1387
- }
1388
- });
1389
- function useMediaQuery(query) {
1390
- const [matches, setMatches] = React11.useState(false);
1391
- React11.useEffect(() => {
1392
- if (typeof window !== "undefined") {
1393
- const media = window.matchMedia(query);
1394
- setMatches(media.matches);
1395
- const listener = (event) => setMatches(event.matches);
1396
- media.addEventListener("change", listener);
1397
- return () => media.removeEventListener("change", listener);
1398
- }
1399
- }, [query]);
1400
- return matches;
1401
- }
1402
- function useMobile() {
1403
- return useMediaQuery("(max-width: 768px)");
1404
- }
1405
- function useSettings() {
1406
- const context = React11.useContext(SettingsContext);
1407
- if (!context) {
1408
- return defaultSettingsValue;
1409
- }
1410
- return context;
1411
- }
1412
- var defaultSettingsValue;
1413
- var init_hooks = __esm({
1414
- "src/hooks/index.tsx"() {
1415
- "use client";
1416
- init_providers();
1417
- init_use_tenant();
1418
- defaultSettingsValue = {
1419
- settings: defaultSettings,
1420
- updateSettings: () => {
1421
- },
1422
- resetSettings: () => {
1423
- }
1424
- };
1425
- React11.createContext(null);
1426
- }
1427
- });
1428
- function useSidebar() {
1429
- const context = React11__namespace.useContext(SidebarContext);
1430
- if (!context) {
1431
- throw new Error("useSidebar must be used within a SidebarProvider.");
1432
- }
1433
- return context;
1434
- }
1435
- 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;
1436
- var init_sidebar = __esm({
1437
- "src/ui/primitives/sidebar.tsx"() {
1438
- "use client";
1439
- init_hooks();
1440
- init_utils();
1441
- init_button();
1442
- init_feedback();
1443
- init_tooltip();
1444
- SIDEBAR_WIDTH = "16rem";
1445
- SIDEBAR_WIDTH_MOBILE = "18rem";
1446
- SIDEBAR_WIDTH_ICON = "3rem";
1447
- SIDEBAR_KEYBOARD_SHORTCUT = "b";
1448
- SidebarContext = React11__namespace.createContext(null);
1449
- SidebarProvider = React11__namespace.forwardRef(
1450
- ({
1451
- defaultOpen = false,
1452
- open: openProp,
1453
- onOpenChange: setOpenProp,
1454
- className,
1455
- style,
1456
- children,
1457
- ...props
1458
- }, ref) => {
1459
- const isMobile = useMobile();
1460
- const [openMobile, setOpenMobile] = React11__namespace.useState(false);
1461
- const [hoverOpen, setHoverOpen] = React11__namespace.useState(false);
1462
- const [_open, _setOpen] = React11__namespace.useState(defaultOpen);
1463
- const open = openProp ?? _open;
1464
- const setOpen = React11__namespace.useCallback(
1465
- (value) => {
1466
- if (setOpenProp) {
1467
- return setOpenProp(typeof value === "function" ? value(open) : value);
1468
- }
1469
- _setOpen(value);
1470
- },
1471
- [setOpenProp, open]
1472
- );
1473
- const toggleSidebar = React11__namespace.useCallback(() => {
1474
- return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
1475
- }, [isMobile, setOpen, setOpenMobile]);
1476
- React11__namespace.useEffect(() => {
1477
- const handleKeyDown = (event) => {
1478
- if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
1479
- event.preventDefault();
1480
- toggleSidebar();
1481
- }
1482
- };
1483
- window.addEventListener("keydown", handleKeyDown);
1484
- return () => window.removeEventListener("keydown", handleKeyDown);
1485
- }, [toggleSidebar]);
1486
- const state = open ? "expanded" : "collapsed";
1487
- const isHoverExpanded = !open && hoverOpen;
1488
- const contextValue = React11__namespace.useMemo(
1489
- () => ({
1490
- state,
1491
- open,
1492
- setOpen,
1493
- isMobile,
1494
- openMobile,
1495
- setOpenMobile,
1496
- toggleSidebar,
1497
- hoverOpen,
1498
- setHoverOpen,
1499
- isHoverExpanded
1500
- }),
1501
- [
1502
- state,
1503
- open,
1504
- setOpen,
1505
- isMobile,
1506
- openMobile,
1507
- setOpenMobile,
1508
- toggleSidebar,
1509
- hoverOpen,
1510
- setHoverOpen,
1511
- isHoverExpanded
1512
- ]
1513
- );
1514
- return /* @__PURE__ */ jsxRuntime.jsx(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsxRuntime.jsx(
1515
- "div",
1516
- {
1517
- style: {
1518
- "--sidebar-width": SIDEBAR_WIDTH,
1519
- "--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
1520
- ...style
1521
- },
1522
- className: cn(
1523
- "group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar",
1524
- className
1525
- ),
1526
- ref,
1527
- ...props,
1528
- children
1529
- }
1530
- ) }) });
1531
- }
1532
- );
1533
- SidebarProvider.displayName = "SidebarProvider";
1534
- Sidebar = React11__namespace.forwardRef(
1535
- ({
1536
- side = "left",
1537
- variant = "sidebar",
1538
- collapsible = "offcanvas",
1539
- hoverExpandEnabled = true,
1540
- className,
1541
- children,
1542
- ...props
1543
- }, ref) => {
1544
- const {
1545
- isMobile,
1546
- state,
1547
- openMobile,
1548
- setOpenMobile,
1549
- setHoverOpen,
1550
- isHoverExpanded
1551
- } = useSidebar();
1552
- const handleMouseEnter = React11__namespace.useCallback(() => {
1553
- if (hoverExpandEnabled && state === "collapsed" && collapsible === "icon") {
1554
- setHoverOpen(true);
1555
- }
1556
- }, [hoverExpandEnabled, state, collapsible, setHoverOpen]);
1557
- const handleMouseLeave = React11__namespace.useCallback(() => {
1558
- if (hoverExpandEnabled) {
1559
- setHoverOpen(false);
1560
- }
1561
- }, [hoverExpandEnabled, setHoverOpen]);
1562
- if (collapsible === "none") {
1563
- return /* @__PURE__ */ jsxRuntime.jsx(
1564
- "div",
1565
- {
1566
- className: cn(
1567
- "flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",
1568
- className
1569
- ),
1570
- ref,
1571
- ...props,
1572
- children
1573
- }
1574
- );
1575
- }
1576
- if (isMobile) {
1577
- return /* @__PURE__ */ jsxRuntime.jsx(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxRuntime.jsxs(
1578
- SheetContent,
1579
- {
1580
- "data-sidebar": "sidebar",
1581
- "data-mobile": "true",
1582
- className: "w-(--sidebar-width) bg-background p-0 text-foreground [&>button]:hidden",
1583
- style: {
1584
- "--sidebar-width": SIDEBAR_WIDTH_MOBILE
1585
- },
1586
- side,
1587
- children: [
1588
- /* @__PURE__ */ jsxRuntime.jsx(SheetTitle, { className: "sr-only", children: "Mobile Menu" }),
1589
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-full w-full flex-col", children })
1590
- ]
1591
- }
1592
- ) });
1593
- }
1594
- return /* @__PURE__ */ jsxRuntime.jsxs(
1595
- "div",
1596
- {
1597
- ref,
1598
- className: cn(
1599
- "group peer hidden md:block transition-colors duration-200",
1600
- // Blue bg + white text when collapsed, white bg + dark text when expanded/hover
1601
- state === "collapsed" && !isHoverExpanded ? "text-sidebar-foreground" : "text-foreground"
1602
- ),
1603
- "data-state": state,
1604
- "data-hover-expanded": isHoverExpanded,
1605
- "data-collapsible": state === "collapsed" ? collapsible : "",
1606
- "data-variant": variant,
1607
- "data-side": side,
1608
- onMouseEnter: handleMouseEnter,
1609
- onMouseLeave: handleMouseLeave,
1610
- children: [
1611
- /* @__PURE__ */ jsxRuntime.jsx(
1612
- "div",
1613
- {
1614
- className: cn(
1615
- "duration-200 relative h-svh w-(--sidebar-width) bg-transparent transition-[width] ease-linear",
1616
- "group-data-[collapsible=offcanvas]:w-0",
1617
- "group-data-[collapsible=icon]:w-(--sidebar-width-icon)",
1618
- variant === "floating" || variant === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)"
1619
- )
1620
- }
1621
- ),
1622
- /* @__PURE__ */ jsxRuntime.jsx(
1623
- "div",
1624
- {
1625
- className: cn(
1626
- "duration-200 fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] ease-linear md:flex",
1627
- 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)]",
1628
- // Adjustments for collapsible=icon
1629
- 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",
1630
- // Hover expand - override icon width to full width on hover
1631
- "group-data-[hover-expanded=true]:!w-(--sidebar-width) group-data-[hover-expanded=true]:shadow-xl group-data-[hover-expanded=true]:z-[100]",
1632
- className
1633
- ),
1634
- ...props,
1635
- children: /* @__PURE__ */ jsxRuntime.jsx(
1636
- "div",
1637
- {
1638
- "data-sidebar": "sidebar",
1639
- className: cn(
1640
- "flex h-full w-full flex-col border-r transition-colors duration-200",
1641
- // Blue background when collapsed, white when expanded/hover
1642
- "group-data-[state=collapsed]:bg-sidebar group-data-[state=collapsed]:border-sidebar-border",
1643
- "group-data-[state=expanded]:bg-background group-data-[state=expanded]:border-border",
1644
- "group-data-[hover-expanded=true]:!bg-background group-data-[hover-expanded=true]:!border-border",
1645
- "group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow"
1646
- ),
1647
- children
1648
- }
1649
- )
1650
- }
1651
- )
1652
- ]
1653
- }
1654
- );
1655
- }
1656
- );
1657
- Sidebar.displayName = "Sidebar";
1658
- SidebarTrigger = React11__namespace.forwardRef(({ className, onClick, ...props }, ref) => {
1659
- const { toggleSidebar } = useSidebar();
1660
- return /* @__PURE__ */ jsxRuntime.jsxs(
1661
- Button,
1662
- {
1663
- ref,
1664
- "data-sidebar": "trigger",
1665
- variant: "ghost",
1666
- size: "icon",
1667
- className: cn("h-7 w-7", className),
1668
- onClick: (event) => {
1669
- onClick?.(event);
1670
- toggleSidebar();
1671
- },
1672
- ...props,
1673
- children: [
1674
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.PanelLeft, {}),
1675
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Toggle Sidebar" })
1676
- ]
1677
- }
1678
- );
1679
- });
1680
- SidebarTrigger.displayName = "SidebarTrigger";
1681
- SidebarRail = React11__namespace.forwardRef(({ className, ...props }, ref) => {
1682
- const { toggleSidebar } = useSidebar();
1683
- return /* @__PURE__ */ jsxRuntime.jsx(
1684
- "button",
1685
- {
1686
- ref,
1687
- "data-sidebar": "rail",
1688
- "aria-label": "Toggle Sidebar",
1689
- tabIndex: -1,
1690
- onClick: toggleSidebar,
1691
- title: "Toggle Sidebar",
1692
- className: cn(
1693
- "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",
1694
- "[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize",
1695
- "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",
1696
- "group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar",
1697
- "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2",
1698
- "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",
1699
- className
1700
- ),
1701
- ...props
1702
- }
1703
- );
1704
- });
1705
- SidebarRail.displayName = "SidebarRail";
1706
- SidebarInset = React11__namespace.forwardRef(({ className, ...props }, ref) => {
1707
- return /* @__PURE__ */ jsxRuntime.jsx(
1708
- "main",
1709
- {
1710
- ref,
1711
- className: cn(
1712
- "relative flex min-h-svh flex-1 flex-col bg-muted/40 transition-[margin] duration-200 ease-linear",
1713
- "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",
1714
- className
1715
- ),
1716
- ...props
1717
- }
1718
- );
1719
- });
1720
- SidebarInset.displayName = "SidebarInset";
1721
- SidebarInput = React11__namespace.forwardRef(({ className, ...props }, ref) => {
1722
- return /* @__PURE__ */ jsxRuntime.jsx(
1723
- "input",
1724
- {
1725
- ref,
1726
- "data-sidebar": "input",
1727
- className: cn(
1728
- "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",
1729
- className
1730
- ),
1731
- ...props
1732
- }
1733
- );
1734
- });
1735
- SidebarInput.displayName = "SidebarInput";
1736
- SidebarHeader = React11__namespace.forwardRef(({ className, ...props }, ref) => {
1737
- return /* @__PURE__ */ jsxRuntime.jsx(
1738
- "div",
1739
- {
1740
- ref,
1741
- "data-sidebar": "header",
1742
- className: cn("flex flex-col gap-2 p-2", className),
1743
- ...props
1744
- }
1745
- );
1746
- });
1747
- SidebarHeader.displayName = "SidebarHeader";
1748
- SidebarFooter = React11__namespace.forwardRef(({ className, ...props }, ref) => {
1749
- return /* @__PURE__ */ jsxRuntime.jsx(
1750
- "div",
1751
- {
1752
- ref,
1753
- "data-sidebar": "footer",
1754
- className: cn("flex flex-col gap-2 p-2", className),
1755
- ...props
1756
- }
1757
- );
1758
- });
1759
- SidebarFooter.displayName = "SidebarFooter";
1760
- SidebarSeparator = React11__namespace.forwardRef(({ className, ...props }, ref) => {
1761
- return /* @__PURE__ */ jsxRuntime.jsx(
1762
- "div",
1763
- {
1764
- ref,
1765
- "data-sidebar": "separator",
1766
- className: cn("mx-2 h-[1px] w-auto bg-sidebar-border", className),
1767
- ...props
1768
- }
1769
- );
1770
- });
1771
- SidebarSeparator.displayName = "SidebarSeparator";
1772
- SidebarContent = React11__namespace.forwardRef(({ className, ...props }, ref) => {
1773
- return /* @__PURE__ */ jsxRuntime.jsx(
1774
- "div",
1775
- {
1776
- ref,
1777
- "data-sidebar": "content",
1778
- className: cn(
1779
- "flex min-h-0 flex-1 flex-col gap-2 overflow-auto",
1780
- // Hide overflow when collapsed, but show when hover-expanded
1781
- "group-data-[collapsible=icon]:overflow-hidden group-data-[hover-expanded=true]:!overflow-auto",
1782
- className
1783
- ),
1784
- ...props
1785
- }
1786
- );
1787
- });
1788
- SidebarContent.displayName = "SidebarContent";
1789
- SidebarGroup = React11__namespace.forwardRef(({ className, ...props }, ref) => {
1790
- return /* @__PURE__ */ jsxRuntime.jsx(
1791
- "div",
1792
- {
1793
- ref,
1794
- "data-sidebar": "group",
1795
- className: cn("relative flex w-full min-w-0 flex-col p-2", className),
1796
- ...props
1797
- }
1798
- );
1799
- });
1800
- SidebarGroup.displayName = "SidebarGroup";
1801
- SidebarGroupLabel = React11__namespace.forwardRef(({ className, asChild = false, ...props }, ref) => {
1802
- const Comp = asChild ? reactSlot.Slot : "div";
1803
- return /* @__PURE__ */ jsxRuntime.jsx(
1804
- Comp,
1805
- {
1806
- ref,
1807
- "data-sidebar": "group-label",
1808
- className: cn(
1809
- "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",
1810
- // Hide when collapsed, show when hover-expanded
1811
- "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",
1812
- "group-data-[hover-expanded=true]:!mt-0 group-data-[hover-expanded=true]:!opacity-100",
1813
- className
1814
- ),
1815
- ...props
1816
- }
1817
- );
1818
- });
1819
- SidebarGroupLabel.displayName = "SidebarGroupLabel";
1820
- SidebarGroupAction = React11__namespace.forwardRef(({ className, asChild = false, ...props }, ref) => {
1821
- const Comp = asChild ? reactSlot.Slot : "button";
1822
- return /* @__PURE__ */ jsxRuntime.jsx(
1823
- Comp,
1824
- {
1825
- ref,
1826
- "data-sidebar": "group-action",
1827
- className: cn(
1828
- "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",
1829
- // Increases the hit area of the button on mobile.
1830
- "after:absolute after:-inset-2 after:md:hidden",
1831
- "group-data-[collapsible=icon]:hidden",
1832
- className
1833
- ),
1834
- ...props
1835
- }
1836
- );
1837
- });
1838
- SidebarGroupAction.displayName = "SidebarGroupAction";
1839
- SidebarGroupContent = React11__namespace.forwardRef(({ className, ...props }, ref) => {
1840
- return /* @__PURE__ */ jsxRuntime.jsx(
1841
- "div",
1842
- {
1843
- ref,
1844
- "data-sidebar": "group-content",
1845
- className: cn("w-full text-sm", className),
1846
- ...props
1847
- }
1848
- );
1849
- });
1850
- SidebarGroupContent.displayName = "SidebarGroupContent";
1851
- SidebarMenu = React11__namespace.forwardRef(({ className, ...props }, ref) => {
1852
- return /* @__PURE__ */ jsxRuntime.jsx(
1853
- "ul",
1854
- {
1855
- ref,
1856
- "data-sidebar": "menu",
1857
- className: cn("flex w-full min-w-0 flex-col gap-1", className),
1858
- ...props
1859
- }
1860
- );
1861
- });
1862
- SidebarMenu.displayName = "SidebarMenu";
1863
- SidebarMenuItem = React11__namespace.forwardRef(({ className, ...props }, ref) => {
1864
- return /* @__PURE__ */ jsxRuntime.jsx(
1865
- "li",
1866
- {
1867
- ref,
1868
- "data-sidebar": "menu-item",
1869
- className: cn("group/menu-item relative", className),
1870
- ...props
1871
- }
1872
- );
1873
- });
1874
- SidebarMenuItem.displayName = "SidebarMenuItem";
1875
- sidebarMenuButtonVariants = classVarianceAuthority.cva(
1876
- // Base styles + hover-expand overrides
1877
- "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",
1878
- {
1879
- variants: {
1880
- variant: {
1881
- default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
1882
- 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))]"
1883
- },
1884
- size: {
1885
- default: "h-8 text-sm",
1886
- sm: "h-7 text-xs",
1887
- lg: "h-12 text-sm group-data-[collapsible=icon]:!p-0"
1888
- },
1889
- isActive: {
1890
- true: "bg-primary/10 text-primary font-bold"
1891
- }
1892
- },
1893
- defaultVariants: {
1894
- variant: "default",
1895
- size: "default"
1896
- }
1897
- }
1898
- );
1899
- SidebarMenuButton = React11__namespace.forwardRef(
1900
- ({
1901
- asChild = false,
1902
- isActive = false,
1903
- variant = "default",
1904
- size = "default",
1905
- tooltip,
1906
- className,
1907
- ...props
1908
- }, ref) => {
1909
- const Comp = asChild ? reactSlot.Slot : "button";
1910
- const { isMobile, state } = useSidebar();
1911
- const button = /* @__PURE__ */ jsxRuntime.jsx(
1912
- Comp,
1913
- {
1914
- ref,
1915
- "data-sidebar": "menu-button",
1916
- "data-size": size,
1917
- "data-active": isActive,
1918
- className: cn(
1919
- sidebarMenuButtonVariants({ variant, size, isActive }),
1920
- className
1921
- ),
1922
- ...props
1923
- }
1924
- );
1925
- if (!tooltip) {
1926
- return button;
1927
- }
1928
- if (typeof tooltip === "string") {
1929
- tooltip = {
1930
- children: tooltip
1931
- };
1932
- }
1933
- return /* @__PURE__ */ jsxRuntime.jsxs(Tooltip, { children: [
1934
- /* @__PURE__ */ jsxRuntime.jsx(TooltipTrigger, { asChild: true, children: button }),
1935
- /* @__PURE__ */ jsxRuntime.jsx(
1936
- TooltipContent,
1937
- {
1938
- side: "right",
1939
- align: "center",
1940
- hidden: state !== "collapsed" || isMobile,
1941
- ...tooltip
1942
- }
1943
- )
1944
- ] });
1945
- }
1946
- );
1947
- SidebarMenuButton.displayName = "SidebarMenuButton";
1948
- SidebarMenuAction = React11__namespace.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
1949
- const Comp = asChild ? reactSlot.Slot : "button";
1950
- return /* @__PURE__ */ jsxRuntime.jsx(
1951
- Comp,
1952
- {
1953
- ref,
1954
- "data-sidebar": "menu-action",
1955
- className: cn(
1956
- "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",
1957
- // Increases the hit area of the button on mobile.
1958
- "after:absolute after:-inset-2 after:md:hidden",
1959
- "peer-data-[size=sm]/menu-button:top-1",
1960
- "peer-data-[size=default]/menu-button:top-1.5",
1961
- "peer-data-[size=lg]/menu-button:top-2.5",
1962
- "group-data-[collapsible=icon]:hidden",
1963
- showOnHover && "group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0",
1964
- className
1965
- ),
1966
- ...props
1967
- }
1968
- );
1969
- });
1970
- SidebarMenuAction.displayName = "SidebarMenuAction";
1971
- SidebarMenuBadge = React11__namespace.forwardRef(({ className, ...props }, ref) => {
1972
- return /* @__PURE__ */ jsxRuntime.jsx(
1973
- "div",
1974
- {
1975
- ref,
1976
- "data-sidebar": "menu-badge",
1977
- className: cn(
1978
- "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",
1979
- "peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground",
1980
- "peer-data-[size=sm]/menu-button:top-1",
1981
- "peer-data-[size=default]/menu-button:top-1.5",
1982
- "peer-data-[size=lg]/menu-button:top-2.5",
1983
- "group-data-[collapsible=icon]:hidden",
1984
- className
1985
- ),
1986
- ...props
1987
- }
1988
- );
1989
- });
1990
- SidebarMenuBadge.displayName = "SidebarMenuBadge";
1991
- SidebarMenuSkeleton = React11__namespace.forwardRef(({ className, showIcon = false, ...props }, ref) => {
1992
- const width = React11__namespace.useMemo(() => {
1993
- return `${Math.floor(Math.random() * 40) + 50}%`;
1994
- }, []);
1995
- return /* @__PURE__ */ jsxRuntime.jsxs(
1996
- "div",
1997
- {
1998
- ref,
1999
- "data-sidebar": "menu-skeleton",
2000
- className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
2001
- ...props,
2002
- children: [
2003
- showIcon && /* @__PURE__ */ jsxRuntime.jsx(
2004
- "div",
2005
- {
2006
- className: "size-4 rounded-md animate-pulse bg-muted",
2007
- "data-sidebar": "menu-skeleton-icon"
2008
- }
2009
- ),
2010
- /* @__PURE__ */ jsxRuntime.jsx(
2011
- "div",
2012
- {
2013
- className: "h-4 flex-1 max-w-[--skeleton-width] animate-pulse bg-muted rounded-full",
2014
- "data-sidebar": "menu-skeleton-text",
2015
- style: {
2016
- "--skeleton-width": width
2017
- }
2018
- }
2019
- )
2020
- ]
2021
- }
2022
- );
2023
- });
2024
- SidebarMenuSkeleton.displayName = "SidebarMenuSkeleton";
2025
- SidebarMenuSub = React11__namespace.forwardRef(({ className, ...props }, ref) => {
2026
- return /* @__PURE__ */ jsxRuntime.jsx(
2027
- "ul",
2028
- {
2029
- ref,
2030
- "data-sidebar": "menu-sub",
2031
- className: cn(
2032
- "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",
2033
- // Hide when collapsed, show when hover-expanded
2034
- "group-data-[collapsible=icon]:hidden group-data-[hover-expanded=true]:!flex",
2035
- className
2036
- ),
2037
- ...props
2038
- }
2039
- );
2040
- });
2041
- SidebarMenuSub.displayName = "SidebarMenuSub";
2042
- SidebarMenuSubItem = React11__namespace.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("li", { ref, ...props }));
2043
- SidebarMenuSubItem.displayName = "SidebarMenuSubItem";
2044
- SidebarMenuSubButton = React11__namespace.forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref) => {
2045
- const Comp = asChild ? reactSlot.Slot : "a";
2046
- return /* @__PURE__ */ jsxRuntime.jsx(
2047
- Comp,
2048
- {
2049
- ref,
2050
- "data-sidebar": "menu-sub-button",
2051
- "data-size": size,
2052
- "data-active": isActive,
2053
- className: cn(
2054
- "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",
2055
- "data-[active=true]:bg-primary/15 data-[active=true]:!text-primary data-[active=true]:font-bold",
2056
- size === "sm" && "text-xs",
2057
- size === "md" && "text-sm",
2058
- className
2059
- ),
2060
- ...props
2061
- }
2062
- );
2063
- });
2064
- SidebarMenuSubButton.displayName = "SidebarMenuSubButton";
2065
- }
2066
- });
2067
- function Spinner({ size = "md", className }) {
2068
- const sizeClasses = {
2069
- sm: "h-4 w-4",
2070
- md: "h-6 w-6",
2071
- lg: "h-8 w-8"
2072
- };
2073
- return /* @__PURE__ */ jsxRuntime.jsx(
2074
- "div",
2075
- {
2076
- className: cn(
2077
- "animate-spin rounded-full border-2 border-current border-t-transparent",
2078
- sizeClasses[size],
2079
- className
2080
- )
2081
- }
2082
- );
2083
- }
2084
- var Textarea, ButtonLoading;
2085
- var init_primitives = __esm({
2086
- "src/ui/primitives/index.tsx"() {
2087
- init_utils();
2088
- init_button();
2089
- init_badge();
2090
- init_button();
2091
- init_input();
2092
- init_checkbox();
2093
- init_card();
2094
- init_separator();
2095
- init_card();
2096
- init_table();
2097
- init_dropdown_menu();
2098
- init_dialog();
2099
- init_tabs();
2100
- init_breadcrumb();
2101
- init_keyboard();
2102
- init_pagination();
2103
- init_status_badge();
2104
- init_sidebar();
2105
- init_popover();
2106
- init_scroll_area();
2107
- init_calendar();
2108
- init_resizable();
2109
- init_slider();
2110
- init_switch();
2111
- init_tooltip();
2112
- init_select();
2113
- init_menubar();
2114
- init_navigation_menu();
2115
- init_toggle();
2116
- init_toggle_group();
2117
- init_combobox();
2118
- init_label();
2119
- Textarea = React11__namespace.forwardRef(
2120
- ({ className, ...props }, ref) => {
2121
- return /* @__PURE__ */ jsxRuntime.jsx(
2122
- "textarea",
2123
- {
2124
- className: cn(
2125
- "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",
2126
- className
2127
- ),
2128
- ref,
2129
- ...props
2130
- }
2131
- );
2132
- }
2133
- );
2134
- Textarea.displayName = "Textarea";
2135
- ButtonLoading = React11__namespace.forwardRef(({ className, isLoading, children, disabled, ...props }, ref) => {
2136
- return /* @__PURE__ */ jsxRuntime.jsxs(
2137
- Button,
2138
- {
2139
- className: cn("gap-2", className),
2140
- disabled: isLoading || disabled,
2141
- ref,
2142
- ...props,
2143
- children: [
2144
- isLoading && /* @__PURE__ */ jsxRuntime.jsx(Spinner, { size: "sm" }),
2145
- children
2146
- ]
2147
- }
2148
- );
2149
- });
2150
- ButtonLoading.displayName = "ButtonLoading";
2151
- }
2152
- });
2153
- function Alert({
2154
- className,
2155
- variant,
2156
- ...props
2157
- }) {
2158
- return /* @__PURE__ */ jsxRuntime.jsx(
2159
- "div",
2160
- {
2161
- "data-slot": "alert",
2162
- role: "alert",
2163
- className: cn(exports.alertVariants({ variant }), className),
2164
- ...props
2165
- }
2166
- );
2167
- }
2168
- function AlertTitle({ className, ...props }) {
2169
- return /* @__PURE__ */ jsxRuntime.jsx(
2170
- "h5",
2171
- {
2172
- "data-slot": "alert-title",
2173
- className: cn("mb-1 font-medium leading-none tracking-tight", className),
2174
- ...props
2175
- }
2176
- );
2177
- }
2178
- function AlertDescription({
2179
- className,
2180
- ...props
2181
- }) {
2182
- return /* @__PURE__ */ jsxRuntime.jsx(
2183
- "div",
2184
- {
2185
- "data-slot": "alert-description",
2186
- className: cn("text-sm [&_p]:leading-relaxed", className),
2187
- ...props
2188
- }
2189
- );
2190
- }
2191
- exports.alertVariants = void 0;
2192
- var init_alert = __esm({
2193
- "src/ui/feedback/alert.tsx"() {
2194
- init_utils();
2195
- exports.alertVariants = classVarianceAuthority.cva(
2196
- "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",
2197
- {
2198
- variants: {
2199
- variant: {
2200
- default: "bg-background text-foreground",
2201
- destructive: "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive"
2202
- }
2203
- },
2204
- defaultVariants: {
2205
- variant: "default"
2206
- }
2207
- }
2208
- );
2209
- }
2210
- });
2211
- function useErrorDialog() {
2212
- const context = React11.useContext(ErrorDialogContext);
2213
- if (!context) {
2214
- throw new Error("useErrorDialog must be used within ErrorDialogProvider");
2215
- }
2216
- return context;
2217
- }
2218
- function ErrorDialogProvider({ children }) {
2219
- const [open, setOpen] = React11.useState(false);
2220
- const [data, setData] = React11.useState({});
2221
- const [expanded, setExpanded] = React11.useState(false);
2222
- const [copied, setCopied] = React11.useState(false);
2223
- React11.useEffect(() => {
2224
- const unsubscribe = exports.globalError.subscribe((errorData) => {
2225
- setData(errorData);
2226
- setOpen(true);
2227
- setExpanded(false);
2228
- setCopied(false);
2229
- });
2230
- return unsubscribe;
2231
- }, []);
2232
- const showError = React11.useCallback((input) => {
2233
- let errorData = {};
2234
- if (input instanceof Error) {
2235
- errorData = {
2236
- title: input.name || "Error",
2237
- description: input.message,
2238
- trace: input.stack
2239
- };
2240
- } else if (typeof input === "string") {
2241
- errorData = {
2242
- title: "Error",
2243
- description: input
2244
- };
2245
- } else {
2246
- errorData = input;
2247
- }
2248
- setData(errorData);
2249
- setOpen(true);
2250
- setExpanded(false);
2251
- setCopied(false);
2252
- }, []);
2253
- const dismiss = React11.useCallback(() => {
2254
- setOpen(false);
2255
- }, []);
2256
- const buildFullDiagnostic = React11.useCallback(() => {
2257
- if (data.trace && data.trace.startsWith("=== Th\xF4ng tin l\u1ED7i")) {
2258
- return data.trace;
2259
- }
2260
- const parts = [
2261
- `=== Th\xF4ng tin l\u1ED7i ===`
2262
- ];
2263
- if (data.code) parts.push(`M\xE3 l\u1ED7i: ${data.code}`);
2264
- parts.push(`Th\u1EDDi gian: ${(/* @__PURE__ */ new Date()).toLocaleString("vi-VN", {
2265
- timeZone: "Asia/Ho_Chi_Minh",
2266
- day: "2-digit",
2267
- month: "2-digit",
2268
- year: "numeric",
2269
- hour: "2-digit",
2270
- minute: "2-digit",
2271
- second: "2-digit"
2272
- })}`);
2273
- if (data.title) parts.push(`L\u1ED7i: ${data.title}`);
2274
- if (data.description && typeof data.description === "string") {
2275
- parts.push(`M\xF4 t\u1EA3: ${data.description}`);
2276
- }
2277
- if (data.trace) {
2278
- parts.push(`
2279
- Chi ti\u1EBFt:
2280
- ${data.trace}`);
2281
- }
2282
- return parts.join("\n");
2283
- }, [data]);
2284
- const copyAll = React11.useCallback(async () => {
2285
- const text = buildFullDiagnostic();
2286
- try {
2287
- await navigator.clipboard.writeText(text);
2288
- setCopied(true);
2289
- setTimeout(() => setCopied(false), 2e3);
2290
- } catch {
2291
- const textarea = document.createElement("textarea");
2292
- textarea.value = text;
2293
- textarea.style.position = "fixed";
2294
- textarea.style.opacity = "0";
2295
- document.body.appendChild(textarea);
2296
- textarea.select();
2297
- document.execCommand("copy");
2298
- document.body.removeChild(textarea);
2299
- setCopied(true);
2300
- setTimeout(() => setCopied(false), 2e3);
2301
- }
2302
- }, [buildFullDiagnostic]);
2303
- const copyTrace = () => {
2304
- if (data.trace) {
2305
- navigator.clipboard.writeText(data.trace);
2306
- }
2307
- };
2308
- return /* @__PURE__ */ jsxRuntime.jsxs(ErrorDialogContext.Provider, { value: { showError, dismiss }, children: [
2309
- children,
2310
- /* @__PURE__ */ jsxRuntime.jsx(exports.Dialog, { open, onOpenChange: setOpen, children: /* @__PURE__ */ jsxRuntime.jsxs(exports.DialogContent, { className: "max-w-md md:max-w-xl sm:max-w-lg border-destructive/20", children: [
2311
- /* @__PURE__ */ jsxRuntime.jsxs(exports.DialogHeader, { children: [
2312
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-destructive", children: [
2313
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-2 bg-destructive/10 rounded-full", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertTriangle, { className: "h-6 w-6" }) }),
2314
- /* @__PURE__ */ jsxRuntime.jsx(exports.DialogTitle, { className: "text-xl", children: data.title || "\u0110\xE3 x\u1EA3y ra l\u1ED7i" })
2315
- ] }),
2316
- /* @__PURE__ */ jsxRuntime.jsx(exports.DialogDescription, { className: "text-base pt-2 text-foreground font-medium", children: data.description }),
2317
- data.code && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-xs text-muted-foreground font-mono mt-1", children: [
2318
- "M\xE3 l\u1ED7i: ",
2319
- data.code
2320
- ] })
2321
- ] }),
2322
- data.trace && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 border rounded-md bg-muted/30 overflow-hidden", children: [
2323
- /* @__PURE__ */ jsxRuntime.jsx(
2324
- "button",
2325
- {
2326
- onClick: () => setExpanded(!expanded),
2327
- className: "w-full flex items-center justify-between p-2 text-sm font-medium hover:bg-muted/50 transition-colors",
2328
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
2329
- expanded ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "h-4 w-4" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "h-4 w-4" }),
2330
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Chi ti\u1EBFt l\u1ED7i & Trace Log" })
2331
- ] })
2332
- }
2333
- ),
2334
- expanded && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative border-t bg-muted/50", children: [
2335
- /* @__PURE__ */ jsxRuntime.jsx(ScrollArea, { className: "h-[200px] w-full p-4", children: /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "text-xs font-mono whitespace-pre-wrap break-all text-muted-foreground", children: data.trace }) }),
2336
- /* @__PURE__ */ jsxRuntime.jsx(
2337
- Button,
2338
- {
2339
- variant: "ghost",
2340
- size: "icon",
2341
- className: "absolute top-2 right-2 h-6 w-6",
2342
- onClick: copyTrace,
2343
- title: "Copy Trace Log",
2344
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Copy, { className: "h-3 w-3" })
2345
- }
2346
- )
2347
- ] })
2348
- ] }),
2349
- /* @__PURE__ */ jsxRuntime.jsxs(exports.DialogFooter, { className: "flex-row gap-2 sm:justify-between", children: [
2350
- /* @__PURE__ */ jsxRuntime.jsx(
2351
- Button,
2352
- {
2353
- variant: "outline",
2354
- size: "sm",
2355
- onClick: copyAll,
2356
- className: "gap-1.5 text-xs",
2357
- children: copied ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2358
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-3.5 w-3.5 text-green-600" }),
2359
- "\u0110\xE3 sao ch\xE9p"
2360
- ] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2361
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ClipboardCopy, { className: "h-3.5 w-3.5" }),
2362
- "Sao ch\xE9p th\xF4ng tin l\u1ED7i"
2363
- ] })
2364
- }
2365
- ),
2366
- /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "outline", onClick: dismiss, children: "\u0110\xF3ng" })
2367
- ] })
2368
- ] }) })
2369
- ] });
2370
- }
2371
- var GlobalErrorEmitter; exports.globalError = void 0; var ErrorDialogContext;
2372
- var init_error_dialog = __esm({
2373
- "src/ui/feedback/error-dialog.tsx"() {
2374
- "use client";
2375
- init_primitives();
2376
- GlobalErrorEmitter = class {
2377
- constructor() {
2378
- this.listeners = [];
2379
- }
2380
- subscribe(listener) {
2381
- this.listeners.push(listener);
2382
- return () => {
2383
- this.listeners = this.listeners.filter((l) => l !== listener);
2384
- };
2385
- }
2386
- emit(data) {
2387
- this.listeners.forEach((listener) => listener(data));
2388
- }
2389
- };
2390
- exports.globalError = new GlobalErrorEmitter();
2391
- ErrorDialogContext = React11.createContext(null);
2392
- }
2393
- });
2394
- function AlertDialog({
2395
- ...props
2396
- }) {
2397
- return /* @__PURE__ */ jsxRuntime.jsx(AlertDialogPrimitive__namespace.Root, { "data-slot": "alert-dialog", ...props });
2398
- }
2399
- function AlertDialogTrigger({
2400
- className,
2401
- ...props
2402
- }) {
2403
- return /* @__PURE__ */ jsxRuntime.jsx(
2404
- AlertDialogPrimitive__namespace.Trigger,
2405
- {
2406
- "data-slot": "alert-dialog-trigger",
2407
- className: cn("cursor-pointer", className),
2408
- ...props
2409
- }
2410
- );
2411
- }
2412
- function AlertDialogPortal({
2413
- ...props
2414
- }) {
2415
- return /* @__PURE__ */ jsxRuntime.jsx(AlertDialogPrimitive__namespace.Portal, { "data-slot": "alert-dialog-portal", ...props });
2416
- }
2417
- function AlertDialogOverlay({
2418
- className,
2419
- ...props
2420
- }) {
2421
- return /* @__PURE__ */ jsxRuntime.jsx(
2422
- AlertDialogPrimitive__namespace.Overlay,
2423
- {
2424
- "data-slot": "alert-dialog-overlay",
2425
- className: cn(
2426
- "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",
2427
- className
2428
- ),
2429
- ...props
2430
- }
2431
- );
2432
- }
2433
- function AlertDialogContent({
2434
- className,
2435
- ...props
2436
- }) {
2437
- return /* @__PURE__ */ jsxRuntime.jsxs(AlertDialogPortal, { children: [
2438
- /* @__PURE__ */ jsxRuntime.jsx(AlertDialogOverlay, {}),
2439
- /* @__PURE__ */ jsxRuntime.jsx(
2440
- AlertDialogPrimitive__namespace.Content,
2441
- {
2442
- "data-slot": "alert-dialog-content",
2443
- className: cn(
2444
- "fixed top-[50%] left-[50%] z-50 w-full max-w-[calc(100%-2rem)] grid bg-background translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border 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 sm:max-w-lg",
2445
- className
2446
- ),
2447
- ...props
2448
- }
2449
- )
2450
- ] });
2451
- }
2452
- function AlertDialogHeader({
2453
- className,
2454
- ...props
2455
- }) {
2456
- return /* @__PURE__ */ jsxRuntime.jsx(
2457
- "div",
2458
- {
2459
- "data-slot": "alert-dialog-header",
2460
- className: cn(
2461
- "flex flex-col space-y-2 text-center sm:text-left",
2462
- className
2463
- ),
2464
- ...props
2465
- }
2466
- );
2467
- }
2468
- function AlertDialogFooter({
2469
- className,
2470
- ...props
2471
- }) {
2472
- return /* @__PURE__ */ jsxRuntime.jsx(
2473
- "div",
2474
- {
2475
- "data-slot": "alert-dialog-footer",
2476
- className: cn(
2477
- "flex flex-col-reverse sm:flex-row sm:justify-end sm:gap-x-2",
2478
- className
2479
- ),
2480
- ...props
2481
- }
2482
- );
2483
- }
2484
- function AlertDialogTitle({
2485
- className,
2486
- ...props
2487
- }) {
2488
- return /* @__PURE__ */ jsxRuntime.jsx(
2489
- AlertDialogPrimitive__namespace.Title,
2490
- {
2491
- "data-slot": "alert-dialog-title",
2492
- className: cn("text-lg font-semibold", className),
2493
- ...props
2494
- }
2495
- );
2496
- }
2497
- function AlertDialogDescription({
2498
- className,
2499
- ...props
2500
- }) {
2501
- return /* @__PURE__ */ jsxRuntime.jsx(
2502
- AlertDialogPrimitive__namespace.Description,
2503
- {
2504
- "data-slot": "alert-dialog-description",
2505
- className: cn("text-sm text-muted-foreground", className),
2506
- ...props
2507
- }
2508
- );
2509
- }
2510
- function AlertDialogAction({
2511
- className,
2512
- ...props
2513
- }) {
2514
- return /* @__PURE__ */ jsxRuntime.jsx(
2515
- AlertDialogPrimitive__namespace.Action,
2516
- {
2517
- className: cn(buttonVariants(), className),
2518
- ...props
2519
- }
2520
- );
2521
- }
2522
- function AlertDialogCancel({
2523
- className,
2524
- ...props
2525
- }) {
2526
- return /* @__PURE__ */ jsxRuntime.jsx(
2527
- AlertDialogPrimitive__namespace.Cancel,
2528
- {
2529
- className: cn(
2530
- buttonVariants({ variant: "outline" }),
2531
- "mt-2 sm:mt-0",
2532
- className
2533
- ),
2534
- ...props
2535
- }
2536
- );
2537
- }
2538
- var init_feedback = __esm({
2539
- "src/ui/feedback/index.tsx"() {
2540
- init_primitives();
2541
- init_utils();
2542
- init_primitives();
2543
- init_progress();
2544
- init_sheet();
2545
- init_alert();
2546
- init_context_menu();
2547
- init_drawer();
2548
- init_sonner();
2549
- init_error_dialog();
2550
- }
2551
- });
2552
- init_feedback();
2553
-
2554
- exports.Alert = Alert;
2555
- exports.AlertDescription = AlertDescription;
2556
- exports.AlertDialog = AlertDialog;
2557
- exports.AlertDialogAction = AlertDialogAction;
2558
- exports.AlertDialogCancel = AlertDialogCancel;
2559
- exports.AlertDialogContent = AlertDialogContent;
2560
- exports.AlertDialogDescription = AlertDialogDescription;
2561
- exports.AlertDialogFooter = AlertDialogFooter;
2562
- exports.AlertDialogHeader = AlertDialogHeader;
2563
- exports.AlertDialogOverlay = AlertDialogOverlay;
2564
- exports.AlertDialogPortal = AlertDialogPortal;
2565
- exports.AlertDialogTitle = AlertDialogTitle;
2566
- exports.AlertDialogTrigger = AlertDialogTrigger;
2567
- exports.AlertTitle = AlertTitle;
2568
- exports.ContextMenu = ContextMenu;
2569
- exports.ContextMenuCheckboxItem = ContextMenuCheckboxItem;
2570
- exports.ContextMenuContent = ContextMenuContent;
2571
- exports.ContextMenuGroup = ContextMenuGroup;
2572
- exports.ContextMenuItem = ContextMenuItem;
2573
- exports.ContextMenuLabel = ContextMenuLabel;
2574
- exports.ContextMenuPortal = ContextMenuPortal;
2575
- exports.ContextMenuRadioGroup = ContextMenuRadioGroup;
2576
- exports.ContextMenuRadioItem = ContextMenuRadioItem;
2577
- exports.ContextMenuSeparator = ContextMenuSeparator;
2578
- exports.ContextMenuShortcut = ContextMenuShortcut;
2579
- exports.ContextMenuSub = ContextMenuSub;
2580
- exports.ContextMenuSubContent = ContextMenuSubContent;
2581
- exports.ContextMenuSubTrigger = ContextMenuSubTrigger;
2582
- exports.ContextMenuTrigger = ContextMenuTrigger;
2583
- exports.Drawer = Drawer;
2584
- exports.DrawerClose = DrawerClose;
2585
- exports.DrawerContent = DrawerContent;
2586
- exports.DrawerDescription = DrawerDescription;
2587
- exports.DrawerFooter = DrawerFooter;
2588
- exports.DrawerHeader = DrawerHeader;
2589
- exports.DrawerOverlay = DrawerOverlay;
2590
- exports.DrawerPortal = DrawerPortal;
2591
- exports.DrawerTitle = DrawerTitle;
2592
- exports.DrawerTrigger = DrawerTrigger;
2593
- exports.ErrorDialogProvider = ErrorDialogProvider;
2594
- exports.Progress = Progress;
2595
- exports.Sheet = Sheet;
2596
- exports.SheetClose = SheetClose;
2597
- exports.SheetContent = SheetContent;
2598
- exports.SheetDescription = SheetDescription;
2599
- exports.SheetFooter = SheetFooter;
2600
- exports.SheetHeader = SheetHeader;
2601
- exports.SheetOverlay = SheetOverlay;
2602
- exports.SheetPortal = SheetPortal;
2603
- exports.SheetTitle = SheetTitle;
2604
- exports.SheetTrigger = SheetTrigger;
2605
- exports.Toaster = Toaster;
2606
- exports.useErrorDialog = useErrorDialog;
2607
- //# sourceMappingURL=feedback.js.map
2608
- //# sourceMappingURL=feedback.js.map