flikkui 0.1.0-beta.2 → 0.1.0-beta.3

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 (104) hide show
  1. package/dist/components/charts/index.d.ts +2 -0
  2. package/dist/components/charts/shared/ChartLegend/ChartLegend.d.ts +7 -0
  3. package/dist/components/charts/shared/ChartLegend/ChartLegendContent.d.ts +7 -0
  4. package/dist/components/charts/shared/ChartLegend/index.d.ts +2 -0
  5. package/dist/components/core/AvatarGroup/AvatarGroup.animations.d.ts +1 -1
  6. package/dist/components/core/AvatarGroup/AvatarGroup.theme.d.ts +1 -0
  7. package/dist/components/core/Breadcrumbs/Breadcrumbs.js +8 -7
  8. package/dist/components/core/Button/Button.animations.d.ts +0 -12
  9. package/dist/components/core/Button/Button.animations.js +4 -19
  10. package/dist/components/core/Button/Button.js +40 -37
  11. package/dist/components/core/Button/Button.theme.d.ts +0 -4
  12. package/dist/components/core/Button/Button.theme.js +14 -9
  13. package/dist/components/core/Button/Button.types.d.ts +1 -1
  14. package/dist/components/core/Divider/Divider.types.d.ts +8 -2
  15. package/dist/components/core/Drawer/Drawer.types.d.ts +1 -1
  16. package/dist/components/core/Modal/Modal.types.d.ts +1 -1
  17. package/dist/components/core/Pagination/Pagination.types.d.ts +25 -13
  18. package/dist/components/core/Popover/Popover.animations.d.ts +34 -3
  19. package/dist/components/core/Popover/Popover.animations.js +19 -0
  20. package/dist/components/core/Popover/Popover.theme.js +2 -2
  21. package/dist/components/core/Popover/PopoverContent.js +5 -14
  22. package/dist/components/core/Segmented/Segmented.types.d.ts +17 -0
  23. package/dist/components/core/Tabs/Tabs.js +2 -8
  24. package/dist/components/core/Tabs/Tabs.theme.d.ts +8 -45
  25. package/dist/components/core/Tabs/Tabs.theme.js +14 -64
  26. package/dist/components/core/Tabs/Tabs.types.d.ts +4 -36
  27. package/dist/components/core/Tabs/TabsContent.js +3 -8
  28. package/dist/components/core/Tabs/TabsList.js +3 -10
  29. package/dist/components/core/Tabs/TabsTrigger.js +3 -15
  30. package/dist/components/core/Tabs/index.d.ts +1 -1
  31. package/dist/components/core/Tooltip/Tooltip.animations.d.ts +1 -1
  32. package/dist/components/core/Tooltip/Tooltip.d.ts +1 -1
  33. package/dist/components/core/Tooltip/Tooltip.theme.d.ts +0 -1
  34. package/dist/components/core/Tooltip/Tooltip.types.d.ts +15 -15
  35. package/dist/components/core/Tooltip/useTooltipPositioning.d.ts +12 -0
  36. package/dist/components/core/Tree/Tree.types.d.ts +8 -45
  37. package/dist/components/core/Tree/index.d.ts +1 -3
  38. package/dist/components/data-display/Table/Table.animations.d.ts +21 -0
  39. package/dist/components/data-display/Table/Table.types.d.ts +56 -13
  40. package/dist/components/data-display/Table/components/TableActionsMenu.d.ts +1 -1
  41. package/dist/components/data-display/Table/components/TableColumnManager/TableColumnManager.theme.d.ts +16 -0
  42. package/dist/components/data-display/Table/components/TablePagination/TablePagination.d.ts +17 -0
  43. package/dist/components/data-display/Table/components/TablePagination/TablePagination.types.d.ts +21 -0
  44. package/dist/components/data-display/Table/components/TablePagination/index.d.ts +2 -0
  45. package/dist/components/data-display/Table/index.d.ts +6 -3
  46. package/dist/components/feedback/Alert/Alert.types.d.ts +4 -0
  47. package/dist/components/feedback/ChatMessage/ChatMessage.types.d.ts +20 -14
  48. package/dist/components/feedback/Empty/Empty.theme.d.ts +4 -14
  49. package/dist/components/feedback/Empty/Empty.types.d.ts +8 -20
  50. package/dist/components/feedback/Empty/index.d.ts +2 -2
  51. package/dist/components/feedback/Notification/Notification.theme.d.ts +16 -1
  52. package/dist/components/feedback/Notification/Notification.types.d.ts +18 -40
  53. package/dist/components/feedback/Notification/index.d.ts +2 -2
  54. package/dist/components/feedback/Toast/Toast.animations.d.ts +31 -0
  55. package/dist/components/feedback/Toast/Toast.types.d.ts +1 -1
  56. package/dist/components/feedback/index.d.ts +3 -3
  57. package/dist/components/forms/Checkbox/Checkbox.js +10 -16
  58. package/dist/components/forms/Checkbox/Checkbox.theme.js +8 -6
  59. package/dist/components/forms/Checkbox/Checkbox.types.d.ts +13 -30
  60. package/dist/components/forms/FormLabel/FormLabel.d.ts +1 -2
  61. package/dist/components/forms/FormLabel/FormLabel.js +7 -14
  62. package/dist/components/forms/FormLabel/FormLabel.theme.d.ts +3 -4
  63. package/dist/components/forms/FormLabel/FormLabel.theme.js +6 -6
  64. package/dist/components/forms/FormLabel/FormLabel.types.d.ts +10 -18
  65. package/dist/components/forms/FormLabel/index.d.ts +3 -3
  66. package/dist/components/forms/Input/Input.d.ts +0 -1
  67. package/dist/components/forms/Input/Input.js +51 -85
  68. package/dist/components/forms/Input/Input.theme.d.ts +4 -4
  69. package/dist/components/forms/Input/Input.theme.js +26 -26
  70. package/dist/components/forms/Input/Input.types.d.ts +41 -64
  71. package/dist/components/forms/Input/index.d.ts +1 -1
  72. package/dist/components/forms/InputAddress/InputAddress.theme.d.ts +2 -2
  73. package/dist/components/forms/InputAddress/InputAddress.types.d.ts +3 -3
  74. package/dist/components/forms/InputCreditCard/InputCreditCard.theme.d.ts +3 -3
  75. package/dist/components/forms/InputCreditCard/InputCreditCard.types.d.ts +4 -4
  76. package/dist/components/forms/Radio/Radio.js +12 -18
  77. package/dist/components/forms/Radio/Radio.theme.d.ts +2 -18
  78. package/dist/components/forms/Radio/Radio.theme.js +10 -19
  79. package/dist/components/forms/Radio/Radio.types.d.ts +16 -32
  80. package/dist/components/forms/Select/Select.js +1 -9
  81. package/dist/components/forms/Signature/Signature.js +5 -4
  82. package/dist/components/forms/Signature/Signature.theme.js +1 -3
  83. package/dist/components/forms/Signature/Signature.types.d.ts +0 -4
  84. package/dist/components/layout/DragDrop/DragDrop.js +62 -0
  85. package/dist/components/layout/DragDrop/DragDrop.theme.js +8 -0
  86. package/dist/components/layout/Sortable/Sortable.animations.js +81 -0
  87. package/dist/components/layout/Sortable/Sortable.js +165 -0
  88. package/dist/components/layout/Sortable/Sortable.theme.js +7 -0
  89. package/dist/components/navigation/index.d.ts +1 -1
  90. package/dist/index.d.ts +1 -0
  91. package/dist/index.js +3 -1
  92. package/dist/node_modules/@heroicons/react/24/outline/esm/Bars3Icon.js +28 -0
  93. package/dist/node_modules/@heroicons/react/24/outline/esm/LockClosedIcon.js +28 -0
  94. package/dist/styles.css +1 -1
  95. package/dist/utils/debounce.d.ts +9 -0
  96. package/dist/utils/index.d.ts +1 -0
  97. package/package.json +2 -1
  98. package/dist/components/core/Popover/test-popover.d.ts +0 -3
  99. package/dist/components/core/Tabs/test-tabs.d.ts +0 -3
  100. package/dist/components/core/Tree/TreeIcon.d.ts +0 -3
  101. package/dist/components/core/Tree/TreeNode.d.ts +0 -6
  102. package/dist/components/forms/Input/Input.AdvancedStories.d.ts +0 -13
  103. package/dist/node_modules/framer-motion/dist/es/animation/hooks/animation-controls.js +0 -80
  104. package/dist/node_modules/framer-motion/dist/es/animation/hooks/use-animation.js +0 -41
@@ -2,21 +2,15 @@ import React from 'react';
2
2
  /**
3
3
  * State variants for the checkbox component
4
4
  */
5
- export type CheckboxState = 'default' | 'disabled' | 'invalid';
5
+ export type CheckboxState = 'default' | 'disabled';
6
+ /**
7
+ * Size variants for the checkbox component
8
+ */
9
+ export type CheckboxSize = 'sm' | 'md';
6
10
  /**
7
11
  * Checkbox component props
8
- * @property {string} id - Unique identifier for the checkbox input
9
- * @property {string} name - Name for the checkbox input
10
- * @property {string} value - Value for the checkbox input
11
- * @property {boolean} checked - Whether the checkbox is checked
12
- * @property {(checked: boolean, value: string) => void} onChange - Function called when the checkbox state changes
13
- * @property {string} label - Label text for the checkbox
14
- * @property {string} description - Optional description text
15
- * @property {CheckboxState} state - The state of the checkbox (default, disabled, invalid)
16
- * @property {CheckboxThemeOverrides} theme - Optional theme overrides
17
- * @property {string} className - Additional class names for styling override
18
12
  */
19
- export interface CheckboxProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {
13
+ export interface CheckboxProps extends Omit<React.HTMLAttributes<HTMLInputElement>, 'onChange' | 'size'> {
20
14
  id: string;
21
15
  name: string;
22
16
  value: string;
@@ -26,27 +20,16 @@ export interface CheckboxProps extends Omit<React.HTMLAttributes<HTMLDivElement>
26
20
  label?: string;
27
21
  description?: string;
28
22
  state?: CheckboxState;
29
- theme?: CheckboxThemeOverrides;
23
+ size?: CheckboxSize;
24
+ className?: string;
30
25
  }
31
26
  /**
32
27
  * Checkbox theme configuration
33
28
  */
34
29
  export interface CheckboxTheme {
35
- container: string;
36
- inputContainer: string;
37
- labelContainer: string;
38
- input: string;
39
- checkmark: string;
40
- description: string;
41
- }
42
- /**
43
- * Checkbox theme overrides
44
- */
45
- export interface CheckboxThemeOverrides {
46
- container?: string;
47
- inputContainer?: string;
48
- labelContainer?: string;
49
- input?: string;
50
- checkmark?: string;
51
- description?: string;
30
+ baseStyle: string;
31
+ inputContainerStyle: string;
32
+ inputStyle: string;
33
+ descriptionStyle: string;
34
+ sizes: Record<CheckboxSize, string>;
52
35
  }
@@ -1,7 +1,6 @@
1
1
  import React from 'react';
2
2
  import { FormLabelProps } from './FormLabel.types';
3
3
  /**
4
- * FormLabel component for providing a label for form elements
4
+ * FormLabel component for providing consistent labeling for form elements
5
5
  */
6
6
  export declare const FormLabel: React.FC<FormLabelProps>;
7
- export default FormLabel;
@@ -1,23 +1,16 @@
1
+ import { __rest, __assign } from '../../../node_modules/tslib/tslib.es6.js';
1
2
  import React__default from 'react';
2
3
  import { formLabelTheme } from './FormLabel.theme.js';
4
+ import { cn } from '../../../utils/cn.js';
3
5
 
4
6
  /**
5
- * FormLabel component for providing a label for form elements
7
+ * FormLabel component for providing consistent labeling for form elements
6
8
  */
7
9
  var FormLabel = function (_a) {
8
- var _b, _c;
9
- var htmlFor = _a.htmlFor, children = _a.children, _d = _a.className, className = _d === void 0 ? '' : _d, _e = _a.required, required = _e === void 0 ? false : _e, _f = _a.state, state = _f === void 0 ? 'default' : _f, _g = _a.theme, theme = _g === void 0 ? {} : _g;
10
- // Get base classes from theme or use defaults
11
- var baseClasses = theme.baseStyle || formLabelTheme.baseStyle;
12
- // Define state classes
13
- var stateClasses = ((_b = theme.states) === null || _b === void 0 ? void 0 : _b[state]) || ((_c = formLabelTheme.states) === null || _c === void 0 ? void 0 : _c[state]) || '';
14
- // Required indicator style
15
- var requiredIndicatorStyle = theme.requiredIndicatorStyle || formLabelTheme.requiredIndicatorStyle;
16
- // Combine all classes for label
17
- var combinedClassName = "".concat(baseClasses, " ").concat(stateClasses, " ").concat(className).trim();
18
- return (React__default.createElement("label", { htmlFor: htmlFor, className: combinedClassName },
10
+ var htmlFor = _a.htmlFor, children = _a.children, className = _a.className, _b = _a.required, required = _b === void 0 ? false : _b, _c = _a.state, state = _c === void 0 ? 'default' : _c, props = __rest(_a, ["htmlFor", "children", "className", "required", "state"]);
11
+ return (React__default.createElement("label", __assign({ htmlFor: htmlFor, className: cn(formLabelTheme.baseStyle, formLabelTheme.stateStyles[state], className) }, props),
19
12
  children,
20
- required && React__default.createElement("span", { className: requiredIndicatorStyle }, "*")));
13
+ required && (React__default.createElement("span", { className: formLabelTheme.requiredIndicatorStyle }, "*"))));
21
14
  };
22
15
 
23
- export { FormLabel, FormLabel as default };
16
+ export { FormLabel };
@@ -1,6 +1,5 @@
1
- import { FormLabelThemeOverrides } from './FormLabel.types';
1
+ import { FormLabelTheme } from './FormLabel.types';
2
2
  /**
3
- * Default theme for the FormLabel component
3
+ * Clean theme structure for FormLabel component
4
4
  */
5
- export declare const formLabelTheme: FormLabelThemeOverrides;
6
- export default formLabelTheme;
5
+ export declare const formLabelTheme: FormLabelTheme;
@@ -1,12 +1,12 @@
1
1
  /**
2
- * Default theme for the FormLabel component
2
+ * Clean theme structure for FormLabel component
3
3
  */
4
4
  var formLabelTheme = {
5
5
  // Base styles for the label element
6
- baseStyle: "block text-sm/6 font-medium text-text-primary mb-2",
7
- // State variants
8
- states: {
9
- default: "",
6
+ baseStyle: "block text-sm/6 font-medium mb-2",
7
+ // State variants - using design tokens from global.scss
8
+ stateStyles: {
9
+ default: "text-text-primary",
10
10
  disabled: "text-text-disabled",
11
11
  invalid: "text-danger-base",
12
12
  },
@@ -14,4 +14,4 @@ var formLabelTheme = {
14
14
  requiredIndicatorStyle: "text-danger-base ml-1",
15
15
  };
16
16
 
17
- export { formLabelTheme as default, formLabelTheme };
17
+ export { formLabelTheme };
@@ -1,14 +1,12 @@
1
1
  import React from 'react';
2
+ /**
3
+ * State variants for the FormLabel component
4
+ */
5
+ export type FormLabelState = 'default' | 'disabled' | 'invalid';
2
6
  /**
3
7
  * FormLabel component props
4
- * @property {string} htmlFor - The ID of the form element the label is associated with
5
- * @property {React.ReactNode} children - The content of the label
6
- * @property {string} className - Additional class name for the label
7
- * @property {boolean} required - Whether the associated form element is required
8
- * @property {'default' | 'disabled' | 'invalid'} state - The state of the label
9
- * @property {FormLabelThemeOverrides} theme - Component-level theme overrides
10
8
  */
11
- export interface FormLabelProps {
9
+ export interface FormLabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {
12
10
  /** The ID of the form element the label is associated with */
13
11
  htmlFor: string;
14
12
  /** The content of the label */
@@ -19,18 +17,12 @@ export interface FormLabelProps {
19
17
  required?: boolean;
20
18
  /** The state of the label */
21
19
  state?: FormLabelState;
22
- /** Component-level theme overrides */
23
- theme?: FormLabelThemeOverrides;
24
20
  }
25
- export type FormLabelState = 'default' | 'disabled' | 'invalid';
26
21
  /**
27
- * Theme overrides for the FormLabel component
22
+ * FormLabel theme configuration
28
23
  */
29
- export interface FormLabelThemeOverrides {
30
- /** Base style for the label */
31
- baseStyle?: string;
32
- /** State variants for the label */
33
- states?: Partial<Record<FormLabelState, string>>;
34
- /** Style for the required indicator */
35
- requiredIndicatorStyle?: string;
24
+ export interface FormLabelTheme {
25
+ baseStyle: string;
26
+ stateStyles: Record<FormLabelState, string>;
27
+ requiredIndicatorStyle: string;
36
28
  }
@@ -1,3 +1,3 @@
1
- export { default as FormLabel } from './FormLabel';
2
- export { default as formLabelTheme } from './FormLabel.theme';
3
- export * from './FormLabel.types';
1
+ export { FormLabel } from './FormLabel';
2
+ export { formLabelTheme } from './FormLabel.theme';
3
+ export type { FormLabelProps, FormLabelState, FormLabelTheme } from './FormLabel.types';
@@ -1,4 +1,3 @@
1
1
  import React from "react";
2
2
  import { InputProps } from "./Input.types";
3
3
  export declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
4
- export default Input;
@@ -2,6 +2,7 @@ import { __rest, __assign, __spreadArray } from '../../../node_modules/tslib/tsl
2
2
  import React__default, { useState, useRef, useEffect } from 'react';
3
3
  import { FormLabel } from '../FormLabel/FormLabel.js';
4
4
  import { inputTheme } from './Input.theme.js';
5
+ import { cn } from '../../../utils/cn.js';
5
6
  import { PlusIcon } from '../../../icons/core/PlusIcon.js';
6
7
  import { MinusIcon } from '../../../icons/core/MinusIcon.js';
7
8
  import { SearchIcon } from '../../../icons/core/SearchIcon.js';
@@ -14,29 +15,22 @@ import ForwardRef$1 from '../../../node_modules/@heroicons/react/24/solid/esm/Ey
14
15
  import ForwardRef$2 from '../../../node_modules/@heroicons/react/24/solid/esm/EyeIcon.js';
15
16
 
16
17
  var Input = React__default.forwardRef(function (_a, ref) {
17
- var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
18
- var _p = _a.size, size = _p === void 0 ? "md" : _p, _q = _a.state, state = _q === void 0 ? "default" : _q, _r = _a.className, className = _r === void 0 ? "" : _r, label = _a.label, _s = _a.labelClassName, labelClassName = _s === void 0 ? "" : _s, helperText = _a.helperText, _t = _a.helperTextClassName, helperTextClassName = _t === void 0 ? "" : _t, _u = _a.wrapperClassName, wrapperClassName = _u === void 0 ? "" : _u, _v = _a.inputGroupClassName, inputGroupClassName = _v === void 0 ? "" : _v, leftIcon = _a.leftIcon, rightIcon = _a.rightIcon, addonPrefix = _a.addonPrefix, addonSuffix = _a.addonSuffix, keyboardShortcut = _a.keyboardShortcut, id = _a.id,
19
- // TODO: whats the diff between theme and classname? i want to use classname tooverride stying since this library is being build using tailwindcss
20
- _w = _a.theme,
21
- // TODO: whats the diff between theme and classname? i want to use classname tooverride stying since this library is being build using tailwindcss
22
- theme = _w === void 0 ? {} : _w, required = _a.required, _x = _a.type, type = _x === void 0 ? "text" : _x, _y = _a.passwordToggle, passwordToggle = _y === void 0 ? type === "password" : _y, passwordStrengthIndicator = _a.passwordStrengthIndicator, _z = _a.showNumberControls, showNumberControls = _z === void 0 ? false : _z, min = _a.min, max = _a.max, _0 = _a.step, step = _0 === void 0 ? 1 : _0, onChange = _a.onChange, value = _a.value, currencyDecimalPlaces = _a.currencyDecimalPlaces, props = __rest(_a, ["size", "state", "className", "label", "labelClassName", "helperText", "helperTextClassName", "wrapperClassName", "inputGroupClassName", "leftIcon", "rightIcon", "addonPrefix", "addonSuffix", "keyboardShortcut", "id", "theme", "required", "type", "passwordToggle", "passwordStrengthIndicator", "showNumberControls", "min", "max", "step", "onChange", "value", "currencyDecimalPlaces"]);
23
- var _1 = useState(false), isFocused = _1[0], setIsFocused = _1[1];
24
- var _2 = useState(false), showPassword = _2[0], setShowPassword = _2[1];
18
+ var _b = _a.size, size = _b === void 0 ? "md" : _b, _c = _a.state, state = _c === void 0 ? "default" : _c, _d = _a.className, className = _d === void 0 ? "" : _d, label = _a.label, _e = _a.labelClassName, labelClassName = _e === void 0 ? "" : _e, helperText = _a.helperText, _f = _a.helperTextClassName, helperTextClassName = _f === void 0 ? "" : _f, _g = _a.wrapperClassName, wrapperClassName = _g === void 0 ? "" : _g, _h = _a.inputGroupClassName, inputGroupClassName = _h === void 0 ? "" : _h, leftIcon = _a.leftIcon, rightIcon = _a.rightIcon, addonPrefix = _a.addonPrefix, addonSuffix = _a.addonSuffix, keyboardShortcut = _a.keyboardShortcut, id = _a.id, required = _a.required, _j = _a.type, type = _j === void 0 ? "text" : _j, _k = _a.passwordToggle, passwordToggle = _k === void 0 ? type === "password" : _k, passwordStrengthIndicator = _a.passwordStrengthIndicator, _l = _a.showNumberControls, showNumberControls = _l === void 0 ? false : _l, min = _a.min, max = _a.max, _m = _a.step, step = _m === void 0 ? 1 : _m, onChange = _a.onChange, value = _a.value, currencyDecimalPlaces = _a.currencyDecimalPlaces, props = __rest(_a, ["size", "state", "className", "label", "labelClassName", "helperText", "helperTextClassName", "wrapperClassName", "inputGroupClassName", "leftIcon", "rightIcon", "addonPrefix", "addonSuffix", "keyboardShortcut", "id", "required", "type", "passwordToggle", "passwordStrengthIndicator", "showNumberControls", "min", "max", "step", "onChange", "value", "currencyDecimalPlaces"]);
19
+ var _o = useState(false), isFocused = _o[0], setIsFocused = _o[1];
20
+ var _p = useState(false), showPassword = _p[0], setShowPassword = _p[1];
25
21
  var inputId = id || "input-".concat(Math.random().toString(36).substring(2, 9));
26
- var _3 = useState(value !== undefined
22
+ var _q = useState(value !== undefined
27
23
  ? typeof value === "number"
28
24
  ? value
29
25
  : typeof value === "string"
30
26
  ? parseFloat(value) || undefined
31
27
  : undefined
32
- : undefined), numberValue = _3[0], setNumberValue = _3[1];
28
+ : undefined), numberValue = _q[0], setNumberValue = _q[1];
33
29
  var inputRef = useRef(null);
34
30
  var cursorPositionRef = useRef(null);
35
31
  // Default icons based on input type
36
- var defaultPasswordIcon = type === "password" && !leftIcon ? (React__default.createElement(ForwardRef, { className: "size-5 text-neutral-500" })) : null;
37
- var defaultSearchIcon = type === "search" && !leftIcon ? (React__default.createElement(SearchIcon, { size: "sm", className: ((_c = (_b = theme.typeStyles) === null || _b === void 0 ? void 0 : _b.search) === null || _c === void 0 ? void 0 : _c.iconStyle) ||
38
- ((_e = (_d = inputTheme.typeStyles) === null || _d === void 0 ? void 0 : _d.search) === null || _e === void 0 ? void 0 : _e.iconStyle) ||
39
- "text-neutral-500" })) : null;
32
+ var defaultPasswordIcon = type === "password" && !leftIcon ? (React__default.createElement(ForwardRef, { className: "size-5 text-text-muted" })) : null;
33
+ var defaultSearchIcon = type === "search" && !leftIcon ? (React__default.createElement(SearchIcon, { size: "sm", className: inputTheme.typeStyles.search.iconStyle })) : null;
40
34
  // Use the provided leftIcon or the default icon based on input type
41
35
  var finalLeftIcon = leftIcon || defaultPasswordIcon || defaultSearchIcon;
42
36
  // Derived state flags for internal use
@@ -182,40 +176,32 @@ var Input = React__default.forwardRef(function (_a, ref) {
182
176
  onChange(e);
183
177
  }
184
178
  };
185
- // Get theme classes
186
- var wrapperClasses = theme.wrapperStyle || inputTheme.wrapperStyle || "";
187
- var inputGroupClasses = theme.inputGroupStyle || inputTheme.inputGroupStyle || "";
188
- var baseClasses = theme.baseStyle || inputTheme.baseStyle || "";
189
- var sizeClasses = ((_f = theme.sizes) === null || _f === void 0 ? void 0 : _f[size]) || ((_g = inputTheme.sizes) === null || _g === void 0 ? void 0 : _g[size]) || "";
190
- var stateClasses = ((_h = theme.states) === null || _h === void 0 ? void 0 : _h[state]) || ((_j = inputTheme.states) === null || _j === void 0 ? void 0 : _j[state]) || "";
191
- var helperTextClasses = theme.helperText || inputTheme.helperText || "";
192
- // Icon related classes
193
- var leftIconClasses = theme.leftIconStyle || inputTheme.leftIconStyle || "";
194
- var rightIconClasses = theme.rightIconStyle || inputTheme.rightIconStyle || "";
195
- var leftIconPadding = ((_k = theme.iconPadding) === null || _k === void 0 ? void 0 : _k.left) || ((_l = inputTheme.iconPadding) === null || _l === void 0 ? void 0 : _l.left) || "pl-10";
196
- var rightIconPadding = ((_m = theme.iconPadding) === null || _m === void 0 ? void 0 : _m.right) || ((_o = inputTheme.iconPadding) === null || _o === void 0 ? void 0 : _o.right) || "pr-10";
197
- // Addon related classes
198
- var addonStyle = theme.addonStyle || inputTheme.addonStyle || "";
199
- var addonPrefixStyle = theme.addonPrefixStyle || inputTheme.addonPrefixStyle || "";
200
- var addonSuffixStyle = theme.addonSuffixStyle || inputTheme.addonSuffixStyle || "";
201
- // Password toggle classes
202
- var passwordToggleClasses = theme.passwordToggleStyle || inputTheme.passwordToggleStyle || "";
203
- // Number input classes
204
- var numberButtonsContainerClasses = theme.numberButtonsContainerStyle ||
205
- inputTheme.numberButtonsContainerStyle ||
206
- "";
207
- var numberButtonClasses = theme.numberButtonStyle || inputTheme.numberButtonStyle || "";
179
+ // Theme classes - using simplified approach with design tokens
180
+ var wrapperClasses = inputTheme.wrapperStyle;
181
+ var inputGroupClasses = inputTheme.inputGroupStyle;
182
+ var baseClasses = inputTheme.baseStyle;
183
+ var sizeClasses = inputTheme.sizes[size];
184
+ var stateClasses = inputTheme.states[state];
185
+ var helperTextClasses = inputTheme.helperText;
186
+ // Icon classes using design tokens
187
+ var leftIconClasses = inputTheme.leftIconStyle;
188
+ var rightIconClasses = inputTheme.rightIconStyle;
189
+ var leftIconPadding = inputTheme.iconPadding.left;
190
+ var rightIconPadding = inputTheme.iconPadding.right;
191
+ // Addon classes
192
+ var addonStyle = inputTheme.addonStyle;
193
+ var addonPrefixStyle = inputTheme.addonPrefixStyle;
194
+ var addonSuffixStyle = inputTheme.addonSuffixStyle;
195
+ // Interactive element classes
196
+ var passwordToggleClasses = inputTheme.passwordToggleStyle;
197
+ var numberButtonsContainerClasses = inputTheme.numberButtonsContainerStyle;
198
+ var numberButtonClasses = inputTheme.numberButtonStyle;
208
199
  // Password toggle button component
209
200
  var PasswordToggleButton = function () {
210
- var _a, _b, _c, _d, _e, _f, _g, _h;
211
201
  if (!isPasswordField)
212
202
  return null;
213
- var toggleIconActive = ((_b = (_a = theme.typeStyles) === null || _a === void 0 ? void 0 : _a.password) === null || _b === void 0 ? void 0 : _b.toggleIconActive) ||
214
- ((_d = (_c = inputTheme.typeStyles) === null || _c === void 0 ? void 0 : _c.password) === null || _d === void 0 ? void 0 : _d.toggleIconActive) ||
215
- "w-5 h-5 text-neutral-700";
216
- var toggleIconInactive = ((_f = (_e = theme.typeStyles) === null || _e === void 0 ? void 0 : _e.password) === null || _f === void 0 ? void 0 : _f.toggleIconInactive) ||
217
- ((_h = (_g = inputTheme.typeStyles) === null || _g === void 0 ? void 0 : _g.password) === null || _h === void 0 ? void 0 : _h.toggleIconInactive) ||
218
- "w-5 h-5 text-neutral-500";
203
+ var toggleIconActive = inputTheme.typeStyles.password.toggleIconActive;
204
+ var toggleIconInactive = inputTheme.typeStyles.password.toggleIconInactive;
219
205
  return (React__default.createElement("div", { className: passwordToggleClasses, onClick: function (e) {
220
206
  e.stopPropagation(); // Prevent parent click handler
221
207
  handleTogglePassword();
@@ -228,7 +214,6 @@ var Input = React__default.forwardRef(function (_a, ref) {
228
214
  };
229
215
  // Number input buttons component
230
216
  var NumberButtons = function () {
231
- var _a, _b, _c, _d, _e, _f, _g, _h;
232
217
  if (!isNumberField)
233
218
  return null;
234
219
  var isAtMax = max !== undefined &&
@@ -239,12 +224,8 @@ var Input = React__default.forwardRef(function (_a, ref) {
239
224
  numberValue !== undefined &&
240
225
  typeof min === "number" &&
241
226
  numberValue <= min;
242
- var incrementIconStyle = ((_b = (_a = theme.typeStyles) === null || _a === void 0 ? void 0 : _a.number) === null || _b === void 0 ? void 0 : _b.incrementIconStyle) ||
243
- ((_d = (_c = inputTheme.typeStyles) === null || _c === void 0 ? void 0 : _c.number) === null || _d === void 0 ? void 0 : _d.incrementIconStyle) ||
244
- "text-neutral-500";
245
- var decrementIconStyle = ((_f = (_e = theme.typeStyles) === null || _e === void 0 ? void 0 : _e.number) === null || _f === void 0 ? void 0 : _f.decrementIconStyle) ||
246
- ((_h = (_g = inputTheme.typeStyles) === null || _g === void 0 ? void 0 : _g.number) === null || _h === void 0 ? void 0 : _h.decrementIconStyle) ||
247
- "text-neutral-500";
227
+ var incrementIconStyle = inputTheme.typeStyles.number.incrementIconStyle;
228
+ var decrementIconStyle = inputTheme.typeStyles.number.decrementIconStyle;
248
229
  return (React__default.createElement("div", { className: numberButtonsContainerClasses },
249
230
  React__default.createElement("button", { type: "button", className: "".concat(numberButtonClasses), onClick: function (e) {
250
231
  e.stopPropagation(); // Prevent parent click handler
@@ -259,35 +240,23 @@ var Input = React__default.forwardRef(function (_a, ref) {
259
240
  };
260
241
  // Password Strength Indicator component
261
242
  var PasswordStrengthIndicator = function (_a) {
262
- var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
263
- var _r = _a.inline, inline = _r === void 0 ? false : _r;
243
+ var _b = _a.inline, inline = _b === void 0 ? false : _b;
264
244
  if (!hasPasswordStrength) {
265
245
  return null;
266
246
  }
267
247
  var strength = passwordStrengthIndicator.strength || "strong";
268
248
  var customLabel = passwordStrengthIndicator.customLabel;
269
249
  var indicatorClassName = passwordStrengthIndicator.className || "";
270
- // Get theme values
271
- var containerStyle = ((_b = theme.passwordStrengthIndicator) === null || _b === void 0 ? void 0 : _b.containerStyle) ||
272
- ((_c = inputTheme.passwordStrengthIndicator) === null || _c === void 0 ? void 0 : _c.containerStyle) ||
273
- "flex items-center gap-1 ".concat(inline ? "" : "mt-2");
274
- var labelStyle = ((_d = theme.passwordStrengthIndicator) === null || _d === void 0 ? void 0 : _d.labelStyle) ||
275
- ((_e = inputTheme.passwordStrengthIndicator) === null || _e === void 0 ? void 0 : _e.labelStyle) ||
276
- "text-xs font-semibold mr-1";
277
- var dotStyle = ((_f = theme.passwordStrengthIndicator) === null || _f === void 0 ? void 0 : _f.dotStyle) ||
278
- ((_g = inputTheme.passwordStrengthIndicator) === null || _g === void 0 ? void 0 : _g.dotStyle) ||
279
- "size-1.5 rounded-full";
280
- var dotActiveStyle = ((_h = theme.passwordStrengthIndicator) === null || _h === void 0 ? void 0 : _h.dotActiveStyle) ||
281
- ((_j = inputTheme.passwordStrengthIndicator) === null || _j === void 0 ? void 0 : _j.dotActiveStyle) ||
282
- "bg-current";
283
- var dotInactiveStyle = ((_k = theme.passwordStrengthIndicator) === null || _k === void 0 ? void 0 : _k.dotInactiveStyle) ||
284
- ((_l = inputTheme.passwordStrengthIndicator) === null || _l === void 0 ? void 0 : _l.dotInactiveStyle) ||
285
- "bg-neutral-200";
286
- // Get color and label based on strength
287
- var strengthConfig = ((_o = (_m = theme.passwordStrengthIndicator) === null || _m === void 0 ? void 0 : _m.strengthStyles) === null || _o === void 0 ? void 0 : _o[strength]) ||
288
- ((_q = (_p = inputTheme.passwordStrengthIndicator) === null || _p === void 0 ? void 0 : _p.strengthStyles) === null || _q === void 0 ? void 0 : _q[strength]) || {
250
+ // Get theme values using design tokens
251
+ var containerStyle = "".concat(inputTheme.passwordStrengthIndicator.containerStyle, " ").concat(inline ? "" : "mt-2");
252
+ var labelStyle = inputTheme.passwordStrengthIndicator.labelStyle;
253
+ var dotStyle = inputTheme.passwordStrengthIndicator.dotStyle;
254
+ var dotActiveStyle = inputTheme.passwordStrengthIndicator.dotActiveStyle;
255
+ var dotInactiveStyle = inputTheme.passwordStrengthIndicator.dotInactiveStyle;
256
+ // Get color and label based on strength using design tokens
257
+ var strengthConfig = inputTheme.passwordStrengthIndicator.strengthStyles[strength] || {
289
258
  label: "Password",
290
- color: "text-neutral-500",
259
+ color: "text-text-muted",
291
260
  };
292
261
  var colorClass = strengthConfig.color || "text-neutral-500";
293
262
  var label = customLabel || strengthConfig.label || "Password";
@@ -311,17 +280,16 @@ var Input = React__default.forwardRef(function (_a, ref) {
311
280
  React__default.createElement("div", { className: labelStyle }, label),
312
281
  __spreadArray([], Array(5), true).map(function (_, index) { return (React__default.createElement("div", { key: index, className: "".concat(dotStyle, " ").concat(index < activeDots ? dotActiveStyle : dotInactiveStyle) })); })));
313
282
  };
314
- return (React__default.createElement("div", { className: "".concat(wrapperClasses, " ").concat(stateClass, " ").concat(wrapperClassName) },
283
+ return (React__default.createElement("div", { className: cn(wrapperClasses, stateClass, wrapperClassName) },
315
284
  label && (React__default.createElement("div", { className: "flex justify-between items-center" },
316
285
  React__default.createElement(FormLabel, { htmlFor: inputId, className: labelClassName, state: state, required: required }, label),
317
286
  showStrengthWithLabel && (React__default.createElement(PasswordStrengthIndicator, { inline: true })))),
318
287
  React__default.createElement("div", null,
319
- React__default.createElement("div", { className: "".concat(inputGroupClasses, " ").concat(stateClasses, " ").concat(inputGroupClassName), onClick: handleInputGroupClick, role: "presentation" },
320
- hasAddonPrefix && (React__default.createElement("div", { className: "".concat(addonStyle, " ").concat(addonPrefixStyle) }, addonPrefix)),
288
+ React__default.createElement("div", { className: cn(inputGroupClasses, stateClasses, inputGroupClassName), onClick: handleInputGroupClick, role: "presentation" },
289
+ hasAddonPrefix && (React__default.createElement("div", { className: cn(addonStyle, addonPrefixStyle) }, addonPrefix)),
321
290
  React__default.createElement("div", { className: "relative flex-1" },
322
- React__default.createElement("input", __assign({ ref: setInputRef, id: inputId, type: actualInputType, className: "\n ".concat(baseClasses, " \n ").concat(sizeClasses, " \n ").concat(hasLeftIcon ? leftIconPadding : "", " \n ").concat(hasRightIcon || isPasswordField || (displayNumberControls)
323
- ? rightIconPadding
324
- : "", "\n ").concat(className, "\n "), disabled: isDisabled, "aria-invalid": isInvalid, required: required, min: min, max: max, step: step, value: value, onChange: handleInputChange, onFocus: function (e) {
291
+ React__default.createElement("input", __assign({ ref: setInputRef, id: inputId, type: actualInputType, className: cn(baseClasses, sizeClasses, hasLeftIcon && leftIconPadding, (hasRightIcon || isPasswordField || displayNumberControls) && rightIconPadding, className // User className has highest priority
292
+ ), disabled: isDisabled, "aria-invalid": isInvalid, required: required, min: min, max: max, step: step, value: value, onChange: handleInputChange, onFocus: function (e) {
325
293
  var _a;
326
294
  setIsFocused(true);
327
295
  (_a = props.onFocus) === null || _a === void 0 ? void 0 : _a.call(props, e);
@@ -334,13 +302,11 @@ var Input = React__default.forwardRef(function (_a, ref) {
334
302
  hasRightIcon && !isPasswordField && !displayNumberControls && (React__default.createElement("div", { className: rightIconClasses }, rightIcon)),
335
303
  isPasswordField && React__default.createElement(PasswordToggleButton, null),
336
304
  displayNumberControls && React__default.createElement(NumberButtons, null),
337
- hasKeyboardShortcut && (React__default.createElement("div", { className: theme.keyboardShortcutStyle ||
338
- inputTheme.keyboardShortcutStyle ||
339
- "" }, keyboardShortcut))),
340
- hasAddonSuffix && (React__default.createElement("div", { className: "".concat(addonStyle, " ").concat(addonSuffixStyle) }, addonSuffix)))),
305
+ hasKeyboardShortcut && (React__default.createElement("div", { className: inputTheme.keyboardShortcutStyle }, keyboardShortcut))),
306
+ hasAddonSuffix && (React__default.createElement("div", { className: cn(addonStyle, addonSuffixStyle) }, addonSuffix)))),
341
307
  showStrengthBelow && (React__default.createElement(PasswordStrengthIndicator, { inline: false })),
342
- helperText && (React__default.createElement("div", { className: "".concat(helperTextClasses, " ").concat(helperTextClassName) }, helperText))));
308
+ helperText && (React__default.createElement("div", { className: cn(helperTextClasses, helperTextClassName) }, helperText))));
343
309
  });
344
310
  Input.displayName = "Input";
345
311
 
346
- export { Input, Input as default };
312
+ export { Input };
@@ -1,7 +1,7 @@
1
- import { InputThemeOverrides } from "./Input.types";
1
+ import { InputTheme } from "./Input.types";
2
2
  /**
3
- * Default theme for the Input component
4
- * Extends the common forms base theme
3
+ * Default theme for the Input component - Clean & Organized
4
+ * Uses flat structure with design tokens
5
5
  */
6
- export declare const inputTheme: InputThemeOverrides;
6
+ export declare const inputTheme: InputTheme;
7
7
  export default inputTheme;
@@ -1,63 +1,63 @@
1
1
  import { formsBaseTheme } from '../forms.theme.js';
2
2
 
3
3
  /**
4
- * Default theme for the Input component
5
- * Extends the common forms base theme
4
+ * Default theme for the Input component - Clean & Organized
5
+ * Uses flat structure with design tokens
6
6
  */
7
7
  var inputTheme = {
8
- // Base container styles - inherited from common form theme
8
+ // Base container styles
9
9
  wrapperStyle: formsBaseTheme.wrapperStyle,
10
- // Input group styles - inherited from common form theme
10
+ // Input group styles with design tokens
11
11
  inputGroupStyle: formsBaseTheme.inputGroupBaseStyle,
12
- // Base input styles - extends the common control base style with padding
12
+ // Base input styles - extends common form control with design tokens
13
13
  baseStyle: "".concat(formsBaseTheme.controlBaseStyle, " py-2 px-3"),
14
- // Size variants - uses the base sizes from common theme
14
+ // Size variants - organized by component size
15
15
  sizes: {
16
16
  sm: formsBaseTheme.sizes.sm.base,
17
17
  md: formsBaseTheme.sizes.md.base,
18
18
  lg: formsBaseTheme.sizes.lg.base,
19
19
  },
20
- // State variants - inherited from common form theme
20
+ // State variants using design tokens
21
21
  states: formsBaseTheme.states,
22
- // Helper text styles - inherited from common form theme
22
+ // Helper text styles with state handling
23
23
  helperText: formsBaseTheme.helperText,
24
- // Icon styles - inherited from common form theme
24
+ // Icon positioning styles
25
25
  leftIconStyle: formsBaseTheme.iconStyles.left,
26
26
  rightIconStyle: formsBaseTheme.iconStyles.right,
27
- // Icon padding styles - inherited from common form theme
27
+ // Icon padding configuration
28
28
  iconPadding: formsBaseTheme.iconStyles.padding,
29
- // Addon styles - specific to Input component
30
- addonStyle: "flex items-center px-3 text-gray-500 shrink-0",
29
+ // Addon styles - prefix/suffix content
30
+ addonStyle: "flex items-center px-3 text-text-muted shrink-0",
31
31
  addonPrefixStyle: "pr-0",
32
32
  addonSuffixStyle: "pl-0",
33
- // Keyboard shortcut styles
34
- keyboardShortcutStyle: "absolute inset-y-0 right-0 flex items-center pr-3 text-neutral-400 z-10",
35
- // Password toggle button styles
36
- passwordToggleStyle: "absolute inset-y-0 right-0 flex items-center pr-3 cursor-pointer text-neutral-500 hover:text-neutral-700 z-10",
37
- // Number input styles
33
+ // Keyboard shortcut display
34
+ keyboardShortcutStyle: "absolute inset-y-0 right-0 flex items-center pr-3 text-text-muted z-10",
35
+ // Password toggle button with hover states
36
+ passwordToggleStyle: "absolute inset-y-0 right-0 flex items-center pr-3 cursor-pointer text-text-muted hover:text-text-primary transition-colors z-10",
37
+ // Number input controls
38
38
  numberButtonsContainerStyle: "absolute inset-y-0 right-0 flex flex-row items-center pr-2 z-10 gap-1",
39
- numberButtonStyle: "bg-neutral-100 flex items-center justify-center text-neutral-500 hover:bg-neutral-200 cursor-pointer size-6 rounded-sm",
40
- // Input types specific styles
39
+ numberButtonStyle: "bg-surface-elevated flex items-center justify-center text-text-muted hover:bg-surface-hover hover:text-text-primary cursor-pointer size-6 rounded-sm transition-colors",
40
+ // Type-specific styles organized by input type
41
41
  typeStyles: {
42
42
  password: {
43
- toggleIconActive: "size-5 text-neutral-700",
44
- toggleIconInactive: "size-5 text-neutral-500",
43
+ toggleIconActive: "size-5 text-text-primary",
44
+ toggleIconInactive: "size-5 text-text-muted",
45
45
  },
46
46
  search: {
47
- iconStyle: "text-neutral-500",
47
+ iconStyle: "text-text-muted",
48
48
  },
49
49
  number: {
50
- incrementIconStyle: "text-neutral-500",
51
- decrementIconStyle: "text-neutral-500",
50
+ incrementIconStyle: "text-text-muted",
51
+ decrementIconStyle: "text-text-muted",
52
52
  },
53
53
  },
54
- // Password strength indicator styles
54
+ // Password strength indicator with design tokens
55
55
  passwordStrengthIndicator: {
56
56
  containerStyle: "flex items-center gap-1",
57
57
  labelStyle: "text-xs font-semibold mr-1",
58
58
  dotStyle: "size-1.5 rounded-full",
59
59
  dotActiveStyle: "bg-current",
60
- dotInactiveStyle: "bg-neutral-200",
60
+ dotInactiveStyle: "bg-border",
61
61
  strengthStyles: {
62
62
  weak: {
63
63
  label: "Weak",