@freightos/freightwind 1.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 (198) hide show
  1. package/dist/cjs/components/accordion.js +57 -0
  2. package/dist/cjs/components/alert.js +76 -0
  3. package/dist/cjs/components/aspect-ratio.js +39 -0
  4. package/dist/cjs/components/avatar.js +75 -0
  5. package/dist/cjs/components/badge.js +24 -0
  6. package/dist/cjs/components/breadcrumb.js +65 -0
  7. package/dist/cjs/components/button.js +76 -0
  8. package/dist/cjs/components/calendar.js +106 -0
  9. package/dist/cjs/components/card.js +59 -0
  10. package/dist/cjs/components/chart.js +176 -0
  11. package/dist/cjs/components/checkbox.js +44 -0
  12. package/dist/cjs/components/chip.js +26 -0
  13. package/dist/cjs/components/collapsible.js +43 -0
  14. package/dist/cjs/components/command.js +73 -0
  15. package/dist/cjs/components/context-menu.js +83 -0
  16. package/dist/cjs/components/country-select.js +155 -0
  17. package/dist/cjs/components/date-picker.js +59 -0
  18. package/dist/cjs/components/date-range-picker.js +59 -0
  19. package/dist/cjs/components/date-time-picker.js +106 -0
  20. package/dist/cjs/components/dialog.js +70 -0
  21. package/dist/cjs/components/drawer.js +68 -0
  22. package/dist/cjs/components/dropdown-menu.js +85 -0
  23. package/dist/cjs/components/empty.js +42 -0
  24. package/dist/cjs/components/file-preview.js +73 -0
  25. package/dist/cjs/components/form.js +106 -0
  26. package/dist/cjs/components/inline-edit.js +83 -0
  27. package/dist/cjs/components/input-group.js +70 -0
  28. package/dist/cjs/components/input-otp.js +58 -0
  29. package/dist/cjs/components/input.js +57 -0
  30. package/dist/cjs/components/label.js +45 -0
  31. package/dist/cjs/components/menubar.js +96 -0
  32. package/dist/cjs/components/navigation-menu.js +68 -0
  33. package/dist/cjs/components/pagination.js +65 -0
  34. package/dist/cjs/components/phone-input.js +218 -0
  35. package/dist/cjs/components/popover.js +49 -0
  36. package/dist/cjs/components/progress.js +43 -0
  37. package/dist/cjs/components/radio-button-group.js +84 -0
  38. package/dist/cjs/components/radio-group.js +50 -0
  39. package/dist/cjs/components/resizable.js +47 -0
  40. package/dist/cjs/components/rich-text-editor.js +152 -0
  41. package/dist/cjs/components/route.js +47 -0
  42. package/dist/cjs/components/scroll-area.js +48 -0
  43. package/dist/cjs/components/select.js +71 -0
  44. package/dist/cjs/components/separator.js +43 -0
  45. package/dist/cjs/components/sheet.js +245 -0
  46. package/dist/cjs/components/skeleton.js +8 -0
  47. package/dist/cjs/components/slider.js +47 -0
  48. package/dist/cjs/components/sonner.js +25 -0
  49. package/dist/cjs/components/spinner.js +25 -0
  50. package/dist/cjs/components/stepper.js +99 -0
  51. package/dist/cjs/components/steps.js +127 -0
  52. package/dist/cjs/components/switch.js +66 -0
  53. package/dist/cjs/components/table.js +66 -0
  54. package/dist/cjs/components/tabs.js +51 -0
  55. package/dist/cjs/components/textarea.js +44 -0
  56. package/dist/cjs/components/time-picker.js +110 -0
  57. package/dist/cjs/components/toast.js +75 -0
  58. package/dist/cjs/components/toaster.js +12 -0
  59. package/dist/cjs/components/toggle-group.js +58 -0
  60. package/dist/cjs/components/toggle.js +62 -0
  61. package/dist/cjs/components/tooltip.js +49 -0
  62. package/dist/cjs/hooks/use-toast.js +166 -0
  63. package/dist/cjs/index.js +88 -0
  64. package/dist/cjs/lib/countryUtils.js +93 -0
  65. package/dist/cjs/lib/utils.js +8 -0
  66. package/dist/esm/components/accordion.js +18 -0
  67. package/dist/esm/components/alert.js +39 -0
  68. package/dist/esm/components/aspect-ratio.js +3 -0
  69. package/dist/esm/components/avatar.js +37 -0
  70. package/dist/esm/components/badge.js +20 -0
  71. package/dist/esm/components/breadcrumb.js +23 -0
  72. package/dist/esm/components/button.js +39 -0
  73. package/dist/esm/components/calendar.js +70 -0
  74. package/dist/esm/components/card.js +18 -0
  75. package/dist/esm/components/chart.js +135 -0
  76. package/dist/esm/components/checkbox.js +8 -0
  77. package/dist/esm/components/chip.js +22 -0
  78. package/dist/esm/components/collapsible.js +5 -0
  79. package/dist/esm/components/command.js +29 -0
  80. package/dist/esm/components/context-menu.js +33 -0
  81. package/dist/esm/components/country-select.js +118 -0
  82. package/dist/esm/components/date-picker.js +23 -0
  83. package/dist/esm/components/date-range-picker.js +23 -0
  84. package/dist/esm/components/date-time-picker.js +70 -0
  85. package/dist/esm/components/dialog.js +24 -0
  86. package/dist/esm/components/drawer.js +23 -0
  87. package/dist/esm/components/dropdown-menu.js +35 -0
  88. package/dist/esm/components/empty.js +6 -0
  89. package/dist/esm/components/file-preview.js +69 -0
  90. package/dist/esm/components/form.js +63 -0
  91. package/dist/esm/components/inline-edit.js +47 -0
  92. package/dist/esm/components/input-group.js +63 -0
  93. package/dist/esm/components/input-otp.js +19 -0
  94. package/dist/esm/components/input.js +21 -0
  95. package/dist/esm/components/label.js +9 -0
  96. package/dist/esm/components/menubar.js +45 -0
  97. package/dist/esm/components/navigation-menu.js +24 -0
  98. package/dist/esm/components/pagination.js +23 -0
  99. package/dist/esm/components/phone-input.js +181 -0
  100. package/dist/esm/components/popover.js +10 -0
  101. package/dist/esm/components/progress.js +7 -0
  102. package/dist/esm/components/radio-button-group.js +47 -0
  103. package/dist/esm/components/radio-group.js +13 -0
  104. package/dist/esm/components/resizable.js +9 -0
  105. package/dist/esm/components/rich-text-editor.js +145 -0
  106. package/dist/esm/components/route.js +11 -0
  107. package/dist/esm/components/scroll-area.js +11 -0
  108. package/dist/esm/components/select.js +26 -0
  109. package/dist/esm/components/separator.js +7 -0
  110. package/dist/esm/components/sheet.js +197 -0
  111. package/dist/esm/components/skeleton.js +6 -0
  112. package/dist/esm/components/slider.js +11 -0
  113. package/dist/esm/components/sonner.js +22 -0
  114. package/dist/esm/components/spinner.js +21 -0
  115. package/dist/esm/components/stepper.js +57 -0
  116. package/dist/esm/components/steps.js +80 -0
  117. package/dist/esm/components/switch.js +30 -0
  118. package/dist/esm/components/table.js +22 -0
  119. package/dist/esm/components/tabs.js +12 -0
  120. package/dist/esm/components/textarea.js +8 -0
  121. package/dist/esm/components/time-picker.js +74 -0
  122. package/dist/esm/components/toast.js +33 -0
  123. package/dist/esm/components/toaster.js +9 -0
  124. package/dist/esm/components/toggle-group.js +21 -0
  125. package/dist/esm/components/toggle.js +25 -0
  126. package/dist/esm/components/tooltip.js +10 -0
  127. package/dist/esm/hooks/use-toast.js +128 -0
  128. package/dist/esm/index.js +67 -0
  129. package/dist/esm/lib/countryUtils.js +87 -0
  130. package/dist/esm/lib/utils.js +5 -0
  131. package/dist/styles.css +152 -0
  132. package/dist/types/components/accordion.d.ts +11 -0
  133. package/dist/types/components/alert.d.ts +12 -0
  134. package/dist/types/components/aspect-ratio.d.ts +3 -0
  135. package/dist/types/components/avatar.d.ts +19 -0
  136. package/dist/types/components/badge.d.ts +9 -0
  137. package/dist/types/components/breadcrumb.d.ts +19 -0
  138. package/dist/types/components/button.d.ts +14 -0
  139. package/dist/types/components/calendar.d.ts +7 -0
  140. package/dist/types/components/card.d.ts +11 -0
  141. package/dist/types/components/chart.d.ts +66 -0
  142. package/dist/types/components/checkbox.d.ts +4 -0
  143. package/dist/types/components/chip.d.ts +10 -0
  144. package/dist/types/components/collapsible.d.ts +5 -0
  145. package/dist/types/components/command.d.ts +80 -0
  146. package/dist/types/components/context-menu.d.ts +27 -0
  147. package/dist/types/components/country-select.d.ts +17 -0
  148. package/dist/types/components/date-picker.d.ts +9 -0
  149. package/dist/types/components/date-range-picker.d.ts +10 -0
  150. package/dist/types/components/date-time-picker.d.ts +10 -0
  151. package/dist/types/components/dialog.d.ts +23 -0
  152. package/dist/types/components/drawer.d.ts +22 -0
  153. package/dist/types/components/dropdown-menu.d.ts +27 -0
  154. package/dist/types/components/empty.d.ts +6 -0
  155. package/dist/types/components/file-preview.d.ts +9 -0
  156. package/dist/types/components/form.d.ts +23 -0
  157. package/dist/types/components/inline-edit.d.ts +10 -0
  158. package/dist/types/components/input-group.d.ts +16 -0
  159. package/dist/types/components/input-otp.d.ts +34 -0
  160. package/dist/types/components/input.d.ts +9 -0
  161. package/dist/types/components/label.d.ts +5 -0
  162. package/dist/types/components/menubar.d.ts +28 -0
  163. package/dist/types/components/navigation-menu.d.ts +12 -0
  164. package/dist/types/components/pagination.d.ts +29 -0
  165. package/dist/types/components/phone-input.d.ts +20 -0
  166. package/dist/types/components/popover.d.ts +9 -0
  167. package/dist/types/components/progress.d.ts +4 -0
  168. package/dist/types/components/radio-button-group.d.ts +17 -0
  169. package/dist/types/components/radio-group.d.ts +5 -0
  170. package/dist/types/components/resizable.d.ts +23 -0
  171. package/dist/types/components/rich-text-editor.d.ts +8 -0
  172. package/dist/types/components/route.d.ts +10 -0
  173. package/dist/types/components/scroll-area.d.ts +5 -0
  174. package/dist/types/components/select.d.ts +13 -0
  175. package/dist/types/components/separator.d.ts +4 -0
  176. package/dist/types/components/sheet.d.ts +49 -0
  177. package/dist/types/components/skeleton.d.ts +2 -0
  178. package/dist/types/components/slider.d.ts +4 -0
  179. package/dist/types/components/sonner.d.ts +4 -0
  180. package/dist/types/components/spinner.d.ts +8 -0
  181. package/dist/types/components/stepper.d.ts +17 -0
  182. package/dist/types/components/steps.d.ts +64 -0
  183. package/dist/types/components/switch.d.ts +10 -0
  184. package/dist/types/components/table.d.ts +14 -0
  185. package/dist/types/components/tabs.d.ts +7 -0
  186. package/dist/types/components/textarea.d.ts +3 -0
  187. package/dist/types/components/time-picker.d.ts +10 -0
  188. package/dist/types/components/toast.d.ts +15 -0
  189. package/dist/types/components/toaster.d.ts +1 -0
  190. package/dist/types/components/toggle-group.d.ts +12 -0
  191. package/dist/types/components/toggle.d.ts +12 -0
  192. package/dist/types/components/tooltip.d.ts +7 -0
  193. package/dist/types/hooks/use-toast.d.ts +44 -0
  194. package/dist/types/index.d.ts +62 -0
  195. package/dist/types/lib/countryUtils.d.ts +20 -0
  196. package/dist/types/lib/utils.d.ts +2 -0
  197. package/package.json +84 -0
  198. package/tailwind-preset.js +70 -0
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ 'use client';
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.ChartStyle = exports.ChartLegendContent = exports.ChartLegend = exports.ChartTooltipContent = exports.ChartTooltip = exports.ChartContainer = void 0;
38
+ const jsx_runtime_1 = require("react/jsx-runtime");
39
+ const React = __importStar(require("react"));
40
+ const RechartsPrimitive = __importStar(require("recharts"));
41
+ const utils_1 = require("../lib/utils");
42
+ // Format: { THEME_NAME: CSS_SELECTOR }
43
+ const THEMES = { light: "", dark: ".dark" };
44
+ const ChartContext = React.createContext(null);
45
+ function useChart() {
46
+ const context = React.useContext(ChartContext);
47
+ if (!context) {
48
+ throw new Error("useChart must be used within a <ChartContainer />");
49
+ }
50
+ return context;
51
+ }
52
+ const ChartContainer = React.forwardRef(({ id, className, children, config, ...props }, ref) => {
53
+ const uniqueId = React.useId();
54
+ const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
55
+ return ((0, jsx_runtime_1.jsx)(ChartContext.Provider, { value: { config }, children: (0, jsx_runtime_1.jsxs)("div", { "data-chart": chartId, ref: ref, className: (0, utils_1.cn)("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none", className), ...props, children: [(0, jsx_runtime_1.jsx)(ChartStyle, { id: chartId, config: config }), (0, jsx_runtime_1.jsx)(RechartsPrimitive.ResponsiveContainer, { children: children })] }) }));
56
+ });
57
+ exports.ChartContainer = ChartContainer;
58
+ ChartContainer.displayName = "Chart";
59
+ const ChartStyle = ({ id, config }) => {
60
+ const colorConfig = Object.entries(config).filter(([, config]) => config.theme || config.color);
61
+ if (!colorConfig.length) {
62
+ return null;
63
+ }
64
+ return ((0, jsx_runtime_1.jsx)("style", { dangerouslySetInnerHTML: {
65
+ __html: Object.entries(THEMES)
66
+ .map(([theme, prefix]) => `
67
+ ${prefix} [data-chart=${id}] {
68
+ ${colorConfig
69
+ .map(([key, itemConfig]) => {
70
+ const color = itemConfig.theme?.[theme] ||
71
+ itemConfig.color;
72
+ return color ? ` --color-${key}: ${color};` : null;
73
+ })
74
+ .join("\n")}
75
+ }
76
+ `)
77
+ .join("\n"),
78
+ } }));
79
+ };
80
+ exports.ChartStyle = ChartStyle;
81
+ const ChartTooltip = RechartsPrimitive.Tooltip;
82
+ exports.ChartTooltip = ChartTooltip;
83
+ const ChartTooltipContent = React.forwardRef(({ active, payload, className, indicator = "dot", hideLabel = false, hideIndicator = false, label, labelFormatter, labelClassName, formatter, color, nameKey, labelKey, }, ref) => {
84
+ const { config } = useChart();
85
+ const tooltipLabel = React.useMemo(() => {
86
+ if (hideLabel || !payload?.length) {
87
+ return null;
88
+ }
89
+ const [item] = payload;
90
+ const key = `${labelKey || item?.dataKey || item?.name || "value"}`;
91
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
92
+ const value = !labelKey && typeof label === "string"
93
+ ? config[label]?.label || label
94
+ : itemConfig?.label;
95
+ if (labelFormatter) {
96
+ return ((0, jsx_runtime_1.jsx)("div", { className: (0, utils_1.cn)("font-medium", labelClassName), children: labelFormatter(value, payload) }));
97
+ }
98
+ if (!value) {
99
+ return null;
100
+ }
101
+ return (0, jsx_runtime_1.jsx)("div", { className: (0, utils_1.cn)("font-medium", labelClassName), children: value });
102
+ }, [
103
+ label,
104
+ labelFormatter,
105
+ payload,
106
+ hideLabel,
107
+ labelClassName,
108
+ config,
109
+ labelKey,
110
+ ]);
111
+ if (!active || !payload?.length) {
112
+ return null;
113
+ }
114
+ const nestLabel = payload.length === 1 && indicator !== "dot";
115
+ return ((0, jsx_runtime_1.jsxs)("div", { ref: ref, className: (0, utils_1.cn)("grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl", className), children: [!nestLabel ? tooltipLabel : null, (0, jsx_runtime_1.jsx)("div", { className: "grid gap-1.5", children: payload
116
+ .filter((item) => item.type !== "none")
117
+ .map((item, index) => {
118
+ const key = `${nameKey || item.name || item.dataKey || "value"}`;
119
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
120
+ const indicatorColor = color || item.payload?.fill || item.color;
121
+ return ((0, jsx_runtime_1.jsx)("div", { className: (0, utils_1.cn)("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground", indicator === "dot" && "items-center"), children: formatter && item?.value !== undefined && item.name ? (formatter(item.value, item.name, item, index, item.payload)) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [itemConfig?.icon ? ((0, jsx_runtime_1.jsx)(itemConfig.icon, {})) : (!hideIndicator && ((0, jsx_runtime_1.jsx)("div", { className: (0, utils_1.cn)("shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]", {
122
+ "h-2.5 w-2.5": indicator === "dot",
123
+ "w-1": indicator === "line",
124
+ "w-0 border-[1.5px] border-dashed bg-transparent": indicator === "dashed",
125
+ "my-0.5": nestLabel && indicator === "dashed",
126
+ }), style: {
127
+ "--color-bg": indicatorColor,
128
+ "--color-border": indicatorColor,
129
+ } }))), (0, jsx_runtime_1.jsxs)("div", { className: (0, utils_1.cn)("flex flex-1 justify-between leading-none", nestLabel ? "items-end" : "items-center"), children: [(0, jsx_runtime_1.jsxs)("div", { className: "grid gap-1.5", children: [nestLabel ? tooltipLabel : null, (0, jsx_runtime_1.jsx)("span", { className: "text-muted-foreground", children: itemConfig?.label || item.name })] }), item.value && ((0, jsx_runtime_1.jsx)("span", { className: "font-mono font-medium tabular-nums text-foreground", children: item.value.toLocaleString() }))] })] })) }, item.dataKey));
130
+ }) })] }));
131
+ });
132
+ exports.ChartTooltipContent = ChartTooltipContent;
133
+ ChartTooltipContent.displayName = "ChartTooltip";
134
+ const ChartLegend = RechartsPrimitive.Legend;
135
+ exports.ChartLegend = ChartLegend;
136
+ const ChartLegendContent = React.forwardRef(({ className, hideIcon = false, payload, verticalAlign = "bottom", nameKey }, ref) => {
137
+ const { config } = useChart();
138
+ if (!payload?.length) {
139
+ return null;
140
+ }
141
+ return ((0, jsx_runtime_1.jsx)("div", { ref: ref, className: (0, utils_1.cn)("flex items-center justify-center gap-4", verticalAlign === "top" ? "pb-3" : "pt-3", className), children: payload
142
+ .filter((item) => item.type !== "none")
143
+ .map((item) => {
144
+ const key = `${nameKey || item.dataKey || "value"}`;
145
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
146
+ return ((0, jsx_runtime_1.jsxs)("div", { className: (0, utils_1.cn)("flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"), children: [itemConfig?.icon && !hideIcon ? ((0, jsx_runtime_1.jsx)(itemConfig.icon, {})) : ((0, jsx_runtime_1.jsx)("div", { className: "h-2 w-2 shrink-0 rounded-[2px]", style: {
147
+ backgroundColor: item.color,
148
+ } })), itemConfig?.label] }, item.value));
149
+ }) }));
150
+ });
151
+ exports.ChartLegendContent = ChartLegendContent;
152
+ ChartLegendContent.displayName = "ChartLegend";
153
+ // Helper to extract item config from a payload.
154
+ function getPayloadConfigFromPayload(config, payload, key) {
155
+ if (typeof payload !== "object" || payload === null) {
156
+ return undefined;
157
+ }
158
+ const payloadPayload = "payload" in payload &&
159
+ typeof payload.payload === "object" &&
160
+ payload.payload !== null
161
+ ? payload.payload
162
+ : undefined;
163
+ let configLabelKey = key;
164
+ if (key in payload &&
165
+ typeof payload[key] === "string") {
166
+ configLabelKey = payload[key];
167
+ }
168
+ else if (payloadPayload &&
169
+ key in payloadPayload &&
170
+ typeof payloadPayload[key] === "string") {
171
+ configLabelKey = payloadPayload[key];
172
+ }
173
+ return configLabelKey in config
174
+ ? config[configLabelKey]
175
+ : config[key];
176
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.Checkbox = void 0;
37
+ const jsx_runtime_1 = require("react/jsx-runtime");
38
+ const CheckboxPrimitive = __importStar(require("@radix-ui/react-checkbox"));
39
+ const React = __importStar(require("react"));
40
+ const icons_1 = require("@freightos/icons");
41
+ const utils_1 = require("../lib/utils");
42
+ const Checkbox = React.forwardRef(({ className, ...props }, ref) => ((0, jsx_runtime_1.jsx)(CheckboxPrimitive.Root, { ref: ref, className: (0, utils_1.cn)('peer h-4 w-4 shrink-0 rounded-fds-md border border-fds-gray-40 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]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground', className), ...props, children: (0, jsx_runtime_1.jsx)(CheckboxPrimitive.Indicator, { className: (0, utils_1.cn)('flex items-center justify-center text-current'), children: (0, jsx_runtime_1.jsx)(icons_1.IconCheck, { className: "h-4 w-4" }) }) })));
43
+ exports.Checkbox = Checkbox;
44
+ Checkbox.displayName = CheckboxPrimitive.Root.displayName;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.chipVariants = void 0;
4
+ exports.Chip = Chip;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const class_variance_authority_1 = require("class-variance-authority");
7
+ const icons_1 = require("@freightos/icons");
8
+ const utils_1 = require("../lib/utils");
9
+ const chipVariants = (0, class_variance_authority_1.cva)('inline-flex items-center rounded-full h-5 px-2.5 py-0.5 !text-fds-sm font-fds-regular transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2', {
10
+ variants: {
11
+ type: {
12
+ default: 'bg-fds-purple-10 text-fds-purple',
13
+ neutral: 'bg-fds-gray-20 text-fds-gray-80',
14
+ secondary: 'bg-fds-blue-10 text-fds-blue-40',
15
+ warning: 'bg-fds-yellow-20 text-fds-yellow-40',
16
+ positive: 'bg-fds-green-20 text-fds-green-40',
17
+ },
18
+ },
19
+ defaultVariants: {
20
+ type: 'default',
21
+ },
22
+ });
23
+ exports.chipVariants = chipVariants;
24
+ function Chip({ className, type, onClose, children, ...props }) {
25
+ return ((0, jsx_runtime_1.jsxs)("div", { className: (0, utils_1.cn)(chipVariants({ type }), className), ...props, children: [children, onClose && ((0, jsx_runtime_1.jsx)("span", { onClick: onClose, className: "ms-fds-sm inline-flex cursor-pointer items-center hover:opacity-70", children: (0, jsx_runtime_1.jsx)(icons_1.IconClose, { size: "10px" }) }))] }));
26
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.CollapsibleContent = exports.CollapsibleTrigger = exports.Collapsible = void 0;
37
+ const CollapsiblePrimitive = __importStar(require("@radix-ui/react-collapsible"));
38
+ const Collapsible = CollapsiblePrimitive.Root;
39
+ exports.Collapsible = Collapsible;
40
+ const CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;
41
+ exports.CollapsibleTrigger = CollapsibleTrigger;
42
+ const CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;
43
+ exports.CollapsibleContent = CollapsibleContent;
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ 'use client';
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.CommandSeparator = exports.CommandShortcut = exports.CommandItem = exports.CommandGroup = exports.CommandEmpty = exports.CommandList = exports.CommandInput = exports.CommandDialog = exports.Command = void 0;
38
+ const jsx_runtime_1 = require("react/jsx-runtime");
39
+ const React = __importStar(require("react"));
40
+ const cmdk_1 = require("cmdk");
41
+ const lucide_react_1 = require("lucide-react");
42
+ const utils_1 = require("../lib/utils");
43
+ const dialog_1 = require("./dialog");
44
+ const Command = React.forwardRef(({ className, ...props }, ref) => ((0, jsx_runtime_1.jsx)(cmdk_1.Command, { ref: ref, className: (0, utils_1.cn)('flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground', className), ...props })));
45
+ exports.Command = Command;
46
+ Command.displayName = cmdk_1.Command.displayName;
47
+ const CommandDialog = ({ children, ...props }) => {
48
+ return ((0, jsx_runtime_1.jsx)(dialog_1.Dialog, { ...props, children: (0, jsx_runtime_1.jsx)(dialog_1.DialogContent, { className: "overflow-hidden p-0 shadow-lg", children: (0, jsx_runtime_1.jsx)(Command, { className: "[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5", children: children }) }) }));
49
+ };
50
+ exports.CommandDialog = CommandDialog;
51
+ const CommandInput = React.forwardRef(({ className, ...props }, ref) => ((0, jsx_runtime_1.jsxs)("div", { className: "flex items-center border-b px-3", "cmdk-input-wrapper": "", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }), (0, jsx_runtime_1.jsx)(cmdk_1.Command.Input, { ref: ref, className: (0, utils_1.cn)('flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50', className), ...props })] })));
52
+ exports.CommandInput = CommandInput;
53
+ CommandInput.displayName = cmdk_1.Command.Input.displayName;
54
+ const CommandList = React.forwardRef(({ className, ...props }, ref) => ((0, jsx_runtime_1.jsx)(cmdk_1.Command.List, { ref: ref, className: (0, utils_1.cn)('max-h-[300px] overflow-y-auto overflow-x-hidden', className), ...props })));
55
+ exports.CommandList = CommandList;
56
+ CommandList.displayName = cmdk_1.Command.List.displayName;
57
+ const CommandEmpty = React.forwardRef((props, ref) => ((0, jsx_runtime_1.jsx)(cmdk_1.Command.Empty, { ref: ref, className: "py-6 text-center text-sm", ...props })));
58
+ exports.CommandEmpty = CommandEmpty;
59
+ CommandEmpty.displayName = cmdk_1.Command.Empty.displayName;
60
+ const CommandGroup = React.forwardRef(({ className, ...props }, ref) => ((0, jsx_runtime_1.jsx)(cmdk_1.Command.Group, { ref: ref, className: (0, utils_1.cn)('overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground', className), ...props })));
61
+ exports.CommandGroup = CommandGroup;
62
+ CommandGroup.displayName = cmdk_1.Command.Group.displayName;
63
+ const CommandSeparator = React.forwardRef(({ className, ...props }, ref) => ((0, jsx_runtime_1.jsx)(cmdk_1.Command.Separator, { ref: ref, className: (0, utils_1.cn)('-mx-1 h-px bg-border', className), ...props })));
64
+ exports.CommandSeparator = CommandSeparator;
65
+ CommandSeparator.displayName = cmdk_1.Command.Separator.displayName;
66
+ const CommandItem = React.forwardRef(({ className, ...props }, ref) => ((0, jsx_runtime_1.jsx)(cmdk_1.Command.Item, { ref: ref, className: (0, utils_1.cn)("relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none hover:bg-fds-blue-10 hover:text-foreground data-[disabled=true]:pointer-events-none data-[selected='true']:bg-fds-blue-10 data-[selected=true]:text-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", className), ...props })));
67
+ exports.CommandItem = CommandItem;
68
+ CommandItem.displayName = cmdk_1.Command.Item.displayName;
69
+ const CommandShortcut = ({ className, ...props }) => {
70
+ return ((0, jsx_runtime_1.jsx)("span", { className: (0, utils_1.cn)('ml-auto text-xs tracking-widest text-muted-foreground', className), ...props }));
71
+ };
72
+ exports.CommandShortcut = CommandShortcut;
73
+ CommandShortcut.displayName = 'CommandShortcut';
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ContextMenuRadioGroup = exports.ContextMenuSubTrigger = exports.ContextMenuSubContent = exports.ContextMenuSub = exports.ContextMenuPortal = exports.ContextMenuGroup = exports.ContextMenuShortcut = exports.ContextMenuSeparator = exports.ContextMenuLabel = exports.ContextMenuRadioItem = exports.ContextMenuCheckboxItem = exports.ContextMenuItem = exports.ContextMenuContent = exports.ContextMenuTrigger = exports.ContextMenu = void 0;
37
+ const jsx_runtime_1 = require("react/jsx-runtime");
38
+ const React = __importStar(require("react"));
39
+ const ContextMenuPrimitive = __importStar(require("@radix-ui/react-context-menu"));
40
+ const lucide_react_1 = require("lucide-react");
41
+ const utils_1 = require("../lib/utils");
42
+ const ContextMenu = ContextMenuPrimitive.Root;
43
+ exports.ContextMenu = ContextMenu;
44
+ const ContextMenuTrigger = ContextMenuPrimitive.Trigger;
45
+ exports.ContextMenuTrigger = ContextMenuTrigger;
46
+ const ContextMenuGroup = ContextMenuPrimitive.Group;
47
+ exports.ContextMenuGroup = ContextMenuGroup;
48
+ const ContextMenuPortal = ContextMenuPrimitive.Portal;
49
+ exports.ContextMenuPortal = ContextMenuPortal;
50
+ const ContextMenuSub = ContextMenuPrimitive.Sub;
51
+ exports.ContextMenuSub = ContextMenuSub;
52
+ const ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;
53
+ exports.ContextMenuRadioGroup = ContextMenuRadioGroup;
54
+ const ContextMenuSubTrigger = React.forwardRef(({ className, inset, children, ...props }, ref) => ((0, jsx_runtime_1.jsxs)(ContextMenuPrimitive.SubTrigger, { ref: ref, className: (0, utils_1.cn)("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground", inset && "pl-8", className), ...props, children: [children, (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRight, { className: "ml-auto h-4 w-4" })] })));
55
+ exports.ContextMenuSubTrigger = ContextMenuSubTrigger;
56
+ ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
57
+ const ContextMenuSubContent = React.forwardRef(({ className, ...props }, ref) => ((0, jsx_runtime_1.jsx)(ContextMenuPrimitive.SubContent, { ref: ref, className: (0, utils_1.cn)("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 origin-[--radix-context-menu-content-transform-origin]", className), ...props })));
58
+ exports.ContextMenuSubContent = ContextMenuSubContent;
59
+ ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;
60
+ const ContextMenuContent = React.forwardRef(({ className, ...props }, ref) => ((0, jsx_runtime_1.jsx)(ContextMenuPrimitive.Portal, { children: (0, jsx_runtime_1.jsx)(ContextMenuPrimitive.Content, { ref: ref, className: (0, utils_1.cn)("z-50 max-h-[--radix-context-menu-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in-80 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 origin-[--radix-context-menu-content-transform-origin]", className), ...props }) })));
61
+ exports.ContextMenuContent = ContextMenuContent;
62
+ ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;
63
+ const ContextMenuItem = React.forwardRef(({ className, inset, ...props }, ref) => ((0, jsx_runtime_1.jsx)(ContextMenuPrimitive.Item, { ref: ref, className: (0, utils_1.cn)("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", inset && "pl-8", className), ...props })));
64
+ exports.ContextMenuItem = ContextMenuItem;
65
+ ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;
66
+ const ContextMenuCheckboxItem = React.forwardRef(({ className, children, checked, ...props }, ref) => ((0, jsx_runtime_1.jsxs)(ContextMenuPrimitive.CheckboxItem, { ref: ref, className: (0, utils_1.cn)("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", className), checked: checked, ...props, children: [(0, jsx_runtime_1.jsx)("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: (0, jsx_runtime_1.jsx)(ContextMenuPrimitive.ItemIndicator, { children: (0, jsx_runtime_1.jsx)(lucide_react_1.Check, { className: "h-4 w-4" }) }) }), children] })));
67
+ exports.ContextMenuCheckboxItem = ContextMenuCheckboxItem;
68
+ ContextMenuCheckboxItem.displayName =
69
+ ContextMenuPrimitive.CheckboxItem.displayName;
70
+ const ContextMenuRadioItem = React.forwardRef(({ className, children, ...props }, ref) => ((0, jsx_runtime_1.jsxs)(ContextMenuPrimitive.RadioItem, { ref: ref, className: (0, utils_1.cn)("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", className), ...props, children: [(0, jsx_runtime_1.jsx)("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: (0, jsx_runtime_1.jsx)(ContextMenuPrimitive.ItemIndicator, { children: (0, jsx_runtime_1.jsx)(lucide_react_1.Circle, { className: "h-2 w-2 fill-current" }) }) }), children] })));
71
+ exports.ContextMenuRadioItem = ContextMenuRadioItem;
72
+ ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;
73
+ const ContextMenuLabel = React.forwardRef(({ className, inset, ...props }, ref) => ((0, jsx_runtime_1.jsx)(ContextMenuPrimitive.Label, { ref: ref, className: (0, utils_1.cn)("px-2 py-1.5 text-sm font-semibold text-foreground", inset && "pl-8", className), ...props })));
74
+ exports.ContextMenuLabel = ContextMenuLabel;
75
+ ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;
76
+ const ContextMenuSeparator = React.forwardRef(({ className, ...props }, ref) => ((0, jsx_runtime_1.jsx)(ContextMenuPrimitive.Separator, { ref: ref, className: (0, utils_1.cn)("-mx-1 my-1 h-px bg-border", className), ...props })));
77
+ exports.ContextMenuSeparator = ContextMenuSeparator;
78
+ ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;
79
+ const ContextMenuShortcut = ({ className, ...props }) => {
80
+ return ((0, jsx_runtime_1.jsx)("span", { className: (0, utils_1.cn)("ml-auto text-xs tracking-widest text-muted-foreground", className), ...props }));
81
+ };
82
+ exports.ContextMenuShortcut = ContextMenuShortcut;
83
+ ContextMenuShortcut.displayName = "ContextMenuShortcut";
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ 'use client';
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.CountrySelect = exports.COUNTRIES = void 0;
38
+ const jsx_runtime_1 = require("react/jsx-runtime");
39
+ const utils_1 = require("../lib/utils");
40
+ const countryUtils_1 = require("../lib/countryUtils");
41
+ const icons_1 = require("@freightos/icons");
42
+ const React = __importStar(require("react"));
43
+ // Common countries list - can be extended or replaced via props
44
+ exports.COUNTRIES = [
45
+ { code: 'US', name: 'United States' },
46
+ { code: 'CN', name: 'China' },
47
+ { code: 'GB', name: 'United Kingdom' },
48
+ { code: 'CA', name: 'Canada' },
49
+ { code: 'DE', name: 'Germany' },
50
+ { code: 'FR', name: 'France' },
51
+ { code: 'IT', name: 'Italy' },
52
+ { code: 'ES', name: 'Spain' },
53
+ { code: 'NL', name: 'Netherlands' },
54
+ { code: 'BE', name: 'Belgium' },
55
+ { code: 'CH', name: 'Switzerland' },
56
+ { code: 'AT', name: 'Austria' },
57
+ { code: 'SE', name: 'Sweden' },
58
+ { code: 'NO', name: 'Norway' },
59
+ { code: 'DK', name: 'Denmark' },
60
+ { code: 'FI', name: 'Finland' },
61
+ { code: 'PL', name: 'Poland' },
62
+ { code: 'CZ', name: 'Czech Republic' },
63
+ { code: 'IE', name: 'Ireland' },
64
+ { code: 'PT', name: 'Portugal' },
65
+ { code: 'GR', name: 'Greece' },
66
+ { code: 'JP', name: 'Japan' },
67
+ { code: 'KR', name: 'South Korea' },
68
+ { code: 'IN', name: 'India' },
69
+ { code: 'AU', name: 'Australia' },
70
+ { code: 'NZ', name: 'New Zealand' },
71
+ { code: 'SG', name: 'Singapore' },
72
+ { code: 'HK', name: 'Hong Kong' },
73
+ { code: 'TW', name: 'Taiwan' },
74
+ { code: 'TH', name: 'Thailand' },
75
+ { code: 'MY', name: 'Malaysia' },
76
+ { code: 'ID', name: 'Indonesia' },
77
+ { code: 'PH', name: 'Philippines' },
78
+ { code: 'VN', name: 'Vietnam' },
79
+ { code: 'BR', name: 'Brazil' },
80
+ { code: 'MX', name: 'Mexico' },
81
+ { code: 'AR', name: 'Argentina' },
82
+ { code: 'CL', name: 'Chile' },
83
+ { code: 'CO', name: 'Colombia' },
84
+ { code: 'PE', name: 'Peru' },
85
+ { code: 'ZA', name: 'South Africa' },
86
+ { code: 'EG', name: 'Egypt' },
87
+ { code: 'IL', name: 'Israel' },
88
+ { code: 'AE', name: 'United Arab Emirates' },
89
+ { code: 'SA', name: 'Saudi Arabia' },
90
+ { code: 'TR', name: 'Turkey' },
91
+ { code: 'RU', name: 'Russia' },
92
+ { code: 'UA', name: 'Ukraine' },
93
+ ];
94
+ const CountrySelect = ({ value, onChange, placeholder = 'Select country', mostUsedCountries = ['US', 'CN'], countries = exports.COUNTRIES, className, disabled = false, }) => {
95
+ const [open, setOpen] = React.useState(false);
96
+ const [search, setSearch] = React.useState('');
97
+ const containerRef = React.useRef(null);
98
+ const inputRef = React.useRef(null);
99
+ // Get selected country
100
+ const selectedCountry = countries.find((c) => c.code === value);
101
+ // Filter countries based on search
102
+ const filteredCountries = React.useMemo(() => {
103
+ const searchLower = search.toLowerCase();
104
+ const filtered = countries.filter((country) => country.name.toLowerCase().includes(searchLower) ||
105
+ country.code.toLowerCase().includes(searchLower));
106
+ // Sort: most used first, then alphabetically
107
+ return filtered.sort((a, b) => {
108
+ const aIsMostUsed = mostUsedCountries.includes(a.code);
109
+ const bIsMostUsed = mostUsedCountries.includes(b.code);
110
+ if (aIsMostUsed && !bIsMostUsed)
111
+ return -1;
112
+ if (!aIsMostUsed && bIsMostUsed)
113
+ return 1;
114
+ return a.name.localeCompare(b.name);
115
+ });
116
+ }, [countries, search, mostUsedCountries]);
117
+ // Close on click outside
118
+ React.useEffect(() => {
119
+ const handleClickOutside = (e) => {
120
+ if (containerRef.current &&
121
+ !containerRef.current.contains(e.target)) {
122
+ setOpen(false);
123
+ setSearch('');
124
+ }
125
+ };
126
+ if (open) {
127
+ document.addEventListener('mousedown', handleClickOutside);
128
+ }
129
+ return () => document.removeEventListener('mousedown', handleClickOutside);
130
+ }, [open]);
131
+ const handleSelect = (country) => {
132
+ onChange?.(country.code);
133
+ setOpen(false);
134
+ setSearch('');
135
+ };
136
+ const handleTriggerClick = () => {
137
+ if (!disabled) {
138
+ setOpen(!open);
139
+ if (!open) {
140
+ setTimeout(() => inputRef.current?.focus(), 0);
141
+ }
142
+ }
143
+ };
144
+ return ((0, jsx_runtime_1.jsxs)("div", { ref: containerRef, className: (0, utils_1.cn)('relative', className), children: [(0, jsx_runtime_1.jsxs)("button", { type: "button", onClick: handleTriggerClick, disabled: disabled, className: (0, utils_1.cn)('flex h-[32px] w-full items-center gap-fds-sm rounded-fds-md border border-input-border bg-input px-fds-sm text-fds-base outline-none transition-[color,box-shadow]', open &&
145
+ 'border-[#2075bd] shadow-[0_0_0_2px_var(--fds-color-primary-blue-20)]', disabled && 'cursor-not-allowed opacity-50'), children: [selectedCountry ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("img", { src: (0, countryUtils_1.getCountryFlag)(selectedCountry.code), alt: selectedCountry.code, className: "h-4 w-4 shrink-0 rounded-full object-cover" }), (0, jsx_runtime_1.jsx)("span", { className: "flex-1 truncate text-left", children: selectedCountry.name })] })) : ((0, jsx_runtime_1.jsx)("span", { className: "flex-1 text-left text-muted-foreground", children: placeholder })), (0, jsx_runtime_1.jsx)(icons_1.IconCaretDown, { size: 16, className: (0, utils_1.cn)('shrink-0 text-fds-gray-60 transition-transform', open && 'rotate-180') })] }), open && ((0, jsx_runtime_1.jsxs)("div", { className: "absolute top-full z-50 mt-fds-xs w-full rounded-fds-md border border-border bg-popover shadow-lg", children: [(0, jsx_runtime_1.jsx)("div", { className: "border-b border-border p-fds-xs", children: (0, jsx_runtime_1.jsx)("input", { ref: inputRef, type: "text", value: search, onChange: (e) => setSearch(e.target.value), placeholder: "Search country...", className: "h-[28px] w-full rounded-fds-sm border border-input-border bg-input px-fds-sm text-fds-sm outline-none focus:border-[#2075bd] focus:shadow-[0_0_0_2px_var(--fds-color-primary-blue-20)]" }) }), (0, jsx_runtime_1.jsx)("div", { className: "max-h-[210px] overflow-y-auto p-fds-xs", children: filteredCountries.length === 0 ? ((0, jsx_runtime_1.jsx)("div", { className: "px-fds-sm py-fds-md text-center text-fds-sm text-muted-foreground", children: "No countries found" })) : (filteredCountries.map((country, index) => {
146
+ const isSelected = country.code === value;
147
+ const isMostUsed = mostUsedCountries.includes(country.code);
148
+ const isLastMostUsed = isMostUsed &&
149
+ !search &&
150
+ index === mostUsedCountries.length - 1 &&
151
+ filteredCountries.length > mostUsedCountries.length;
152
+ return ((0, jsx_runtime_1.jsxs)(React.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { onClick: () => handleSelect(country), className: (0, utils_1.cn)('flex cursor-pointer items-center gap-fds-sm rounded-fds-sm px-fds-sm py-fds-xs hover:bg-accent', isSelected && 'bg-accent'), children: [(0, jsx_runtime_1.jsx)("img", { src: (0, countryUtils_1.getCountryFlag)(country.code), alt: country.code, className: "h-6 w-6 shrink-0 rounded-full object-cover" }), (0, jsx_runtime_1.jsx)("span", { className: "flex-1 truncate text-fds-base", children: country.name }), isSelected && ((0, jsx_runtime_1.jsx)(icons_1.IconCheck, { size: 16, className: "shrink-0 text-fds-blue" }))] }), isLastMostUsed && ((0, jsx_runtime_1.jsx)("div", { className: "my-fds-xs h-px bg-border" }))] }, country.code));
153
+ })) })] }))] }));
154
+ };
155
+ exports.CountrySelect = CountrySelect;