opus-toolkit-components 0.3.2 → 0.3.4

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.
@@ -588,7 +588,7 @@ const Accordion = _ref => {
588
588
  return /*#__PURE__*/external_react_default().createElement("div", {
589
589
  className: "accordion rounded-md"
590
590
  }, /*#__PURE__*/external_react_default().createElement("div", {
591
- className: "accordion-item border-2 rounded-lg border-gray-200",
591
+ className: "accordion-item rounded-lg",
592
592
  key: index
593
593
  }, /*#__PURE__*/external_react_default().createElement("div", {
594
594
  className: "accordion-header flex justify-between p-2",
@@ -779,22 +779,38 @@ const Input = /*#__PURE__*/(0,external_react_.forwardRef)((_ref, ref) => {
779
779
  errorMessage = `${label} is required`,
780
780
  onChange,
781
781
  className = '',
782
- value
782
+ value,
783
+ Icon,
784
+ // Icon component
785
+ iconPosition = 'left',
786
+ // Icon position: left or right
787
+ isAnimated = false // Add animation class when focused
783
788
  } = _ref;
784
- const inputClasses = `${className} rounded-md bg-white border border-greyLight500 px-4 py-3 text-md font-normal text-gray-900 ${isValid ? 'border-greyLight500' : 'border-utilRed1000'}`;
789
+ const inputClasses = `${className} flex items-center rounded-md bg-white border ${isValid ? 'border-greyLight500' : 'border-utilRed1000'} px-4 text-md font-normal text-gray-900`;
790
+ const iconClasses = `h-5 w-5 ${isAnimated ? 'transition-transform duration-200 group-focus-within:scale-125' : ''} text-gray-400`;
785
791
  return /*#__PURE__*/external_react_default().createElement("div", {
786
792
  className: "flex flex-col mb-4"
787
793
  }, /*#__PURE__*/external_react_default().createElement("label", {
788
- className: "text-greyLight1000"
789
- }, label), /*#__PURE__*/external_react_default().createElement("input", {
794
+ className: "text-greyLight1000 mb-1"
795
+ }, label), /*#__PURE__*/external_react_default().createElement("div", {
796
+ className: `${inputClasses} relative`
797
+ }, Icon && iconPosition === 'left' && /*#__PURE__*/external_react_default().createElement("span", {
798
+ className: "absolute left-3 flex items-center pointer-events-none"
799
+ }, /*#__PURE__*/external_react_default().createElement(Icon, {
800
+ className: iconClasses
801
+ })), /*#__PURE__*/external_react_default().createElement("input", {
790
802
  ref: ref,
791
- className: inputClasses,
803
+ className: `w-full ${Icon ? iconPosition === 'left' ? 'pl-10' : 'pr-10' : ''} bg-transparent border-none focus:ring-0`,
792
804
  type: type,
793
805
  name: name,
794
806
  placeholder: placeholder,
795
807
  onChange: onChange,
796
808
  value: value
797
- }), !isValid && /*#__PURE__*/external_react_default().createElement("span", {
809
+ }), Icon && iconPosition === 'right' && /*#__PURE__*/external_react_default().createElement("span", {
810
+ className: "absolute right-3 flex items-center pointer-events-none"
811
+ }, /*#__PURE__*/external_react_default().createElement(Icon, {
812
+ className: iconClasses
813
+ }))), !isValid && /*#__PURE__*/external_react_default().createElement("span", {
798
814
  className: "text-utilRed1000 text-sm"
799
815
  }, errorMessage));
800
816
  });
@@ -9071,20 +9087,23 @@ const ForwardRef = /*#__PURE__*/ external_react_.forwardRef(ChevronDownIcon);
9071
9087
  function Dropdown(_ref) {
9072
9088
  let {
9073
9089
  items,
9074
- label = "Test Label",
9090
+ label = 'Test Label',
9075
9091
  isValid = true,
9076
- placeholder = "Example Placeholder",
9092
+ placeholder = 'Example Placeholder',
9077
9093
  name,
9094
+ className = '',
9078
9095
  onChange,
9079
- value
9096
+ value,
9097
+ Icon // Left-aligned icon
9080
9098
  } = _ref;
9081
9099
  const initialSelectedItem = items.find(item => item.value === value) || null;
9082
9100
  const [selectedItem, setSelectedItem] = (0,external_react_.useState)(initialSelectedItem);
9101
+ const [isOpen, setIsOpen] = (0,external_react_.useState)(false);
9083
9102
  (0,external_react_.useEffect)(() => {
9084
9103
  const newSelectedItem = items.find(item => item.value === value) || null;
9085
9104
  setSelectedItem(newSelectedItem);
9086
9105
  }, [value, items]);
9087
- const inputClasses = `inline-flex w-full justify-center gap-x-1.5 rounded-md bg-white border px-4 py-3 text-md font-normal text-gray-900 ${isValid ? 'border-slate-500' : 'border-rose-500'}`;
9106
+ const inputClasses = `inline-flex w-full justify-between items-center rounded-md bg-white text-md font-normal border px-4 py-2 text-greyLight700 ${isValid ? 'border-greyLight500' : 'border-utilRed'} ${className}`;
9088
9107
  const handleSelect = item => {
9089
9108
  setSelectedItem(item);
9090
9109
  const event = {
@@ -9101,18 +9120,18 @@ function Dropdown(_ref) {
9101
9120
  name: name
9102
9121
  }, /*#__PURE__*/external_react_default().createElement("label", null, label), /*#__PURE__*/external_react_default().createElement("div", null, /*#__PURE__*/external_react_default().createElement(It, {
9103
9122
  className: inputClasses,
9104
- style: {
9105
- backgroundColor: 'white'
9106
- }
9107
- }, selectedItem ? selectedItem.label : placeholder, /*#__PURE__*/external_react_default().createElement(esm_ChevronDownIcon, {
9123
+ onClick: () => setIsOpen(prev => !prev)
9124
+ }, /*#__PURE__*/external_react_default().createElement("div", {
9125
+ className: "flex items-center gap-2"
9126
+ }, Icon && /*#__PURE__*/external_react_default().createElement(Icon, {
9127
+ className: "h-5 w-5 text-greyLight700"
9128
+ }), " ", /*#__PURE__*/external_react_default().createElement("span", null, selectedItem ? selectedItem.label : placeholder)), /*#__PURE__*/external_react_default().createElement(esm_ChevronDownIcon, {
9108
9129
  "aria-hidden": "true",
9109
- className: "-mr-1 h-5 w-5 text-gray-400"
9130
+ className: `-mr-1 h-5 w-5 text-greyLight700 transition-transform duration-200 ${isOpen ? 'rotate-180' : 'rotate-0'}`
9110
9131
  }))), /*#__PURE__*/external_react_default().createElement(gt, {
9111
9132
  transition: true,
9112
- className: "absolute right-0 z-10 mt-2 w-56 origin-top-right rounded-md bg-white shadow-lg ring-1 ring-black ring-opacity-5 transition focus:outline-none",
9113
- style: {
9114
- backgroundColor: 'white'
9115
- }
9133
+ className: "absolute right-0 z-10 mt-2 w-56 origin-top-right rounded-md bg-white shadow-lg ring-1 ring-black ring-opacity-5 transition focus:outline-none max-h-48 overflow-y-auto",
9134
+ onClick: () => setIsOpen(false)
9116
9135
  }, /*#__PURE__*/external_react_default().createElement("div", {
9117
9136
  className: "py-1"
9118
9137
  }, items.map((item, index) => /*#__PURE__*/external_react_default().createElement(Et, {
@@ -9124,10 +9143,10 @@ function Dropdown(_ref) {
9124
9143
  return /*#__PURE__*/external_react_default().createElement("button", {
9125
9144
  type: "button",
9126
9145
  onClick: () => handleSelect(item),
9127
- className: `block w-full px-4 py-2 text-left text-sm text-gray-700 ${active ? 'bg-gray-100 text-gray-900' : ''}`
9146
+ className: `block w-full px-4 py-2 text-left text-sm text-greyLight700 ${active ? 'bg-greyLight100 text-greyLight700' : ''} hover:bg-greyLight100`
9128
9147
  }, item.label);
9129
9148
  })))), !isValid && /*#__PURE__*/external_react_default().createElement("span", {
9130
- className: "text-rose-500 text-sm"
9149
+ className: "text-utilRed text-sm"
9131
9150
  }, "Please select a valid option"));
9132
9151
  }
9133
9152
  ;// ./src/index.js
@@ -9143,4 +9162,4 @@ function Dropdown(_ref) {
9143
9162
  /******/ })()
9144
9163
  ;
9145
9164
  });
9146
- //# sourceMappingURL=main.923c53023bac4e887eda.js.map
9165
+ //# sourceMappingURL=main.83972011c52c05c2a738.js.map