@appcorp/shadcn 1.1.99 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (233) hide show
  1. package/components/app-sidebar.js +16 -23
  2. package/components/audio.js +11 -19
  3. package/components/dashboard.js +27 -65
  4. package/components/drawer-generic.js +20 -28
  5. package/components/enhanced-checkbox.js +10 -57
  6. package/components/enhanced-combobox.js +99 -143
  7. package/components/enhanced-drawer-footer.js +22 -31
  8. package/components/enhanced-drawer-header.js +6 -14
  9. package/components/enhanced-dropzone-impl.d.ts +32 -0
  10. package/components/enhanced-dropzone-impl.js +218 -0
  11. package/components/enhanced-dropzone.d.ts +2 -63
  12. package/components/enhanced-dropzone.js +6 -294
  13. package/components/enhanced-input.js +10 -57
  14. package/components/enhanced-label.js +6 -52
  15. package/components/enhanced-radio.js +12 -20
  16. package/components/enhanced-select.js +13 -61
  17. package/components/enhanced-slider.js +11 -58
  18. package/components/enhanced-switch.js +11 -58
  19. package/components/enhanced-table-footer-action.js +11 -19
  20. package/components/enhanced-table-footer-page.js +16 -24
  21. package/components/enhanced-table-footer-pagination.js +11 -21
  22. package/components/enhanced-table-header-action.js +22 -30
  23. package/components/enhanced-table-header-search.js +9 -17
  24. package/components/enhanced-table.js +125 -153
  25. package/components/enhanced-textarea.js +10 -57
  26. package/components/field.d.ts +1 -1
  27. package/components/field.js +31 -88
  28. package/components/image-resize-dialog.js +61 -159
  29. package/components/nav-main.js +32 -78
  30. package/components/nav-projects.js +37 -48
  31. package/components/nav-user.js +41 -51
  32. package/components/show-toast.d.ts +2 -0
  33. package/components/show-toast.js +7 -0
  34. package/components/sidebar.d.ts +1 -1
  35. package/components/sidebar.js +115 -184
  36. package/components/team-switcher.js +36 -47
  37. package/components/theme-provider.js +36 -84
  38. package/components/timeline.d.ts +12 -0
  39. package/components/timeline.js +13 -0
  40. package/components/tooltip.js +10 -59
  41. package/components/ui/accordion.js +17 -67
  42. package/components/ui/alert-dialog.js +32 -89
  43. package/components/ui/alert.d.ts +1 -1
  44. package/components/ui/alert.js +14 -63
  45. package/components/ui/area-chart-v1-impl.d.ts +19 -0
  46. package/components/ui/area-chart-v1-impl.js +75 -0
  47. package/components/ui/area-chart-v1.d.ts +2 -19
  48. package/components/ui/area-chart-v1.js +4 -113
  49. package/components/ui/aspect-ratio.js +3 -39
  50. package/components/ui/avatar.js +13 -62
  51. package/components/ui/badge.d.ts +2 -2
  52. package/components/ui/badge.js +7 -55
  53. package/components/ui/breadcrumb.js +27 -80
  54. package/components/ui/button.d.ts +2 -2
  55. package/components/ui/button.js +10 -58
  56. package/components/ui/calendar-impl.d.ts +8 -0
  57. package/components/ui/calendar-impl.js +55 -0
  58. package/components/ui/calendar.d.ts +2 -8
  59. package/components/ui/calendar.js +5 -108
  60. package/components/ui/card.js +21 -73
  61. package/components/ui/carousel-impl.d.ts +18 -0
  62. package/components/ui/carousel-impl.js +117 -0
  63. package/components/ui/carousel.d.ts +6 -18
  64. package/components/ui/carousel.js +8 -170
  65. package/components/ui/chart-impl.d.ts +62 -0
  66. package/components/ui/chart-impl.js +162 -0
  67. package/components/ui/chart.d.ts +7 -62
  68. package/components/ui/chart.js +9 -219
  69. package/components/ui/checkbox.js +10 -57
  70. package/components/ui/collapsible.js +5 -43
  71. package/components/ui/combobox.js +22 -58
  72. package/components/ui/command-impl.d.ts +80 -0
  73. package/components/ui/command-impl.js +63 -0
  74. package/components/ui/command.d.ts +9 -80
  75. package/components/ui/command.js +12 -117
  76. package/components/ui/context-menu.js +41 -102
  77. package/components/ui/dialog.js +28 -84
  78. package/components/ui/drawer-impl.d.ts +22 -0
  79. package/components/ui/drawer-impl.js +56 -0
  80. package/components/ui/drawer.d.ts +10 -22
  81. package/components/ui/drawer.js +13 -111
  82. package/components/ui/dropdown-menu.js +41 -102
  83. package/components/ui/form.d.ts +4 -2
  84. package/components/ui/form.js +41 -95
  85. package/components/ui/hover-card.js +9 -58
  86. package/components/ui/input-otp-impl.d.ts +34 -0
  87. package/components/ui/input-otp-impl.js +43 -0
  88. package/components/ui/input-otp.d.ts +4 -34
  89. package/components/ui/input-otp.js +7 -92
  90. package/components/ui/input.js +6 -53
  91. package/components/ui/label.d.ts +1 -1
  92. package/components/ui/label.js +9 -56
  93. package/components/ui/language-selector.js +17 -55
  94. package/components/ui/menubar.js +46 -108
  95. package/components/ui/navigation-menu.d.ts +1 -1
  96. package/components/ui/navigation-menu.js +29 -84
  97. package/components/ui/pagination.js +30 -83
  98. package/components/ui/popover.js +10 -60
  99. package/components/ui/progress.js +8 -55
  100. package/components/ui/radio-group.js +12 -60
  101. package/components/ui/resizable-impl.d.ts +24 -0
  102. package/components/ui/resizable-impl.js +27 -0
  103. package/components/ui/resizable.d.ts +3 -24
  104. package/components/ui/resizable.js +6 -78
  105. package/components/ui/scroll-area.js +10 -58
  106. package/components/ui/select.js +34 -90
  107. package/components/ui/separator.js +7 -54
  108. package/components/ui/sheet.d.ts +1 -1
  109. package/components/ui/sheet.js +30 -86
  110. package/components/ui/skeleton.js +5 -21
  111. package/components/ui/slider.js +10 -57
  112. package/components/ui/sonner.js +7 -24
  113. package/components/ui/switch.js +8 -55
  114. package/components/ui/table.js +27 -81
  115. package/components/ui/tabs.js +14 -64
  116. package/components/ui/textarea.js +6 -53
  117. package/components/ui/theme-switcher.js +41 -91
  118. package/components/ui/toggle.d.ts +2 -2
  119. package/components/ui/toggle.js +9 -57
  120. package/data/admin-dashboard.js +16 -19
  121. package/hooks/use-enhanced-combobox.js +47 -124
  122. package/hooks/use-mobile.js +8 -44
  123. package/hooks/use-outside-click.js +6 -10
  124. package/lib/themes.js +1 -4
  125. package/lib/toast-utils.js +78 -120
  126. package/lib/utils.js +4 -11
  127. package/package.json +9 -90
  128. package/utils/transform-breadcrumbs.js +4 -8
  129. package/utils/transform-navitems.js +7 -22
  130. package/components/aceternity-ui/apple-cards-carousel.d.ts +0 -35
  131. package/components/aceternity-ui/apple-cards-carousel.js +0 -263
  132. package/components/shadcn-example/ai-chat/chat-interface.d.ts +0 -11
  133. package/components/shadcn-example/ai-chat/chat-interface.js +0 -70
  134. package/components/shadcn-example/ai-chat/index.d.ts +0 -38
  135. package/components/shadcn-example/ai-chat/index.js +0 -66
  136. package/components/shadcn-example/ai-chat/sidebar.d.ts +0 -15
  137. package/components/shadcn-example/ai-chat/sidebar.js +0 -68
  138. package/components/shadcn-example/ai-chat/welcome-section.d.ts +0 -12
  139. package/components/shadcn-example/ai-chat/welcome-section.js +0 -26
  140. package/components/shadcn-example/authentication/index.d.ts +0 -24
  141. package/components/shadcn-example/authentication/index.js +0 -59
  142. package/components/shadcn-example/authentication/user-auth-form.d.ts +0 -11
  143. package/components/shadcn-example/authentication/user-auth-form.js +0 -54
  144. package/components/shadcn-example/blog-detail-page/comment-section.d.ts +0 -15
  145. package/components/shadcn-example/blog-detail-page/comment-section.js +0 -83
  146. package/components/shadcn-example/blog-detail-page/content.d.ts +0 -7
  147. package/components/shadcn-example/blog-detail-page/content.js +0 -15
  148. package/components/shadcn-example/blog-detail-page/header.d.ts +0 -11
  149. package/components/shadcn-example/blog-detail-page/header.js +0 -36
  150. package/components/shadcn-example/blog-detail-page/index.d.ts +0 -25
  151. package/components/shadcn-example/blog-detail-page/index.js +0 -74
  152. package/components/shadcn-example/blog-page/blog-post-card.d.ts +0 -13
  153. package/components/shadcn-example/blog-page/blog-post-card.js +0 -30
  154. package/components/shadcn-example/blog-page/featured-post-sidebar-item.d.ts +0 -10
  155. package/components/shadcn-example/blog-page/featured-post-sidebar-item.js +0 -19
  156. package/components/shadcn-example/blog-page/index.d.ts +0 -20
  157. package/components/shadcn-example/blog-page/index.js +0 -36
  158. package/components/shadcn-example/coming-soon/countdown.d.ts +0 -2
  159. package/components/shadcn-example/coming-soon/countdown.js +0 -82
  160. package/components/shadcn-example/coming-soon/index.d.ts +0 -10
  161. package/components/shadcn-example/coming-soon/index.js +0 -41
  162. package/components/shadcn-io/color-picker/index.d.ts +0 -43
  163. package/components/shadcn-io/color-picker/index.js +0 -304
  164. package/components/shadcn-io/copy-button/index.d.ts +0 -16
  165. package/components/shadcn-io/copy-button/index.js +0 -121
  166. package/components/shadcn-io/dropzone/index.d.ts +0 -19
  167. package/components/shadcn-io/dropzone/index.js +0 -131
  168. package/components/shadcn-io/gantt/index.d.ts +0 -145
  169. package/components/shadcn-io/gantt/index.js +0 -766
  170. package/components/shadcn-io/table/index.d.ts +0 -60
  171. package/components/shadcn-io/table/index.js +0 -138
  172. package/templates/appcorp-v1/footer/bottom-bar.d.ts +0 -6
  173. package/templates/appcorp-v1/footer/bottom-bar.js +0 -25
  174. package/templates/appcorp-v1/footer/cta.d.ts +0 -6
  175. package/templates/appcorp-v1/footer/cta.js +0 -21
  176. package/templates/appcorp-v1/footer/footer-grid.d.ts +0 -14
  177. package/templates/appcorp-v1/footer/footer-grid.js +0 -52
  178. package/templates/appcorp-v1/footer/index.d.ts +0 -3
  179. package/templates/appcorp-v1/footer/index.js +0 -28
  180. package/templates/appcorp-v1/footer/newsletter.d.ts +0 -11
  181. package/templates/appcorp-v1/footer/newsletter.js +0 -28
  182. package/templates/appcorp-v1/footer/stats.d.ts +0 -6
  183. package/templates/appcorp-v1/footer/stats.js +0 -15
  184. package/templates/appcorp-v1/header/announcement-bar.d.ts +0 -3
  185. package/templates/appcorp-v1/header/announcement-bar.js +0 -15
  186. package/templates/appcorp-v1/header/dropdown-panel.d.ts +0 -8
  187. package/templates/appcorp-v1/header/dropdown-panel.js +0 -72
  188. package/templates/appcorp-v1/header/index.d.ts +0 -12
  189. package/templates/appcorp-v1/header/index.js +0 -16
  190. package/templates/appcorp-v1/header/mobile-menu.d.ts +0 -14
  191. package/templates/appcorp-v1/header/mobile-menu.js +0 -101
  192. package/templates/appcorp-v1/header/navigation-bar.d.ts +0 -3
  193. package/templates/appcorp-v1/header/navigation-bar.js +0 -117
  194. package/templates/appcorp-v1/header/social-button.d.ts +0 -7
  195. package/templates/appcorp-v1/header/social-button.js +0 -48
  196. package/templates/appcorp-v1/home.d.ts +0 -3
  197. package/templates/appcorp-v1/home.js +0 -27
  198. package/templates/data/appcorp-v1.d.ts +0 -93
  199. package/templates/data/appcorp-v1.js +0 -348
  200. package/templates/data/edupilotpro-v1.d.ts +0 -33
  201. package/templates/data/edupilotpro-v1.js +0 -116
  202. package/templates/data/school-v1.d.ts +0 -328
  203. package/templates/data/school-v1.js +0 -1563
  204. package/templates/edupilotpro-v1/feature-card.d.ts +0 -13
  205. package/templates/edupilotpro-v1/feature-card.js +0 -28
  206. package/templates/edupilotpro-v1/mockups/dashboard-mockup.d.ts +0 -3
  207. package/templates/edupilotpro-v1/mockups/dashboard-mockup.js +0 -55
  208. package/templates/school-v1/footer.d.ts +0 -3
  209. package/templates/school-v1/footer.js +0 -75
  210. package/templates/school-v1/index.d.ts +0 -18
  211. package/templates/school-v1/index.js +0 -60
  212. package/templates/school-v1/navigation.d.ts +0 -3
  213. package/templates/school-v1/navigation.js +0 -123
  214. package/templates/school-v1/sections/about.d.ts +0 -3
  215. package/templates/school-v1/sections/about.js +0 -49
  216. package/templates/school-v1/sections/admissions.d.ts +0 -3
  217. package/templates/school-v1/sections/admissions.js +0 -77
  218. package/templates/school-v1/sections/contact.d.ts +0 -3
  219. package/templates/school-v1/sections/contact.js +0 -67
  220. package/templates/school-v1/sections/faqs.d.ts +0 -3
  221. package/templates/school-v1/sections/faqs.js +0 -50
  222. package/templates/school-v1/sections/hero.d.ts +0 -3
  223. package/templates/school-v1/sections/hero.js +0 -132
  224. package/templates/school-v1/sections/management.d.ts +0 -3
  225. package/templates/school-v1/sections/management.js +0 -34
  226. package/templates/school-v1/sections/policies.d.ts +0 -3
  227. package/templates/school-v1/sections/policies.js +0 -127
  228. package/templates/school-v1/sections/programs.d.ts +0 -3
  229. package/templates/school-v1/sections/programs.js +0 -107
  230. package/templates/school-v1/sections/testimonials.d.ts +0 -3
  231. package/templates/school-v1/sections/testimonials.js +0 -46
  232. package/templates/school-v1/sections/why-choose-us.d.ts +0 -3
  233. package/templates/school-v1/sections/why-choose-us.js +0 -57
@@ -1,72 +1,33 @@
1
1
  "use client";
2
- "use strict";
3
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
- if (k2 === undefined) k2 = k;
5
- var desc = Object.getOwnPropertyDescriptor(m, k);
6
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
- desc = { enumerable: true, get: function() { return m[k]; } };
8
- }
9
- Object.defineProperty(o, k2, desc);
10
- }) : (function(o, m, k, k2) {
11
- if (k2 === undefined) k2 = k;
12
- o[k2] = m[k];
13
- }));
14
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
- Object.defineProperty(o, "default", { enumerable: true, value: v });
16
- }) : function(o, v) {
17
- o["default"] = v;
18
- });
19
- var __importStar = (this && this.__importStar) || (function () {
20
- var ownKeys = function(o) {
21
- ownKeys = Object.getOwnPropertyNames || function (o) {
22
- var ar = [];
23
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
- return ar;
25
- };
26
- return ownKeys(o);
27
- };
28
- return function (mod) {
29
- if (mod && mod.__esModule) return mod;
30
- var result = {};
31
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
- __setModuleDefault(result, mod);
33
- return result;
34
- };
35
- })();
36
- Object.defineProperty(exports, "__esModule", { value: true });
37
- exports.EnhancedCombobox = EnhancedCombobox;
38
- exports.CompanyCombobox = CompanyCombobox;
39
- exports.CountryCombobox = CountryCombobox;
40
- var react_1 = __importStar(require("react"));
41
- var lucide_react_1 = require("lucide-react");
42
- var utils_1 = require("../lib/utils");
43
- var button_1 = require("./ui/button");
44
- var enhanced_label_1 = require("./enhanced-label");
45
- var command_1 = require("./ui/command");
46
- var popover_1 = require("./ui/popover");
47
- function VirtualizedList(_a) {
48
- var options = _a.options, selectedValue = _a.selectedValue, onSelect = _a.onSelect, scrollContainer = _a.scrollContainer, testIdOptionPrefix = _a.testIdOptionPrefix;
49
- var _b = (0, react_1.useState)({
2
+ import React, { useState, useRef, useEffect, useCallback } from "react";
3
+ import { Check, ChevronsUpDown, ChevronUp, ChevronDown } from "lucide-react";
4
+ import { cn } from "../lib/utils";
5
+ import { Button } from "./ui/button";
6
+ import { EnhancedLabel } from "./enhanced-label";
7
+ import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, } from "./ui/command";
8
+ import { Popover, PopoverContent, PopoverTrigger } from "./ui/popover";
9
+ function VirtualizedList({ options, selectedValue, onSelect, scrollContainer, testIdOptionPrefix, }) {
10
+ const [visibleRange, setVisibleRange] = useState({
50
11
  start: 0,
51
12
  end: Math.min(options.length, 25), // Increased initial visible items
52
- }), visibleRange = _b[0], setVisibleRange = _b[1];
53
- var handleScroll = (0, react_1.useCallback)(function () {
13
+ });
14
+ const handleScroll = useCallback(() => {
54
15
  if (!scrollContainer.current)
55
16
  return;
56
- var _a = scrollContainer.current, scrollTop = _a.scrollTop, clientHeight = _a.clientHeight;
57
- var itemHeight = 32; // Approximate item height
58
- var containerHeight = clientHeight;
17
+ const { scrollTop, clientHeight } = scrollContainer.current;
18
+ const itemHeight = 32; // Approximate item height
19
+ const containerHeight = clientHeight;
59
20
  // Calculate visible range with proper bounds checking
60
- var start = Math.max(0, Math.floor(scrollTop / itemHeight));
61
- var visibleCount = Math.ceil(containerHeight / itemHeight);
62
- var bufferSize = Math.min(10, Math.ceil(visibleCount * 0.5)); // Dynamic buffer
63
- var end = Math.min(options.length, start + visibleCount + bufferSize);
64
- var newRange = {
21
+ const start = Math.max(0, Math.floor(scrollTop / itemHeight));
22
+ const visibleCount = Math.ceil(containerHeight / itemHeight);
23
+ const bufferSize = Math.min(10, Math.ceil(visibleCount * 0.5)); // Dynamic buffer
24
+ const end = Math.min(options.length, start + visibleCount + bufferSize);
25
+ const newRange = {
65
26
  start: Math.max(0, start - bufferSize),
66
27
  end: end,
67
28
  };
68
29
  // Only update if the range actually changed to prevent unnecessary re-renders
69
- setVisibleRange(function (prevRange) {
30
+ setVisibleRange((prevRange) => {
70
31
  if (prevRange.start !== newRange.start ||
71
32
  prevRange.end !== newRange.end) {
72
33
  return newRange;
@@ -74,36 +35,36 @@ function VirtualizedList(_a) {
74
35
  return prevRange;
75
36
  });
76
37
  }, [options.length, scrollContainer]);
77
- (0, react_1.useEffect)(function () {
78
- var container = scrollContainer.current;
38
+ useEffect(() => {
39
+ const container = scrollContainer.current;
79
40
  if (container) {
80
41
  // Add scroll listener with passive option for better performance
81
42
  container.addEventListener("scroll", handleScroll, { passive: true });
82
43
  // Also listen to parent containers that might interfere (like drawer)
83
- var parentContainer_1 = container.parentElement;
84
- var parentScrollHandler_1 = function () { return handleScroll(); };
85
- while (parentContainer_1) {
86
- var hasOverflow = getComputedStyle(parentContainer_1).overflowY;
44
+ let parentContainer = container.parentElement;
45
+ const parentScrollHandler = () => handleScroll();
46
+ while (parentContainer) {
47
+ const hasOverflow = getComputedStyle(parentContainer).overflowY;
87
48
  if (hasOverflow === "auto" || hasOverflow === "scroll") {
88
- parentContainer_1.addEventListener("scroll", parentScrollHandler_1, {
49
+ parentContainer.addEventListener("scroll", parentScrollHandler, {
89
50
  passive: true,
90
51
  });
91
52
  break;
92
53
  }
93
- parentContainer_1 = parentContainer_1.parentElement;
54
+ parentContainer = parentContainer.parentElement;
94
55
  }
95
- return function () {
56
+ return () => {
96
57
  container.removeEventListener("scroll", handleScroll);
97
- if (parentContainer_1) {
98
- parentContainer_1.removeEventListener("scroll", parentScrollHandler_1);
58
+ if (parentContainer) {
59
+ parentContainer.removeEventListener("scroll", parentScrollHandler);
99
60
  }
100
61
  };
101
62
  }
102
63
  }, [handleScroll, scrollContainer]);
103
64
  // Reset visible range when options change (e.g., due to search filtering)
104
- (0, react_1.useEffect)(function () {
105
- var newEnd = Math.min(options.length, 25);
106
- setVisibleRange(function () {
65
+ useEffect(() => {
66
+ const newEnd = Math.min(options.length, 25);
67
+ setVisibleRange(() => {
107
68
  // Force update if options changed
108
69
  return {
109
70
  start: 0,
@@ -116,29 +77,28 @@ function VirtualizedList(_a) {
116
77
  }
117
78
  }, [options.length, options, scrollContainer]); // Watch both length and options array
118
79
  // Ensure we always have valid visible range
119
- var safeStart = Math.max(0, Math.min(visibleRange.start, options.length - 1));
120
- var safeEnd = Math.max(safeStart + 1, Math.min(visibleRange.end, options.length));
121
- var visibleOptions = options.slice(safeStart, safeEnd);
122
- var topSpacer = safeStart * 32; // Approximate item height
123
- var bottomSpacer = Math.max(0, (options.length - safeEnd) * 32);
124
- return (react_1.default.createElement(react_1.default.Fragment, null,
125
- topSpacer > 0 && react_1.default.createElement("div", { style: { height: topSpacer } }),
126
- visibleOptions.map(function (option, index) { return (react_1.default.createElement(command_1.CommandItem, { key: "".concat(option.value, "-").concat(safeStart + index), value: option.label, onSelect: function () { return onSelect(option.value); }, "data-testid": "".concat(testIdOptionPrefix !== null && testIdOptionPrefix !== void 0 ? testIdOptionPrefix : "combobox-option", "-").concat(option.value), className: "cursor-pointer hover:bg-accent hover:text-accent-foreground transition-colors h-8 flex items-center" },
127
- react_1.default.createElement(lucide_react_1.Check, { className: (0, utils_1.cn)("mr-2 h-4 w-4", selectedValue === option.value ? "opacity-100" : "opacity-0") }),
128
- react_1.default.createElement("span", { className: "truncate" }, option.label))); }),
129
- bottomSpacer > 0 && react_1.default.createElement("div", { style: { height: bottomSpacer } })));
80
+ const safeStart = Math.max(0, Math.min(visibleRange.start, options.length - 1));
81
+ const safeEnd = Math.max(safeStart + 1, Math.min(visibleRange.end, options.length));
82
+ const visibleOptions = options.slice(safeStart, safeEnd);
83
+ const topSpacer = safeStart * 32; // Approximate item height
84
+ const bottomSpacer = Math.max(0, (options.length - safeEnd) * 32);
85
+ return (React.createElement(React.Fragment, null,
86
+ topSpacer > 0 && React.createElement("div", { style: { height: topSpacer } }),
87
+ visibleOptions.map((option, index) => (React.createElement(CommandItem, { key: `${option.value}-${safeStart + index}`, value: option.label, onSelect: () => onSelect(option.value), "data-testid": `${testIdOptionPrefix !== null && testIdOptionPrefix !== void 0 ? testIdOptionPrefix : "combobox-option"}-${option.value}`, className: "cursor-pointer hover:bg-accent hover:text-accent-foreground transition-colors h-8 flex items-center" },
88
+ React.createElement(Check, { className: cn("mr-2 h-4 w-4", selectedValue === option.value ? "opacity-100" : "opacity-0") }),
89
+ React.createElement("span", { className: "truncate" }, option.label)))),
90
+ bottomSpacer > 0 && React.createElement("div", { style: { height: bottomSpacer } })));
130
91
  }
131
- function EnhancedCombobox(_a) {
132
- var className = _a.className, _b = _a.disabled, disabled = _b === void 0 ? false : _b, _c = _a.emptyText, emptyText = _c === void 0 ? "No options found." : _c, error = _a.error, id = _a.id, info = _a.info, label = _a.label, _d = _a.loading, loading = _d === void 0 ? false : _d, _e = _a.maxHeight, maxHeight = _e === void 0 ? 256 : _e, onSearchChange = _a.onSearchChange, onValueChange = _a.onValueChange, _f = _a.options, options = _f === void 0 ? [] : _f, _g = _a.placeholder, placeholder = _g === void 0 ? "Select option..." : _g, _h = _a.required, required = _h === void 0 ? false : _h, _j = _a.searchPlaceholder, searchPlaceholder = _j === void 0 ? "Search..." : _j, _k = _a.showScrollIndicators, showScrollIndicators = _k === void 0 ? true : _k, value = _a.value, _l = _a.virtualizeThreshold, virtualizeThreshold = _l === void 0 ? 50 : _l, testIdTrigger = _a.testIdTrigger, testIdSearchInput = _a.testIdSearchInput, testIdPopoverContent = _a.testIdPopoverContent, testIdEmpty = _a.testIdEmpty, testIdList = _a.testIdList, testIdOptionPrefix = _a.testIdOptionPrefix, testIdScrollUp = _a.testIdScrollUp, testIdScrollDown = _a.testIdScrollDown;
133
- var _m = (0, react_1.useState)(false), open = _m[0], setOpen = _m[1];
134
- var _o = (0, react_1.useState)(""), searchValue = _o[0], setSearchValue = _o[1];
135
- var _p = (0, react_1.useState)(false), canScrollUp = _p[0], setCanScrollUp = _p[1];
136
- var _q = (0, react_1.useState)(false), canScrollDown = _q[0], setCanScrollDown = _q[1];
137
- var scrollContainerRef = (0, react_1.useRef)(null);
138
- var selectedOption = options.find(function (option) { return option.value === value; });
139
- var shouldVirtualize = options.length > virtualizeThreshold;
92
+ export function EnhancedCombobox({ className, disabled = false, emptyText = "No options found.", error, id, info, label, loading = false, maxHeight = 256, onSearchChange, onValueChange, options = [], placeholder = "Select option...", required = false, searchPlaceholder = "Search...", showScrollIndicators = true, value, virtualizeThreshold = 50, testIdTrigger, testIdSearchInput, testIdPopoverContent, testIdEmpty, testIdList, testIdOptionPrefix, testIdScrollUp, testIdScrollDown, }) {
93
+ const [open, setOpen] = useState(false);
94
+ const [searchValue, setSearchValue] = useState("");
95
+ const [canScrollUp, setCanScrollUp] = useState(false);
96
+ const [canScrollDown, setCanScrollDown] = useState(false);
97
+ const scrollContainerRef = useRef(null);
98
+ const selectedOption = options.find((option) => option.value === value);
99
+ const shouldVirtualize = options.length > virtualizeThreshold;
140
100
  // Filter options based on search - always handle filtering at this level for virtualization
141
- var filteredOptions = react_1.default.useMemo(function () {
101
+ const filteredOptions = React.useMemo(() => {
142
102
  if (!searchValue) {
143
103
  // No search query, return all options
144
104
  return options;
@@ -153,15 +113,13 @@ function EnhancedCombobox(_a) {
153
113
  return options;
154
114
  }
155
115
  // Local filtering for non-external search or as fallback
156
- return options.filter(function (option) {
157
- return option.label.toLowerCase().includes(searchValue.toLowerCase());
158
- });
116
+ return options.filter((option) => option.label.toLowerCase().includes(searchValue.toLowerCase()));
159
117
  }, [options, searchValue, onSearchChange, shouldVirtualize]);
160
- var handleSearchChange = function (search) {
118
+ const handleSearchChange = (search) => {
161
119
  setSearchValue(search);
162
120
  onSearchChange === null || onSearchChange === void 0 ? void 0 : onSearchChange(search);
163
121
  };
164
- var handleSelect = function (selectedValue) {
122
+ const handleSelect = (selectedValue) => {
165
123
  if (selectedValue === value) {
166
124
  onValueChange("");
167
125
  }
@@ -172,74 +130,73 @@ function EnhancedCombobox(_a) {
172
130
  setSearchValue("");
173
131
  };
174
132
  // Handle scroll indicators
175
- var updateScrollIndicators = function () {
133
+ const updateScrollIndicators = () => {
176
134
  if (!scrollContainerRef.current)
177
135
  return;
178
- var _a = scrollContainerRef.current, scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;
136
+ const { scrollTop, scrollHeight, clientHeight } = scrollContainerRef.current;
179
137
  setCanScrollUp(scrollTop > 0);
180
138
  setCanScrollDown(scrollTop < scrollHeight - clientHeight - 1);
181
139
  };
182
140
  // Update scroll indicators when options change or component opens
183
- (0, react_1.useEffect)(function () {
141
+ useEffect(() => {
184
142
  if (open) {
185
143
  // Small delay to ensure DOM is updated
186
144
  setTimeout(updateScrollIndicators, 10);
187
145
  }
188
146
  }, [open, options]);
189
- var scrollToTop = function () {
147
+ const scrollToTop = () => {
190
148
  var _a;
191
149
  (_a = scrollContainerRef.current) === null || _a === void 0 ? void 0 : _a.scrollTo({ top: 0, behavior: "smooth" });
192
150
  };
193
- var scrollToBottom = function () {
151
+ const scrollToBottom = () => {
194
152
  if (!scrollContainerRef.current)
195
153
  return;
196
- var scrollHeight = scrollContainerRef.current.scrollHeight;
154
+ const { scrollHeight } = scrollContainerRef.current;
197
155
  scrollContainerRef.current.scrollTo({
198
156
  top: scrollHeight,
199
157
  behavior: "smooth",
200
158
  });
201
159
  };
202
- var comboboxElement = (react_1.default.createElement(popover_1.Popover, { open: open, onOpenChange: setOpen, modal: true },
203
- react_1.default.createElement(popover_1.PopoverTrigger, { asChild: true },
204
- react_1.default.createElement(button_1.Button, { id: id, "data-testid": testIdTrigger, variant: "outline", role: "combobox", "aria-expanded": open, disabled: disabled, className: (0, utils_1.cn)("w-full justify-between", !selectedOption && "text-muted-foreground", className) },
160
+ const comboboxElement = (React.createElement(Popover, { open: open, onOpenChange: setOpen, modal: true },
161
+ React.createElement(PopoverTrigger, { asChild: true },
162
+ React.createElement(Button, { id: id, "data-testid": testIdTrigger, variant: "outline", role: "combobox", "aria-expanded": open, disabled: disabled, className: cn("w-full justify-between", !selectedOption && "text-muted-foreground", className) },
205
163
  (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label) || placeholder,
206
- react_1.default.createElement(lucide_react_1.ChevronsUpDown, { className: "ml-2 h-4 w-4 shrink-0 opacity-50" }))),
207
- react_1.default.createElement(popover_1.PopoverContent, { "data-testid": testIdPopoverContent, className: "w-[var(--radix-popover-trigger-width)] p-0", side: "bottom", align: "start", avoidCollisions: true, collisionPadding: 8, style: { zIndex: 1000 }, onOpenAutoFocus: function (e) { return e.preventDefault(); } },
208
- react_1.default.createElement(command_1.Command, { shouldFilter: false },
209
- react_1.default.createElement(command_1.CommandInput, { "data-slot": "command-input", "data-testid": testIdSearchInput, placeholder: searchPlaceholder, value: searchValue, onValueChange: handleSearchChange }),
210
- react_1.default.createElement(command_1.CommandEmpty, { "data-slot": "command-empty", "data-testid": testIdEmpty }, loading ? (react_1.default.createElement("div", { className: "flex items-center justify-center py-6" },
211
- react_1.default.createElement("div", { className: "animate-spin rounded-full h-4 w-4 border-b-2 border-primary" }),
212
- react_1.default.createElement("span", { className: "ml-2 text-sm" }, "Searching..."))) : (emptyText)),
213
- react_1.default.createElement("div", { className: "relative" },
214
- showScrollIndicators && canScrollUp && (react_1.default.createElement("div", { className: "absolute top-0 left-0 right-0 z-10 h-8 bg-gradient-to-b from-background to-transparent pointer-events-none" },
215
- react_1.default.createElement("button", { "data-testid": testIdScrollUp, onClick: scrollToTop, className: "absolute top-1 left-1/2 transform -translate-x-1/2 p-1 rounded-full bg-background shadow-sm border pointer-events-auto hover:bg-muted transition-colors", "aria-label": "Scroll to top" },
216
- react_1.default.createElement(lucide_react_1.ChevronUp, { className: "h-3 w-3" })))),
217
- react_1.default.createElement(command_1.CommandGroup, { "data-testid": testIdList, ref: scrollContainerRef, className: (0, utils_1.cn)("overflow-y-auto smooth-scroll", "scrollbar-thin scrollbar-thumb-muted-foreground/20 scrollbar-track-transparent hover:scrollbar-thumb-muted-foreground/40", "scroll-smooth", filteredOptions.length > 10 && "pb-2" // Extra padding for many options
218
- ), style: { maxHeight: "".concat(maxHeight, "px") }, onScroll: updateScrollIndicators }, shouldVirtualize &&
164
+ React.createElement(ChevronsUpDown, { className: "ml-2 h-4 w-4 shrink-0 opacity-50" }))),
165
+ React.createElement(PopoverContent, { "data-testid": testIdPopoverContent, className: "w-[var(--radix-popover-trigger-width)] p-0", side: "bottom", align: "start", avoidCollisions: true, collisionPadding: 8, style: { zIndex: 1000 }, onOpenAutoFocus: (e) => e.preventDefault() },
166
+ React.createElement(Command, { shouldFilter: false },
167
+ React.createElement(CommandInput, { "data-slot": "command-input", "data-testid": testIdSearchInput, placeholder: searchPlaceholder, value: searchValue, onValueChange: handleSearchChange }),
168
+ React.createElement(CommandEmpty, { "data-slot": "command-empty", "data-testid": testIdEmpty }, loading ? (React.createElement("div", { className: "flex items-center justify-center py-6" },
169
+ React.createElement("div", { className: "animate-spin rounded-full h-4 w-4 border-b-2 border-primary" }),
170
+ React.createElement("span", { className: "ml-2 text-sm" }, "Searching..."))) : (emptyText)),
171
+ React.createElement("div", { className: "relative" },
172
+ showScrollIndicators && canScrollUp && (React.createElement("div", { className: "absolute top-0 left-0 right-0 z-10 h-8 bg-gradient-to-b from-background to-transparent pointer-events-none" },
173
+ React.createElement("button", { "data-testid": testIdScrollUp, onClick: scrollToTop, className: "absolute top-1 left-1/2 transform -translate-x-1/2 p-1 rounded-full bg-background shadow-sm border pointer-events-auto hover:bg-muted transition-colors", "aria-label": "Scroll to top" },
174
+ React.createElement(ChevronUp, { className: "h-3 w-3" })))),
175
+ React.createElement(CommandGroup, { "data-testid": testIdList, ref: scrollContainerRef, className: cn("overflow-y-auto smooth-scroll", "scrollbar-thin scrollbar-thumb-muted-foreground/20 scrollbar-track-transparent hover:scrollbar-thumb-muted-foreground/40", "scroll-smooth", filteredOptions.length > 10 && "pb-2" // Extra padding for many options
176
+ ), style: { maxHeight: `${maxHeight}px` }, onScroll: updateScrollIndicators }, shouldVirtualize &&
219
177
  filteredOptions.length > virtualizeThreshold ? (
220
178
  // Virtualized rendering for large lists
221
- react_1.default.createElement(VirtualizedList, { options: filteredOptions, selectedValue: value, onSelect: handleSelect, scrollContainer: scrollContainerRef, testIdOptionPrefix: testIdOptionPrefix })) : (
179
+ React.createElement(VirtualizedList, { options: filteredOptions, selectedValue: value, onSelect: handleSelect, scrollContainer: scrollContainerRef, testIdOptionPrefix: testIdOptionPrefix })) : (
222
180
  // Regular rendering for smaller lists or filtered results
223
- filteredOptions.map(function (option) { return (react_1.default.createElement(command_1.CommandItem, { key: option.value, value: option.label, onSelect: function () { return handleSelect(option.value); }, "data-testid": "".concat(testIdOptionPrefix !== null && testIdOptionPrefix !== void 0 ? testIdOptionPrefix : "combobox-option", "-").concat(option.value), className: "cursor-pointer hover:bg-accent hover:text-accent-foreground transition-colors" },
224
- react_1.default.createElement(lucide_react_1.Check, { className: (0, utils_1.cn)("mr-2 h-4 w-4", value === option.value ? "opacity-100" : "opacity-0") }),
225
- react_1.default.createElement("span", { className: "truncate" }, option.label))); }))),
226
- showScrollIndicators && canScrollDown && (react_1.default.createElement("div", { className: "absolute bottom-0 left-0 right-0 z-10 h-8 bg-gradient-to-t from-background to-transparent pointer-events-none" },
227
- react_1.default.createElement("button", { "data-testid": testIdScrollDown, onClick: scrollToBottom, className: "absolute bottom-1 left-1/2 transform -translate-x-1/2 p-1 rounded-full bg-background shadow-sm border pointer-events-auto hover:bg-muted transition-colors", "aria-label": "Scroll to bottom" },
228
- react_1.default.createElement(lucide_react_1.ChevronDown, { className: "h-3 w-3" })))))))));
181
+ filteredOptions.map((option) => (React.createElement(CommandItem, { key: option.value, value: option.label, onSelect: () => handleSelect(option.value), "data-testid": `${testIdOptionPrefix !== null && testIdOptionPrefix !== void 0 ? testIdOptionPrefix : "combobox-option"}-${option.value}`, className: "cursor-pointer hover:bg-accent hover:text-accent-foreground transition-colors" },
182
+ React.createElement(Check, { className: cn("mr-2 h-4 w-4", value === option.value ? "opacity-100" : "opacity-0") }),
183
+ React.createElement("span", { className: "truncate" }, option.label)))))),
184
+ showScrollIndicators && canScrollDown && (React.createElement("div", { className: "absolute bottom-0 left-0 right-0 z-10 h-8 bg-gradient-to-t from-background to-transparent pointer-events-none" },
185
+ React.createElement("button", { "data-testid": testIdScrollDown, onClick: scrollToBottom, className: "absolute bottom-1 left-1/2 transform -translate-x-1/2 p-1 rounded-full bg-background shadow-sm border pointer-events-auto hover:bg-muted transition-colors", "aria-label": "Scroll to bottom" },
186
+ React.createElement(ChevronDown, { className: "h-3 w-3" })))))))));
229
187
  // If label is provided, render the complete combobox with label structure
230
188
  if (label) {
231
- return (react_1.default.createElement("div", { className: "w-full space-y-2" },
232
- react_1.default.createElement(enhanced_label_1.EnhancedLabel, { htmlFor: id, required: required }, label),
189
+ return (React.createElement("div", { className: "w-full space-y-2" },
190
+ React.createElement(EnhancedLabel, { htmlFor: id, required: required }, label),
233
191
  comboboxElement,
234
- error && (react_1.default.createElement("p", { className: "text-xs text-destructive dark:text-red-400" }, error)),
235
- info && !error && (react_1.default.createElement("p", { className: "text-xs text-blue-600 dark:text-blue-400" }, info))));
192
+ error && (React.createElement("p", { className: "text-xs text-destructive dark:text-red-400" }, error)),
193
+ info && !error && (React.createElement("p", { className: "text-xs text-blue-600 dark:text-blue-400" }, info))));
236
194
  }
237
195
  // If no label, render just the combobox (backward compatibility)
238
196
  return comboboxElement;
239
197
  }
240
- function CompanyCombobox(_a) {
241
- var _b = _a.companies, companies = _b === void 0 ? [] : _b, value = _a.value, onValueChange = _a.onValueChange, onSearchChange = _a.onSearchChange, _c = _a.loading, loading = _c === void 0 ? false : _c, _d = _a.placeholder, placeholder = _d === void 0 ? "Select company..." : _d, className = _a.className, _e = _a.maxHeight, maxHeight = _e === void 0 ? 320 : _e, _f = _a.showScrollIndicators, showScrollIndicators = _f === void 0 ? true : _f, label = _a.label, _g = _a.required, required = _g === void 0 ? false : _g, id = _a.id, info = _a.info, error = _a.error;
242
- var options = companies.map(function (company) {
198
+ export function CompanyCombobox({ companies = [], value, onValueChange, onSearchChange, loading = false, placeholder = "Select company...", className, maxHeight = 320, showScrollIndicators = true, label, required = false, id, info, error, }) {
199
+ const options = companies.map((company) => {
243
200
  var _a, _b;
244
201
  return ({
245
202
  value: ((_a = company.id) === null || _a === void 0 ? void 0 : _a.toString()) || "",
@@ -247,12 +204,11 @@ function CompanyCombobox(_a) {
247
204
  id: (_b = company.id) === null || _b === void 0 ? void 0 : _b.toString(),
248
205
  });
249
206
  });
250
- return (react_1.default.createElement(EnhancedCombobox, { options: options, value: value, onValueChange: onValueChange, onSearchChange: onSearchChange, placeholder: placeholder, searchPlaceholder: "Search companies...", emptyText: "No companies found.", loading: loading, className: className, maxHeight: maxHeight, showScrollIndicators: showScrollIndicators, virtualizeThreshold: 100, label: label, required: required, id: id, info: info, error: error }));
207
+ return (React.createElement(EnhancedCombobox, { options: options, value: value, onValueChange: onValueChange, onSearchChange: onSearchChange, placeholder: placeholder, searchPlaceholder: "Search companies...", emptyText: "No companies found.", loading: loading, className: className, maxHeight: maxHeight, showScrollIndicators: showScrollIndicators, virtualizeThreshold: 100, label: label, required: required, id: id, info: info, error: error }));
251
208
  }
252
- function CountryCombobox(_a) {
253
- var _b = _a.countries, countries = _b === void 0 ? [] : _b, value = _a.value, onValueChange = _a.onValueChange, onSearchChange = _a.onSearchChange, _c = _a.loading, loading = _c === void 0 ? false : _c, _d = _a.placeholder, placeholder = _d === void 0 ? "Select country..." : _d, className = _a.className, _e = _a.maxHeight, maxHeight = _e === void 0 ? 280 : _e, _f = _a.showScrollIndicators, showScrollIndicators = _f === void 0 ? true : _f, label = _a.label, _g = _a.required, required = _g === void 0 ? false : _g, id = _a.id, info = _a.info, error = _a.error;
209
+ export function CountryCombobox({ countries = [], value, onValueChange, onSearchChange, loading = false, placeholder = "Select country...", className, maxHeight = 280, showScrollIndicators = true, label, required = false, id, info, error, }) {
254
210
  // Default countries if none provided or if provided list is empty
255
- var defaultCountries = [
211
+ const defaultCountries = [
256
212
  { name: "Afghanistan", code: "AF" },
257
213
  { name: "Albania", code: "AL" },
258
214
  { name: "Algeria", code: "DZ" },
@@ -306,10 +262,10 @@ function CountryCombobox(_a) {
306
262
  { name: "United States", code: "US" },
307
263
  { name: "Vietnam", code: "VN" },
308
264
  ];
309
- var countryList = countries.length > 0 ? countries : defaultCountries;
310
- var options = countryList.map(function (country) { return ({
265
+ const countryList = countries.length > 0 ? countries : defaultCountries;
266
+ const options = countryList.map((country) => ({
311
267
  value: country.name,
312
268
  label: country.name,
313
- }); });
314
- return (react_1.default.createElement(EnhancedCombobox, { options: options, value: value, onValueChange: onValueChange, onSearchChange: onSearchChange, placeholder: placeholder, searchPlaceholder: "Search countries...", emptyText: "No countries found.", loading: loading, className: className, maxHeight: maxHeight, showScrollIndicators: showScrollIndicators, virtualizeThreshold: 30, label: label, required: required, id: id, info: info, error: error }));
269
+ }));
270
+ return (React.createElement(EnhancedCombobox, { options: options, value: value, onValueChange: onValueChange, onSearchChange: onSearchChange, placeholder: placeholder, searchPlaceholder: "Search countries...", emptyText: "No countries found.", loading: loading, className: className, maxHeight: maxHeight, showScrollIndicators: showScrollIndicators, virtualizeThreshold: 30, label: label, required: required, id: id, info: info, error: error }));
315
271
  }
@@ -1,39 +1,30 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.EnhancedDrawerFooter = exports.DRAWER_FOOTER_COMPONENT_TYPE = void 0;
7
- var button_1 = require("./ui/button");
8
- var react_1 = __importDefault(require("react"));
9
- var DRAWER_FOOTER_COMPONENT_TYPE;
1
+ import { Button } from "./ui/button";
2
+ import React from "react";
3
+ export var DRAWER_FOOTER_COMPONENT_TYPE;
10
4
  (function (DRAWER_FOOTER_COMPONENT_TYPE) {
11
5
  DRAWER_FOOTER_COMPONENT_TYPE["MORE_ACTIONS_DRAWER"] = "MORE_ACTIONS_DRAWER";
12
6
  DRAWER_FOOTER_COMPONENT_TYPE["FILTER_DRAWER"] = "FILTER_DRAWER";
13
7
  DRAWER_FOOTER_COMPONENT_TYPE["FORM_DRAWER"] = "FORM_DRAWER";
14
8
  DRAWER_FOOTER_COMPONENT_TYPE["VIEW_DRAWER"] = "VIEW_DRAWER";
15
- })(DRAWER_FOOTER_COMPONENT_TYPE || (exports.DRAWER_FOOTER_COMPONENT_TYPE = DRAWER_FOOTER_COMPONENT_TYPE = {}));
16
- var EnhancedDrawerFooter = function (_a) {
17
- var _b;
18
- var applyFilters = _a.applyFilters, clearFilters = _a.clearFilters, closeDrawer = _a.closeDrawer, disableSaveButton = _a.disableSaveButton, drawerType = _a.drawerType, errors = _a.errors, handleSubmit = _a.handleSubmit, updateLoading = _a.updateLoading;
19
- var componentMap = (_b = {},
20
- _b[DRAWER_FOOTER_COMPONENT_TYPE.MORE_ACTIONS_DRAWER] = (react_1.default.createElement(react_1.default.Fragment, null,
21
- react_1.default.createElement("div", { className: "flex gap-2" },
22
- react_1.default.createElement(button_1.Button, { className: "flex-1", onClick: clearFilters, variant: "outline" }, "Close")))),
23
- _b[DRAWER_FOOTER_COMPONENT_TYPE.FILTER_DRAWER] = (react_1.default.createElement(react_1.default.Fragment, null,
24
- react_1.default.createElement("div", { className: "flex gap-2" },
25
- react_1.default.createElement(button_1.Button, { className: "flex-1", onClick: clearFilters, variant: "outline" }, "Clear All"),
26
- react_1.default.createElement(button_1.Button, { className: "flex-1", onClick: applyFilters }, "Apply Filters")))),
27
- _b[DRAWER_FOOTER_COMPONENT_TYPE.FORM_DRAWER] = (react_1.default.createElement(react_1.default.Fragment, null,
28
- react_1.default.createElement("div", { className: "flex gap-2" },
29
- react_1.default.createElement(button_1.Button, { className: "flex-1", onClick: closeDrawer, variant: "outline" }, "Cancel"),
30
- react_1.default.createElement(button_1.Button, { className: "flex-1", onClick: handleSubmit, variant: "default", disabled: updateLoading ||
9
+ })(DRAWER_FOOTER_COMPONENT_TYPE || (DRAWER_FOOTER_COMPONENT_TYPE = {}));
10
+ export const EnhancedDrawerFooter = ({ applyFilters, clearFilters, closeDrawer, disableSaveButton, drawerType, errors, handleSubmit, updateLoading, }) => {
11
+ const componentMap = {
12
+ [DRAWER_FOOTER_COMPONENT_TYPE.MORE_ACTIONS_DRAWER]: (React.createElement(React.Fragment, null,
13
+ React.createElement("div", { className: "flex gap-2" },
14
+ React.createElement(Button, { className: "flex-1", onClick: clearFilters, variant: "outline" }, "Close")))),
15
+ [DRAWER_FOOTER_COMPONENT_TYPE.FILTER_DRAWER]: (React.createElement(React.Fragment, null,
16
+ React.createElement("div", { className: "flex gap-2" },
17
+ React.createElement(Button, { className: "flex-1", onClick: clearFilters, variant: "outline" }, "Clear All"),
18
+ React.createElement(Button, { className: "flex-1", onClick: applyFilters }, "Apply Filters")))),
19
+ [DRAWER_FOOTER_COMPONENT_TYPE.FORM_DRAWER]: (React.createElement(React.Fragment, null,
20
+ React.createElement("div", { className: "flex gap-2" },
21
+ React.createElement(Button, { className: "flex-1", onClick: closeDrawer, variant: "outline" }, "Cancel"),
22
+ React.createElement(Button, { className: "flex-1", onClick: handleSubmit, variant: "default", disabled: updateLoading ||
31
23
  disableSaveButton ||
32
24
  (errors && Object.keys(errors).length > 0) }, "Save")))),
33
- _b[DRAWER_FOOTER_COMPONENT_TYPE.VIEW_DRAWER] = (react_1.default.createElement(react_1.default.Fragment, null,
34
- react_1.default.createElement("div", { className: "flex gap-2" },
35
- react_1.default.createElement(button_1.Button, { className: "flex-1", onClick: closeDrawer }, "Close")))),
36
- _b);
37
- return react_1.default.createElement(react_1.default.Fragment, null, componentMap[drawerType]);
25
+ [DRAWER_FOOTER_COMPONENT_TYPE.VIEW_DRAWER]: (React.createElement(React.Fragment, null,
26
+ React.createElement("div", { className: "flex gap-2" },
27
+ React.createElement(Button, { className: "flex-1", onClick: closeDrawer }, "Close")))),
28
+ };
29
+ return React.createElement(React.Fragment, null, componentMap[drawerType]);
38
30
  };
39
- exports.EnhancedDrawerFooter = EnhancedDrawerFooter;
@@ -1,15 +1,7 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
1
+ import { DrawerDescription, DrawerTitle } from "./ui/drawer";
2
+ import React from "react";
3
+ export const EnhancedDrawerHeader = ({ title, description, }) => {
4
+ return (React.createElement(React.Fragment, null,
5
+ React.createElement(DrawerTitle, null, title),
6
+ React.createElement(DrawerDescription, null, description)));
4
7
  };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.EnhancedDrawerHeader = void 0;
7
- var drawer_1 = require("./ui/drawer");
8
- var react_1 = __importDefault(require("react"));
9
- var EnhancedDrawerHeader = function (_a) {
10
- var title = _a.title, description = _a.description;
11
- return (react_1.default.createElement(react_1.default.Fragment, null,
12
- react_1.default.createElement(drawer_1.DrawerTitle, null, title),
13
- react_1.default.createElement(drawer_1.DrawerDescription, null, description)));
14
- };
15
- exports.EnhancedDrawerHeader = EnhancedDrawerHeader;
@@ -0,0 +1,32 @@
1
+ import React from "react";
2
+ import type { DropzoneOptions } from "react-dropzone";
3
+ export type EnhancedDropzoneProps = {
4
+ id?: string;
5
+ className?: string;
6
+ label?: string;
7
+ info?: string;
8
+ error?: string;
9
+ accept?: DropzoneOptions["accept"] | string[];
10
+ maxFiles?: number;
11
+ maxSize?: number;
12
+ minSize?: number;
13
+ disabled?: boolean;
14
+ value?: string[];
15
+ onChange?: (files: File[]) => void;
16
+ onRemoveRemote?: (url: string) => void;
17
+ resize?: boolean;
18
+ testIdDropzone?: string;
19
+ testIdInput?: string;
20
+ testIdPrev?: string;
21
+ testIdNext?: string;
22
+ testIdPreviewPrefix?: string;
23
+ testIdImagePrefix?: string;
24
+ testIdRemovePrefix?: string;
25
+ testIdCount?: string;
26
+ testIdEmptyIcon?: string;
27
+ testIdEmptyTitle?: string;
28
+ testIdEmptySubtitle?: string;
29
+ testIdEmptyNote?: string;
30
+ testIdMessage?: string;
31
+ };
32
+ export declare const EnhancedDropzone: React.FC<EnhancedDropzoneProps>;