@scaleflex/ui-tw 0.0.39 → 0.0.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/badge/badge.component.d.ts +4 -0
  2. package/badge/badge.component.js +20 -0
  3. package/badge/badge.constants.d.ts +4 -0
  4. package/badge/badge.constants.js +19 -0
  5. package/badge/badge.types.d.ts +4 -0
  6. package/badge/badge.types.js +1 -0
  7. package/badge/index.d.ts +1 -0
  8. package/badge/index.js +1 -0
  9. package/button/button.component.d.ts +1 -1
  10. package/button/components/start-icon.d.ts +1 -1
  11. package/combobox/combobox-multi-inline/combobox-multi-inline.component.d.ts +1 -1
  12. package/combobox/combobox-multi-inline/combobox-multi-inline.component.js +8 -3
  13. package/combobox/combobox-multi-tag/combobox-multi-tag.component.d.ts +1 -1
  14. package/combobox/combobox-multi-tag/combobox-multi-tag.component.js +8 -3
  15. package/combobox/combobox-single/combobox-single.component.d.ts +1 -1
  16. package/combobox/combobox-single/combobox-single.component.js +8 -3
  17. package/combobox/combobox.component.d.ts +1 -1
  18. package/combobox/combobox.component.js +5 -3
  19. package/combobox/combobox.types.d.ts +4 -0
  20. package/date-picker/date-picker.component.d.ts +1 -1
  21. package/date-picker/date-picker.component.js +41 -11
  22. package/date-picker/date-picker.types.d.ts +6 -0
  23. package/input/input.component.d.ts +1 -1
  24. package/package.json +2 -2
  25. package/pill/pill.component.d.ts +2 -2
  26. package/select/components/selector.d.ts +1 -1
  27. package/select/components/selector.js +4 -3
  28. package/select/select.component.d.ts +1 -1
  29. package/select/select.types.d.ts +1 -0
  30. package/table/index.d.ts +1 -0
  31. package/table/index.js +1 -0
  32. package/table/table.component.d.ts +15 -0
  33. package/table/table.component.js +83 -0
  34. package/textarea/textarea.component.d.ts +1 -1
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { BadgeProps } from './badge.types';
3
+ declare function Badge({ className, variant, size, ...props }: BadgeProps): React.JSX.Element;
4
+ export { Badge };
@@ -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,4 @@
1
+ export declare const badgeVariants: (props?: ({
2
+ variant?: "neutral" | "green" | "yellow" | "greenSoft" | null | undefined;
3
+ size?: "md" | "lg" | null | undefined;
4
+ } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
@@ -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,4 @@
1
+ import { VariantProps } from 'class-variance-authority';
2
+ import { HTMLAttributes } from 'react';
3
+ import { badgeVariants } from './badge.constants';
4
+ export type BadgeProps = HTMLAttributes<HTMLDivElement> & VariantProps<typeof badgeVariants>;
@@ -0,0 +1 @@
1
+ export {};
@@ -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?: "xs" | "sm" | "md" | "lg" | "icon-xs" | "icon-sm" | "icon-md" | "icon-lg" | null | undefined;
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 };
@@ -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?: "xs" | "sm" | "md" | "lg" | "icon-xs" | "icon-sm" | "icon-md" | "icon-lg" | null | undefined;
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,3 +1,3 @@
1
1
  import React from 'react';
2
2
  import type { ComboboxMultiInlineProps } from '../combobox.types';
3
- export declare function ComboboxMultiInline({ options, value, onChange, placeholder, className, disabled, size, readOnly, showClear, popoverClassName, onBlur, showGroupSeparator, ...rest }: ComboboxMultiInlineProps): React.JSX.Element;
3
+ export declare function ComboboxMultiInline({ options, value, onChange, placeholder, className, disabled, size, readOnly, showClear, popoverClassName, onBlur, showGroupSeparator, defaultOpen, popoverContentProps, ...rest }: ComboboxMultiInlineProps): React.JSX.Element;
@@ -1,7 +1,7 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
- var _excluded = ["options", "value", "onChange", "placeholder", "className", "disabled", "size", "readOnly", "showClear", "popoverClassName", "onBlur", "showGroupSeparator"];
4
+ var _excluded = ["options", "value", "onChange", "placeholder", "className", "disabled", "size", "readOnly", "showClear", "popoverClassName", "onBlur", "showGroupSeparator", "defaultOpen", "popoverContentProps"];
5
5
  import { Popover } from '@scaleflex/ui-tw/popover';
6
6
  import { FormSize } from '@scaleflex/ui-tw/types/form-size';
7
7
  import React from 'react';
@@ -27,8 +27,11 @@ export function ComboboxMultiInline(_ref) {
27
27
  onBlur = _ref.onBlur,
28
28
  _ref$showGroupSeparat = _ref.showGroupSeparator,
29
29
  showGroupSeparator = _ref$showGroupSeparat === void 0 ? false : _ref$showGroupSeparat,
30
+ _ref$defaultOpen = _ref.defaultOpen,
31
+ defaultOpen = _ref$defaultOpen === void 0 ? false : _ref$defaultOpen,
32
+ popoverContentProps = _ref.popoverContentProps,
30
33
  rest = _objectWithoutProperties(_ref, _excluded);
31
- var _useState = useState(false),
34
+ var _useState = useState(defaultOpen),
32
35
  _useState2 = _slicedToArray(_useState, 2),
33
36
  open = _useState2[0],
34
37
  setOpen = _useState2[1];
@@ -62,6 +65,7 @@ export function ComboboxMultiInline(_ref) {
62
65
  };
63
66
  return /*#__PURE__*/React.createElement(Popover, {
64
67
  open: open,
68
+ defaultOpen: defaultOpen,
65
69
  onOpenChange: onOpenChange
66
70
  }, /*#__PURE__*/React.createElement(ComboboxTrigger, {
67
71
  open: open,
@@ -80,6 +84,7 @@ export function ComboboxMultiInline(_ref) {
80
84
  value: value,
81
85
  onSelect: toggleValue,
82
86
  size: size,
83
- multiple: true
87
+ multiple: true,
88
+ popoverContentProps: popoverContentProps
84
89
  }));
85
90
  }
@@ -1,3 +1,3 @@
1
1
  import * as React from 'react';
2
2
  import type { ComboboxMultiTagProps } from '../combobox.types';
3
- export declare function ComboboxMultiTag({ options, value, onChange, placeholder, className, disabled, size, readOnly, popoverClassName, onBlur, showGroupSeparator, ...rest }: ComboboxMultiTagProps): React.JSX.Element;
3
+ export declare function ComboboxMultiTag({ options, value, onChange, placeholder, className, disabled, size, readOnly, popoverClassName, onBlur, showGroupSeparator, defaultOpen, popoverContentProps, ...rest }: ComboboxMultiTagProps): React.JSX.Element;
@@ -1,7 +1,7 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
- var _excluded = ["options", "value", "onChange", "placeholder", "className", "disabled", "size", "readOnly", "popoverClassName", "onBlur", "showGroupSeparator"];
4
+ var _excluded = ["options", "value", "onChange", "placeholder", "className", "disabled", "size", "readOnly", "popoverClassName", "onBlur", "showGroupSeparator", "defaultOpen", "popoverContentProps"];
5
5
  import { ButtonVariant, buttonVariants } from '@scaleflex/ui-tw/button';
6
6
  import { buttonBaseClassNames } from '@scaleflex/ui-tw/button/button.constants';
7
7
  import { createClearHandlers } from '@scaleflex/ui-tw/combobox/combobox.utils';
@@ -34,10 +34,13 @@ export function ComboboxMultiTag(_ref) {
34
34
  onBlur = _ref.onBlur,
35
35
  _ref$showGroupSeparat = _ref.showGroupSeparator,
36
36
  showGroupSeparator = _ref$showGroupSeparat === void 0 ? false : _ref$showGroupSeparat,
37
+ _ref$defaultOpen = _ref.defaultOpen,
38
+ defaultOpen = _ref$defaultOpen === void 0 ? false : _ref$defaultOpen,
39
+ popoverContentProps = _ref.popoverContentProps,
37
40
  rest = _objectWithoutProperties(_ref, _excluded);
38
41
  var _getToolbarSizes = getToolbarSizes(size),
39
42
  buttonSize = _getToolbarSizes.buttonSize;
40
- var _useState = useState(false),
43
+ var _useState = useState(defaultOpen),
41
44
  _useState2 = _slicedToArray(_useState, 2),
42
45
  open = _useState2[0],
43
46
  setOpen = _useState2[1];
@@ -73,6 +76,7 @@ export function ComboboxMultiTag(_ref) {
73
76
  handleOnTriggerKeyDown = _createClearHandlers.onKeyDown;
74
77
  return /*#__PURE__*/React.createElement(Popover, {
75
78
  open: open,
79
+ defaultOpen: defaultOpen,
76
80
  onOpenChange: onOpenChange
77
81
  }, /*#__PURE__*/React.createElement(PopoverTrigger, {
78
82
  asChild: true
@@ -128,6 +132,7 @@ export function ComboboxMultiTag(_ref) {
128
132
  size: size,
129
133
  multiple: true,
130
134
  className: popoverClassName,
131
- showGroupSeparator: showGroupSeparator
135
+ showGroupSeparator: showGroupSeparator,
136
+ popoverContentProps: popoverContentProps
132
137
  }));
133
138
  }
@@ -1,3 +1,3 @@
1
1
  import * as React from 'react';
2
2
  import type { ComboboxSingleProps } from '../combobox.types';
3
- export declare function ComboboxSingle({ options, value, onChange, placeholder, className, disabled, popoverClassName, size, readOnly, showClear, formItemId, onBlur, showGroupSeparator, ...rest }: ComboboxSingleProps): React.JSX.Element;
3
+ export declare function ComboboxSingle({ options, value, onChange, placeholder, className, disabled, popoverClassName, size, readOnly, showClear, formItemId, onBlur, showGroupSeparator, defaultOpen, popoverContentProps, ...rest }: ComboboxSingleProps): React.JSX.Element;
@@ -1,6 +1,6 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["options", "value", "onChange", "placeholder", "className", "disabled", "popoverClassName", "size", "readOnly", "showClear", "formItemId", "onBlur", "showGroupSeparator"];
3
+ var _excluded = ["options", "value", "onChange", "placeholder", "className", "disabled", "popoverClassName", "size", "readOnly", "showClear", "formItemId", "onBlur", "showGroupSeparator", "defaultOpen", "popoverContentProps"];
4
4
  import { Popover } from '@scaleflex/ui-tw/popover';
5
5
  import { FormSize } from '@scaleflex/ui-tw/types/form-size';
6
6
  import * as React from 'react';
@@ -29,8 +29,11 @@ export function ComboboxSingle(_ref) {
29
29
  onBlur = _ref.onBlur,
30
30
  _ref$showGroupSeparat = _ref.showGroupSeparator,
31
31
  showGroupSeparator = _ref$showGroupSeparat === void 0 ? false : _ref$showGroupSeparat,
32
+ _ref$defaultOpen = _ref.defaultOpen,
33
+ defaultOpen = _ref$defaultOpen === void 0 ? false : _ref$defaultOpen,
34
+ popoverContentProps = _ref.popoverContentProps,
32
35
  rest = _objectWithoutProperties(_ref, _excluded);
33
- var _useState = useState(false),
36
+ var _useState = useState(defaultOpen),
34
37
  _useState2 = _slicedToArray(_useState, 2),
35
38
  open = _useState2[0],
36
39
  setOpen = _useState2[1];
@@ -55,6 +58,7 @@ export function ComboboxSingle(_ref) {
55
58
  };
56
59
  return /*#__PURE__*/React.createElement(Popover, {
57
60
  open: open,
61
+ defaultOpen: defaultOpen,
58
62
  onOpenChange: onOpenChange
59
63
  }, /*#__PURE__*/React.createElement(ComboboxTrigger, {
60
64
  open: open,
@@ -73,6 +77,7 @@ export function ComboboxSingle(_ref) {
73
77
  value: value,
74
78
  onSelect: onSelect,
75
79
  size: size,
76
- showGroupSeparator: showGroupSeparator
80
+ showGroupSeparator: showGroupSeparator,
81
+ popoverContentProps: popoverContentProps
77
82
  }));
78
83
  }
@@ -1,4 +1,4 @@
1
1
  import * as React from 'react';
2
2
  import type { ComboboxContentProps, ComboboxTriggerProps } from './combobox.types';
3
3
  export declare function ComboboxTrigger({ children, open, disabled, readOnly, size, className, selected, showClear, onClearAll, formItemId, ...rest }: ComboboxTriggerProps): React.JSX.Element;
4
- export declare function ComboboxContent({ options, value: selectedValue, onSelect, size, multiple, className, showGroupSeparator, }: ComboboxContentProps): React.JSX.Element;
4
+ export declare function ComboboxContent({ options, value: selectedValue, onSelect, size, multiple, className, showGroupSeparator, popoverContentProps, }: ComboboxContentProps): React.JSX.Element;
@@ -1,3 +1,4 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
1
2
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
4
  var _excluded = ["children", "open", "disabled", "readOnly", "size", "className", "selected", "showClear", "onClearAll", "formItemId"];
@@ -86,10 +87,11 @@ export function ComboboxContent(_ref2) {
86
87
  multiple = _ref2$multiple === void 0 ? false : _ref2$multiple,
87
88
  className = _ref2.className,
88
89
  _ref2$showGroupSepara = _ref2.showGroupSeparator,
89
- showGroupSeparator = _ref2$showGroupSepara === void 0 ? false : _ref2$showGroupSepara;
90
- return /*#__PURE__*/React.createElement(PopoverContent, {
90
+ showGroupSeparator = _ref2$showGroupSepara === void 0 ? false : _ref2$showGroupSepara,
91
+ popoverContentProps = _ref2.popoverContentProps;
92
+ return /*#__PURE__*/React.createElement(PopoverContent, _extends({
91
93
  className: cn('p-0', className)
92
- }, /*#__PURE__*/React.createElement(Command, null, /*#__PURE__*/React.createElement(CommandInput, {
94
+ }, popoverContentProps), /*#__PURE__*/React.createElement(Command, null, /*#__PURE__*/React.createElement(CommandInput, {
93
95
  size: size,
94
96
  placeholder: "Search..."
95
97
  }), /*#__PURE__*/React.createElement(CommandList, null, /*#__PURE__*/React.createElement(CommandEmpty, {
@@ -1,3 +1,4 @@
1
+ import * as PopoverPrimitive from '@radix-ui/react-popover';
1
2
  import { SelectOption } from '@scaleflex/ui-tw/form';
2
3
  import { FormSizeType } from '@scaleflex/ui-tw/types/form-size';
3
4
  import { Command as CommandPrimitive } from 'cmdk';
@@ -26,6 +27,7 @@ export type ComboboxContentProps = {
26
27
  multiple?: boolean;
27
28
  className?: string;
28
29
  showGroupSeparator?: boolean;
30
+ popoverContentProps?: ComponentProps<typeof PopoverPrimitive.Content>;
29
31
  };
30
32
  export interface CommandInputProps extends Omit<ComponentProps<typeof CommandPrimitive.Input>, 'size'> {
31
33
  size?: FormSizeType;
@@ -48,11 +50,13 @@ interface ComboboxCommonProps {
48
50
  className?: string;
49
51
  disabled?: boolean;
50
52
  readOnly?: boolean;
53
+ defaultOpen?: boolean;
51
54
  size?: FormSizeType;
52
55
  popoverClassName?: string;
53
56
  'aria-invalid'?: boolean;
54
57
  formItemId?: string;
55
58
  showGroupSeparator?: boolean;
59
+ popoverContentProps?: ComponentProps<typeof PopoverPrimitive.Content>;
56
60
  }
57
61
  export interface ComboboxSingleProps extends ComboboxCommonProps {
58
62
  value: string;
@@ -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, ...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"];
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) {
@@ -28,8 +28,15 @@ function DatePicker(_ref) {
28
28
  disabled = _ref.disabled,
29
29
  onChange = _ref.onChange,
30
30
  popoverClassName = _ref.popoverClassName,
31
+ _ref$defaultOpen = _ref.defaultOpen,
32
+ defaultOpen = _ref$defaultOpen === void 0 ? false : _ref$defaultOpen,
33
+ popoverContentProps = _ref.popoverContentProps,
34
+ onKeyDown = _ref.onKeyDown,
35
+ onBlur = _ref.onBlur,
31
36
  rest = _objectWithoutProperties(_ref, _excluded);
32
- var _useState = useState(false),
37
+ var inputRef = useRef(null);
38
+ var isEscapeBlur = useRef(false);
39
+ var _useState = useState(defaultOpen),
33
40
  _useState2 = _slicedToArray(_useState, 2),
34
41
  open = _useState2[0],
35
42
  setOpen = _useState2[1];
@@ -58,18 +65,44 @@ function DatePicker(_ref) {
58
65
  };
59
66
  var handleCalendarSelect = function handleCalendarSelect(date) {
60
67
  if (date) {
68
+ var _inputRef$current;
61
69
  setSelectedDate(date);
62
70
  setInputValue(toHtmlDateString(date));
63
71
  setCalendarMonth(date);
64
72
  setOpen(false);
65
73
  onChange === null || onChange === void 0 || onChange(date);
74
+ (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 || _inputRef$current.focus();
66
75
  }
67
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
+ };
68
100
  return /*#__PURE__*/React.createElement("div", {
69
101
  className: "flex flex-col gap-2"
70
102
  }, /*#__PURE__*/React.createElement("div", {
71
103
  className: "relative flex gap-2"
72
104
  }, /*#__PURE__*/React.createElement(Input, _extends({
105
+ ref: inputRef,
73
106
  id: "date",
74
107
  type: "text",
75
108
  inputMode: "numeric",
@@ -82,14 +115,11 @@ function DatePicker(_ref) {
82
115
  size: size
83
116
  }), readOnly && selectReadOnlyClassNames, !isInputValid && 'border-destructive'])),
84
117
  onChange: handleInputChange,
85
- onKeyDown: function onKeyDown(e) {
86
- var allowed = '0123456789/';
87
- if (e.key.length === 1 && !allowed.includes(e.key)) {
88
- e.preventDefault();
89
- }
90
- }
118
+ onKeyDown: handleKeyDown,
119
+ onBlur: handleBlur
91
120
  }, rest)), /*#__PURE__*/React.createElement(Popover, {
92
121
  open: open,
122
+ defaultOpen: defaultOpen,
93
123
  onOpenChange: setOpen
94
124
  }, /*#__PURE__*/React.createElement(PopoverTrigger, {
95
125
  asChild: true
@@ -108,12 +138,12 @@ function DatePicker(_ref) {
108
138
  className: iconSizeInTriggerOptions[size]
109
139
  }), /*#__PURE__*/React.createElement("span", {
110
140
  className: "sr-only"
111
- }, "Select date"))), /*#__PURE__*/React.createElement(PopoverContent, {
141
+ }, "Select date"))), /*#__PURE__*/React.createElement(PopoverContent, _extends({
112
142
  className: cn('w-auto overflow-hidden p-0', popoverClassName),
113
143
  align: "end",
114
144
  alignOffset: -8,
115
145
  sideOffset: 10
116
- }, /*#__PURE__*/React.createElement(Calendar, {
146
+ }, popoverContentProps), /*#__PURE__*/React.createElement(Calendar, {
117
147
  mode: "single",
118
148
  selected: selectedDate,
119
149
  captionLayout: "dropdown",
@@ -1,4 +1,6 @@
1
+ import * as PopoverPrimitive from '@radix-ui/react-popover';
1
2
  import { FormSizeType } from '@scaleflex/ui-tw/types/form-size';
3
+ import type { ComponentProps, FocusEvent, KeyboardEvent } from 'react';
2
4
  export type DatePickerProps = {
3
5
  minDate?: Date;
4
6
  maxDate?: Date;
@@ -8,5 +10,9 @@ export type DatePickerProps = {
8
10
  invalidDateText?: string;
9
11
  popoverClassName?: string;
10
12
  disabled?: boolean;
13
+ defaultOpen?: boolean;
11
14
  onChange?: (date: Date) => void;
15
+ onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => void;
16
+ onBlur?: (event: FocusEvent<HTMLInputElement>) => void;
17
+ popoverContentProps?: ComponentProps<typeof PopoverPrimitive.Content>;
12
18
  };
@@ -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?: "sm" | "md" | "lg" | null | undefined;
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.39",
3
+ "version": "0.0.41",
4
4
  "author": "scaleflex",
5
5
  "repository": "github:scaleflex/ui",
6
6
  "homepage": "https://github.com/scaleflex/ui/blob/master/README.md",
@@ -22,7 +22,7 @@
22
22
  "@radix-ui/react-slot": "^1.1.2",
23
23
  "@radix-ui/react-switch": "^1.0.1",
24
24
  "@radix-ui/react-tooltip": "^1.2.6",
25
- "@scaleflex/icons-tw": "^0.0.39",
25
+ "@scaleflex/icons-tw": "^0.0.41",
26
26
  "@types/lodash.merge": "^4.6.9",
27
27
  "class-variance-authority": "^0.7.1",
28
28
  "cmdk": "^1.1.1",
@@ -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?: "sm" | "md" | "lg" | null | undefined;
5
- variant?: "outline" | "default" | null | undefined;
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 };
@@ -1,3 +1,3 @@
1
1
  import React from 'react';
2
2
  import type { SelectorProps } from '../select.types';
3
- export declare function Selector({ value, onChange, placeholder, disabled, readOnly, size, className, icon, options, showGroupSeparator, formItemId, popoverClassName, defaultOpen, triggerProps, ...rest }: SelectorProps): React.JSX.Element;
3
+ export declare function Selector({ value, onChange, placeholder, disabled, readOnly, size, className, icon, options, showGroupSeparator, formItemId, popoverClassName, selectorContentProps, defaultOpen, triggerProps, ...rest }: SelectorProps): React.JSX.Element;
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["value", "onChange", "placeholder", "disabled", "readOnly", "size", "className", "icon", "options", "showGroupSeparator", "formItemId", "popoverClassName", "defaultOpen", "triggerProps"];
3
+ var _excluded = ["value", "onChange", "placeholder", "disabled", "readOnly", "size", "className", "icon", "options", "showGroupSeparator", "formItemId", "popoverClassName", "selectorContentProps", "defaultOpen", "triggerProps"];
4
4
  import { isOptionGroup } from '@scaleflex/ui-tw/form';
5
5
  import React from 'react';
6
6
  import { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSeparator, SelectTrigger, SelectValue } from '../';
@@ -18,6 +18,7 @@ export function Selector(_ref) {
18
18
  showGroupSeparator = _ref.showGroupSeparator,
19
19
  formItemId = _ref.formItemId,
20
20
  popoverClassName = _ref.popoverClassName,
21
+ selectorContentProps = _ref.selectorContentProps,
21
22
  defaultOpen = _ref.defaultOpen,
22
23
  triggerProps = _ref.triggerProps,
23
24
  rest = _objectWithoutProperties(_ref, _excluded);
@@ -35,9 +36,9 @@ export function Selector(_ref) {
35
36
  icon: icon
36
37
  }, triggerProps), /*#__PURE__*/React.createElement(SelectValue, {
37
38
  placeholder: placeholder
38
- })), /*#__PURE__*/React.createElement(SelectContent, {
39
+ })), /*#__PURE__*/React.createElement(SelectContent, _extends({
39
40
  className: popoverClassName
40
- }, options.map(function (option, groupIndex) {
41
+ }, selectorContentProps), options.map(function (option, groupIndex) {
41
42
  if (isOptionGroup(option)) {
42
43
  return /*#__PURE__*/React.createElement(SelectGroup, {
43
44
  key: groupIndex
@@ -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?: "sm" | "md" | "lg" | null | undefined;
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;
@@ -35,6 +35,7 @@ export interface SelectorProps extends SelectProps {
35
35
  showGroupSeparator?: boolean;
36
36
  formItemId?: string;
37
37
  popoverClassName?: string;
38
+ selectorContentProps?: ComponentProps<typeof SelectPrimitive.Content>;
38
39
  'aria-invalid'?: boolean;
39
40
  triggerProps?: Omit<ComponentProps<typeof SelectPrimitive.Trigger>, 'aria-invalid'>;
40
41
  }
@@ -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 };
@@ -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?: "sm" | "md" | "lg" | null | undefined;
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 };