@medusajs/ui 1.0.0 → 2.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 (223) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +51 -2
  3. package/dist/cjs/components/badge/badge.d.ts +16 -5
  4. package/dist/cjs/components/badge/badge.js +20 -31
  5. package/dist/cjs/components/badge/badge.js.map +1 -1
  6. package/dist/cjs/components/button/button.d.ts +1 -2
  7. package/dist/cjs/components/button/button.js +12 -40
  8. package/dist/cjs/components/button/button.js.map +1 -1
  9. package/dist/cjs/components/calendar/calendar.js +5 -5
  10. package/dist/cjs/components/calendar/calendar.js.map +1 -1
  11. package/dist/cjs/components/checkbox/checkbox.js +1 -1
  12. package/dist/cjs/components/checkbox/checkbox.js.map +1 -1
  13. package/dist/cjs/components/code-block/code-block.d.ts +3 -5
  14. package/dist/cjs/components/code-block/code-block.js +19 -19
  15. package/dist/cjs/components/code-block/code-block.js.map +1 -1
  16. package/dist/cjs/components/command-bar/command-bar.d.ts +22 -0
  17. package/dist/cjs/components/command-bar/command-bar.js +63 -0
  18. package/dist/cjs/components/command-bar/command-bar.js.map +1 -0
  19. package/dist/cjs/components/command-bar/index.d.ts +1 -0
  20. package/dist/cjs/components/command-bar/index.js +5 -0
  21. package/dist/cjs/components/command-bar/index.js.map +1 -0
  22. package/dist/cjs/components/container/container.d.ts +1 -1
  23. package/dist/cjs/components/container/container.js.map +1 -1
  24. package/dist/cjs/components/currency-input/currency-input.d.ts +21 -0
  25. package/dist/cjs/components/currency-input/currency-input.js +58 -0
  26. package/dist/cjs/components/currency-input/currency-input.js.map +1 -0
  27. package/dist/cjs/components/currency-input/index.d.ts +1 -0
  28. package/dist/cjs/components/currency-input/index.js +5 -0
  29. package/dist/cjs/components/currency-input/index.js.map +1 -0
  30. package/dist/cjs/components/date-picker/date-picker.d.ts +1 -1
  31. package/dist/cjs/components/date-picker/date-picker.js +138 -52
  32. package/dist/cjs/components/date-picker/date-picker.js.map +1 -1
  33. package/dist/cjs/components/drawer/drawer.d.ts +13 -15
  34. package/dist/cjs/components/drawer/drawer.js +53 -44
  35. package/dist/cjs/components/drawer/drawer.js.map +1 -1
  36. package/dist/cjs/components/dropdown-menu/dropdown-menu.js +7 -7
  37. package/dist/cjs/components/dropdown-menu/dropdown-menu.js.map +1 -1
  38. package/dist/cjs/components/focus-modal/focus-modal.d.ts +9 -12
  39. package/dist/cjs/components/focus-modal/focus-modal.js +39 -35
  40. package/dist/cjs/components/focus-modal/focus-modal.js.map +1 -1
  41. package/dist/cjs/components/heading/heading.js +3 -3
  42. package/dist/cjs/components/heading/heading.js.map +1 -1
  43. package/dist/cjs/components/hint/hint.d.ts +1 -1
  44. package/dist/cjs/components/icon-badge/icon-badge.d.ts +20 -0
  45. package/dist/cjs/components/icon-badge/icon-badge.js +24 -0
  46. package/dist/cjs/components/icon-badge/icon-badge.js.map +1 -0
  47. package/dist/cjs/components/icon-badge/index.d.ts +1 -0
  48. package/dist/cjs/components/icon-badge/index.js +5 -0
  49. package/dist/cjs/components/icon-badge/index.js.map +1 -0
  50. package/dist/cjs/components/icon-button/icon-button.d.ts +21 -0
  51. package/dist/cjs/components/icon-button/icon-button.js +48 -0
  52. package/dist/cjs/components/icon-button/icon-button.js.map +1 -0
  53. package/dist/cjs/components/icon-button/index.d.ts +1 -0
  54. package/dist/cjs/components/icon-button/index.js +5 -0
  55. package/dist/cjs/components/icon-button/index.js.map +1 -0
  56. package/dist/cjs/components/input/input.js +6 -6
  57. package/dist/cjs/components/input/input.js.map +1 -1
  58. package/dist/cjs/components/kbd/kbd.d.ts +1 -1
  59. package/dist/cjs/components/kbd/kbd.js +4 -3
  60. package/dist/cjs/components/kbd/kbd.js.map +1 -1
  61. package/dist/cjs/components/progress-accordion/index.d.ts +1 -0
  62. package/dist/cjs/components/progress-accordion/index.js +5 -0
  63. package/dist/cjs/components/progress-accordion/index.js.map +1 -0
  64. package/dist/cjs/components/progress-accordion/progress-accordion.d.ts +19 -0
  65. package/dist/cjs/components/progress-accordion/progress-accordion.js +54 -0
  66. package/dist/cjs/components/progress-accordion/progress-accordion.js.map +1 -0
  67. package/dist/cjs/components/progress-tabs/index.d.ts +1 -0
  68. package/dist/cjs/components/progress-tabs/index.js +5 -0
  69. package/dist/cjs/components/progress-tabs/index.js.map +1 -0
  70. package/dist/cjs/components/progress-tabs/progress-tabs.d.ts +15 -0
  71. package/dist/cjs/components/progress-tabs/progress-tabs.js +46 -0
  72. package/dist/cjs/components/progress-tabs/progress-tabs.js.map +1 -0
  73. package/dist/cjs/components/prompt/prompt.js +3 -3
  74. package/dist/cjs/components/prompt/prompt.js.map +1 -1
  75. package/dist/cjs/components/radio-group/radio-group.d.ts +5 -0
  76. package/dist/cjs/components/radio-group/radio-group.js +25 -4
  77. package/dist/cjs/components/radio-group/radio-group.js.map +1 -1
  78. package/dist/cjs/components/select/select.js +4 -8
  79. package/dist/cjs/components/select/select.js.map +1 -1
  80. package/dist/cjs/components/status-badge/index.d.ts +1 -0
  81. package/dist/cjs/components/status-badge/index.js +5 -0
  82. package/dist/cjs/components/status-badge/index.js.map +1 -0
  83. package/dist/cjs/components/status-badge/status-badge.d.ts +6 -0
  84. package/dist/cjs/components/status-badge/status-badge.js +23 -0
  85. package/dist/cjs/components/status-badge/status-badge.js.map +1 -0
  86. package/dist/cjs/components/switch/switch.js +1 -1
  87. package/dist/cjs/components/switch/switch.js.map +1 -1
  88. package/dist/cjs/components/table/table.js +6 -7
  89. package/dist/cjs/components/table/table.js.map +1 -1
  90. package/dist/cjs/components/tabs/index.d.ts +1 -0
  91. package/dist/cjs/components/tabs/index.js +5 -0
  92. package/dist/cjs/components/tabs/index.js.map +1 -0
  93. package/dist/cjs/components/tabs/tabs.d.ts +11 -0
  94. package/dist/cjs/components/tabs/tabs.js +25 -0
  95. package/dist/cjs/components/tabs/tabs.js.map +1 -0
  96. package/dist/cjs/components/text/text.d.ts +1 -0
  97. package/dist/cjs/components/text/text.js +64 -7
  98. package/dist/cjs/components/text/text.js.map +1 -1
  99. package/dist/cjs/components/textarea/textarea.js +1 -1
  100. package/dist/cjs/components/textarea/textarea.js.map +1 -1
  101. package/dist/cjs/components/time-input/time-input.js +1 -1
  102. package/dist/cjs/components/time-input/time-input.js.map +1 -1
  103. package/dist/cjs/components/toast/toast.js +1 -1
  104. package/dist/cjs/components/toast/toast.js.map +1 -1
  105. package/dist/cjs/components/tooltip/tooltip.js +1 -1
  106. package/dist/cjs/components/tooltip/tooltip.js.map +1 -1
  107. package/dist/cjs/index.d.ts +9 -0
  108. package/dist/cjs/index.js +20 -1
  109. package/dist/cjs/index.js.map +1 -1
  110. package/dist/cjs/types.d.ts +5 -0
  111. package/dist/cjs/types.js +3 -0
  112. package/dist/cjs/types.js.map +1 -0
  113. package/dist/esm/components/badge/badge.d.ts +16 -5
  114. package/dist/esm/components/badge/badge.js +19 -31
  115. package/dist/esm/components/badge/badge.js.map +1 -1
  116. package/dist/esm/components/button/button.d.ts +1 -2
  117. package/dist/esm/components/button/button.js +12 -40
  118. package/dist/esm/components/button/button.js.map +1 -1
  119. package/dist/esm/components/calendar/calendar.js +5 -5
  120. package/dist/esm/components/calendar/calendar.js.map +1 -1
  121. package/dist/esm/components/checkbox/checkbox.js +1 -1
  122. package/dist/esm/components/checkbox/checkbox.js.map +1 -1
  123. package/dist/esm/components/code-block/code-block.d.ts +3 -5
  124. package/dist/esm/components/code-block/code-block.js +7 -7
  125. package/dist/esm/components/code-block/code-block.js.map +1 -1
  126. package/dist/esm/components/command-bar/command-bar.d.ts +22 -0
  127. package/dist/esm/components/command-bar/command-bar.js +59 -0
  128. package/dist/esm/components/command-bar/command-bar.js.map +1 -0
  129. package/dist/esm/components/command-bar/index.d.ts +1 -0
  130. package/dist/esm/components/command-bar/index.js +2 -0
  131. package/dist/esm/components/command-bar/index.js.map +1 -0
  132. package/dist/esm/components/container/container.d.ts +1 -1
  133. package/dist/esm/components/container/container.js.map +1 -1
  134. package/dist/esm/components/currency-input/currency-input.d.ts +21 -0
  135. package/dist/esm/components/currency-input/currency-input.js +54 -0
  136. package/dist/esm/components/currency-input/currency-input.js.map +1 -0
  137. package/dist/esm/components/currency-input/index.d.ts +1 -0
  138. package/dist/esm/components/currency-input/index.js +2 -0
  139. package/dist/esm/components/currency-input/index.js.map +1 -0
  140. package/dist/esm/components/date-picker/date-picker.d.ts +1 -1
  141. package/dist/esm/components/date-picker/date-picker.js +139 -53
  142. package/dist/esm/components/date-picker/date-picker.js.map +1 -1
  143. package/dist/esm/components/drawer/drawer.d.ts +13 -15
  144. package/dist/esm/components/drawer/drawer.js +53 -44
  145. package/dist/esm/components/drawer/drawer.js.map +1 -1
  146. package/dist/esm/components/dropdown-menu/dropdown-menu.js +7 -7
  147. package/dist/esm/components/dropdown-menu/dropdown-menu.js.map +1 -1
  148. package/dist/esm/components/focus-modal/focus-modal.d.ts +9 -12
  149. package/dist/esm/components/focus-modal/focus-modal.js +39 -35
  150. package/dist/esm/components/focus-modal/focus-modal.js.map +1 -1
  151. package/dist/esm/components/heading/heading.js +3 -3
  152. package/dist/esm/components/heading/heading.js.map +1 -1
  153. package/dist/esm/components/hint/hint.d.ts +1 -1
  154. package/dist/esm/components/icon-badge/icon-badge.d.ts +20 -0
  155. package/dist/esm/components/icon-badge/icon-badge.js +20 -0
  156. package/dist/esm/components/icon-badge/icon-badge.js.map +1 -0
  157. package/dist/esm/components/icon-badge/index.d.ts +1 -0
  158. package/dist/esm/components/icon-badge/index.js +2 -0
  159. package/dist/esm/components/icon-badge/index.js.map +1 -0
  160. package/dist/esm/components/icon-button/icon-button.d.ts +21 -0
  161. package/dist/esm/components/icon-button/icon-button.js +43 -0
  162. package/dist/esm/components/icon-button/icon-button.js.map +1 -0
  163. package/dist/esm/components/icon-button/index.d.ts +1 -0
  164. package/dist/esm/components/icon-button/index.js +2 -0
  165. package/dist/esm/components/icon-button/index.js.map +1 -0
  166. package/dist/esm/components/input/input.js +6 -6
  167. package/dist/esm/components/input/input.js.map +1 -1
  168. package/dist/esm/components/kbd/kbd.d.ts +1 -1
  169. package/dist/esm/components/kbd/kbd.js +4 -3
  170. package/dist/esm/components/kbd/kbd.js.map +1 -1
  171. package/dist/esm/components/progress-accordion/index.d.ts +1 -0
  172. package/dist/esm/components/progress-accordion/index.js +2 -0
  173. package/dist/esm/components/progress-accordion/index.js.map +1 -0
  174. package/dist/esm/components/progress-accordion/progress-accordion.d.ts +19 -0
  175. package/dist/esm/components/progress-accordion/progress-accordion.js +50 -0
  176. package/dist/esm/components/progress-accordion/progress-accordion.js.map +1 -0
  177. package/dist/esm/components/progress-tabs/index.d.ts +1 -0
  178. package/dist/esm/components/progress-tabs/index.js +2 -0
  179. package/dist/esm/components/progress-tabs/index.js.map +1 -0
  180. package/dist/esm/components/progress-tabs/progress-tabs.d.ts +15 -0
  181. package/dist/esm/components/progress-tabs/progress-tabs.js +42 -0
  182. package/dist/esm/components/progress-tabs/progress-tabs.js.map +1 -0
  183. package/dist/esm/components/prompt/prompt.js +3 -3
  184. package/dist/esm/components/prompt/prompt.js.map +1 -1
  185. package/dist/esm/components/radio-group/radio-group.d.ts +5 -0
  186. package/dist/esm/components/radio-group/radio-group.js +25 -4
  187. package/dist/esm/components/radio-group/radio-group.js.map +1 -1
  188. package/dist/esm/components/select/select.js +5 -9
  189. package/dist/esm/components/select/select.js.map +1 -1
  190. package/dist/esm/components/status-badge/index.d.ts +1 -0
  191. package/dist/esm/components/status-badge/index.js +2 -0
  192. package/dist/esm/components/status-badge/index.js.map +1 -0
  193. package/dist/esm/components/status-badge/status-badge.d.ts +6 -0
  194. package/dist/esm/components/status-badge/status-badge.js +19 -0
  195. package/dist/esm/components/status-badge/status-badge.js.map +1 -0
  196. package/dist/esm/components/switch/switch.js +1 -1
  197. package/dist/esm/components/switch/switch.js.map +1 -1
  198. package/dist/esm/components/table/table.js +6 -7
  199. package/dist/esm/components/table/table.js.map +1 -1
  200. package/dist/esm/components/tabs/index.d.ts +1 -0
  201. package/dist/esm/components/tabs/index.js +2 -0
  202. package/dist/esm/components/tabs/index.js.map +1 -0
  203. package/dist/esm/components/tabs/tabs.d.ts +11 -0
  204. package/dist/esm/components/tabs/tabs.js +21 -0
  205. package/dist/esm/components/tabs/tabs.js.map +1 -0
  206. package/dist/esm/components/text/text.d.ts +1 -0
  207. package/dist/esm/components/text/text.js +64 -7
  208. package/dist/esm/components/text/text.js.map +1 -1
  209. package/dist/esm/components/textarea/textarea.js +1 -1
  210. package/dist/esm/components/textarea/textarea.js.map +1 -1
  211. package/dist/esm/components/time-input/time-input.js +1 -1
  212. package/dist/esm/components/time-input/time-input.js.map +1 -1
  213. package/dist/esm/components/toast/toast.js +1 -1
  214. package/dist/esm/components/toast/toast.js.map +1 -1
  215. package/dist/esm/components/tooltip/tooltip.js +1 -1
  216. package/dist/esm/components/tooltip/tooltip.js.map +1 -1
  217. package/dist/esm/index.d.ts +9 -0
  218. package/dist/esm/index.js +10 -0
  219. package/dist/esm/index.js.map +1 -1
  220. package/dist/esm/types.d.ts +5 -0
  221. package/dist/esm/types.js +2 -0
  222. package/dist/esm/types.js.map +1 -0
  223. package/package.json +13 -6
@@ -0,0 +1,22 @@
1
+ import * as React from "react";
2
+ type CommandBarProps = React.PropsWithChildren<{
3
+ open?: boolean;
4
+ onOpenChange?: (open: boolean) => void;
5
+ defaultOpen?: boolean;
6
+ disableAutoFocus?: boolean;
7
+ }>;
8
+ interface CommandProps extends Omit<React.ComponentPropsWithoutRef<"button">, "children" | "onClick"> {
9
+ action: () => void | Promise<void>;
10
+ label: string;
11
+ shortcut: string;
12
+ }
13
+ declare const CommandBar: {
14
+ ({ open, onOpenChange, defaultOpen, disableAutoFocus, children, }: CommandBarProps): React.JSX.Element;
15
+ displayName: string;
16
+ } & {
17
+ Command: React.ForwardRefExoticComponent<CommandProps & React.RefAttributes<HTMLButtonElement>>;
18
+ Value: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
19
+ Bar: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
20
+ Seperator: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "children"> & React.RefAttributes<HTMLDivElement>>;
21
+ };
22
+ export { CommandBar };
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ "use client";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.CommandBar = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const Popover = tslib_1.__importStar(require("@radix-ui/react-popover"));
7
+ const Portal = tslib_1.__importStar(require("@radix-ui/react-portal"));
8
+ const React = tslib_1.__importStar(require("react"));
9
+ const kbd_1 = require("../kbd");
10
+ const clx_1 = require("../../utils/clx");
11
+ const Root = ({ open = false, onOpenChange, defaultOpen = false, disableAutoFocus = true, children, }) => {
12
+ return (React.createElement(Popover.Root, { open: open, onOpenChange: onOpenChange, defaultOpen: defaultOpen },
13
+ React.createElement(Portal.Root, null,
14
+ React.createElement(Popover.Anchor, { className: (0, clx_1.clx)("fixed bottom-8 left-1/2 h-px w-px -translate-x-1/2") })),
15
+ React.createElement(Popover.Portal, null,
16
+ React.createElement(Popover.Content, { side: "top", sideOffset: 0, onOpenAutoFocus: (e) => {
17
+ if (disableAutoFocus) {
18
+ e.preventDefault();
19
+ }
20
+ }, className: (0, clx_1.clx)("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") }, children))));
21
+ };
22
+ Root.displayName = "CommandBar";
23
+ const Value = React.forwardRef(({ className, ...props }, ref) => {
24
+ return (React.createElement("div", { ref: ref, className: (0, clx_1.clx)("txt-compact-small-plus text-ui-contrast-fg-secondary px-3 py-2.5", className), ...props }));
25
+ });
26
+ Value.displayName = "CommandBar.Value";
27
+ const Bar = React.forwardRef(({ className, ...props }, ref) => {
28
+ return (React.createElement("div", { ref: ref, className: (0, clx_1.clx)("bg-ui-contrast-bg-base relative flex items-center overflow-hidden rounded-full px-1", "after:shadow-elevation-flyout after:pointer-events-none after:absolute after:inset-0 after:rounded-full after:content-['']", className), ...props }));
29
+ });
30
+ Bar.displayName = "CommandBar.Bar";
31
+ const Seperator = React.forwardRef(({ className, ...props }, ref) => {
32
+ return (React.createElement("div", { ref: ref, className: (0, clx_1.clx)("bg-ui-contrast-border-base h-10 w-px", className), ...props }));
33
+ });
34
+ Seperator.displayName = "CommandBar.Seperator";
35
+ const Command = React.forwardRef(({ className, type = "button", label, action, shortcut, disabled, ...props }, ref) => {
36
+ React.useEffect(() => {
37
+ const handleKeyDown = (event) => {
38
+ if (event.key === shortcut) {
39
+ event.preventDefault();
40
+ event.stopPropagation();
41
+ action();
42
+ }
43
+ };
44
+ if (!disabled) {
45
+ document.addEventListener("keydown", handleKeyDown);
46
+ }
47
+ return () => {
48
+ document.removeEventListener("keydown", handleKeyDown);
49
+ };
50
+ }, [action, shortcut, disabled]);
51
+ return (React.createElement("button", { ref: ref, className: (0, clx_1.clx)("bg-ui-contrast-bg-base txt-compact-small-plus transition-fg text-ui-contrast-fg-primary flex items-center gap-x-2 px-3 py-2.5 outline-none", "focus:bg-ui-contrast-bg-highlight focus:hover:bg-ui-contrast-bg-base-hover hover:bg-ui-contrast-bg-base-hover active:bg-ui-contrast-bg-base-pressed focus:active:bg-ui-contrast-bg-base-pressed disabled:!bg-ui-bg-disabled disabled:!text-ui-fg-disabled", "last-of-type:-mr-1 last-of-type:pr-4", className), type: type, onClick: action, ...props },
52
+ React.createElement("span", null, label),
53
+ React.createElement(kbd_1.Kbd, { className: "bg-ui-contrast-bg-subtle border-ui-contrast-border-base text-ui-contrast-fg-secondary" }, shortcut.toUpperCase())));
54
+ });
55
+ Command.displayName = "CommandBar.Command";
56
+ const CommandBar = Object.assign(Root, {
57
+ Command,
58
+ Value,
59
+ Bar,
60
+ Seperator,
61
+ });
62
+ exports.CommandBar = CommandBar;
63
+ //# sourceMappingURL=command-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-bar.js","sourceRoot":"","sources":["../../../../src/components/command-bar/command-bar.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\nimport * as Popover from \"@radix-ui/react-popover\"\nimport * as Portal from \"@radix-ui/react-portal\"\nimport * as React from \"react\"\n\nimport { Kbd } from \"@/components/kbd\"\nimport { clx } from \"@/utils/clx\"\n\ntype CommandBarProps = React.PropsWithChildren<{\n open?: boolean\n onOpenChange?: (open: boolean) => void\n defaultOpen?: boolean\n disableAutoFocus?: boolean\n}>\n\nconst Root = ({\n open = false,\n onOpenChange,\n defaultOpen = false,\n disableAutoFocus = true,\n children,\n}: CommandBarProps) => {\n return (\n <Popover.Root\n open={open}\n onOpenChange={onOpenChange}\n defaultOpen={defaultOpen}\n >\n <Portal.Root>\n <Popover.Anchor\n className={clx(\"fixed bottom-8 left-1/2 h-px w-px -translate-x-1/2\")}\n />\n </Portal.Root>\n <Popover.Portal>\n <Popover.Content\n side=\"top\"\n sideOffset={0}\n onOpenAutoFocus={(e) => {\n if (disableAutoFocus) {\n e.preventDefault()\n }\n }}\n className={clx(\n \"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\"\n )}\n >\n {children}\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n )\n}\nRoot.displayName = \"CommandBar\"\n\nconst Value = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={clx(\n \"txt-compact-small-plus text-ui-contrast-fg-secondary px-3 py-2.5\",\n className\n )}\n {...props}\n />\n )\n})\nValue.displayName = \"CommandBar.Value\"\n\nconst Bar = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={clx(\n \"bg-ui-contrast-bg-base relative flex items-center overflow-hidden rounded-full px-1\",\n \"after:shadow-elevation-flyout after:pointer-events-none after:absolute after:inset-0 after:rounded-full after:content-['']\",\n className\n )}\n {...props}\n />\n )\n})\nBar.displayName = \"CommandBar.Bar\"\n\nconst Seperator = React.forwardRef<\n HTMLDivElement,\n Omit<React.ComponentPropsWithoutRef<\"div\">, \"children\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={clx(\"bg-ui-contrast-border-base h-10 w-px\", className)}\n {...props}\n />\n )\n})\nSeperator.displayName = \"CommandBar.Seperator\"\n\ninterface CommandProps\n extends Omit<\n React.ComponentPropsWithoutRef<\"button\">,\n \"children\" | \"onClick\"\n > {\n action: () => void | Promise<void>\n label: string\n shortcut: string\n}\n\nconst Command = React.forwardRef<HTMLButtonElement, CommandProps>(\n (\n { className, type = \"button\", label, action, shortcut, disabled, ...props },\n ref\n ) => {\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === shortcut) {\n event.preventDefault()\n event.stopPropagation()\n action()\n }\n }\n\n if (!disabled) {\n document.addEventListener(\"keydown\", handleKeyDown)\n }\n\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown)\n }\n }, [action, shortcut, disabled])\n\n return (\n <button\n ref={ref}\n className={clx(\n \"bg-ui-contrast-bg-base txt-compact-small-plus transition-fg text-ui-contrast-fg-primary flex items-center gap-x-2 px-3 py-2.5 outline-none\",\n \"focus:bg-ui-contrast-bg-highlight focus:hover:bg-ui-contrast-bg-base-hover hover:bg-ui-contrast-bg-base-hover active:bg-ui-contrast-bg-base-pressed focus:active:bg-ui-contrast-bg-base-pressed disabled:!bg-ui-bg-disabled disabled:!text-ui-fg-disabled\",\n \"last-of-type:-mr-1 last-of-type:pr-4\",\n className\n )}\n type={type}\n onClick={action}\n {...props}\n >\n <span>{label}</span>\n <Kbd className=\"bg-ui-contrast-bg-subtle border-ui-contrast-border-base text-ui-contrast-fg-secondary\">\n {shortcut.toUpperCase()}\n </Kbd>\n </button>\n )\n }\n)\nCommand.displayName = \"CommandBar.Command\"\n\nconst CommandBar = Object.assign(Root, {\n Command,\n Value,\n Bar,\n Seperator,\n})\n\nexport { CommandBar }\n"]}
@@ -0,0 +1 @@
1
+ export * from "./command-bar";
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./command-bar"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/command-bar/index.ts"],"names":[],"mappings":";;;AAAA,wDAA6B","sourcesContent":["export * from \"./command-bar\"\n"]}
@@ -1,3 +1,3 @@
1
1
  import * as React from "react";
2
- declare const Container: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
2
+ declare const Container: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
3
3
  export { Container };
@@ -1 +1 @@
1
- {"version":3,"file":"container.js","sourceRoot":"","sources":["../../../../src/components/container/container.tsx"],"names":[],"mappings":";;;;AAAA,qDAA8B;AAE9B,qCAAiC;AAEjC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAGhC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IACjC,OAAO,CACL,6BACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,IAAA,SAAG,EACZ,2EAA2E,EAC3E,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC,CAAC,CAAA;AAGO,8BAAS;AAFlB,SAAS,CAAC,WAAW,GAAG,WAAW,CAAA","sourcesContent":["import * as React from \"react\"\n\nimport { clx } from \"@/utils/clx\"\n\nconst Container = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={clx(\n \"shadow-elevation-card-rest bg-ui-bg-base w-full rounded-lg px-8 pb-8 pt-6\",\n className\n )}\n {...props}\n />\n )\n})\nContainer.displayName = \"Container\"\n\nexport { Container }\n"]}
1
+ {"version":3,"file":"container.js","sourceRoot":"","sources":["../../../../src/components/container/container.tsx"],"names":[],"mappings":";;;;AAAA,qDAA8B;AAE9B,qCAAiC;AAEjC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAGhC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IACjC,OAAO,CACL,6BACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,IAAA,SAAG,EACZ,2EAA2E,EAC3E,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC,CAAC,CAAA;AAGO,8BAAS;AAFlB,SAAS,CAAC,WAAW,GAAG,WAAW,CAAA","sourcesContent":["import * as React from \"react\"\n\nimport { clx } from \"@/utils/clx\"\n\nconst Container = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={clx(\n \"shadow-elevation-card-rest bg-ui-bg-base w-full rounded-lg px-8 pb-8 pt-6\",\n className\n )}\n {...props}\n />\n )\n})\nContainer.displayName = \"Container\"\n\nexport { Container }\n"]}
@@ -0,0 +1,21 @@
1
+ import * as React from "react";
2
+ import Primitive from "react-currency-input-field";
3
+ import { VariantProps } from "class-variance-authority";
4
+ declare const currencyInputVariants: (props?: ({
5
+ size?: "base" | "small" | null | undefined;
6
+ } & ({
7
+ class: import("clsx").ClassValue;
8
+ className?: undefined;
9
+ } | {
10
+ class?: undefined;
11
+ className: import("clsx").ClassValue;
12
+ } | {
13
+ class?: undefined;
14
+ className?: undefined;
15
+ })) | undefined) => string;
16
+ interface CurrencyInputProps extends Omit<React.ComponentPropsWithoutRef<typeof Primitive>, "prefix" | "suffix" | "size">, VariantProps<typeof currencyInputVariants> {
17
+ symbol: string;
18
+ code: string;
19
+ }
20
+ declare const CurrencyInput: React.ForwardRefExoticComponent<CurrencyInputProps & React.RefAttributes<HTMLInputElement>>;
21
+ export { CurrencyInput };
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ "use client";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.CurrencyInput = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const React = tslib_1.__importStar(require("react"));
7
+ const react_currency_input_field_1 = tslib_1.__importDefault(require("react-currency-input-field"));
8
+ const text_1 = require("../text");
9
+ const clx_1 = require("../../utils/clx");
10
+ const class_variance_authority_1 = require("class-variance-authority");
11
+ const currencyInputVariants = (0, class_variance_authority_1.cva)((0, clx_1.clx)("flex items-center gap-x-1", "bg-ui-bg-field hover:bg-ui-bg-field-hover shadow-buttons-neutral placeholder-ui-fg-muted text-ui-fg-base transition-fg relative w-full rounded-md", "focus-within:shadow-borders-interactive-with-active"), {
12
+ variants: {
13
+ size: {
14
+ base: "txt-compact-medium h-10 px-3",
15
+ small: "txt-compact-small h-8 px-2",
16
+ },
17
+ },
18
+ defaultVariants: {
19
+ size: "base",
20
+ },
21
+ });
22
+ const CurrencyInput = React.forwardRef(({ size = "base", symbol, code, disabled, onInvalid, className, ...props }, ref) => {
23
+ const innerRef = React.useRef(null);
24
+ React.useImperativeHandle(ref, () => innerRef.current);
25
+ const [valid, setValid] = React.useState(true);
26
+ const onInnerInvalid = React.useCallback((event) => {
27
+ setValid(event.currentTarget.validity.valid);
28
+ if (onInvalid) {
29
+ onInvalid(event);
30
+ }
31
+ }, [onInvalid]);
32
+ return (React.createElement("div", { onClick: () => {
33
+ if (innerRef.current) {
34
+ innerRef.current.focus();
35
+ }
36
+ }, className: (0, clx_1.clx)("w-full cursor-text justify-between overflow-hidden", currencyInputVariants({ size }), {
37
+ "text-ui-fg-disabled !bg-ui-bg-disabled !shadow-buttons-neutral !placeholder-ui-fg-disabled cursor-not-allowed": disabled,
38
+ "!shadow-borders-error invalid:!shadow-borders-error": props["aria-invalid"] || !valid,
39
+ }, className) },
40
+ React.createElement("span", { className: (0, clx_1.clx)("w-fit", {
41
+ "py-[9px]": size === "base",
42
+ "py-[5px]": size === "small",
43
+ }), role: "presentation" },
44
+ React.createElement(text_1.Text, { className: (0, clx_1.clx)("text-ui-fg-muted pointer-events-none select-none uppercase", {
45
+ "text-ui-fg-disabled": disabled,
46
+ }) }, code)),
47
+ React.createElement(react_currency_input_field_1.default, { className: "h-full min-w-0 flex-1 appearance-none bg-transparent text-right outline-none disabled:cursor-not-allowed", disabled: disabled, onInvalid: onInnerInvalid, ref: innerRef, ...props }),
48
+ React.createElement("span", { className: (0, clx_1.clx)("w-fit min-w-[16px] text-right", {
49
+ "py-[9px]": size === "base",
50
+ "py-[5px]": size === "small",
51
+ }), role: "presentation" },
52
+ React.createElement(text_1.Text, { className: (0, clx_1.clx)("text-ui-fg-muted pointer-events-none select-none", {
53
+ "text-ui-fg-disabled": disabled,
54
+ }) }, symbol))));
55
+ });
56
+ exports.CurrencyInput = CurrencyInput;
57
+ CurrencyInput.displayName = "CurrencyInput";
58
+ //# sourceMappingURL=currency-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"currency-input.js","sourceRoot":"","sources":["../../../../src/components/currency-input/currency-input.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAA;;;;AAEZ,qDAA8B;AAC9B,oGAAkD;AAElD,4CAAwC;AACxC,qCAAiC;AACjC,uEAA4D;AAE5D,MAAM,qBAAqB,GAAG,IAAA,8BAAG,EAC/B,IAAA,SAAG,EACD,2BAA2B,EAC3B,mJAAmJ,EACnJ,qDAAqD,CACtD,EACD;IACE,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,IAAI,EAAE,8BAA8B;YACpC,KAAK,EAAE,4BAA4B;SACpC;KACF;IACD,eAAe,EAAE;QACf,IAAI,EAAE,MAAM;KACb;CACF,CACF,CAAA;AAYD,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CACpC,CACE,EAAE,IAAI,GAAG,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EACzE,GAAG,EACH,EAAE;IACF,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAmB,IAAI,CAAC,CAAA;IAErD,KAAK,CAAC,mBAAmB,CACvB,GAAG,EACH,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CACvB,CAAA;IAED,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAE9C,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CACtC,CAAC,KAAwC,EAAE,EAAE;QAC3C,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAE5C,IAAI,SAAS,EAAE;YACb,SAAS,CAAC,KAAK,CAAC,CAAA;SACjB;IACH,CAAC,EACD,CAAC,SAAS,CAAC,CACZ,CAAA;IAED,OAAO,CACL,6BACE,OAAO,EAAE,GAAG,EAAE;YACZ,IAAI,QAAQ,CAAC,OAAO,EAAE;gBACpB,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;aACzB;QACH,CAAC,EACD,SAAS,EAAE,IAAA,SAAG,EACZ,oDAAoD,EACpD,qBAAqB,CAAC,EAAE,IAAI,EAAE,CAAC,EAC/B;YACE,+GAA+G,EAC7G,QAAQ;YACV,qDAAqD,EACnD,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK;SAClC,EACD,SAAS,CACV;QAED,8BACE,SAAS,EAAE,IAAA,SAAG,EAAC,OAAO,EAAE;gBACtB,UAAU,EAAE,IAAI,KAAK,MAAM;gBAC3B,UAAU,EAAE,IAAI,KAAK,OAAO;aAC7B,CAAC,EACF,IAAI,EAAC,cAAc;YAEnB,oBAAC,WAAI,IACH,SAAS,EAAE,IAAA,SAAG,EACZ,4DAA4D,EAC5D;oBACE,qBAAqB,EAAE,QAAQ;iBAChC,CACF,IAEA,IAAI,CACA,CACF;QACP,oBAAC,oCAAS,IACR,SAAS,EAAC,0GAA0G,EACpH,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,cAAc,EACzB,GAAG,EAAE,QAAQ,KACT,KAAK,GACT;QACF,8BACE,SAAS,EAAE,IAAA,SAAG,EAAC,+BAA+B,EAAE;gBAC9C,UAAU,EAAE,IAAI,KAAK,MAAM;gBAC3B,UAAU,EAAE,IAAI,KAAK,OAAO;aAC7B,CAAC,EACF,IAAI,EAAC,cAAc;YAEnB,oBAAC,WAAI,IACH,SAAS,EAAE,IAAA,SAAG,EAAC,kDAAkD,EAAE;oBACjE,qBAAqB,EAAE,QAAQ;iBAChC,CAAC,IAED,MAAM,CACF,CACF,CACH,CACP,CAAA;AACH,CAAC,CACF,CAAA;AAGQ,sCAAa;AAFtB,aAAa,CAAC,WAAW,GAAG,eAAe,CAAA","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport Primitive from \"react-currency-input-field\"\n\nimport { Text } from \"@/components/text\"\nimport { clx } from \"@/utils/clx\"\nimport { VariantProps, cva } from \"class-variance-authority\"\n\nconst currencyInputVariants = cva(\n clx(\n \"flex items-center gap-x-1\",\n \"bg-ui-bg-field hover:bg-ui-bg-field-hover shadow-buttons-neutral placeholder-ui-fg-muted text-ui-fg-base transition-fg relative w-full rounded-md\",\n \"focus-within:shadow-borders-interactive-with-active\"\n ),\n {\n variants: {\n size: {\n base: \"txt-compact-medium h-10 px-3\",\n small: \"txt-compact-small h-8 px-2\",\n },\n },\n defaultVariants: {\n size: \"base\",\n },\n }\n)\n\ninterface CurrencyInputProps\n extends Omit<\n React.ComponentPropsWithoutRef<typeof Primitive>,\n \"prefix\" | \"suffix\" | \"size\"\n >,\n VariantProps<typeof currencyInputVariants> {\n symbol: string\n code: string\n}\n\nconst CurrencyInput = React.forwardRef<HTMLInputElement, CurrencyInputProps>(\n (\n { size = \"base\", symbol, code, disabled, onInvalid, className, ...props },\n ref\n ) => {\n const innerRef = React.useRef<HTMLInputElement>(null)\n\n React.useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n ref,\n () => innerRef.current\n )\n\n const [valid, setValid] = React.useState(true)\n\n const onInnerInvalid = React.useCallback(\n (event: React.FormEvent<HTMLInputElement>) => {\n setValid(event.currentTarget.validity.valid)\n\n if (onInvalid) {\n onInvalid(event)\n }\n },\n [onInvalid]\n )\n\n return (\n <div\n onClick={() => {\n if (innerRef.current) {\n innerRef.current.focus()\n }\n }}\n className={clx(\n \"w-full cursor-text justify-between overflow-hidden\",\n currencyInputVariants({ size }),\n {\n \"text-ui-fg-disabled !bg-ui-bg-disabled !shadow-buttons-neutral !placeholder-ui-fg-disabled cursor-not-allowed\":\n disabled,\n \"!shadow-borders-error invalid:!shadow-borders-error\":\n props[\"aria-invalid\"] || !valid,\n },\n className\n )}\n >\n <span\n className={clx(\"w-fit\", {\n \"py-[9px]\": size === \"base\",\n \"py-[5px]\": size === \"small\",\n })}\n role=\"presentation\"\n >\n <Text\n className={clx(\n \"text-ui-fg-muted pointer-events-none select-none uppercase\",\n {\n \"text-ui-fg-disabled\": disabled,\n }\n )}\n >\n {code}\n </Text>\n </span>\n <Primitive\n className=\"h-full min-w-0 flex-1 appearance-none bg-transparent text-right outline-none disabled:cursor-not-allowed\"\n disabled={disabled}\n onInvalid={onInnerInvalid}\n ref={innerRef}\n {...props}\n />\n <span\n className={clx(\"w-fit min-w-[16px] text-right\", {\n \"py-[9px]\": size === \"base\",\n \"py-[5px]\": size === \"small\",\n })}\n role=\"presentation\"\n >\n <Text\n className={clx(\"text-ui-fg-muted pointer-events-none select-none\", {\n \"text-ui-fg-disabled\": disabled,\n })}\n >\n {symbol}\n </Text>\n </span>\n </div>\n )\n }\n)\nCurrencyInput.displayName = \"CurrencyInput\"\n\nexport { CurrencyInput }\n"]}
@@ -0,0 +1 @@
1
+ export * from "./currency-input";
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./currency-input"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/currency-input/index.ts"],"names":[],"mappings":";;;AAAA,2DAAgC","sourcesContent":["export * from \"./currency-input\"\n"]}
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import type { DateRange } from "react-day-picker";
2
+ import type { DateRange } from "../../types";
3
3
  interface Preset {
4
4
  label: string;
5
5
  }
@@ -14,11 +14,11 @@ const time_input_1 = require("../time-input");
14
14
  const clx_1 = require("../../utils/clx");
15
15
  const is_browser_locale_hour_cycle_24h_1 = require("../../utils/is-browser-locale-hour-cycle-24h");
16
16
  const class_variance_authority_1 = require("class-variance-authority");
17
- const displayVariants = (0, class_variance_authority_1.cva)((0, clx_1.clx)("text-ui-fg-base bg-ui-bg-field border-ui-border-base transition-fg shadow-buttons-neutral flex w-full items-center gap-x-2 rounded-md border outline-none", "hover:bg-ui-bg-field-hover", "focus:border-ui-border-interactive focus:shadow-borders-active data-[state=open]:shadow-borders-active data-[state=open]:border-ui-border-interactive", "disabled:bg-ui-bg-disabled disabled:text-ui-fg-disabled disabled:shadow-none", "aria-[invalid=true]:!border-ui-border-error aria-[invalid=true]:!shadow-borders-error"), {
17
+ const displayVariants = (0, class_variance_authority_1.cva)((0, clx_1.clx)("text-ui-fg-base bg-ui-bg-field transition-fg shadow-buttons-neutral flex w-full items-center gap-x-2 rounded-md outline-none", "hover:bg-ui-bg-field-hover", "focus:shadow-borders-interactive-with-active data-[state=open]:shadow-borders-interactive-with-active", "disabled:bg-ui-bg-disabled disabled:text-ui-fg-disabled disabled:shadow-buttons-neutral", "aria-[invalid=true]:!shadow-borders-error"), {
18
18
  variants: {
19
19
  size: {
20
- base: "text-compact-small txt-compact-medium h-10 px-3 py-[9px]",
21
- small: "text-compact-medium txt-compact-small h-8 px-2 py-[5px]",
20
+ base: "txt-compact-medium h-10 px-3 py-2.5",
21
+ small: "txt-compact-small h-8 px-2 py-1.5",
22
22
  },
23
23
  },
24
24
  defaultVariants: {
@@ -28,12 +28,13 @@ const displayVariants = (0, class_variance_authority_1.cva)((0, clx_1.clx)("text
28
28
  const Display = React.forwardRef(({ className, children, placeholder, size = "base", ...props }, ref) => {
29
29
  return (React.createElement(Primitives.Trigger, { asChild: true },
30
30
  React.createElement("button", { ref: ref, className: (0, clx_1.clx)(displayVariants({ size }), className), ...props },
31
- React.createElement(icons_1.Calendar, { className: "text-ui-fg-muted h-5 w-5" }),
32
- React.createElement("span", { className: "w-full overflow-hidden text-ellipsis whitespace-nowrap text-left" }, children ? (children) : placeholder ? (React.createElement("span", { className: "text-ui-fg-muted" }, placeholder)) : null))));
31
+ React.createElement(icons_1.Calendar, { className: "text-ui-fg-muted" }),
32
+ React.createElement("span", { className: "flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-left" }, children ? (children) : placeholder ? (React.createElement("span", { className: "text-ui-fg-muted" }, placeholder)) : null))));
33
33
  });
34
34
  Display.displayName = "DatePicker.Display";
35
35
  const Flyout = React.forwardRef(({ className, children, ...props }, ref) => {
36
- return (React.createElement(Primitives.Content, { ref: ref, sideOffset: 8, align: "center", className: (0, clx_1.clx)("txt-compact-small shadow-elevation-flyout bg-ui-bg-base z-30 rounded-lg", "animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95", "data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", className), ...props }, children));
36
+ return (React.createElement(Primitives.Portal, null,
37
+ React.createElement(Primitives.Content, { ref: ref, sideOffset: 8, align: "center", className: (0, clx_1.clx)("txt-compact-small shadow-elevation-flyout bg-ui-bg-base w-fit rounded-lg", "animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95", "data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", className), ...props }, children)));
37
38
  });
38
39
  Flyout.displayName = "DatePicker.Flyout";
39
40
  const PresetContainer = ({ presets, onSelect, currentValue, }) => {
@@ -110,16 +111,22 @@ const SingleDatePicker = ({ defaultValue, value, size = "base", onChange, preset
110
111
  const [open, setOpen] = React.useState(false);
111
112
  const [date, setDate] = React.useState((_a = value !== null && value !== void 0 ? value : defaultValue) !== null && _a !== void 0 ? _a : undefined);
112
113
  const [month, setMonth] = React.useState(date);
113
- const time = React.useMemo(() => {
114
- var _a, _b;
115
- const hour = (_a = date === null || date === void 0 ? void 0 : date.getHours()) !== null && _a !== void 0 ? _a : 0;
116
- const minute = (_b = date === null || date === void 0 ? void 0 : date.getMinutes()) !== null && _b !== void 0 ? _b : 0;
117
- return new date_1.Time(hour, minute, 0);
118
- }, [date]);
114
+ const [time, setTime] = React.useState(value
115
+ ? new date_1.Time(value.getHours(), value.getMinutes())
116
+ : defaultValue
117
+ ? new date_1.Time(defaultValue.getHours(), defaultValue.getMinutes())
118
+ : new date_1.Time(0, 0));
119
119
  const initialDate = React.useMemo(() => {
120
120
  return date;
121
121
  // eslint-disable-next-line react-hooks/exhaustive-deps
122
122
  }, [open]);
123
+ /**
124
+ * Update the date when the value changes.
125
+ */
126
+ React.useEffect(() => {
127
+ var _a;
128
+ setDate((_a = value !== null && value !== void 0 ? value : defaultValue) !== null && _a !== void 0 ? _a : undefined);
129
+ }, [value, defaultValue]);
123
130
  React.useEffect(() => {
124
131
  if (date) {
125
132
  setMonth(date);
@@ -131,23 +138,57 @@ const SingleDatePicker = ({ defaultValue, value, size = "base", onChange, preset
131
138
  }
132
139
  // eslint-disable-next-line react-hooks/exhaustive-deps
133
140
  }, [open]);
134
- const handleCancel = () => {
141
+ const onCancel = () => {
135
142
  setDate(initialDate);
143
+ setTime(new date_1.Time(0, 0));
136
144
  setOpen(false);
137
145
  };
138
- const handleDateChange = (date) => {
139
- setDate(date);
140
- onChange === null || onChange === void 0 ? void 0 : onChange(date);
146
+ const onDateChange = (date) => {
147
+ const newDate = date;
148
+ if (showTimePicker) {
149
+ /**
150
+ * If the time is cleared, and the date is
151
+ * changed then we want to reset the time.
152
+ */
153
+ if (newDate && !time) {
154
+ setTime(new date_1.Time(0, 0));
155
+ }
156
+ /**
157
+ * If the time is set, and the date is changed
158
+ * then we want to update the date with the
159
+ * time.
160
+ */
161
+ if (newDate && time) {
162
+ newDate.setHours(time.hour);
163
+ newDate.setMinutes(time.minute);
164
+ }
165
+ setDate(newDate);
166
+ onChange === null || onChange === void 0 ? void 0 : onChange(newDate);
167
+ }
141
168
  };
142
- const handleTimeChange = (time) => {
143
- if (date) {
144
- const newDate = new Date(date.getTime());
169
+ const onTimeChange = (time) => {
170
+ setTime(time);
171
+ if (!date) {
172
+ return;
173
+ }
174
+ const newDate = new Date(date.getTime());
175
+ if (!time) {
176
+ /**
177
+ * When a segment of the time input is cleared,
178
+ * it will return `null` as the value is no longer
179
+ * a valid time. In this case, we want to set the
180
+ * time to for the date, effectivly resetting the
181
+ * input field.
182
+ */
183
+ newDate.setHours(0);
184
+ newDate.setMinutes(0);
185
+ }
186
+ else {
145
187
  newDate.setHours(time.hour);
146
188
  newDate.setMinutes(time.minute);
147
- newDate.setSeconds(time.second);
148
- setDate(newDate);
149
- onChange === null || onChange === void 0 ? void 0 : onChange(newDate);
150
189
  }
190
+ setDate(newDate);
191
+ onChange === null || onChange === void 0 ? void 0 : onChange(newDate);
151
192
  };
152
193
  const formattedDate = React.useMemo(() => {
153
194
  if (!date) {
@@ -162,13 +203,13 @@ const SingleDatePicker = ({ defaultValue, value, size = "base", onChange, preset
162
203
  React.createElement("div", { className: "flex items-start" },
163
204
  presets && presets.length > 0 && (React.createElement("div", { className: "relative h-full w-[160px] border-r" },
164
205
  React.createElement("div", { className: "absolute inset-0 overflow-y-scroll p-3" },
165
- React.createElement(PresetContainer, { currentValue: date, presets: presets, onSelect: handleDateChange })))),
206
+ React.createElement(PresetContainer, { currentValue: date, presets: presets, onSelect: onDateChange })))),
166
207
  React.createElement("div", null,
167
- React.createElement(calendar_1.Calendar, { mode: "single", month: month, onMonthChange: setMonth, selected: date, onSelect: handleDateChange, disabled: disabled, ...props }),
208
+ React.createElement(calendar_1.Calendar, { mode: "single", month: month, onMonthChange: setMonth, selected: date, onSelect: onDateChange, disabled: disabled, ...props }),
168
209
  showTimePicker && (React.createElement("div", { className: "border-ui-border-base border-t p-3" },
169
- React.createElement(time_input_1.TimeInput, { "aria-label": "Time", onChange: handleTimeChange, isDisabled: !date, value: time, isRequired: props.required }))),
210
+ React.createElement(time_input_1.TimeInput, { "aria-label": "Time", onChange: onTimeChange, isDisabled: !date, value: time, isRequired: props.required }))),
170
211
  React.createElement("div", { className: "border-ui-border-base flex items-center gap-x-2 border-t p-3" },
171
- React.createElement(button_1.Button, { variant: "secondary", className: "w-full", type: "button", onClick: handleCancel }, "Cancel"),
212
+ React.createElement(button_1.Button, { variant: "secondary", className: "w-full", type: "button", onClick: onCancel }, "Cancel"),
172
213
  React.createElement(button_1.Button, { variant: "primary", className: "w-full", type: "button", onClick: () => setOpen(false) }, "Apply"))))))));
173
214
  };
174
215
  const RangeDatePicker = ({ defaultValue, value, onChange, size = "base", showTimePicker, presets, disabled, className, ...props }) => {
@@ -176,21 +217,27 @@ const RangeDatePicker = ({ defaultValue, value, onChange, size = "base", showTim
176
217
  const [open, setOpen] = React.useState(false);
177
218
  const [range, setRange] = React.useState((_a = value !== null && value !== void 0 ? value : defaultValue) !== null && _a !== void 0 ? _a : undefined);
178
219
  const [month, setMonth] = React.useState(range === null || range === void 0 ? void 0 : range.from);
179
- const time = React.useMemo(() => {
180
- var _a, _b, _c, _d, _e, _f, _g, _h;
181
- const startHour = (_b = (_a = range === null || range === void 0 ? void 0 : range.from) === null || _a === void 0 ? void 0 : _a.getHours()) !== null && _b !== void 0 ? _b : 0;
182
- const startMinute = (_d = (_c = range === null || range === void 0 ? void 0 : range.from) === null || _c === void 0 ? void 0 : _c.getMinutes()) !== null && _d !== void 0 ? _d : 0;
183
- const endHour = (_f = (_e = range === null || range === void 0 ? void 0 : range.to) === null || _e === void 0 ? void 0 : _e.getHours()) !== null && _f !== void 0 ? _f : 0;
184
- const endMinute = (_h = (_g = range === null || range === void 0 ? void 0 : range.to) === null || _g === void 0 ? void 0 : _g.getMinutes()) !== null && _h !== void 0 ? _h : 0;
185
- return {
186
- start: new date_1.Time(startHour, startMinute, 0),
187
- end: new date_1.Time(endHour, endMinute, 0),
188
- };
189
- }, [range]);
220
+ const [startTime, setStartTime] = React.useState((value === null || value === void 0 ? void 0 : value.from)
221
+ ? new date_1.Time(value.from.getHours(), value.from.getMinutes())
222
+ : (defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.from)
223
+ ? new date_1.Time(defaultValue.from.getHours(), defaultValue.from.getMinutes())
224
+ : new date_1.Time(0, 0));
225
+ const [endTime, setEndTime] = React.useState((value === null || value === void 0 ? void 0 : value.to)
226
+ ? new date_1.Time(value.to.getHours(), value.to.getMinutes())
227
+ : (defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.to)
228
+ ? new date_1.Time(defaultValue.to.getHours(), defaultValue.to.getMinutes())
229
+ : new date_1.Time(0, 0));
190
230
  const initialRange = React.useMemo(() => {
191
231
  return range;
192
232
  // eslint-disable-next-line react-hooks/exhaustive-deps
193
233
  }, [open]);
234
+ /**
235
+ * Update the range when the value changes.
236
+ */
237
+ React.useEffect(() => {
238
+ var _a;
239
+ setRange((_a = value !== null && value !== void 0 ? value : defaultValue) !== null && _a !== void 0 ? _a : undefined);
240
+ }, [value, defaultValue]);
194
241
  React.useEffect(() => {
195
242
  if (range) {
196
243
  setMonth(range.from);
@@ -202,15 +249,42 @@ const RangeDatePicker = ({ defaultValue, value, onChange, size = "base", showTim
202
249
  }
203
250
  // eslint-disable-next-line react-hooks/exhaustive-deps
204
251
  }, [open]);
205
- const handleRangeChange = (range) => {
206
- setRange(range);
207
- onChange === null || onChange === void 0 ? void 0 : onChange(range);
252
+ const onRangeChange = (range) => {
253
+ const newRange = range;
254
+ if (showTimePicker) {
255
+ if ((newRange === null || newRange === void 0 ? void 0 : newRange.from) && !startTime) {
256
+ setStartTime(new date_1.Time(0, 0));
257
+ }
258
+ if ((newRange === null || newRange === void 0 ? void 0 : newRange.to) && !endTime) {
259
+ setEndTime(new date_1.Time(0, 0));
260
+ }
261
+ if ((newRange === null || newRange === void 0 ? void 0 : newRange.from) && startTime) {
262
+ newRange.from.setHours(startTime.hour);
263
+ newRange.from.setMinutes(startTime.minute);
264
+ }
265
+ if ((newRange === null || newRange === void 0 ? void 0 : newRange.to) && endTime) {
266
+ newRange.to.setHours(endTime.hour);
267
+ newRange.to.setMinutes(endTime.minute);
268
+ }
269
+ }
270
+ setRange(newRange);
271
+ onChange === null || onChange === void 0 ? void 0 : onChange(newRange);
208
272
  };
209
- const handleCancel = () => {
273
+ const onCancel = () => {
210
274
  setRange(initialRange);
275
+ setStartTime(new date_1.Time(0, 0));
276
+ setEndTime(new date_1.Time(0, 0));
211
277
  setOpen(false);
212
278
  };
213
- const handleTimeChange = (time, pos) => {
279
+ const onTimeChange = (time, pos) => {
280
+ switch (pos) {
281
+ case "start":
282
+ setStartTime(time);
283
+ break;
284
+ case "end":
285
+ setEndTime(time);
286
+ break;
287
+ }
214
288
  if (!range) {
215
289
  return;
216
290
  }
@@ -219,8 +293,14 @@ const RangeDatePicker = ({ defaultValue, value, onChange, size = "base", showTim
219
293
  return;
220
294
  }
221
295
  const newDate = new Date(range.from.getTime());
222
- newDate.setHours(time.hour);
223
- newDate.setMinutes(time.minute);
296
+ if (!time) {
297
+ newDate.setHours(0);
298
+ newDate.setMinutes(0);
299
+ }
300
+ else {
301
+ newDate.setHours(time.hour);
302
+ newDate.setMinutes(time.minute);
303
+ }
224
304
  setRange({
225
305
  ...range,
226
306
  from: newDate,
@@ -231,8 +311,14 @@ const RangeDatePicker = ({ defaultValue, value, onChange, size = "base", showTim
231
311
  return;
232
312
  }
233
313
  const newDate = new Date(range.to.getTime());
234
- newDate.setHours(time.hour);
235
- newDate.setMinutes(time.minute);
314
+ if (!time) {
315
+ newDate.setHours(0);
316
+ newDate.setMinutes(0);
317
+ }
318
+ else {
319
+ newDate.setHours(time.hour);
320
+ newDate.setMinutes(time.minute);
321
+ }
236
322
  setRange({
237
323
  ...range,
238
324
  to: newDate,
@@ -252,26 +338,26 @@ const RangeDatePicker = ({ defaultValue, value, onChange, size = "base", showTim
252
338
  React.createElement("div", { className: "flex items-start" },
253
339
  presets && presets.length > 0 && (React.createElement("div", { className: "relative h-full w-[160px] border-r" },
254
340
  React.createElement("div", { className: "absolute inset-0 overflow-y-scroll p-3" },
255
- React.createElement(PresetContainer, { currentValue: range, presets: presets, onSelect: handleRangeChange })))),
341
+ React.createElement(PresetContainer, { currentValue: range, presets: presets, onSelect: onRangeChange })))),
256
342
  React.createElement("div", null,
257
- React.createElement(calendar_1.Calendar, { mode: "range", selected: range, onSelect: handleRangeChange, month: month, onMonthChange: setMonth, numberOfMonths: 2, disabled: disabled, classNames: {
258
- months: "flex flex-col sm:flex-row divide-y sm:divide-y-0 sm:divide-x divide-ui-border-base",
343
+ React.createElement(calendar_1.Calendar, { mode: "range", selected: range, onSelect: onRangeChange, month: month, onMonthChange: setMonth, numberOfMonths: 2, disabled: disabled, classNames: {
344
+ months: "flex flex-row divide-x divide-ui-border-base",
259
345
  }, ...props }),
260
346
  showTimePicker && (React.createElement("div", { className: "border-ui-border-base flex items-center justify-evenly gap-x-3 border-t p-3" },
261
347
  React.createElement("div", { className: "flex flex-1 items-center gap-x-2" },
262
348
  React.createElement("span", { className: "text-ui-fg-subtle" }, "Start:"),
263
- React.createElement(time_input_1.TimeInput, { value: time.start, onChange: (v) => handleTimeChange(v, "start"), "aria-label": "Start date time", isDisabled: !(range === null || range === void 0 ? void 0 : range.from), isRequired: props.required })),
349
+ React.createElement(time_input_1.TimeInput, { value: startTime, onChange: (v) => onTimeChange(v, "start"), "aria-label": "Start date time", isDisabled: !(range === null || range === void 0 ? void 0 : range.from), isRequired: props.required })),
264
350
  React.createElement(icons_1.Minus, { className: "text-ui-fg-muted" }),
265
351
  React.createElement("div", { className: "flex flex-1 items-center gap-x-2" },
266
352
  React.createElement("span", { className: "text-ui-fg-subtle" }, "End:"),
267
- React.createElement(time_input_1.TimeInput, { value: time.end, onChange: (v) => handleTimeChange(v, "end"), "aria-label": "End date time", isDisabled: !(range === null || range === void 0 ? void 0 : range.to), isRequired: props.required })))),
353
+ React.createElement(time_input_1.TimeInput, { value: endTime, onChange: (v) => onTimeChange(v, "end"), "aria-label": "End date time", isDisabled: !(range === null || range === void 0 ? void 0 : range.to), isRequired: props.required })))),
268
354
  React.createElement("div", { className: "flex items-center justify-between border-t p-3" },
269
355
  React.createElement("p", { className: (0, clx_1.clx)("text-ui-fg-subtle txt-compact-small-plus") },
270
356
  React.createElement("span", { className: "text-ui-fg-muted" }, "Range:"),
271
357
  " ",
272
358
  displayRange),
273
359
  React.createElement("div", { className: "flex items-center gap-x-2" },
274
- React.createElement(button_1.Button, { variant: "secondary", type: "button", onClick: handleCancel }, "Cancel"),
360
+ React.createElement(button_1.Button, { variant: "secondary", type: "button", onClick: onCancel }, "Cancel"),
275
361
  React.createElement(button_1.Button, { variant: "primary", type: "button", onClick: () => setOpen(false) }, "Apply")))))))));
276
362
  };
277
363
  const validatePresets = (presets, rules) => {