@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.
- package/LICENSE +21 -0
- package/README.md +51 -2
- package/dist/cjs/components/badge/badge.d.ts +16 -5
- package/dist/cjs/components/badge/badge.js +20 -31
- package/dist/cjs/components/badge/badge.js.map +1 -1
- package/dist/cjs/components/button/button.d.ts +1 -2
- package/dist/cjs/components/button/button.js +12 -40
- package/dist/cjs/components/button/button.js.map +1 -1
- package/dist/cjs/components/calendar/calendar.js +5 -5
- package/dist/cjs/components/calendar/calendar.js.map +1 -1
- package/dist/cjs/components/checkbox/checkbox.js +1 -1
- package/dist/cjs/components/checkbox/checkbox.js.map +1 -1
- package/dist/cjs/components/code-block/code-block.d.ts +3 -5
- package/dist/cjs/components/code-block/code-block.js +19 -19
- package/dist/cjs/components/code-block/code-block.js.map +1 -1
- package/dist/cjs/components/command-bar/command-bar.d.ts +22 -0
- package/dist/cjs/components/command-bar/command-bar.js +63 -0
- package/dist/cjs/components/command-bar/command-bar.js.map +1 -0
- package/dist/cjs/components/command-bar/index.d.ts +1 -0
- package/dist/cjs/components/command-bar/index.js +5 -0
- package/dist/cjs/components/command-bar/index.js.map +1 -0
- package/dist/cjs/components/container/container.d.ts +1 -1
- package/dist/cjs/components/container/container.js.map +1 -1
- package/dist/cjs/components/currency-input/currency-input.d.ts +21 -0
- package/dist/cjs/components/currency-input/currency-input.js +58 -0
- package/dist/cjs/components/currency-input/currency-input.js.map +1 -0
- package/dist/cjs/components/currency-input/index.d.ts +1 -0
- package/dist/cjs/components/currency-input/index.js +5 -0
- package/dist/cjs/components/currency-input/index.js.map +1 -0
- package/dist/cjs/components/date-picker/date-picker.d.ts +1 -1
- package/dist/cjs/components/date-picker/date-picker.js +138 -52
- package/dist/cjs/components/date-picker/date-picker.js.map +1 -1
- package/dist/cjs/components/drawer/drawer.d.ts +13 -15
- package/dist/cjs/components/drawer/drawer.js +53 -44
- package/dist/cjs/components/drawer/drawer.js.map +1 -1
- package/dist/cjs/components/dropdown-menu/dropdown-menu.js +7 -7
- package/dist/cjs/components/dropdown-menu/dropdown-menu.js.map +1 -1
- package/dist/cjs/components/focus-modal/focus-modal.d.ts +9 -12
- package/dist/cjs/components/focus-modal/focus-modal.js +39 -35
- package/dist/cjs/components/focus-modal/focus-modal.js.map +1 -1
- package/dist/cjs/components/heading/heading.js +3 -3
- package/dist/cjs/components/heading/heading.js.map +1 -1
- package/dist/cjs/components/hint/hint.d.ts +1 -1
- package/dist/cjs/components/icon-badge/icon-badge.d.ts +20 -0
- package/dist/cjs/components/icon-badge/icon-badge.js +24 -0
- package/dist/cjs/components/icon-badge/icon-badge.js.map +1 -0
- package/dist/cjs/components/icon-badge/index.d.ts +1 -0
- package/dist/cjs/components/icon-badge/index.js +5 -0
- package/dist/cjs/components/icon-badge/index.js.map +1 -0
- package/dist/cjs/components/icon-button/icon-button.d.ts +21 -0
- package/dist/cjs/components/icon-button/icon-button.js +48 -0
- package/dist/cjs/components/icon-button/icon-button.js.map +1 -0
- package/dist/cjs/components/icon-button/index.d.ts +1 -0
- package/dist/cjs/components/icon-button/index.js +5 -0
- package/dist/cjs/components/icon-button/index.js.map +1 -0
- package/dist/cjs/components/input/input.js +6 -6
- package/dist/cjs/components/input/input.js.map +1 -1
- package/dist/cjs/components/kbd/kbd.d.ts +1 -1
- package/dist/cjs/components/kbd/kbd.js +4 -3
- package/dist/cjs/components/kbd/kbd.js.map +1 -1
- package/dist/cjs/components/progress-accordion/index.d.ts +1 -0
- package/dist/cjs/components/progress-accordion/index.js +5 -0
- package/dist/cjs/components/progress-accordion/index.js.map +1 -0
- package/dist/cjs/components/progress-accordion/progress-accordion.d.ts +19 -0
- package/dist/cjs/components/progress-accordion/progress-accordion.js +54 -0
- package/dist/cjs/components/progress-accordion/progress-accordion.js.map +1 -0
- package/dist/cjs/components/progress-tabs/index.d.ts +1 -0
- package/dist/cjs/components/progress-tabs/index.js +5 -0
- package/dist/cjs/components/progress-tabs/index.js.map +1 -0
- package/dist/cjs/components/progress-tabs/progress-tabs.d.ts +15 -0
- package/dist/cjs/components/progress-tabs/progress-tabs.js +46 -0
- package/dist/cjs/components/progress-tabs/progress-tabs.js.map +1 -0
- package/dist/cjs/components/prompt/prompt.js +3 -3
- package/dist/cjs/components/prompt/prompt.js.map +1 -1
- package/dist/cjs/components/radio-group/radio-group.d.ts +5 -0
- package/dist/cjs/components/radio-group/radio-group.js +25 -4
- package/dist/cjs/components/radio-group/radio-group.js.map +1 -1
- package/dist/cjs/components/select/select.js +4 -8
- package/dist/cjs/components/select/select.js.map +1 -1
- package/dist/cjs/components/status-badge/index.d.ts +1 -0
- package/dist/cjs/components/status-badge/index.js +5 -0
- package/dist/cjs/components/status-badge/index.js.map +1 -0
- package/dist/cjs/components/status-badge/status-badge.d.ts +6 -0
- package/dist/cjs/components/status-badge/status-badge.js +23 -0
- package/dist/cjs/components/status-badge/status-badge.js.map +1 -0
- package/dist/cjs/components/switch/switch.js +1 -1
- package/dist/cjs/components/switch/switch.js.map +1 -1
- package/dist/cjs/components/table/table.js +6 -7
- package/dist/cjs/components/table/table.js.map +1 -1
- package/dist/cjs/components/tabs/index.d.ts +1 -0
- package/dist/cjs/components/tabs/index.js +5 -0
- package/dist/cjs/components/tabs/index.js.map +1 -0
- package/dist/cjs/components/tabs/tabs.d.ts +11 -0
- package/dist/cjs/components/tabs/tabs.js +25 -0
- package/dist/cjs/components/tabs/tabs.js.map +1 -0
- package/dist/cjs/components/text/text.d.ts +1 -0
- package/dist/cjs/components/text/text.js +64 -7
- package/dist/cjs/components/text/text.js.map +1 -1
- package/dist/cjs/components/textarea/textarea.js +1 -1
- package/dist/cjs/components/textarea/textarea.js.map +1 -1
- package/dist/cjs/components/time-input/time-input.js +1 -1
- package/dist/cjs/components/time-input/time-input.js.map +1 -1
- package/dist/cjs/components/toast/toast.js +1 -1
- package/dist/cjs/components/toast/toast.js.map +1 -1
- package/dist/cjs/components/tooltip/tooltip.js +1 -1
- package/dist/cjs/components/tooltip/tooltip.js.map +1 -1
- package/dist/cjs/index.d.ts +9 -0
- package/dist/cjs/index.js +20 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types.d.ts +5 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/esm/components/badge/badge.d.ts +16 -5
- package/dist/esm/components/badge/badge.js +19 -31
- package/dist/esm/components/badge/badge.js.map +1 -1
- package/dist/esm/components/button/button.d.ts +1 -2
- package/dist/esm/components/button/button.js +12 -40
- package/dist/esm/components/button/button.js.map +1 -1
- package/dist/esm/components/calendar/calendar.js +5 -5
- package/dist/esm/components/calendar/calendar.js.map +1 -1
- package/dist/esm/components/checkbox/checkbox.js +1 -1
- package/dist/esm/components/checkbox/checkbox.js.map +1 -1
- package/dist/esm/components/code-block/code-block.d.ts +3 -5
- package/dist/esm/components/code-block/code-block.js +7 -7
- package/dist/esm/components/code-block/code-block.js.map +1 -1
- package/dist/esm/components/command-bar/command-bar.d.ts +22 -0
- package/dist/esm/components/command-bar/command-bar.js +59 -0
- package/dist/esm/components/command-bar/command-bar.js.map +1 -0
- package/dist/esm/components/command-bar/index.d.ts +1 -0
- package/dist/esm/components/command-bar/index.js +2 -0
- package/dist/esm/components/command-bar/index.js.map +1 -0
- package/dist/esm/components/container/container.d.ts +1 -1
- package/dist/esm/components/container/container.js.map +1 -1
- package/dist/esm/components/currency-input/currency-input.d.ts +21 -0
- package/dist/esm/components/currency-input/currency-input.js +54 -0
- package/dist/esm/components/currency-input/currency-input.js.map +1 -0
- package/dist/esm/components/currency-input/index.d.ts +1 -0
- package/dist/esm/components/currency-input/index.js +2 -0
- package/dist/esm/components/currency-input/index.js.map +1 -0
- package/dist/esm/components/date-picker/date-picker.d.ts +1 -1
- package/dist/esm/components/date-picker/date-picker.js +139 -53
- package/dist/esm/components/date-picker/date-picker.js.map +1 -1
- package/dist/esm/components/drawer/drawer.d.ts +13 -15
- package/dist/esm/components/drawer/drawer.js +53 -44
- package/dist/esm/components/drawer/drawer.js.map +1 -1
- package/dist/esm/components/dropdown-menu/dropdown-menu.js +7 -7
- package/dist/esm/components/dropdown-menu/dropdown-menu.js.map +1 -1
- package/dist/esm/components/focus-modal/focus-modal.d.ts +9 -12
- package/dist/esm/components/focus-modal/focus-modal.js +39 -35
- package/dist/esm/components/focus-modal/focus-modal.js.map +1 -1
- package/dist/esm/components/heading/heading.js +3 -3
- package/dist/esm/components/heading/heading.js.map +1 -1
- package/dist/esm/components/hint/hint.d.ts +1 -1
- package/dist/esm/components/icon-badge/icon-badge.d.ts +20 -0
- package/dist/esm/components/icon-badge/icon-badge.js +20 -0
- package/dist/esm/components/icon-badge/icon-badge.js.map +1 -0
- package/dist/esm/components/icon-badge/index.d.ts +1 -0
- package/dist/esm/components/icon-badge/index.js +2 -0
- package/dist/esm/components/icon-badge/index.js.map +1 -0
- package/dist/esm/components/icon-button/icon-button.d.ts +21 -0
- package/dist/esm/components/icon-button/icon-button.js +43 -0
- package/dist/esm/components/icon-button/icon-button.js.map +1 -0
- package/dist/esm/components/icon-button/index.d.ts +1 -0
- package/dist/esm/components/icon-button/index.js +2 -0
- package/dist/esm/components/icon-button/index.js.map +1 -0
- package/dist/esm/components/input/input.js +6 -6
- package/dist/esm/components/input/input.js.map +1 -1
- package/dist/esm/components/kbd/kbd.d.ts +1 -1
- package/dist/esm/components/kbd/kbd.js +4 -3
- package/dist/esm/components/kbd/kbd.js.map +1 -1
- package/dist/esm/components/progress-accordion/index.d.ts +1 -0
- package/dist/esm/components/progress-accordion/index.js +2 -0
- package/dist/esm/components/progress-accordion/index.js.map +1 -0
- package/dist/esm/components/progress-accordion/progress-accordion.d.ts +19 -0
- package/dist/esm/components/progress-accordion/progress-accordion.js +50 -0
- package/dist/esm/components/progress-accordion/progress-accordion.js.map +1 -0
- package/dist/esm/components/progress-tabs/index.d.ts +1 -0
- package/dist/esm/components/progress-tabs/index.js +2 -0
- package/dist/esm/components/progress-tabs/index.js.map +1 -0
- package/dist/esm/components/progress-tabs/progress-tabs.d.ts +15 -0
- package/dist/esm/components/progress-tabs/progress-tabs.js +42 -0
- package/dist/esm/components/progress-tabs/progress-tabs.js.map +1 -0
- package/dist/esm/components/prompt/prompt.js +3 -3
- package/dist/esm/components/prompt/prompt.js.map +1 -1
- package/dist/esm/components/radio-group/radio-group.d.ts +5 -0
- package/dist/esm/components/radio-group/radio-group.js +25 -4
- package/dist/esm/components/radio-group/radio-group.js.map +1 -1
- package/dist/esm/components/select/select.js +5 -9
- package/dist/esm/components/select/select.js.map +1 -1
- package/dist/esm/components/status-badge/index.d.ts +1 -0
- package/dist/esm/components/status-badge/index.js +2 -0
- package/dist/esm/components/status-badge/index.js.map +1 -0
- package/dist/esm/components/status-badge/status-badge.d.ts +6 -0
- package/dist/esm/components/status-badge/status-badge.js +19 -0
- package/dist/esm/components/status-badge/status-badge.js.map +1 -0
- package/dist/esm/components/switch/switch.js +1 -1
- package/dist/esm/components/switch/switch.js.map +1 -1
- package/dist/esm/components/table/table.js +6 -7
- package/dist/esm/components/table/table.js.map +1 -1
- package/dist/esm/components/tabs/index.d.ts +1 -0
- package/dist/esm/components/tabs/index.js +2 -0
- package/dist/esm/components/tabs/index.js.map +1 -0
- package/dist/esm/components/tabs/tabs.d.ts +11 -0
- package/dist/esm/components/tabs/tabs.js +21 -0
- package/dist/esm/components/tabs/tabs.js.map +1 -0
- package/dist/esm/components/text/text.d.ts +1 -0
- package/dist/esm/components/text/text.js +64 -7
- package/dist/esm/components/text/text.js.map +1 -1
- package/dist/esm/components/textarea/textarea.js +1 -1
- package/dist/esm/components/textarea/textarea.js.map +1 -1
- package/dist/esm/components/time-input/time-input.js +1 -1
- package/dist/esm/components/time-input/time-input.js.map +1 -1
- package/dist/esm/components/toast/toast.js +1 -1
- package/dist/esm/components/toast/toast.js.map +1 -1
- package/dist/esm/components/tooltip/tooltip.js +1 -1
- package/dist/esm/components/tooltip/tooltip.js.map +1 -1
- package/dist/esm/index.d.ts +9 -0
- package/dist/esm/index.js +10 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types.d.ts +5 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- 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 @@
|
|
|
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.
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/currency-input/index.ts"],"names":[],"mappings":";;;AAAA,2DAAgC","sourcesContent":["export * from \"./currency-input\"\n"]}
|
|
@@ -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
|
|
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: "
|
|
21
|
-
small: "
|
|
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
|
|
32
|
-
React.createElement("span", { className: "
|
|
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.
|
|
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.
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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
|
|
141
|
+
const onCancel = () => {
|
|
135
142
|
setDate(initialDate);
|
|
143
|
+
setTime(new date_1.Time(0, 0));
|
|
136
144
|
setOpen(false);
|
|
137
145
|
};
|
|
138
|
-
const
|
|
139
|
-
|
|
140
|
-
|
|
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
|
|
143
|
-
|
|
144
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
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
|
|
206
|
-
|
|
207
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
223
|
-
|
|
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
|
-
|
|
235
|
-
|
|
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:
|
|
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:
|
|
258
|
-
months: "flex flex-
|
|
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:
|
|
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:
|
|
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:
|
|
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) => {
|