@freightos/freightwind 1.0.0 → 1.1.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 (210) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +28 -0
  3. package/dist/cjs/components/alert.js +33 -16
  4. package/dist/cjs/components/avatar.js +53 -58
  5. package/dist/cjs/components/badge.js +42 -18
  6. package/dist/cjs/components/button.js +35 -24
  7. package/dist/cjs/components/checkbox.js +21 -3
  8. package/dist/cjs/components/chip.js +67 -9
  9. package/dist/cjs/components/message.js +38 -0
  10. package/dist/cjs/components/pop-confirm.js +86 -0
  11. package/dist/cjs/components/radio-button-group.js +31 -35
  12. package/dist/cjs/components/radio-group.js +2 -1
  13. package/dist/cjs/components/slider.js +14 -6
  14. package/dist/cjs/components/switch.js +29 -10
  15. package/dist/cjs/components/tooltip.js +40 -11
  16. package/dist/cjs/index.js +38 -84
  17. package/dist/cjs/lib/icon-utils.js +5 -0
  18. package/dist/cjs/{components/aspect-ratio.js → lib/use-stable-id.js} +7 -4
  19. package/dist/cjs/lib/utils.js +18 -1
  20. package/dist/esm/components/alert.js +34 -17
  21. package/dist/esm/components/avatar.js +53 -22
  22. package/dist/esm/components/badge.js +45 -19
  23. package/dist/esm/components/button.js +36 -25
  24. package/dist/esm/components/checkbox.js +22 -4
  25. package/dist/esm/components/chip.js +34 -9
  26. package/dist/esm/components/message.js +34 -0
  27. package/dist/esm/components/pop-confirm.js +51 -0
  28. package/dist/esm/components/radio-button-group.js +31 -33
  29. package/dist/esm/components/radio-group.js +2 -1
  30. package/dist/esm/components/slider.js +14 -6
  31. package/dist/esm/components/switch.js +30 -11
  32. package/dist/esm/components/tooltip.js +40 -7
  33. package/dist/esm/index.js +18 -66
  34. package/dist/esm/lib/icon-utils.js +1 -0
  35. package/dist/esm/lib/use-stable-id.js +6 -0
  36. package/dist/esm/lib/utils.js +18 -1
  37. package/dist/types/components/alert.d.ts +5 -5
  38. package/dist/types/components/avatar.d.ts +14 -19
  39. package/dist/types/components/badge.d.ts +22 -8
  40. package/dist/types/components/button.d.ts +15 -9
  41. package/dist/types/components/checkbox.d.ts +8 -2
  42. package/dist/types/components/chip.d.ts +14 -8
  43. package/dist/types/components/message.d.ts +14 -0
  44. package/dist/types/components/pop-confirm.d.ts +28 -0
  45. package/dist/types/components/radio-button-group.d.ts +19 -14
  46. package/dist/types/components/slider.d.ts +10 -2
  47. package/dist/types/components/switch.d.ts +7 -6
  48. package/dist/types/components/tooltip.d.ts +9 -6
  49. package/dist/types/index.d.ts +25 -61
  50. package/dist/types/lib/icon-utils.d.ts +1 -0
  51. package/dist/types/lib/use-stable-id.d.ts +1 -0
  52. package/package.json +62 -54
  53. package/tokens.css +387 -0
  54. package/dist/cjs/components/accordion.js +0 -57
  55. package/dist/cjs/components/breadcrumb.js +0 -65
  56. package/dist/cjs/components/calendar.js +0 -106
  57. package/dist/cjs/components/card.js +0 -59
  58. package/dist/cjs/components/chart.js +0 -176
  59. package/dist/cjs/components/collapsible.js +0 -43
  60. package/dist/cjs/components/command.js +0 -73
  61. package/dist/cjs/components/context-menu.js +0 -83
  62. package/dist/cjs/components/country-select.js +0 -155
  63. package/dist/cjs/components/date-picker.js +0 -59
  64. package/dist/cjs/components/date-range-picker.js +0 -59
  65. package/dist/cjs/components/date-time-picker.js +0 -106
  66. package/dist/cjs/components/dialog.js +0 -70
  67. package/dist/cjs/components/drawer.js +0 -68
  68. package/dist/cjs/components/dropdown-menu.js +0 -85
  69. package/dist/cjs/components/empty.js +0 -42
  70. package/dist/cjs/components/file-preview.js +0 -73
  71. package/dist/cjs/components/form.js +0 -106
  72. package/dist/cjs/components/inline-edit.js +0 -83
  73. package/dist/cjs/components/input-group.js +0 -70
  74. package/dist/cjs/components/input-otp.js +0 -58
  75. package/dist/cjs/components/input.js +0 -57
  76. package/dist/cjs/components/label.js +0 -45
  77. package/dist/cjs/components/menubar.js +0 -96
  78. package/dist/cjs/components/navigation-menu.js +0 -68
  79. package/dist/cjs/components/pagination.js +0 -65
  80. package/dist/cjs/components/phone-input.js +0 -218
  81. package/dist/cjs/components/popover.js +0 -49
  82. package/dist/cjs/components/progress.js +0 -43
  83. package/dist/cjs/components/resizable.js +0 -47
  84. package/dist/cjs/components/rich-text-editor.js +0 -152
  85. package/dist/cjs/components/route.js +0 -47
  86. package/dist/cjs/components/scroll-area.js +0 -48
  87. package/dist/cjs/components/select.js +0 -71
  88. package/dist/cjs/components/separator.js +0 -43
  89. package/dist/cjs/components/sheet.js +0 -245
  90. package/dist/cjs/components/skeleton.js +0 -8
  91. package/dist/cjs/components/sonner.js +0 -25
  92. package/dist/cjs/components/spinner.js +0 -25
  93. package/dist/cjs/components/stepper.js +0 -99
  94. package/dist/cjs/components/steps.js +0 -127
  95. package/dist/cjs/components/table.js +0 -66
  96. package/dist/cjs/components/tabs.js +0 -51
  97. package/dist/cjs/components/textarea.js +0 -44
  98. package/dist/cjs/components/time-picker.js +0 -110
  99. package/dist/cjs/components/toast.js +0 -75
  100. package/dist/cjs/components/toaster.js +0 -12
  101. package/dist/cjs/components/toggle-group.js +0 -58
  102. package/dist/cjs/components/toggle.js +0 -62
  103. package/dist/cjs/hooks/use-toast.js +0 -166
  104. package/dist/cjs/lib/countryUtils.js +0 -93
  105. package/dist/esm/components/accordion.js +0 -18
  106. package/dist/esm/components/aspect-ratio.js +0 -3
  107. package/dist/esm/components/breadcrumb.js +0 -23
  108. package/dist/esm/components/calendar.js +0 -70
  109. package/dist/esm/components/card.js +0 -18
  110. package/dist/esm/components/chart.js +0 -135
  111. package/dist/esm/components/collapsible.js +0 -5
  112. package/dist/esm/components/command.js +0 -29
  113. package/dist/esm/components/context-menu.js +0 -33
  114. package/dist/esm/components/country-select.js +0 -118
  115. package/dist/esm/components/date-picker.js +0 -23
  116. package/dist/esm/components/date-range-picker.js +0 -23
  117. package/dist/esm/components/date-time-picker.js +0 -70
  118. package/dist/esm/components/dialog.js +0 -24
  119. package/dist/esm/components/drawer.js +0 -23
  120. package/dist/esm/components/dropdown-menu.js +0 -35
  121. package/dist/esm/components/empty.js +0 -6
  122. package/dist/esm/components/file-preview.js +0 -69
  123. package/dist/esm/components/form.js +0 -63
  124. package/dist/esm/components/inline-edit.js +0 -47
  125. package/dist/esm/components/input-group.js +0 -63
  126. package/dist/esm/components/input-otp.js +0 -19
  127. package/dist/esm/components/input.js +0 -21
  128. package/dist/esm/components/label.js +0 -9
  129. package/dist/esm/components/menubar.js +0 -45
  130. package/dist/esm/components/navigation-menu.js +0 -24
  131. package/dist/esm/components/pagination.js +0 -23
  132. package/dist/esm/components/phone-input.js +0 -181
  133. package/dist/esm/components/popover.js +0 -10
  134. package/dist/esm/components/progress.js +0 -7
  135. package/dist/esm/components/resizable.js +0 -9
  136. package/dist/esm/components/rich-text-editor.js +0 -145
  137. package/dist/esm/components/route.js +0 -11
  138. package/dist/esm/components/scroll-area.js +0 -11
  139. package/dist/esm/components/select.js +0 -26
  140. package/dist/esm/components/separator.js +0 -7
  141. package/dist/esm/components/sheet.js +0 -197
  142. package/dist/esm/components/skeleton.js +0 -6
  143. package/dist/esm/components/sonner.js +0 -22
  144. package/dist/esm/components/spinner.js +0 -21
  145. package/dist/esm/components/stepper.js +0 -57
  146. package/dist/esm/components/steps.js +0 -80
  147. package/dist/esm/components/table.js +0 -22
  148. package/dist/esm/components/tabs.js +0 -12
  149. package/dist/esm/components/textarea.js +0 -8
  150. package/dist/esm/components/time-picker.js +0 -74
  151. package/dist/esm/components/toast.js +0 -33
  152. package/dist/esm/components/toaster.js +0 -9
  153. package/dist/esm/components/toggle-group.js +0 -21
  154. package/dist/esm/components/toggle.js +0 -25
  155. package/dist/esm/hooks/use-toast.js +0 -128
  156. package/dist/esm/lib/countryUtils.js +0 -87
  157. package/dist/styles.css +0 -152
  158. package/dist/types/components/accordion.d.ts +0 -11
  159. package/dist/types/components/aspect-ratio.d.ts +0 -3
  160. package/dist/types/components/breadcrumb.d.ts +0 -19
  161. package/dist/types/components/calendar.d.ts +0 -7
  162. package/dist/types/components/card.d.ts +0 -11
  163. package/dist/types/components/chart.d.ts +0 -66
  164. package/dist/types/components/collapsible.d.ts +0 -5
  165. package/dist/types/components/command.d.ts +0 -80
  166. package/dist/types/components/context-menu.d.ts +0 -27
  167. package/dist/types/components/country-select.d.ts +0 -17
  168. package/dist/types/components/date-picker.d.ts +0 -9
  169. package/dist/types/components/date-range-picker.d.ts +0 -10
  170. package/dist/types/components/date-time-picker.d.ts +0 -10
  171. package/dist/types/components/dialog.d.ts +0 -23
  172. package/dist/types/components/drawer.d.ts +0 -22
  173. package/dist/types/components/dropdown-menu.d.ts +0 -27
  174. package/dist/types/components/empty.d.ts +0 -6
  175. package/dist/types/components/file-preview.d.ts +0 -9
  176. package/dist/types/components/form.d.ts +0 -23
  177. package/dist/types/components/inline-edit.d.ts +0 -10
  178. package/dist/types/components/input-group.d.ts +0 -16
  179. package/dist/types/components/input-otp.d.ts +0 -34
  180. package/dist/types/components/input.d.ts +0 -9
  181. package/dist/types/components/label.d.ts +0 -5
  182. package/dist/types/components/menubar.d.ts +0 -28
  183. package/dist/types/components/navigation-menu.d.ts +0 -12
  184. package/dist/types/components/pagination.d.ts +0 -29
  185. package/dist/types/components/phone-input.d.ts +0 -20
  186. package/dist/types/components/popover.d.ts +0 -9
  187. package/dist/types/components/progress.d.ts +0 -4
  188. package/dist/types/components/resizable.d.ts +0 -23
  189. package/dist/types/components/rich-text-editor.d.ts +0 -8
  190. package/dist/types/components/route.d.ts +0 -10
  191. package/dist/types/components/scroll-area.d.ts +0 -5
  192. package/dist/types/components/select.d.ts +0 -13
  193. package/dist/types/components/separator.d.ts +0 -4
  194. package/dist/types/components/sheet.d.ts +0 -49
  195. package/dist/types/components/skeleton.d.ts +0 -2
  196. package/dist/types/components/sonner.d.ts +0 -4
  197. package/dist/types/components/spinner.d.ts +0 -8
  198. package/dist/types/components/stepper.d.ts +0 -17
  199. package/dist/types/components/steps.d.ts +0 -64
  200. package/dist/types/components/table.d.ts +0 -14
  201. package/dist/types/components/tabs.d.ts +0 -7
  202. package/dist/types/components/textarea.d.ts +0 -3
  203. package/dist/types/components/time-picker.d.ts +0 -10
  204. package/dist/types/components/toast.d.ts +0 -15
  205. package/dist/types/components/toaster.d.ts +0 -1
  206. package/dist/types/components/toggle-group.d.ts +0 -12
  207. package/dist/types/components/toggle.d.ts +0 -12
  208. package/dist/types/hooks/use-toast.d.ts +0 -44
  209. package/dist/types/lib/countryUtils.d.ts +0 -20
  210. package/tailwind-preset.js +0 -70
@@ -1,152 +0,0 @@
1
- "use strict";
2
- 'use client';
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.RichTextEditor = void 0;
8
- const jsx_runtime_1 = require("react/jsx-runtime");
9
- const utils_1 = require("../lib/utils");
10
- const extension_bullet_list_1 = __importDefault(require("@tiptap/extension-bullet-list"));
11
- const extension_list_item_1 = __importDefault(require("@tiptap/extension-list-item"));
12
- const extension_ordered_list_1 = __importDefault(require("@tiptap/extension-ordered-list"));
13
- const extension_link_1 = __importDefault(require("@tiptap/extension-link"));
14
- const extension_underline_1 = __importDefault(require("@tiptap/extension-underline"));
15
- const extension_placeholder_1 = __importDefault(require("@tiptap/extension-placeholder"));
16
- const react_1 = require("@tiptap/react");
17
- const starter_kit_1 = __importDefault(require("@tiptap/starter-kit"));
18
- const state_1 = require("@tiptap/pm/state");
19
- const lucide_react_1 = require("lucide-react");
20
- const react_2 = require("react");
21
- const input_1 = require("./input");
22
- const button_1 = require("./button");
23
- const popover_1 = require("./popover");
24
- // Custom Link extension to prevent clicks
25
- const createCustomLink = (onLinkClick) => {
26
- return extension_link_1.default.extend({
27
- addProseMirrorPlugins() {
28
- return [
29
- new state_1.Plugin({
30
- key: new state_1.PluginKey('handleLinkClick'),
31
- props: {
32
- handleClick(_view, _pos, event) {
33
- const link = event.target?.closest('a');
34
- if (link) {
35
- event.preventDefault();
36
- event.stopPropagation();
37
- const href = link.getAttribute('href');
38
- if (href) {
39
- onLinkClick(href);
40
- }
41
- return true;
42
- }
43
- return false;
44
- },
45
- },
46
- }),
47
- ];
48
- },
49
- }).configure({
50
- openOnClick: false,
51
- HTMLAttributes: {
52
- class: 'text-primary underline cursor-pointer',
53
- rel: 'noopener noreferrer nofollow',
54
- },
55
- });
56
- };
57
- const MenuBar = ({ editor, linkUrl, setLinkUrl, linkPopoverOpen, setLinkPopoverOpen, isEditingExistingLink, setIsEditingExistingLink, handleSetLink, handleRemoveLink, }) => {
58
- if (!editor)
59
- return null;
60
- return ((0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-fds-xs border-b border-border bg-fds-gray-10 px-fds-md py-fds-md dark:bg-card", children: [(0, jsx_runtime_1.jsx)("button", { onClick: () => editor.chain().focus().toggleBold().run(), type: "button", className: "cursor-pointer rounded p-1 hover:bg-fds-gray-20 dark:hover:bg-fds-gray-80", children: (0, jsx_runtime_1.jsx)(lucide_react_1.Bold, { className: (0, utils_1.cn)('h-4 w-4 text-foreground', editor.isActive('bold') && 'text-primary') }) }), (0, jsx_runtime_1.jsx)("button", { onClick: () => editor.chain().focus().toggleItalic().run(), type: "button", className: "cursor-pointer rounded p-1 hover:bg-fds-gray-20 dark:hover:bg-fds-gray-80", children: (0, jsx_runtime_1.jsx)(lucide_react_1.Italic, { className: (0, utils_1.cn)('h-4 w-4 text-foreground', editor.isActive('italic') && 'text-primary') }) }), (0, jsx_runtime_1.jsx)("button", { onClick: () => editor.chain().focus().toggleUnderline().run(), type: "button", className: "cursor-pointer rounded p-1 hover:bg-fds-gray-20 dark:hover:bg-fds-gray-80", children: (0, jsx_runtime_1.jsx)(lucide_react_1.Underline, { className: (0, utils_1.cn)('h-4 w-4 text-foreground', editor.isActive('underline') && 'text-primary') }) }), (0, jsx_runtime_1.jsx)("div", { className: "mx-fds-xs h-4 w-px bg-fds-gray-20 dark:bg-fds-gray-80" }), (0, jsx_runtime_1.jsx)("button", { onClick: (e) => {
61
- e.preventDefault();
62
- editor.chain().focus().toggleBulletList().run();
63
- }, type: "button", className: "cursor-pointer rounded p-1 hover:bg-fds-gray-20 dark:hover:bg-fds-gray-80", children: (0, jsx_runtime_1.jsx)(lucide_react_1.List, { className: (0, utils_1.cn)('h-4 w-4 text-foreground', editor.isActive('bulletList') && 'text-primary') }) }), (0, jsx_runtime_1.jsx)("button", { onClick: (e) => {
64
- e.preventDefault();
65
- editor.chain().focus().toggleOrderedList().run();
66
- }, type: "button", className: "cursor-pointer rounded p-1 hover:bg-fds-gray-20 dark:hover:bg-fds-gray-80", children: (0, jsx_runtime_1.jsx)(lucide_react_1.ListOrdered, { className: (0, utils_1.cn)('h-4 w-4 text-foreground', editor.isActive('orderedList') && 'text-primary') }) }), (0, jsx_runtime_1.jsxs)(popover_1.Popover, { open: linkPopoverOpen, onOpenChange: setLinkPopoverOpen, children: [(0, jsx_runtime_1.jsx)(popover_1.PopoverTrigger, { asChild: true, children: (0, jsx_runtime_1.jsx)("button", { type: "button", className: "cursor-pointer rounded p-1 hover:bg-fds-gray-20 dark:hover:bg-fds-gray-80", onClick: () => {
67
- if (editor.isActive('link')) {
68
- setLinkUrl(editor.getAttributes('link').href);
69
- }
70
- }, children: (0, jsx_runtime_1.jsx)(lucide_react_1.Link, { className: (0, utils_1.cn)('h-4 w-4 text-foreground', editor.isActive('link') && 'text-primary') }) }) }), (0, jsx_runtime_1.jsx)(popover_1.PopoverContent, { className: "w-[300px]", children: (0, jsx_runtime_1.jsx)("div", { className: "flex flex-col gap-fds-sm", children: isEditingExistingLink ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { className: "text-fds-sm font-fds-semibold", children: "Visit URL:" }), (0, jsx_runtime_1.jsx)("a", { href: linkUrl, target: "_blank", rel: "noopener noreferrer", className: "truncate text-fds-sm text-primary hover:underline", children: linkUrl }), (0, jsx_runtime_1.jsxs)("div", { className: "flex gap-fds-xs", children: [(0, jsx_runtime_1.jsx)(button_1.Button, { size: "small", onClick: () => {
71
- setIsEditingExistingLink(false);
72
- }, className: "flex-1", children: "Edit" }), (0, jsx_runtime_1.jsx)(button_1.Button, { size: "small", type: "text", onClick: handleRemoveLink, className: "flex-1", children: "Remove" })] })] })) : editor.isActive('link') ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { className: "text-fds-sm font-fds-semibold", children: "Edit Link" }), (0, jsx_runtime_1.jsx)(input_1.Input, { value: linkUrl, onChange: (e) => setLinkUrl(e.target.value), placeholder: "Enter URL", onKeyDown: (e) => {
73
- if (e.key === 'Enter') {
74
- e.preventDefault();
75
- handleSetLink();
76
- }
77
- }, autoFocus: true }), (0, jsx_runtime_1.jsxs)("div", { className: "flex gap-fds-xs", children: [(0, jsx_runtime_1.jsx)(button_1.Button, { size: "small", onClick: handleSetLink, className: "flex-1", children: "Update" }), (0, jsx_runtime_1.jsx)(button_1.Button, { size: "small", type: "text", onClick: handleRemoveLink, className: "flex-1", children: "Remove" })] })] })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { className: "text-fds-sm font-fds-semibold", children: "Add Link" }), (0, jsx_runtime_1.jsx)(input_1.Input, { value: linkUrl, onChange: (e) => setLinkUrl(e.target.value), placeholder: "Enter URL", onKeyDown: (e) => {
78
- if (e.key === 'Enter') {
79
- e.preventDefault();
80
- handleSetLink();
81
- }
82
- }, autoFocus: true }), (0, jsx_runtime_1.jsx)(button_1.Button, { size: "small", onClick: handleSetLink, children: "Add Link" })] })) }) })] })] }));
83
- };
84
- const RichTextEditor = ({ value = '', onChange, placeholder = 'Type your message...', className, }) => {
85
- const [linkPopoverOpen, setLinkPopoverOpen] = (0, react_2.useState)(false);
86
- const [linkUrl, setLinkUrl] = (0, react_2.useState)('');
87
- const [isEditingExistingLink, setIsEditingExistingLink] = (0, react_2.useState)(false);
88
- const handleLinkClick = (href) => {
89
- setLinkUrl(href);
90
- setIsEditingExistingLink(true);
91
- setLinkPopoverOpen(true);
92
- };
93
- const CustomLink = createCustomLink(handleLinkClick);
94
- const editor = (0, react_1.useEditor)({
95
- immediatelyRender: false,
96
- extensions: [
97
- starter_kit_1.default.configure({
98
- bulletList: false,
99
- orderedList: false,
100
- listItem: false,
101
- }),
102
- extension_list_item_1.default,
103
- extension_bullet_list_1.default.configure({
104
- HTMLAttributes: {
105
- class: 'list-disc list-outside ml-4',
106
- },
107
- }),
108
- extension_ordered_list_1.default.configure({
109
- HTMLAttributes: {
110
- class: 'list-decimal list-outside ml-4',
111
- },
112
- }),
113
- extension_underline_1.default,
114
- CustomLink,
115
- extension_placeholder_1.default.configure({
116
- placeholder,
117
- }),
118
- ],
119
- content: value,
120
- onUpdate: ({ editor }) => {
121
- onChange?.(editor.getHTML());
122
- },
123
- editorProps: {
124
- attributes: {
125
- class: (0, utils_1.cn)('prose prose-sm focus:outline-none min-h-[80px] px-fds-lg py-fds-sm prose-p:my-1 prose-ul:my-1 prose-ol:my-1 text-fds-sm bg-white dark:bg-black dark:text-white', className),
126
- },
127
- },
128
- });
129
- const handleSetLink = () => {
130
- if (linkUrl && editor) {
131
- // Ensure URL has protocol
132
- let formattedUrl = linkUrl;
133
- if (!/^https?:\/\//i.test(linkUrl)) {
134
- formattedUrl = `https://${linkUrl}`;
135
- }
136
- editor.chain().focus().setLink({ href: formattedUrl }).run();
137
- setLinkUrl('');
138
- setIsEditingExistingLink(false);
139
- setLinkPopoverOpen(false);
140
- }
141
- };
142
- const handleRemoveLink = () => {
143
- if (editor) {
144
- editor.chain().focus().unsetLink().run();
145
- setLinkUrl('');
146
- setIsEditingExistingLink(false);
147
- setLinkPopoverOpen(false);
148
- }
149
- };
150
- return ((0, jsx_runtime_1.jsxs)("div", { className: "w-full", children: [(0, jsx_runtime_1.jsx)(MenuBar, { editor: editor, linkUrl: linkUrl, setLinkUrl: setLinkUrl, linkPopoverOpen: linkPopoverOpen, setLinkPopoverOpen: setLinkPopoverOpen, isEditingExistingLink: isEditingExistingLink, setIsEditingExistingLink: setIsEditingExistingLink, handleSetLink: handleSetLink, handleRemoveLink: handleRemoveLink }), (0, jsx_runtime_1.jsx)(react_1.EditorContent, { editor: editor, placeholder: placeholder })] }));
151
- };
152
- exports.RichTextEditor = RichTextEditor;
@@ -1,47 +0,0 @@
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.Route = void 0;
37
- const jsx_runtime_1 = require("react/jsx-runtime");
38
- const React = __importStar(require("react"));
39
- const utils_1 = require("../lib/utils");
40
- const Route = React.forwardRef(({ className, type = 'point-to-point', start, end, ...props }, ref) => {
41
- if (type === 'point-to-point') {
42
- return ((0, jsx_runtime_1.jsxs)("div", { ref: ref, className: (0, utils_1.cn)('flex items-center gap-fds-sm', className), ...props, children: [start, (0, jsx_runtime_1.jsxs)("div", { className: "relative flex items-center", children: [(0, jsx_runtime_1.jsx)("div", { className: "h-[5px] w-[5px] rounded-full bg-foreground" }), (0, jsx_runtime_1.jsx)("div", { className: "h-px w-[22px] bg-foreground" }), (0, jsx_runtime_1.jsx)("div", { className: "h-[5px] w-[5px] rounded-full bg-foreground" })] }), end] }));
43
- }
44
- return null;
45
- });
46
- exports.Route = Route;
47
- Route.displayName = 'Route';
@@ -1,48 +0,0 @@
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.ScrollBar = exports.ScrollArea = void 0;
37
- const jsx_runtime_1 = require("react/jsx-runtime");
38
- const React = __importStar(require("react"));
39
- const ScrollAreaPrimitive = __importStar(require("@radix-ui/react-scroll-area"));
40
- const utils_1 = require("../lib/utils");
41
- const ScrollArea = React.forwardRef(({ className, children, ...props }, ref) => ((0, jsx_runtime_1.jsxs)(ScrollAreaPrimitive.Root, { ref: ref, className: (0, utils_1.cn)("relative overflow-hidden", className), ...props, children: [(0, jsx_runtime_1.jsx)(ScrollAreaPrimitive.Viewport, { className: "h-full w-full rounded-[inherit]", children: children }), (0, jsx_runtime_1.jsx)(ScrollBar, {}), (0, jsx_runtime_1.jsx)(ScrollAreaPrimitive.Corner, {})] })));
42
- exports.ScrollArea = ScrollArea;
43
- ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
44
- const ScrollBar = React.forwardRef(({ className, orientation = "vertical", ...props }, ref) => ((0, jsx_runtime_1.jsx)(ScrollAreaPrimitive.ScrollAreaScrollbar, { ref: ref, orientation: orientation, className: (0, utils_1.cn)("flex touch-none select-none transition-colors", orientation === "vertical" &&
45
- "h-full w-2.5 border-l border-l-transparent p-[1px]", orientation === "horizontal" &&
46
- "h-2.5 flex-col border-t border-t-transparent p-[1px]", className), ...props, children: (0, jsx_runtime_1.jsx)(ScrollAreaPrimitive.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" }) })));
47
- exports.ScrollBar = ScrollBar;
48
- ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
@@ -1,71 +0,0 @@
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.SelectScrollDownButton = exports.SelectScrollUpButton = exports.SelectSeparator = exports.SelectItem = exports.SelectLabel = exports.SelectContent = exports.SelectTrigger = exports.SelectValue = exports.SelectGroup = exports.Select = void 0;
37
- const jsx_runtime_1 = require("react/jsx-runtime");
38
- const React = __importStar(require("react"));
39
- const SelectPrimitive = __importStar(require("@radix-ui/react-select"));
40
- const utils_1 = require("../lib/utils");
41
- const icons_1 = require("@freightos/icons");
42
- const Select = SelectPrimitive.Root;
43
- exports.Select = Select;
44
- const SelectGroup = SelectPrimitive.Group;
45
- exports.SelectGroup = SelectGroup;
46
- const SelectValue = SelectPrimitive.Value;
47
- exports.SelectValue = SelectValue;
48
- const SelectTrigger = React.forwardRef(({ className, children, ...props }, ref) => ((0, jsx_runtime_1.jsxs)(SelectPrimitive.Trigger, { ref: ref, className: (0, utils_1.cn)('flex h-[32px] w-full items-center justify-between rounded-fds-md border border-input-border bg-input py-2 pl-3 pr-2 text-sm transition-[color,box-shadow] focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 data-[state=open]:border-[#2075bd] data-[placeholder]:text-muted-foreground data-[state=open]:shadow-[0_0_0_2px_var(--fds-color-primary-blue-20)] [&>span]:line-clamp-1 [&[data-state=open]>span[data-radix-select-icon]>svg]:rotate-180', className), ...props, children: [children, (0, jsx_runtime_1.jsx)(SelectPrimitive.Icon, { asChild: true, children: (0, jsx_runtime_1.jsx)(icons_1.IconCaretDown, { className: "transition-transform duration-200" }) })] })));
49
- exports.SelectTrigger = SelectTrigger;
50
- SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
51
- const SelectScrollUpButton = React.forwardRef(({ className, ...props }, ref) => ((0, jsx_runtime_1.jsx)(SelectPrimitive.ScrollUpButton, { ref: ref, className: (0, utils_1.cn)('flex cursor-default items-center justify-center py-1', className), ...props, children: (0, jsx_runtime_1.jsx)(icons_1.IconCaretUp, {}) })));
52
- exports.SelectScrollUpButton = SelectScrollUpButton;
53
- SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
54
- const SelectScrollDownButton = React.forwardRef(({ className, ...props }, ref) => ((0, jsx_runtime_1.jsx)(SelectPrimitive.ScrollDownButton, { ref: ref, className: (0, utils_1.cn)('flex cursor-default items-center justify-center py-1', className), ...props, children: (0, jsx_runtime_1.jsx)(icons_1.IconCaretDown, {}) })));
55
- exports.SelectScrollDownButton = SelectScrollDownButton;
56
- SelectScrollDownButton.displayName =
57
- SelectPrimitive.ScrollDownButton.displayName;
58
- const SelectContent = React.forwardRef(({ className, children, position = 'popper', ...props }, ref) => ((0, jsx_runtime_1.jsx)(SelectPrimitive.Portal, { children: (0, jsx_runtime_1.jsxs)(SelectPrimitive.Content, { ref: ref, className: (0, utils_1.cn)('relative z-[9999] max-h-[--radix-select-content-available-height] min-w-[8rem] w-max origin-[--radix-select-content-transform-origin] overflow-y-auto overflow-x-hidden rounded-fds-md bg-popover text-popover-foreground shadow-fds-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', position === 'popper' &&
59
- 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1', className), position: position, ...props, children: [(0, jsx_runtime_1.jsx)(SelectScrollUpButton, {}), (0, jsx_runtime_1.jsx)(SelectPrimitive.Viewport, { className: (0, utils_1.cn)('w-full', position === 'popper' &&
60
- 'h-[var(--radix-select-trigger-height)] min-w-[var(--radix-select-trigger-width)]'), children: children }), (0, jsx_runtime_1.jsx)(SelectScrollDownButton, {})] }) })));
61
- exports.SelectContent = SelectContent;
62
- SelectContent.displayName = SelectPrimitive.Content.displayName;
63
- const SelectLabel = React.forwardRef(({ className, ...props }, ref) => ((0, jsx_runtime_1.jsx)(SelectPrimitive.Label, { ref: ref, className: (0, utils_1.cn)('py-1.5 pl-8 pr-2 text-sm font-semibold', className), ...props })));
64
- exports.SelectLabel = SelectLabel;
65
- SelectLabel.displayName = SelectPrimitive.Label.displayName;
66
- const SelectItem = React.forwardRef(({ className, children, ...props }, ref) => ((0, jsx_runtime_1.jsx)(SelectPrimitive.Item, { ref: ref, className: (0, utils_1.cn)('relative flex w-full 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-[highlighted]:bg-accent data-[disabled]:opacity-50', className), ...props, children: (0, jsx_runtime_1.jsx)(SelectPrimitive.ItemText, { asChild: true, children: (0, jsx_runtime_1.jsx)("div", { className: "flex w-full flex-1 items-center", children: children }) }) })));
67
- exports.SelectItem = SelectItem;
68
- SelectItem.displayName = SelectPrimitive.Item.displayName;
69
- const SelectSeparator = React.forwardRef(({ className, ...props }, ref) => ((0, jsx_runtime_1.jsx)(SelectPrimitive.Separator, { ref: ref, className: (0, utils_1.cn)('-mx-1 my-1 h-px bg-muted', className), ...props })));
70
- exports.SelectSeparator = SelectSeparator;
71
- SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
@@ -1,43 +0,0 @@
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.Separator = void 0;
37
- const jsx_runtime_1 = require("react/jsx-runtime");
38
- const SeparatorPrimitive = __importStar(require("@radix-ui/react-separator"));
39
- const React = __importStar(require("react"));
40
- const utils_1 = require("../lib/utils");
41
- const Separator = React.forwardRef(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => ((0, jsx_runtime_1.jsx)(SeparatorPrimitive.Root, { ref: ref, decorative: decorative, orientation: orientation, className: (0, utils_1.cn)('shrink-0 bg-fds-gray-20', orientation === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]', className), ...props })));
42
- exports.Separator = Separator;
43
- Separator.displayName = SeparatorPrimitive.Root.displayName;
@@ -1,245 +0,0 @@
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.SheetDescription = exports.SheetTitle = exports.SheetFooter = exports.SheetBody = exports.SheetHeader = exports.SheetContent = exports.SheetClose = exports.SheetTrigger = exports.SheetOverlay = exports.SheetPortal = exports.SheetProvider = exports.Sheet = exports.useSheetContext = void 0;
38
- const jsx_runtime_1 = require("react/jsx-runtime");
39
- const React = __importStar(require("react"));
40
- const SheetPrimitive = __importStar(require("@radix-ui/react-dialog"));
41
- const class_variance_authority_1 = require("class-variance-authority");
42
- const lucide_react_1 = require("lucide-react");
43
- const utils_1 = require("../lib/utils");
44
- const SheetContext = React.createContext({
45
- level: 0,
46
- parentSheetWidth: undefined,
47
- registerNestedSheet: () => { },
48
- unregisterNestedSheet: () => { },
49
- hasNestedSheetOpen: false,
50
- nestedSheetWidth: undefined,
51
- });
52
- const useSheetContext = () => React.useContext(SheetContext);
53
- exports.useSheetContext = useSheetContext;
54
- // Sheet wrapper that provides context
55
- const SheetProvider = ({ children, width }) => {
56
- const parentContext = (0, exports.useSheetContext)();
57
- const [nestedSheetCount, setNestedSheetCount] = React.useState(0);
58
- const registerNestedSheet = React.useCallback(() => {
59
- setNestedSheetCount((count) => count + 1);
60
- }, []);
61
- const unregisterNestedSheet = React.useCallback(() => {
62
- setNestedSheetCount((count) => Math.max(0, count - 1));
63
- }, []);
64
- const contextValue = React.useMemo(() => ({
65
- level: parentContext.level + 1,
66
- parentSheetWidth: width,
67
- registerNestedSheet,
68
- unregisterNestedSheet,
69
- hasNestedSheetOpen: nestedSheetCount > 0,
70
- }), [
71
- parentContext.level,
72
- width,
73
- registerNestedSheet,
74
- unregisterNestedSheet,
75
- nestedSheetCount,
76
- ]);
77
- return ((0, jsx_runtime_1.jsx)(SheetContext.Provider, { value: contextValue, children: children }));
78
- };
79
- exports.SheetProvider = SheetProvider;
80
- const SheetRoot = ({ open, width, ...props }) => {
81
- const parentContext = (0, exports.useSheetContext)();
82
- // Register/unregister when open state changes
83
- React.useEffect(() => {
84
- if (open && parentContext.level > 0) {
85
- parentContext.registerNestedSheet(width);
86
- return () => {
87
- parentContext.unregisterNestedSheet();
88
- };
89
- }
90
- return undefined;
91
- }, [open, parentContext, width]);
92
- return (0, jsx_runtime_1.jsx)(SheetPrimitive.Root, { open: open, ...props });
93
- };
94
- const Sheet = SheetRoot;
95
- exports.Sheet = Sheet;
96
- const SheetTrigger = SheetPrimitive.Trigger;
97
- exports.SheetTrigger = SheetTrigger;
98
- const SheetClose = SheetPrimitive.Close;
99
- exports.SheetClose = SheetClose;
100
- const SheetPortal = SheetPrimitive.Portal;
101
- exports.SheetPortal = SheetPortal;
102
- const SheetOverlay = React.forwardRef(({ className, ...props }, ref) => ((0, jsx_runtime_1.jsx)(SheetPrimitive.Overlay, { className: (0, utils_1.cn)('fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0', className), ...props, ref: ref })));
103
- exports.SheetOverlay = SheetOverlay;
104
- SheetOverlay.displayName = SheetPrimitive.Overlay.displayName;
105
- const sheetVariants = (0, class_variance_authority_1.cva)('fixed bg-background shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out bg-card flex flex-col', {
106
- variants: {
107
- side: {
108
- top: 'inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top',
109
- bottom: 'inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom',
110
- left: 'inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm',
111
- right: 'inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm',
112
- },
113
- zIndex: {
114
- default: 'z-50',
115
- high: 'z-[1100]',
116
- pushed: 'z-[1150]', // Between high (1100) and nested overlay (1199)
117
- nested: 'z-[1200]',
118
- },
119
- },
120
- defaultVariants: {
121
- side: 'right',
122
- zIndex: 'default',
123
- },
124
- });
125
- const SheetContent = React.forwardRef(({ side = 'right', zIndex = 'default', className, overlayClassName, hideCloseButton = false, sheetWidth, children, ...props }, ref) => {
126
- // Read the parent context BEFORE potentially wrapping with SheetProvider
127
- const parentContext = (0, exports.useSheetContext)();
128
- // Track nested sheets for THIS sheet using local state
129
- const [localNestedSheetCount, setLocalNestedSheetCount] = React.useState(0);
130
- const [localNestedSheetWidth, setLocalNestedSheetWidth] = React.useState();
131
- const closeTimeoutRef = React.useRef(null);
132
- const registerLocalNestedSheet = React.useCallback((width) => {
133
- // Clear any pending close timeout when opening a new nested sheet
134
- if (closeTimeoutRef.current) {
135
- clearTimeout(closeTimeoutRef.current);
136
- closeTimeoutRef.current = null;
137
- }
138
- setLocalNestedSheetCount((count) => count + 1);
139
- if (width) {
140
- setLocalNestedSheetWidth(width);
141
- }
142
- }, []);
143
- const unregisterLocalNestedSheet = React.useCallback(() => {
144
- setLocalNestedSheetCount((count) => Math.max(0, count - 1));
145
- setLocalNestedSheetWidth(undefined);
146
- // Clear any existing timeout
147
- if (closeTimeoutRef.current) {
148
- clearTimeout(closeTimeoutRef.current);
149
- closeTimeoutRef.current = null;
150
- }
151
- }, []);
152
- // Cleanup timeout on unmount
153
- React.useEffect(() => {
154
- return () => {
155
- if (closeTimeoutRef.current) {
156
- clearTimeout(closeTimeoutRef.current);
157
- }
158
- };
159
- }, []);
160
- // This sheet should be pushed if IT has nested sheets open
161
- const shouldBePushed = localNestedSheetCount > 0 && sheetWidth;
162
- // Create a custom context value that uses THIS sheet's local nested sheet tracking
163
- const customContextValue = React.useMemo(() => ({
164
- level: parentContext.level + 1,
165
- parentSheetWidth: sheetWidth,
166
- registerNestedSheet: registerLocalNestedSheet,
167
- unregisterNestedSheet: unregisterLocalNestedSheet,
168
- hasNestedSheetOpen: localNestedSheetCount > 0,
169
- nestedSheetWidth: localNestedSheetWidth,
170
- }), [
171
- parentContext.level,
172
- sheetWidth,
173
- registerLocalNestedSheet,
174
- unregisterLocalNestedSheet,
175
- localNestedSheetCount,
176
- localNestedSheetWidth,
177
- ]);
178
- // Wrap children with context provider if sheetWidth is provided
179
- const wrappedChildren = sheetWidth ? ((0, jsx_runtime_1.jsx)(SheetContext.Provider, { value: customContextValue, children: children })) : (children);
180
- // Determine z-index based on nesting level AND pushed state
181
- // A sheet is nested if its parent level >= 1 (meaning it's inside another sheet)
182
- let effectiveZIndex = parentContext.level >= 1 ? 'nested' : zIndex;
183
- const isNestedSheet = parentContext.level >= 1;
184
- // When pushed, keep the same z-index (it will be under nested sheet's overlay anyway)
185
- // Don't change z-index when pushed - the nested overlay (z-1199) will be above this (z-1100)
186
- // Calculate overlay z-index
187
- const overlayZIndex = effectiveZIndex === 'nested'
188
- ? 1199
189
- : effectiveZIndex === 'high'
190
- ? 1099
191
- : 50;
192
- // Animation timing classes
193
- const animationClasses = 'data-[state=closed]:duration-300 data-[state=open]:duration-500';
194
- // Calculate transform for pushed state
195
- // Strategy: During close, parent slides back at same speed as nested slides out
196
- // Both travel in the positive direction (to the right) so they stick together
197
- const transformStyle = shouldBePushed && localNestedSheetWidth
198
- ? {
199
- // Opening: animate to pushed position (move left)
200
- transform: `translate3d(-${localNestedSheetWidth}, 0, 0)`,
201
- transition: 'transform 500ms linear',
202
- }
203
- : {
204
- // Closing: animate back to center (move right)
205
- transform: 'translate3d(0, 0, 0)',
206
- transition: 'transform 300ms linear',
207
- };
208
- const inlineStyle = {
209
- ...transformStyle,
210
- // Force GPU acceleration for both sheets to ensure smooth, synchronized animations
211
- willChange: 'transform',
212
- // For nested sheets, override animation timing to linear
213
- ...(isNestedSheet && {
214
- animationTimingFunction: 'linear',
215
- }),
216
- };
217
- // Debug logging
218
- // console.log('📊 Sheet render:', {
219
- // level: parentContext.level,
220
- // hasNestedSheetOpen: parentContext.hasNestedSheetOpen,
221
- // parentSheetWidth: parentContext.parentSheetWidth,
222
- // shouldBePushed,
223
- // effectiveZIndex,
224
- // overlayZIndex,
225
- // sheetWidth,
226
- // });
227
- return ((0, jsx_runtime_1.jsxs)(SheetPortal, { children: [!shouldBePushed && !localNestedSheetWidth && ((0, jsx_runtime_1.jsx)(SheetOverlay, { className: overlayClassName, style: { zIndex: overlayZIndex } })), (0, jsx_runtime_1.jsxs)(SheetPrimitive.Content, { ref: ref, className: (0, utils_1.cn)(sheetVariants({ side, zIndex: effectiveZIndex }), animationClasses, shouldBePushed && 'pointer-events-none', className), style: inlineStyle, ...props, children: [wrappedChildren, !hideCloseButton && ((0, jsx_runtime_1.jsxs)(SheetPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.X, { className: "h-4 w-4" }), (0, jsx_runtime_1.jsx)("span", { className: "sr-only", children: "Close" })] }))] })] }));
228
- });
229
- exports.SheetContent = SheetContent;
230
- SheetContent.displayName = SheetPrimitive.Content.displayName;
231
- const SheetHeader = ({ className, ...props }) => ((0, jsx_runtime_1.jsx)("div", { className: (0, utils_1.cn)('flex flex-shrink-0 flex-col space-y-2 px-fds-xl py-fds-xl', className), ...props }));
232
- exports.SheetHeader = SheetHeader;
233
- SheetHeader.displayName = 'SheetHeader';
234
- const SheetBody = ({ className, ...props }) => ((0, jsx_runtime_1.jsx)("div", { className: (0, utils_1.cn)('flex-1 overflow-y-auto px-fds-xl', className), ...props }));
235
- exports.SheetBody = SheetBody;
236
- SheetBody.displayName = 'SheetBody';
237
- const SheetFooter = ({ className, ...props }) => ((0, jsx_runtime_1.jsx)("div", { className: (0, utils_1.cn)('flex-shrink-0 border-t border-fds-gray-20 px-fds-xl py-fds-xl', className), ...props }));
238
- exports.SheetFooter = SheetFooter;
239
- SheetFooter.displayName = 'SheetFooter';
240
- const SheetTitle = React.forwardRef(({ className, ...props }, ref) => ((0, jsx_runtime_1.jsx)(SheetPrimitive.Title, { ref: ref, className: (0, utils_1.cn)('text-fds-h3 font-fds-bold', className), ...props })));
241
- exports.SheetTitle = SheetTitle;
242
- SheetTitle.displayName = SheetPrimitive.Title.displayName;
243
- const SheetDescription = React.forwardRef(({ className, ...props }, ref) => ((0, jsx_runtime_1.jsx)(SheetPrimitive.Description, { ref: ref, className: (0, utils_1.cn)('text-sm text-muted-foreground', className), ...props })));
244
- exports.SheetDescription = SheetDescription;
245
- SheetDescription.displayName = SheetPrimitive.Description.displayName;
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Skeleton = Skeleton;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- const utils_1 = require("../lib/utils");
6
- function Skeleton({ className, ...props }) {
7
- return ((0, jsx_runtime_1.jsx)("div", { className: (0, utils_1.cn)("animate-pulse rounded-md bg-muted", className), ...props }));
8
- }