@scaleflex/ui-tw 0.0.40 → 0.0.42
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/badge/badge.component.d.ts +4 -0
- package/badge/badge.component.js +20 -0
- package/badge/badge.constants.d.ts +4 -0
- package/badge/badge.constants.js +19 -0
- package/badge/badge.types.d.ts +4 -0
- package/badge/badge.types.js +1 -0
- package/badge/index.d.ts +1 -0
- package/badge/index.js +1 -0
- package/button/button.component.d.ts +1 -1
- package/button/components/copy-to-clipboard-button.js +1 -0
- package/button/components/start-icon.d.ts +1 -1
- package/date-picker/date-picker.component.d.ts +1 -1
- package/date-picker/date-picker.component.js +34 -8
- package/date-picker/date-picker.types.d.ts +3 -1
- package/dropdown-menu/dropdown-menu.component.d.ts +25 -0
- package/dropdown-menu/dropdown-menu.component.js +152 -0
- package/dropdown-menu/index.d.ts +1 -0
- package/dropdown-menu/index.js +1 -0
- package/input/input.component.d.ts +1 -1
- package/package.json +4 -2
- package/pill/pill.component.d.ts +2 -2
- package/select/select.component.d.ts +1 -1
- package/table/index.d.ts +1 -0
- package/table/index.js +1 -0
- package/table/table.component.d.ts +15 -0
- package/table/table.component.js +83 -0
- package/textarea/components/left-toolbar-buttons.js +2 -0
- package/textarea/components/right-toolbar-buttons.js +1 -0
- package/textarea/components/textarea-with-actions.d.ts +1 -1
- package/textarea/components/textarea-with-actions.js +29 -7
- package/textarea/textarea.component.d.ts +1 -1
- package/textarea/textarea.constants.d.ts +8 -3
- package/textarea/textarea.constants.js +2 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
+
var _excluded = ["className", "variant", "size"];
|
|
4
|
+
import { badgeVariants } from '@scaleflex/ui-tw/badge/badge.constants';
|
|
5
|
+
import { cn } from '@scaleflex/ui-tw/utils/cn';
|
|
6
|
+
import React from 'react';
|
|
7
|
+
function Badge(_ref) {
|
|
8
|
+
var className = _ref.className,
|
|
9
|
+
variant = _ref.variant,
|
|
10
|
+
size = _ref.size,
|
|
11
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
12
|
+
return /*#__PURE__*/React.createElement("div", _extends({
|
|
13
|
+
"data-slot": "badge",
|
|
14
|
+
className: cn('inline-flex items-center rounded-md py-0.5 font-normal ring-1 ring-inset', badgeVariants({
|
|
15
|
+
variant: variant,
|
|
16
|
+
size: size
|
|
17
|
+
}), className)
|
|
18
|
+
}, props));
|
|
19
|
+
}
|
|
20
|
+
export { Badge };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { cva } from 'class-variance-authority';
|
|
2
|
+
export var badgeVariants = cva('', {
|
|
3
|
+
variants: {
|
|
4
|
+
variant: {
|
|
5
|
+
neutral: 'bg-border text-foreground ring-input',
|
|
6
|
+
green: 'bg-success text-white ring-success-foreground/10',
|
|
7
|
+
yellow: 'bg-warning text-white ring-warning-foreground/10',
|
|
8
|
+
greenSoft: 'bg-success/15 text-success-foreground ring-success/10'
|
|
9
|
+
},
|
|
10
|
+
size: {
|
|
11
|
+
md: 'text-sm px-2',
|
|
12
|
+
lg: 'text-md px-3'
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
defaultVariants: {
|
|
16
|
+
variant: 'neutral',
|
|
17
|
+
size: 'md'
|
|
18
|
+
}
|
|
19
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/badge/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Badge } from './badge.component';
|
package/badge/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Badge } from './badge.component';
|
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import type { ButtonProps } from './button.types';
|
|
3
3
|
declare const buttonVariants: (props?: ({
|
|
4
4
|
variant?: "primary" | "secondary" | "outline" | "ghost-primary" | "ghost-secondary" | "error-primary" | "warning-primary" | null | undefined;
|
|
5
|
-
size?: "
|
|
5
|
+
size?: "md" | "lg" | "xs" | "sm" | "icon-xs" | "icon-sm" | "icon-md" | "icon-lg" | null | undefined;
|
|
6
6
|
} & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
|
|
7
7
|
declare const Button: React.ForwardRefExoticComponent<Omit<ButtonProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
8
8
|
export { Button, buttonVariants };
|
|
@@ -68,6 +68,7 @@ export var CopyToClipboardButton = function CopyToClipboardButton(props) {
|
|
|
68
68
|
variant: tooltipVariant,
|
|
69
69
|
open: open ? true : undefined
|
|
70
70
|
}, /*#__PURE__*/React.createElement(Button, {
|
|
71
|
+
type: "button",
|
|
71
72
|
variant: "ghost-secondary",
|
|
72
73
|
size: size,
|
|
73
74
|
onClick: handleCopy,
|
|
@@ -2,7 +2,7 @@ import type { StartIconProps } from '@scaleflex/ui-tw/button/button.types';
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
declare const startIconVariants: (props?: ({
|
|
4
4
|
variant?: "primary" | "secondary" | "outline" | "ghost-primary" | "ghost-secondary" | "error-primary" | "warning-primary" | null | undefined;
|
|
5
|
-
size?: "
|
|
5
|
+
size?: "md" | "lg" | "xs" | "sm" | "icon-xs" | "icon-sm" | "icon-md" | "icon-lg" | null | undefined;
|
|
6
6
|
} & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
|
|
7
7
|
declare const StartIcon: (props: StartIconProps) => React.JSX.Element | null;
|
|
8
8
|
export { StartIcon, startIconVariants };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { DatePickerProps } from './date-picker.types';
|
|
3
|
-
declare function DatePicker({ minDate, maxDate, readOnly, defaultDate, size, invalidDateText, disabled, onChange, popoverClassName, defaultOpen, popoverContentProps, ...rest }: DatePickerProps): React.JSX.Element;
|
|
3
|
+
declare function DatePicker({ minDate, maxDate, readOnly, defaultDate, size, invalidDateText, disabled, onChange, popoverClassName, defaultOpen, popoverContentProps, onKeyDown, onBlur, ...rest }: DatePickerProps): React.JSX.Element;
|
|
4
4
|
export { DatePicker };
|
|
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/extends";
|
|
|
2
2
|
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
3
3
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
4
4
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
5
|
-
var _excluded = ["minDate", "maxDate", "readOnly", "defaultDate", "size", "invalidDateText", "disabled", "onChange", "popoverClassName", "defaultOpen", "popoverContentProps"];
|
|
5
|
+
var _excluded = ["minDate", "maxDate", "readOnly", "defaultDate", "size", "invalidDateText", "disabled", "onChange", "popoverClassName", "defaultOpen", "popoverContentProps", "onKeyDown", "onBlur"];
|
|
6
6
|
import { Button } from '@scaleflex/ui-tw/button';
|
|
7
7
|
import { Calendar } from '@scaleflex/ui-tw/calendar';
|
|
8
8
|
import { Input } from '@scaleflex/ui-tw/input';
|
|
@@ -13,7 +13,7 @@ import { getBaseInputClasses } from '@scaleflex/ui-tw/styles/shared-classes';
|
|
|
13
13
|
import { FormSize } from '@scaleflex/ui-tw/types/form-size';
|
|
14
14
|
import { cn } from '@scaleflex/ui-tw/utils/cn';
|
|
15
15
|
import { CalendarIcon } from 'lucide-react';
|
|
16
|
-
import React, { useState } from 'react';
|
|
16
|
+
import React, { useRef, useState } from 'react';
|
|
17
17
|
import { buttonSizeInTriggerOptions, iconSizeInTriggerOptions } from './date-picker.constants';
|
|
18
18
|
import { parseDateString, toHtmlDateString } from './date-picker.utils';
|
|
19
19
|
function DatePicker(_ref) {
|
|
@@ -31,7 +31,11 @@ function DatePicker(_ref) {
|
|
|
31
31
|
_ref$defaultOpen = _ref.defaultOpen,
|
|
32
32
|
defaultOpen = _ref$defaultOpen === void 0 ? false : _ref$defaultOpen,
|
|
33
33
|
popoverContentProps = _ref.popoverContentProps,
|
|
34
|
+
onKeyDown = _ref.onKeyDown,
|
|
35
|
+
onBlur = _ref.onBlur,
|
|
34
36
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
37
|
+
var inputRef = useRef(null);
|
|
38
|
+
var isEscapeBlur = useRef(false);
|
|
35
39
|
var _useState = useState(defaultOpen),
|
|
36
40
|
_useState2 = _slicedToArray(_useState, 2),
|
|
37
41
|
open = _useState2[0],
|
|
@@ -61,18 +65,44 @@ function DatePicker(_ref) {
|
|
|
61
65
|
};
|
|
62
66
|
var handleCalendarSelect = function handleCalendarSelect(date) {
|
|
63
67
|
if (date) {
|
|
68
|
+
var _inputRef$current;
|
|
64
69
|
setSelectedDate(date);
|
|
65
70
|
setInputValue(toHtmlDateString(date));
|
|
66
71
|
setCalendarMonth(date);
|
|
67
72
|
setOpen(false);
|
|
68
73
|
onChange === null || onChange === void 0 || onChange(date);
|
|
74
|
+
(_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 || _inputRef$current.focus();
|
|
69
75
|
}
|
|
70
76
|
};
|
|
77
|
+
var handleKeyDown = function handleKeyDown(event) {
|
|
78
|
+
var allowed = '0123456789/';
|
|
79
|
+
if (event.key.length === 1 && !allowed.includes(event.key)) {
|
|
80
|
+
event.preventDefault();
|
|
81
|
+
}
|
|
82
|
+
if (event.key === 'Escape') {
|
|
83
|
+
var _inputRef$current2;
|
|
84
|
+
event.preventDefault();
|
|
85
|
+
isEscapeBlur.current = true;
|
|
86
|
+
(_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 || _inputRef$current2.blur();
|
|
87
|
+
}
|
|
88
|
+
onKeyDown === null || onKeyDown === void 0 || onKeyDown(event);
|
|
89
|
+
};
|
|
90
|
+
var handleBlur = function handleBlur(event) {
|
|
91
|
+
if (event.relatedTarget instanceof HTMLButtonElement && event.relatedTarget.id === 'date-picker') {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
if (isEscapeBlur.current) {
|
|
95
|
+
isEscapeBlur.current = false;
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
onBlur === null || onBlur === void 0 || onBlur(event);
|
|
99
|
+
};
|
|
71
100
|
return /*#__PURE__*/React.createElement("div", {
|
|
72
101
|
className: "flex flex-col gap-2"
|
|
73
102
|
}, /*#__PURE__*/React.createElement("div", {
|
|
74
103
|
className: "relative flex gap-2"
|
|
75
104
|
}, /*#__PURE__*/React.createElement(Input, _extends({
|
|
105
|
+
ref: inputRef,
|
|
76
106
|
id: "date",
|
|
77
107
|
type: "text",
|
|
78
108
|
inputMode: "numeric",
|
|
@@ -85,12 +115,8 @@ function DatePicker(_ref) {
|
|
|
85
115
|
size: size
|
|
86
116
|
}), readOnly && selectReadOnlyClassNames, !isInputValid && 'border-destructive'])),
|
|
87
117
|
onChange: handleInputChange,
|
|
88
|
-
onKeyDown:
|
|
89
|
-
|
|
90
|
-
if (e.key.length === 1 && !allowed.includes(e.key)) {
|
|
91
|
-
e.preventDefault();
|
|
92
|
-
}
|
|
93
|
-
}
|
|
118
|
+
onKeyDown: handleKeyDown,
|
|
119
|
+
onBlur: handleBlur
|
|
94
120
|
}, rest)), /*#__PURE__*/React.createElement(Popover, {
|
|
95
121
|
open: open,
|
|
96
122
|
defaultOpen: defaultOpen,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as PopoverPrimitive from '@radix-ui/react-popover';
|
|
2
2
|
import { FormSizeType } from '@scaleflex/ui-tw/types/form-size';
|
|
3
|
-
import { ComponentProps } from 'react';
|
|
3
|
+
import type { ComponentProps, FocusEvent, KeyboardEvent } from 'react';
|
|
4
4
|
export type DatePickerProps = {
|
|
5
5
|
minDate?: Date;
|
|
6
6
|
maxDate?: Date;
|
|
@@ -12,5 +12,7 @@ export type DatePickerProps = {
|
|
|
12
12
|
disabled?: boolean;
|
|
13
13
|
defaultOpen?: boolean;
|
|
14
14
|
onChange?: (date: Date) => void;
|
|
15
|
+
onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => void;
|
|
16
|
+
onBlur?: (event: FocusEvent<HTMLInputElement>) => void;
|
|
15
17
|
popoverContentProps?: ComponentProps<typeof PopoverPrimitive.Content>;
|
|
16
18
|
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
declare function DropdownMenu({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Root>): React.JSX.Element;
|
|
4
|
+
declare function DropdownMenuPortal({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>): React.JSX.Element;
|
|
5
|
+
declare function DropdownMenuTrigger({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>): React.JSX.Element;
|
|
6
|
+
declare function DropdownMenuContent({ className, sideOffset, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Content>): React.JSX.Element;
|
|
7
|
+
declare function DropdownMenuGroup({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Group>): React.JSX.Element;
|
|
8
|
+
declare function DropdownMenuItem({ className, inset, variant, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {
|
|
9
|
+
inset?: boolean;
|
|
10
|
+
variant?: 'default' | 'destructive';
|
|
11
|
+
}): React.JSX.Element;
|
|
12
|
+
declare function DropdownMenuCheckboxItem({ className, children, checked, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>): React.JSX.Element;
|
|
13
|
+
declare function DropdownMenuRadioGroup({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>): React.JSX.Element;
|
|
14
|
+
declare function DropdownMenuRadioItem({ className, children, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>): React.JSX.Element;
|
|
15
|
+
declare function DropdownMenuLabel({ className, inset, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {
|
|
16
|
+
inset?: boolean;
|
|
17
|
+
}): React.JSX.Element;
|
|
18
|
+
declare function DropdownMenuSeparator({ className, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>): React.JSX.Element;
|
|
19
|
+
declare function DropdownMenuShortcut({ className, ...props }: React.ComponentProps<'span'>): React.JSX.Element;
|
|
20
|
+
declare function DropdownMenuSub({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>): React.JSX.Element;
|
|
21
|
+
declare function DropdownMenuSubTrigger({ className, inset, children, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {
|
|
22
|
+
inset?: boolean;
|
|
23
|
+
}): React.JSX.Element;
|
|
24
|
+
declare function DropdownMenuSubContent({ className, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>): React.JSX.Element;
|
|
25
|
+
export { DropdownMenu, DropdownMenuPortal, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent, };
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
2
|
+
import _objectDestructuringEmpty from "@babel/runtime/helpers/objectDestructuringEmpty";
|
|
3
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
4
|
+
var _excluded = ["className", "sideOffset"],
|
|
5
|
+
_excluded2 = ["className", "inset", "variant"],
|
|
6
|
+
_excluded3 = ["className", "children", "checked"],
|
|
7
|
+
_excluded4 = ["className", "children"],
|
|
8
|
+
_excluded5 = ["className", "inset"],
|
|
9
|
+
_excluded6 = ["className"],
|
|
10
|
+
_excluded7 = ["className"],
|
|
11
|
+
_excluded8 = ["className", "inset", "children"],
|
|
12
|
+
_excluded9 = ["className"];
|
|
13
|
+
import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
|
|
14
|
+
import { cn } from '@scaleflex/ui-tw/utils/cn';
|
|
15
|
+
import { CheckIcon, ChevronRightIcon, CircleIcon } from 'lucide-react';
|
|
16
|
+
import * as React from 'react';
|
|
17
|
+
function DropdownMenu(_ref) {
|
|
18
|
+
var props = _extends({}, (_objectDestructuringEmpty(_ref), _ref));
|
|
19
|
+
return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Root, _extends({
|
|
20
|
+
"data-slot": "dropdown-menu"
|
|
21
|
+
}, props));
|
|
22
|
+
}
|
|
23
|
+
function DropdownMenuPortal(_ref2) {
|
|
24
|
+
var props = _extends({}, (_objectDestructuringEmpty(_ref2), _ref2));
|
|
25
|
+
return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Portal, _extends({
|
|
26
|
+
"data-slot": "dropdown-menu-portal"
|
|
27
|
+
}, props));
|
|
28
|
+
}
|
|
29
|
+
function DropdownMenuTrigger(_ref3) {
|
|
30
|
+
var props = _extends({}, (_objectDestructuringEmpty(_ref3), _ref3));
|
|
31
|
+
return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Trigger, _extends({
|
|
32
|
+
"data-slot": "dropdown-menu-trigger"
|
|
33
|
+
}, props));
|
|
34
|
+
}
|
|
35
|
+
function DropdownMenuContent(_ref4) {
|
|
36
|
+
var className = _ref4.className,
|
|
37
|
+
_ref4$sideOffset = _ref4.sideOffset,
|
|
38
|
+
sideOffset = _ref4$sideOffset === void 0 ? 4 : _ref4$sideOffset,
|
|
39
|
+
props = _objectWithoutProperties(_ref4, _excluded);
|
|
40
|
+
return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Portal, null, /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Content, _extends({
|
|
41
|
+
"data-slot": "dropdown-menu-content",
|
|
42
|
+
sideOffset: sideOffset,
|
|
43
|
+
className: cn('bg-popover text-popover-foreground border-border z-50 min-w-[8rem] overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md', 'max-h-(--radix-dropdown-menu-content-available-height) origin-(--radix-dropdown-menu-content-transform-origin)', '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', 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95', 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95', className)
|
|
44
|
+
}, props)));
|
|
45
|
+
}
|
|
46
|
+
function DropdownMenuGroup(_ref5) {
|
|
47
|
+
var props = _extends({}, (_objectDestructuringEmpty(_ref5), _ref5));
|
|
48
|
+
return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Group, _extends({
|
|
49
|
+
"data-slot": "dropdown-menu-group"
|
|
50
|
+
}, props));
|
|
51
|
+
}
|
|
52
|
+
function DropdownMenuItem(_ref6) {
|
|
53
|
+
var className = _ref6.className,
|
|
54
|
+
inset = _ref6.inset,
|
|
55
|
+
_ref6$variant = _ref6.variant,
|
|
56
|
+
variant = _ref6$variant === void 0 ? 'default' : _ref6$variant,
|
|
57
|
+
props = _objectWithoutProperties(_ref6, _excluded2);
|
|
58
|
+
return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Item, _extends({
|
|
59
|
+
"data-slot": "dropdown-menu-item",
|
|
60
|
+
"data-inset": inset,
|
|
61
|
+
"data-variant": variant,
|
|
62
|
+
className: cn('relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8', 'data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive', 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50', 'focus:bg-accent focus:text-accent-foreground', "[&_svg:not([class*='text-'])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className)
|
|
63
|
+
}, props));
|
|
64
|
+
}
|
|
65
|
+
function DropdownMenuCheckboxItem(_ref7) {
|
|
66
|
+
var className = _ref7.className,
|
|
67
|
+
children = _ref7.children,
|
|
68
|
+
checked = _ref7.checked,
|
|
69
|
+
props = _objectWithoutProperties(_ref7, _excluded3);
|
|
70
|
+
return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.CheckboxItem, _extends({
|
|
71
|
+
"data-slot": "dropdown-menu-checkbox-item",
|
|
72
|
+
className: cn('relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none', 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50', 'focus:bg-accent focus:text-accent-foreground', "[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
|
|
73
|
+
checked: checked
|
|
74
|
+
}, props), /*#__PURE__*/React.createElement("span", {
|
|
75
|
+
className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center"
|
|
76
|
+
}, /*#__PURE__*/React.createElement(DropdownMenuPrimitive.ItemIndicator, null, /*#__PURE__*/React.createElement(CheckIcon, {
|
|
77
|
+
className: "size-4"
|
|
78
|
+
}))), children);
|
|
79
|
+
}
|
|
80
|
+
function DropdownMenuRadioGroup(_ref8) {
|
|
81
|
+
var props = _extends({}, (_objectDestructuringEmpty(_ref8), _ref8));
|
|
82
|
+
return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.RadioGroup, _extends({
|
|
83
|
+
"data-slot": "dropdown-menu-radio-group"
|
|
84
|
+
}, props));
|
|
85
|
+
}
|
|
86
|
+
function DropdownMenuRadioItem(_ref9) {
|
|
87
|
+
var className = _ref9.className,
|
|
88
|
+
children = _ref9.children,
|
|
89
|
+
props = _objectWithoutProperties(_ref9, _excluded4);
|
|
90
|
+
return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.RadioItem, _extends({
|
|
91
|
+
"data-slot": "dropdown-menu-radio-item",
|
|
92
|
+
className: cn('relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none', 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50', 'focus:bg-accent focus:text-accent-foreground', "[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className)
|
|
93
|
+
}, props), /*#__PURE__*/React.createElement("span", {
|
|
94
|
+
className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center"
|
|
95
|
+
}, /*#__PURE__*/React.createElement(DropdownMenuPrimitive.ItemIndicator, null, /*#__PURE__*/React.createElement(CircleIcon, {
|
|
96
|
+
className: "size-2 fill-current"
|
|
97
|
+
}))), children);
|
|
98
|
+
}
|
|
99
|
+
function DropdownMenuLabel(_ref10) {
|
|
100
|
+
var className = _ref10.className,
|
|
101
|
+
inset = _ref10.inset,
|
|
102
|
+
props = _objectWithoutProperties(_ref10, _excluded5);
|
|
103
|
+
return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Label, _extends({
|
|
104
|
+
"data-slot": "dropdown-menu-label",
|
|
105
|
+
"data-inset": inset,
|
|
106
|
+
className: cn('px-2 py-1.5 text-sm font-medium data-[inset]:pl-8', className)
|
|
107
|
+
}, props));
|
|
108
|
+
}
|
|
109
|
+
function DropdownMenuSeparator(_ref11) {
|
|
110
|
+
var className = _ref11.className,
|
|
111
|
+
props = _objectWithoutProperties(_ref11, _excluded6);
|
|
112
|
+
return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Separator, _extends({
|
|
113
|
+
"data-slot": "dropdown-menu-separator",
|
|
114
|
+
className: cn('bg-border -mx-1 my-1 h-px', className)
|
|
115
|
+
}, props));
|
|
116
|
+
}
|
|
117
|
+
function DropdownMenuShortcut(_ref12) {
|
|
118
|
+
var className = _ref12.className,
|
|
119
|
+
props = _objectWithoutProperties(_ref12, _excluded7);
|
|
120
|
+
return /*#__PURE__*/React.createElement("span", _extends({
|
|
121
|
+
"data-slot": "dropdown-menu-shortcut",
|
|
122
|
+
className: cn('text-muted-foreground ml-auto text-xs tracking-widest', className)
|
|
123
|
+
}, props));
|
|
124
|
+
}
|
|
125
|
+
function DropdownMenuSub(_ref13) {
|
|
126
|
+
var props = _extends({}, (_objectDestructuringEmpty(_ref13), _ref13));
|
|
127
|
+
return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Sub, _extends({
|
|
128
|
+
"data-slot": "dropdown-menu-sub"
|
|
129
|
+
}, props));
|
|
130
|
+
}
|
|
131
|
+
function DropdownMenuSubTrigger(_ref14) {
|
|
132
|
+
var className = _ref14.className,
|
|
133
|
+
inset = _ref14.inset,
|
|
134
|
+
children = _ref14.children,
|
|
135
|
+
props = _objectWithoutProperties(_ref14, _excluded8);
|
|
136
|
+
return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.SubTrigger, _extends({
|
|
137
|
+
"data-slot": "dropdown-menu-sub-trigger",
|
|
138
|
+
"data-inset": inset,
|
|
139
|
+
className: cn('focus:bg-accent focus:text-accent-foreground', 'data-[state=open]:bg-accent data-[state=open]:text-accent-foreground', 'flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8', className)
|
|
140
|
+
}, props), children, /*#__PURE__*/React.createElement(ChevronRightIcon, {
|
|
141
|
+
className: "ml-auto size-4"
|
|
142
|
+
}));
|
|
143
|
+
}
|
|
144
|
+
function DropdownMenuSubContent(_ref15) {
|
|
145
|
+
var className = _ref15.className,
|
|
146
|
+
props = _objectWithoutProperties(_ref15, _excluded9);
|
|
147
|
+
return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.SubContent, _extends({
|
|
148
|
+
"data-slot": "dropdown-menu-sub-content",
|
|
149
|
+
className: cn('origin-(--radix-dropdown-menu-content-transform-origin)', 'bg-popover text-popover-foreground border-border z-50 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-lg', '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', 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95', 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95', className)
|
|
150
|
+
}, props));
|
|
151
|
+
}
|
|
152
|
+
export { DropdownMenu, DropdownMenuPortal, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { DropdownMenu, DropdownMenuPortal, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent, } from './dropdown-menu.component';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { DropdownMenu, DropdownMenuPortal, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent } from './dropdown-menu.component';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { InputProps } from './input.types';
|
|
3
3
|
declare const inputVariants: (props?: ({
|
|
4
|
-
size?: "
|
|
4
|
+
size?: "md" | "lg" | "sm" | null | undefined;
|
|
5
5
|
} & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
|
|
6
6
|
declare function Input({ className, type, size, disabled, readOnly, ...props }: InputProps): React.JSX.Element;
|
|
7
7
|
export { Input, inputVariants };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scaleflex/ui-tw",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.42",
|
|
4
4
|
"author": "scaleflex",
|
|
5
5
|
"repository": "github:scaleflex/ui",
|
|
6
6
|
"homepage": "https://github.com/scaleflex/ui/blob/master/README.md",
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
"dependencies": {
|
|
15
15
|
"@popperjs/core": "^2.6.0",
|
|
16
16
|
"@radix-ui/react-checkbox": "^1.3.2",
|
|
17
|
+
"@radix-ui/react-dropdown-menu": "^2.1.15",
|
|
17
18
|
"@radix-ui/react-label": "^2.1.6",
|
|
18
19
|
"@radix-ui/react-popover": "^1.0.2",
|
|
19
20
|
"@radix-ui/react-radio-group": "^1.3.7",
|
|
@@ -22,7 +23,8 @@
|
|
|
22
23
|
"@radix-ui/react-slot": "^1.1.2",
|
|
23
24
|
"@radix-ui/react-switch": "^1.0.1",
|
|
24
25
|
"@radix-ui/react-tooltip": "^1.2.6",
|
|
25
|
-
"@scaleflex/icons-tw": "^0.0.
|
|
26
|
+
"@scaleflex/icons-tw": "^0.0.42",
|
|
27
|
+
"@tanstack/react-table": "^8.21.3",
|
|
26
28
|
"@types/lodash.merge": "^4.6.9",
|
|
27
29
|
"class-variance-authority": "^0.7.1",
|
|
28
30
|
"cmdk": "^1.1.1",
|
package/pill/pill.component.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { PillProps } from '@scaleflex/ui-tw/pill/pill.types';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
declare const pillVariants: (props?: ({
|
|
4
|
-
size?: "
|
|
5
|
-
variant?: "
|
|
4
|
+
size?: "md" | "lg" | "sm" | null | undefined;
|
|
5
|
+
variant?: "default" | "outline" | null | undefined;
|
|
6
6
|
} & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
|
|
7
7
|
declare function Pill({ className, size, variant, removable, onRemove, ...props }: PillProps): React.JSX.Element;
|
|
8
8
|
export { Pill, pillVariants };
|
|
@@ -5,7 +5,7 @@ declare function Select({ ...props }: ComponentProps<typeof SelectPrimitive.Root
|
|
|
5
5
|
declare function SelectGroup({ ...props }: ComponentProps<typeof SelectPrimitive.Group>): React.JSX.Element;
|
|
6
6
|
declare function SelectValue({ ...props }: ComponentProps<typeof SelectPrimitive.Value>): React.JSX.Element;
|
|
7
7
|
export declare const selectTriggerVariants: (props?: ({
|
|
8
|
-
size?: "
|
|
8
|
+
size?: "md" | "lg" | "sm" | null | undefined;
|
|
9
9
|
} & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
|
|
10
10
|
declare function SelectTrigger({ className, size, children, readOnly, icon, ...props }: SelectTriggerProps): React.JSX.Element;
|
|
11
11
|
declare function SelectContent({ className, children, position, ...props }: ComponentProps<typeof SelectPrimitive.Content>): React.JSX.Element;
|
package/table/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption, } from './table.component';
|
package/table/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption } from './table.component';
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React, { type ComponentProps } from 'react';
|
|
2
|
+
declare function Table({ className, sticky, wrapperClassName, ...props }: ComponentProps<'table'> & {
|
|
3
|
+
sticky?: boolean;
|
|
4
|
+
wrapperClassName?: string;
|
|
5
|
+
}): React.JSX.Element;
|
|
6
|
+
declare function TableHeader({ className, ...props }: ComponentProps<'thead'>): React.JSX.Element;
|
|
7
|
+
declare function TableBody({ className, ...props }: ComponentProps<'tbody'>): React.JSX.Element;
|
|
8
|
+
declare function TableFooter({ className, ...props }: ComponentProps<'tfoot'>): React.JSX.Element;
|
|
9
|
+
declare function TableRow({ className, ...props }: ComponentProps<'tr'>): React.JSX.Element;
|
|
10
|
+
declare function TableHead({ className, sticky, ...props }: ComponentProps<'th'> & {
|
|
11
|
+
sticky?: boolean;
|
|
12
|
+
}): React.JSX.Element;
|
|
13
|
+
declare function TableCell({ className, ...props }: ComponentProps<'td'>): React.JSX.Element;
|
|
14
|
+
declare function TableCaption({ className, ...props }: ComponentProps<'caption'>): React.JSX.Element;
|
|
15
|
+
export { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption };
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
+
var _excluded = ["className", "sticky", "wrapperClassName"],
|
|
4
|
+
_excluded2 = ["className"],
|
|
5
|
+
_excluded3 = ["className"],
|
|
6
|
+
_excluded4 = ["className"],
|
|
7
|
+
_excluded5 = ["className"],
|
|
8
|
+
_excluded6 = ["className", "sticky"],
|
|
9
|
+
_excluded7 = ["className"],
|
|
10
|
+
_excluded8 = ["className"];
|
|
11
|
+
import { cn } from '@scaleflex/ui-tw/utils/cn';
|
|
12
|
+
import React from 'react';
|
|
13
|
+
function Table(_ref) {
|
|
14
|
+
var className = _ref.className,
|
|
15
|
+
sticky = _ref.sticky,
|
|
16
|
+
wrapperClassName = _ref.wrapperClassName,
|
|
17
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
18
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
19
|
+
"data-slot": "table-container",
|
|
20
|
+
className: cn('relative w-full overflow-x-auto', sticky && 'max-h-[400px] overflow-auto', wrapperClassName)
|
|
21
|
+
}, /*#__PURE__*/React.createElement("table", _extends({
|
|
22
|
+
"data-slot": "table",
|
|
23
|
+
className: cn('w-full caption-bottom text-sm', className)
|
|
24
|
+
}, props)));
|
|
25
|
+
}
|
|
26
|
+
function TableHeader(_ref2) {
|
|
27
|
+
var className = _ref2.className,
|
|
28
|
+
props = _objectWithoutProperties(_ref2, _excluded2);
|
|
29
|
+
return /*#__PURE__*/React.createElement("thead", _extends({
|
|
30
|
+
"data-slot": "table-header",
|
|
31
|
+
className: cn('[&_tr]:border-b-border [&_tr]:border-b [&_tr]:hover:bg-transparent', className)
|
|
32
|
+
}, props));
|
|
33
|
+
}
|
|
34
|
+
function TableBody(_ref3) {
|
|
35
|
+
var className = _ref3.className,
|
|
36
|
+
props = _objectWithoutProperties(_ref3, _excluded3);
|
|
37
|
+
return /*#__PURE__*/React.createElement("tbody", _extends({
|
|
38
|
+
"data-slot": "table-body",
|
|
39
|
+
className: cn('[&_tr:last-child]:border-0', className)
|
|
40
|
+
}, props));
|
|
41
|
+
}
|
|
42
|
+
function TableFooter(_ref4) {
|
|
43
|
+
var className = _ref4.className,
|
|
44
|
+
props = _objectWithoutProperties(_ref4, _excluded4);
|
|
45
|
+
return /*#__PURE__*/React.createElement("tfoot", _extends({
|
|
46
|
+
"data-slot": "table-footer",
|
|
47
|
+
className: cn('bg-muted/50 border-t-border border-t font-medium [&>tr]:last:border-b-0', className)
|
|
48
|
+
}, props));
|
|
49
|
+
}
|
|
50
|
+
function TableRow(_ref5) {
|
|
51
|
+
var className = _ref5.className,
|
|
52
|
+
props = _objectWithoutProperties(_ref5, _excluded5);
|
|
53
|
+
return /*#__PURE__*/React.createElement("tr", _extends({
|
|
54
|
+
"data-slot": "table-row",
|
|
55
|
+
className: cn('hover:bg-muted/50 data-[state=selected]:bg-muted border-b-border border-b transition-colors', className)
|
|
56
|
+
}, props));
|
|
57
|
+
}
|
|
58
|
+
function TableHead(_ref6) {
|
|
59
|
+
var className = _ref6.className,
|
|
60
|
+
sticky = _ref6.sticky,
|
|
61
|
+
props = _objectWithoutProperties(_ref6, _excluded6);
|
|
62
|
+
return /*#__PURE__*/React.createElement("th", _extends({
|
|
63
|
+
"data-slot": "table-head",
|
|
64
|
+
className: cn(sticky && 'sticky top-0 z-10', 'bg-background text-secondary-foreground h-12 px-4 text-left align-middle text-sm font-normal whitespace-nowrap', '[&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]', className)
|
|
65
|
+
}, props));
|
|
66
|
+
}
|
|
67
|
+
function TableCell(_ref7) {
|
|
68
|
+
var className = _ref7.className,
|
|
69
|
+
props = _objectWithoutProperties(_ref7, _excluded7);
|
|
70
|
+
return /*#__PURE__*/React.createElement("td", _extends({
|
|
71
|
+
"data-slot": "table-cell",
|
|
72
|
+
className: cn('px-4 py-3 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]', className)
|
|
73
|
+
}, props));
|
|
74
|
+
}
|
|
75
|
+
function TableCaption(_ref8) {
|
|
76
|
+
var className = _ref8.className,
|
|
77
|
+
props = _objectWithoutProperties(_ref8, _excluded8);
|
|
78
|
+
return /*#__PURE__*/React.createElement("caption", _extends({
|
|
79
|
+
"data-slot": "table-caption",
|
|
80
|
+
className: cn('text-muted-foreground mt-4 text-sm', className)
|
|
81
|
+
}, props));
|
|
82
|
+
}
|
|
83
|
+
export { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption };
|
|
@@ -9,6 +9,7 @@ export var LeftToolbarButtons = function LeftToolbarButtons(props) {
|
|
|
9
9
|
var _getToolbarSizes = getToolbarSizes(size),
|
|
10
10
|
buttonSize = _getToolbarSizes.buttonSize;
|
|
11
11
|
return /*#__PURE__*/React.createElement(React.Fragment, null, onGenerate && /*#__PURE__*/React.createElement(Button, {
|
|
12
|
+
type: "button",
|
|
12
13
|
variant: "ghost-primary",
|
|
13
14
|
size: buttonSize,
|
|
14
15
|
startIcon: /*#__PURE__*/React.createElement(SparkleIcon, {
|
|
@@ -16,6 +17,7 @@ export var LeftToolbarButtons = function LeftToolbarButtons(props) {
|
|
|
16
17
|
}),
|
|
17
18
|
onClick: onGenerate
|
|
18
19
|
}, "Generate"), onClearAll && /*#__PURE__*/React.createElement(Button, {
|
|
20
|
+
type: "button",
|
|
19
21
|
variant: "ghost-secondary",
|
|
20
22
|
size: buttonSize,
|
|
21
23
|
onClick: onClearAll
|
|
@@ -16,6 +16,7 @@ export var RightToolbarButtons = function RightToolbarButtons(props) {
|
|
|
16
16
|
return /*#__PURE__*/React.createElement(React.Fragment, null, onTranslate && /*#__PURE__*/React.createElement(WithTooltip, {
|
|
17
17
|
content: translateActionTooltip
|
|
18
18
|
}, /*#__PURE__*/React.createElement(Button, {
|
|
19
|
+
type: "button",
|
|
19
20
|
variant: "ghost-primary",
|
|
20
21
|
size: iconSize,
|
|
21
22
|
onClick: onTranslate
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { TextareaWithActionsProps } from '@scaleflex/ui-tw/textarea/textarea.types';
|
|
2
2
|
import React from 'react';
|
|
3
|
-
declare function TextareaWithActions({ leftToolbar, rightToolbar, className, ...textareaProps }: TextareaWithActionsProps): React.JSX.Element;
|
|
3
|
+
declare function TextareaWithActions({ leftToolbar, rightToolbar, className, onBlur, ...textareaProps }: TextareaWithActionsProps): React.JSX.Element;
|
|
4
4
|
export { TextareaWithActions };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
2
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
-
var _excluded = ["leftToolbar", "rightToolbar", "className"];
|
|
4
|
-
import { textareaWithActionsSizeOptions } from '@scaleflex/ui-tw/textarea/textarea.constants';
|
|
3
|
+
var _excluded = ["leftToolbar", "rightToolbar", "className", "onBlur"];
|
|
4
|
+
import { textareaBottomActionAreaPadding, textareaWithActionsSizeOptions } from '@scaleflex/ui-tw/textarea/textarea.constants';
|
|
5
5
|
import { FormSize } from '@scaleflex/ui-tw/types/form-size';
|
|
6
6
|
import { cn } from '@scaleflex/ui-tw/utils/cn';
|
|
7
7
|
import { cva } from 'class-variance-authority';
|
|
8
|
-
import React from 'react';
|
|
8
|
+
import React, { useRef } from 'react';
|
|
9
9
|
import { Textarea } from '../';
|
|
10
10
|
var textareaWithActionsVariants = cva('', {
|
|
11
11
|
variants: {
|
|
@@ -19,19 +19,41 @@ function TextareaWithActions(_ref) {
|
|
|
19
19
|
var leftToolbar = _ref.leftToolbar,
|
|
20
20
|
rightToolbar = _ref.rightToolbar,
|
|
21
21
|
className = _ref.className,
|
|
22
|
+
onBlur = _ref.onBlur,
|
|
22
23
|
textareaProps = _objectWithoutProperties(_ref, _excluded);
|
|
23
24
|
var _ref2 = textareaProps || {},
|
|
24
|
-
size = _ref2.size
|
|
25
|
+
_ref2$size = _ref2.size,
|
|
26
|
+
size = _ref2$size === void 0 ? FormSize.Md : _ref2$size;
|
|
27
|
+
var textareaRef = useRef(null);
|
|
28
|
+
var handleActionClick = function handleActionClick(e) {
|
|
29
|
+
var _textareaRef$current;
|
|
30
|
+
e.preventDefault();
|
|
31
|
+
(_textareaRef$current = textareaRef.current) === null || _textareaRef$current === void 0 || _textareaRef$current.focus();
|
|
32
|
+
};
|
|
33
|
+
var handleBlur = function handleBlur(e) {
|
|
34
|
+
var relatedTarget = e.relatedTarget;
|
|
35
|
+
if (relatedTarget !== null && relatedTarget !== void 0 && relatedTarget.closest('[data-action-area]')) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
onBlur === null || onBlur === void 0 || onBlur(e);
|
|
39
|
+
};
|
|
25
40
|
return /*#__PURE__*/React.createElement("div", {
|
|
26
41
|
className: "relative"
|
|
27
42
|
}, /*#__PURE__*/React.createElement(Textarea, _extends({}, textareaProps, {
|
|
28
43
|
className: cn(className, textareaWithActionsVariants({
|
|
29
44
|
size: size
|
|
30
|
-
}))
|
|
31
|
-
|
|
45
|
+
})),
|
|
46
|
+
ref: textareaRef,
|
|
47
|
+
onBlur: handleBlur
|
|
48
|
+
})), (leftToolbar || rightToolbar) && /*#__PURE__*/React.createElement("div", {
|
|
49
|
+
"data-action-area": true,
|
|
50
|
+
className: cn('bg-background absolute right-2.5 bottom-0.25 left-2.5', textareaBottomActionAreaPadding[size]),
|
|
51
|
+
onClick: handleActionClick,
|
|
52
|
+
tabIndex: -1
|
|
53
|
+
}, leftToolbar && /*#__PURE__*/React.createElement("div", {
|
|
32
54
|
className: "absolute bottom-1.5 left-1.5 flex items-center gap-0.5"
|
|
33
55
|
}, leftToolbar), rightToolbar && /*#__PURE__*/React.createElement("div", {
|
|
34
56
|
className: "absolute right-1.5 bottom-1.5 flex items-center gap-0.5"
|
|
35
|
-
}, rightToolbar));
|
|
57
|
+
}, rightToolbar)));
|
|
36
58
|
}
|
|
37
59
|
export { TextareaWithActions };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { TextareaProps } from './textarea.types';
|
|
3
3
|
declare const textareaVariants: (props?: ({
|
|
4
|
-
size?: "
|
|
4
|
+
size?: "md" | "lg" | "sm" | null | undefined;
|
|
5
5
|
} & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
|
|
6
6
|
declare function Textarea({ className, size, disabled, readOnly, ...props }: TextareaProps): React.JSX.Element;
|
|
7
7
|
export { Textarea, textareaVariants };
|
|
@@ -4,7 +4,12 @@ export declare const textareaSizeOptions: {
|
|
|
4
4
|
readonly lg: "py-3 px-4 text-lg min-h-20 max-h-60";
|
|
5
5
|
};
|
|
6
6
|
export declare const textareaWithActionsSizeOptions: {
|
|
7
|
-
readonly sm: "pb-10";
|
|
8
|
-
readonly md: "pb-12";
|
|
9
|
-
readonly lg: "pb-14";
|
|
7
|
+
readonly sm: "pb-10 scroll-pb-10";
|
|
8
|
+
readonly md: "pb-12 scroll-pb-12";
|
|
9
|
+
readonly lg: "pb-14 scroll-pb-14";
|
|
10
|
+
};
|
|
11
|
+
export declare const textareaBottomActionAreaPadding: {
|
|
12
|
+
readonly sm: "h-8";
|
|
13
|
+
readonly md: "h-10";
|
|
14
|
+
readonly lg: "h-12";
|
|
10
15
|
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
2
|
import { FormSize } from '@scaleflex/ui-tw/types/form-size';
|
|
3
3
|
export var textareaSizeOptions = _defineProperty(_defineProperty(_defineProperty({}, FormSize.Sm, 'py-2 px-3 text-sm min-h-14 max-h-44'), FormSize.Md, 'py-3 px-4 text-base min-h-16 max-h-48'), FormSize.Lg, 'py-3 px-4 text-lg min-h-20 max-h-60');
|
|
4
|
-
export var textareaWithActionsSizeOptions = _defineProperty(_defineProperty(_defineProperty({}, FormSize.Sm, 'pb-10'), FormSize.Md, 'pb-12'), FormSize.Lg, 'pb-14');
|
|
4
|
+
export var textareaWithActionsSizeOptions = _defineProperty(_defineProperty(_defineProperty({}, FormSize.Sm, 'pb-10 scroll-pb-10'), FormSize.Md, 'pb-12 scroll-pb-12'), FormSize.Lg, 'pb-14 scroll-pb-14');
|
|
5
|
+
export var textareaBottomActionAreaPadding = _defineProperty(_defineProperty(_defineProperty({}, FormSize.Sm, 'h-8'), FormSize.Md, 'h-10'), FormSize.Lg, 'h-12');
|