opus-toolkit-components 1.2.5 → 1.2.7

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.
@@ -801,7 +801,8 @@ const Accordion = _ref => {
801
801
  index,
802
802
  isPreview,
803
803
  onExitPreview = () => {},
804
- children,
804
+ content,
805
+ preview,
805
806
  isPill = false,
806
807
  pillText,
807
808
  pillStatus,
@@ -859,9 +860,9 @@ const Accordion = _ref => {
859
860
  className: "w-4 h-4 text-[--color-text-strong] transition-transform transform ".concat(isActive ? 'rotate-180' : 'rotate-0')
860
861
  }))))), isActive && /*#__PURE__*/external_react_default().createElement("div", {
861
862
  className: "accordion-body rounded-b-lg text-[--color-text-weak] bg-[--color-accordion-body] border-0 border-t-2 border-solid border-[--color-stroke] p-3"
862
- }, children.content), isPreview && activeIndex !== index && /*#__PURE__*/external_react_default().createElement("div", {
863
+ }, content), isPreview && activeIndex !== index && /*#__PURE__*/external_react_default().createElement("div", {
863
864
  className: "accordion-body rounded-b-lg bg-[--color-accordion-body] text-[--color-text-weak] border-0 border-t-2 border-solid border-[--color-stroke] p-3"
864
- }, children.preview));
865
+ }, preview));
865
866
  };
866
867
  /* harmony default export */ const Accordions_Accordion = (Accordion);
867
868
  // EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js
@@ -3737,11 +3738,11 @@ function Button(_ref) {
3737
3738
  } = _ref;
3738
3739
  // Define styles for button ranks
3739
3740
  const rankStyles = {
3740
- primary: 'bg-[--color-primary-btn] hover:bg-[--color-primary-btn-hover] text-[--color-primary-btn-txt]',
3741
+ primary: 'bg-[--color-primary-btn] hover:bg-[--color-primary-btn-hover] text-[--color-primary-btn-txt] border-solid border-2 border-[--color-primary-btn] hover:border-[--color-primary-btn-hover]',
3741
3742
  secondary: 'bg-transparent border-2 border-[--color-primary-btn] hover:border-[--color-secondary-btn-hover] hover:text-[--color-secondary-btn-hover] text-[--color-primary-btn]',
3742
3743
  tertiary: 'bg-transparent underline text-[--color-text-strong]',
3743
3744
  outline: 'bg-[--color-input-bg] border-solid border-2 border-[--color-outline-btn] hover:border-[--color-outline-btn-hover] text-[--color-text-strong]',
3744
- destructive: 'bg-[--color-destructive-btn] hover:bg-[--color-destructive-btn-hover] text-[--color-destructive-btn-txt]'
3745
+ destructive: 'bg-[--color-destructive-btn] hover:bg-[--color-destructive-btn-hover] text-[--color-destructive-btn-txt] border-solid border-2 border-[--color-destructive-btn] hover:border-[--color-destructive-btn-hover]'
3745
3746
  };
3746
3747
 
3747
3748
  // Disabled styles for button
@@ -3801,6 +3802,57 @@ function Card(_ref) {
3801
3802
  className: cardClasses
3802
3803
  }, children);
3803
3804
  }
3805
+ ;// ./src/components/Text/Text.jsx
3806
+ const Text_excluded = ["variant", "as", "className", "children", "name", "dataCy"];
3807
+ function Text_extends() { return Text_extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, Text_extends.apply(null, arguments); }
3808
+ function Text_objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = Text_objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
3809
+ function Text_objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
3810
+
3811
+
3812
+ const variantMap = {
3813
+ h1: 'text-4xl font-bold leading-tight text-[--color-text-strong]',
3814
+ h2: 'text-3xl font-semibold leading-snug text-[--color-text-strong]',
3815
+ h3: 'text-2xl font-semibold leading-snug text-[--color-text-strong]',
3816
+ h4: 'text-xl font-medium text-[--color-text-strong]',
3817
+ h5: 'text-lg font-medium text-[--color-text-strong]',
3818
+ h6: 'text-base font-medium text-[--color-text-strong]',
3819
+ body: 'text-base text-[--color-text-strong]',
3820
+ small: 'text-sm text-[--color-text-strong]',
3821
+ caption: 'text-xs text-[--color-text-strong]',
3822
+ label: 'text-sm font-medium text-[--color-text-weak]'
3823
+ };
3824
+ const elementMap = {
3825
+ h1: 'h1',
3826
+ h2: 'h2',
3827
+ h3: 'h3',
3828
+ h4: 'h4',
3829
+ h5: 'h5',
3830
+ h6: 'h6',
3831
+ body: 'p',
3832
+ small: 'small',
3833
+ caption: 'span',
3834
+ label: 'label'
3835
+ };
3836
+ function Text(_ref) {
3837
+ let {
3838
+ variant = 'body',
3839
+ as,
3840
+ className = '',
3841
+ children,
3842
+ name,
3843
+ dataCy
3844
+ } = _ref,
3845
+ rest = Text_objectWithoutProperties(_ref, Text_excluded);
3846
+ const Component = as || elementMap[variant] || 'p';
3847
+ const variantClass = variantMap[variant] || variantMap.body;
3848
+ return /*#__PURE__*/external_react_default().createElement(Component, Text_extends({
3849
+ className: "".concat(variantClass, " ").concat(className),
3850
+ "data-cy": getDataCy({
3851
+ name,
3852
+ dataCy
3853
+ })
3854
+ }, rest), children);
3855
+ }
3804
3856
  ;// ./src/components/Forms/Inputs/Input.jsx
3805
3857
  function Input_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3806
3858
  function Input_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? Input_ownKeys(Object(t), !0).forEach(function (r) { Input_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : Input_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -3809,6 +3861,7 @@ function Input_toPropertyKey(t) { var i = Input_toPrimitive(t, "string"); return
3809
3861
  function Input_toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
3810
3862
 
3811
3863
 
3864
+
3812
3865
  const Input = /*#__PURE__*/(0,external_react_.forwardRef)((_ref, ref) => {
3813
3866
  let {
3814
3867
  label,
@@ -3844,10 +3897,15 @@ const Input = /*#__PURE__*/(0,external_react_.forwardRef)((_ref, ref) => {
3844
3897
  const iconClasses = "h-5 w-5 ".concat(isAnimated ? 'transition-transform duration-200 group-focus-within:scale-125' : '', " text-[--color-text-weak]");
3845
3898
  return /*#__PURE__*/external_react_default().createElement("div", {
3846
3899
  className: "flex flex-col mb-4"
3847
- }, /*#__PURE__*/external_react_default().createElement("label", {
3848
- className: "text-[--color-text-weak] mb-1 flex items-center"
3849
- }, label, required && /*#__PURE__*/external_react_default().createElement("span", {
3850
- className: "text-utilRed1000 ml-1"
3900
+ }, /*#__PURE__*/external_react_default().createElement(Text, {
3901
+ as: "label",
3902
+ variant: "label",
3903
+ htmlFor: name,
3904
+ className: "mb-1 flex items-center"
3905
+ }, label, required && /*#__PURE__*/external_react_default().createElement(Text, {
3906
+ as: "span",
3907
+ variant: "small",
3908
+ className: "text-[--color-util-red] ml-1"
3851
3909
  }, "*")), /*#__PURE__*/external_react_default().createElement("div", {
3852
3910
  className: "".concat(inputClasses, " relative")
3853
3911
  }, Icon && iconPosition === 'left' && /*#__PURE__*/external_react_default().createElement("span", {
@@ -3855,6 +3913,7 @@ const Input = /*#__PURE__*/(0,external_react_.forwardRef)((_ref, ref) => {
3855
3913
  }, /*#__PURE__*/external_react_default().createElement(Icon, {
3856
3914
  className: iconClasses
3857
3915
  })), /*#__PURE__*/external_react_default().createElement("input", {
3916
+ id: name,
3858
3917
  ref: ref,
3859
3918
  className: "w-full ".concat(Icon ? iconPosition === 'left' ? 'pl-10' : 'pr-10' : '', " bg-[--color-input-bg] border-none focus:ring-0 focus:outline-none rounded-md py-2 px-3"),
3860
3919
  type: type,
@@ -3864,19 +3923,23 @@ const Input = /*#__PURE__*/(0,external_react_.forwardRef)((_ref, ref) => {
3864
3923
  value: value,
3865
3924
  title: title,
3866
3925
  tabIndex: tabIndex,
3867
- "aria-label": title,
3868
3926
  required: required,
3869
3927
  disabled: disabled,
3870
3928
  "data-cy": getDataCy({
3871
3929
  name,
3872
3930
  dataCy
3873
- })
3931
+ }),
3932
+ "aria-invalid": !isValid,
3933
+ "aria-describedby": !isValid ? "".concat(name, "-error") : undefined
3874
3934
  }), Icon && iconPosition === 'right' && /*#__PURE__*/external_react_default().createElement("span", {
3875
3935
  className: "absolute right-3 flex items-center pointer-events-none"
3876
3936
  }, /*#__PURE__*/external_react_default().createElement(Icon, {
3877
3937
  className: iconClasses
3878
- }))), !isValid && /*#__PURE__*/external_react_default().createElement("span", {
3879
- className: "text-utilRed1000 text-sm"
3938
+ }))), !isValid && /*#__PURE__*/external_react_default().createElement(Text, {
3939
+ as: "span",
3940
+ variant: "small",
3941
+ id: "".concat(name, "-error"),
3942
+ className: "text-[--color-util-red]"
3880
3943
  }, errorMessage), shouldRenderCustomComponent && customComponent && /*#__PURE__*/external_react_default().createElement(customComponent, Input_objectSpread({}, customComponentProps)));
3881
3944
  });
3882
3945
  /* harmony default export */ const Inputs_Input = (Input);
@@ -3941,6 +4004,7 @@ var datepicker_update = injectStylesIntoStyleTag_default()(datepicker/* default
3941
4004
 
3942
4005
 
3943
4006
 
4007
+
3944
4008
  function DatePicker(_ref) {
3945
4009
  let {
3946
4010
  initialDate = '',
@@ -4003,11 +4067,13 @@ function DatePicker(_ref) {
4003
4067
  };
4004
4068
  return /*#__PURE__*/external_react_default().createElement("div", {
4005
4069
  className: "relative flex flex-col mb-4"
4006
- }, /*#__PURE__*/external_react_default().createElement("label", {
4070
+ }, /*#__PURE__*/external_react_default().createElement(Text, {
4071
+ as: "label",
4072
+ variant: "label",
4007
4073
  htmlFor: name,
4008
- className: "text-[--color-text-weak] mb-1"
4074
+ className: "mb-1"
4009
4075
  }, label, required && /*#__PURE__*/external_react_default().createElement("span", {
4010
- className: "text-utilRed1000 ml-1"
4076
+ className: "text-[--color-util-red] ml-1"
4011
4077
  }, "*")), /*#__PURE__*/external_react_default().createElement("input", {
4012
4078
  type: "date",
4013
4079
  id: name,
@@ -4015,7 +4081,6 @@ function DatePicker(_ref) {
4015
4081
  ref: inputRef,
4016
4082
  value: selectedDate,
4017
4083
  title: title,
4018
- "aria-label": title,
4019
4084
  onChange: handleDateChange,
4020
4085
  required: required,
4021
4086
  disabled: disabled,
@@ -4023,7 +4088,9 @@ function DatePicker(_ref) {
4023
4088
  name,
4024
4089
  dataCy
4025
4090
  }),
4026
- className: "w-full py-2 px-3 pr-10 rounded-md bg-[--color-input-bg] border ".concat(isValid ? 'border-[--color-stroke]' : 'border-utilRed1000', " text-md font-normal text-[--color-text-weak] ").concat(disabled ? 'opacity-50 cursor-not-allowed' : '', " ").concat(className)
4091
+ "aria-invalid": !isValid,
4092
+ "aria-describedby": !isValid ? "".concat(name, "-error") : undefined,
4093
+ className: "w-full py-2 px-3 pr-10 rounded-md bg-[--color-input-bg] border ".concat(isValid ? 'border-[--color-stroke]' : 'border-[--color-util-red]', " text-md font-normal text-[--color-text-weak] ").concat(disabled ? 'opacity-50 cursor-not-allowed' : '', " ").concat(className)
4027
4094
  }), /*#__PURE__*/external_react_default().createElement("button", {
4028
4095
  type: "button",
4029
4096
  onClick: handleIconClick,
@@ -4032,13 +4099,17 @@ function DatePicker(_ref) {
4032
4099
  disabled: disabled
4033
4100
  }, /*#__PURE__*/external_react_default().createElement(esm_CalendarIcon, {
4034
4101
  className: "w-5 h-5 ".concat(disabled ? 'text-[--color-text-disabled]' : 'text-[--color-text-weak] hover:text-[--color-primary-btn-hover]', " transition")
4035
- })), !isValid && /*#__PURE__*/external_react_default().createElement("span", {
4036
- className: "text-utilRed1000 text-sm"
4102
+ })), !isValid && /*#__PURE__*/external_react_default().createElement(Text, {
4103
+ as: "span",
4104
+ id: "".concat(name, "-error"),
4105
+ variant: "small",
4106
+ className: "text-[--color-util-red]"
4037
4107
  }, errorMessage));
4038
4108
  }
4039
4109
  ;// ./src/components/Forms/Radios/RadioButton.js
4040
4110
 
4041
4111
 
4112
+
4042
4113
  const RadioButton = _ref => {
4043
4114
  let {
4044
4115
  label,
@@ -4072,43 +4143,54 @@ const RadioButton = _ref => {
4072
4143
  if (disabled) return;
4073
4144
  const event = {
4074
4145
  target: {
4075
- name: name,
4146
+ name,
4076
4147
  value: item.value
4077
4148
  }
4078
4149
  };
4079
- if (onChange) {
4080
- onChange(event);
4081
- }
4150
+ onChange === null || onChange === void 0 || onChange(event);
4082
4151
  };
4083
4152
  return /*#__PURE__*/external_react_default().createElement("div", {
4084
4153
  className: "flex flex-col mb-4 ".concat(className)
4085
- }, /*#__PURE__*/external_react_default().createElement("label", {
4154
+ }, /*#__PURE__*/external_react_default().createElement(Text, {
4155
+ as: "label",
4156
+ variant: "label",
4086
4157
  className: "text-[--color-text-strong] mb-2 flex items-center"
4087
- }, label, required && /*#__PURE__*/external_react_default().createElement("span", {
4088
- className: "text-utilRed1000 ml-1"
4158
+ }, label, required && /*#__PURE__*/external_react_default().createElement(Text, {
4159
+ as: "span",
4160
+ variant: "small",
4161
+ className: "text-[--color-util-red] ml-1"
4089
4162
  }, "*")), /*#__PURE__*/external_react_default().createElement("div", {
4090
- className: "flex space-x-4"
4091
- }, options.map(option => /*#__PURE__*/external_react_default().createElement("label", {
4092
- key: option.value,
4093
- className: "py-2 px-4 border rounded-lg transition duration-200 flex items-center ".concat(selectedValue === option.value ? 'bg-[--color-primary-btn] text-[--color-white] border-[--color-stroke]' : "bg-[--color-input-bg] text-[--color-text-strong] ".concat(!isValid && selectedValue === '' ? 'border-utilRed1000' : 'border-[--color-stroke]'), " ").concat(disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer')
4094
- }, /*#__PURE__*/external_react_default().createElement("input", {
4095
- type: "radio",
4096
- tabIndex: tabIndex,
4097
- title: title,
4098
- "aria-label": title,
4099
- name: name,
4100
- value: option.value,
4101
- checked: selectedValue === option.value,
4102
- onChange: () => handleChange(option),
4103
- className: "hidden",
4104
- disabled: disabled,
4105
- "data-cy": getDataCy({
4106
- name,
4163
+ className: "flex space-x-4 flex-wrap"
4164
+ }, options.map(option => {
4165
+ const id = "".concat(name, "-").concat(option.value);
4166
+ return /*#__PURE__*/external_react_default().createElement("label", {
4167
+ key: option.value,
4168
+ htmlFor: id,
4169
+ className: "py-2 px-4 border rounded-lg transition duration-200 flex items-center ".concat(selectedValue === option.value ? 'bg-[--color-primary-btn] text-[--color-white] border-[--color-stroke]' : "bg-[--color-input-bg] text-[--color-text-strong] ".concat(!isValid && selectedValue === '' ? 'border-[--color-util-red]' : 'border-[--color-stroke]'), " ").concat(disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer')
4170
+ }, /*#__PURE__*/external_react_default().createElement("input", {
4171
+ id: id,
4172
+ type: "radio",
4173
+ tabIndex: tabIndex,
4174
+ title: title,
4175
+ name: name,
4107
4176
  value: option.value,
4108
- dataCy
4109
- })
4110
- }), option.label))), !isValid && /*#__PURE__*/external_react_default().createElement("span", {
4111
- className: "text-utilRed1000 text-sm mt-1"
4177
+ checked: selectedValue === option.value,
4178
+ onChange: () => handleChange(option),
4179
+ className: "hidden",
4180
+ disabled: disabled,
4181
+ "data-cy": getDataCy({
4182
+ name,
4183
+ value: option.value,
4184
+ dataCy
4185
+ }),
4186
+ "aria-invalid": !isValid,
4187
+ "aria-describedby": !isValid ? "".concat(name, "-error") : undefined
4188
+ }), option.label);
4189
+ })), !isValid && /*#__PURE__*/external_react_default().createElement(Text, {
4190
+ as: "span",
4191
+ variant: "small",
4192
+ id: "".concat(name, "-error"),
4193
+ className: "text-[--color-util-red] mt-1"
4112
4194
  }, errorMessage));
4113
4195
  };
4114
4196
  RadioButton.displayName = 'RadioButton';
@@ -4116,6 +4198,7 @@ RadioButton.displayName = 'RadioButton';
4116
4198
  ;// ./src/components/Forms/Checkbox/Checkbox.jsx
4117
4199
 
4118
4200
 
4201
+
4119
4202
  function Checkbox(_ref) {
4120
4203
  let {
4121
4204
  label,
@@ -4123,15 +4206,18 @@ function Checkbox(_ref) {
4123
4206
  onChange,
4124
4207
  value = false,
4125
4208
  isValid = true,
4126
- errorMessage = "",
4209
+ errorMessage = '',
4127
4210
  disabled = false,
4128
4211
  dataCy
4129
4212
  } = _ref;
4213
+ const id = "checkbox-".concat(name);
4214
+ const errorId = "".concat(id, "-error");
4130
4215
  return /*#__PURE__*/external_react_default().createElement("div", {
4131
4216
  className: "flex flex-col mb-4"
4132
- }, /*#__PURE__*/external_react_default().createElement("label", {
4133
- className: "flex items-center text-[--color-text-weak]"
4217
+ }, /*#__PURE__*/external_react_default().createElement("div", {
4218
+ className: "flex items-center"
4134
4219
  }, /*#__PURE__*/external_react_default().createElement("input", {
4220
+ id: id,
4135
4221
  type: "checkbox",
4136
4222
  name: name,
4137
4223
  checked: value,
@@ -4141,9 +4227,22 @@ function Checkbox(_ref) {
4141
4227
  name,
4142
4228
  dataCy
4143
4229
  }),
4144
- className: "mr-2 ".concat(disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer')
4145
- }), label), !isValid && errorMessage && /*#__PURE__*/external_react_default().createElement("span", {
4146
- className: "text-rose-500 text-sm mt-1"
4230
+ "aria-invalid": !isValid,
4231
+ "aria-describedby": !isValid && errorMessage ? errorId : undefined,
4232
+ "aria-disabled": disabled,
4233
+ style: {
4234
+ accentColor: 'var(--color-primary-btn)'
4235
+ },
4236
+ className: "\n mr-2 \n rounded-sm\n ".concat(disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer')
4237
+ }), /*#__PURE__*/external_react_default().createElement(Text, {
4238
+ variant: "label",
4239
+ as: "label",
4240
+ htmlFor: id
4241
+ }, label)), !isValid && errorMessage && /*#__PURE__*/external_react_default().createElement(Text, {
4242
+ id: errorId,
4243
+ variant: "small",
4244
+ as: "span",
4245
+ className: "text-[--color-util-red] mt-1"
4147
4246
  }, errorMessage));
4148
4247
  }
4149
4248
  // EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./src/components/Tables/table.scss
@@ -12717,9 +12816,10 @@ const esm_ChevronDownIcon_ForwardRef = /*#__PURE__*/ external_react_.forwardRef(
12717
12816
 
12718
12817
 
12719
12818
 
12819
+
12720
12820
  function Dropdown(_ref) {
12721
12821
  let {
12722
- items,
12822
+ items = [],
12723
12823
  label = 'Test Label',
12724
12824
  isValid = true,
12725
12825
  required = false,
@@ -12733,15 +12833,14 @@ function Dropdown(_ref) {
12733
12833
  Icon,
12734
12834
  errorMessage = 'This field is required',
12735
12835
  disabled = false,
12736
- dataCy // optional override
12836
+ dataCy
12737
12837
  } = _ref;
12738
12838
  const [selectedItem, setSelectedItem] = (0,external_react_.useState)(null);
12739
- const [isOpen, setIsOpen] = (0,external_react_.useState)(false);
12740
12839
  (0,external_react_.useEffect)(() => {
12741
12840
  const newSelectedItem = items.find(item => item.value === value) || null;
12742
12841
  setSelectedItem(newSelectedItem);
12743
12842
  }, [value, items]);
12744
- const inputClasses = "inline-flex w-full justify-between items-center rounded-md bg-[--color-input-bg] text-md font-normal border p-2 text-[--color-text-weak] ".concat(isValid ? 'border-[--color-stroke]' : 'border-utilRed1000', " ").concat(disabled ? 'opacity-50 cursor-not-allowed' : '', " ").concat(className);
12843
+ const inputClasses = "inline-flex w-full justify-between items-center rounded-md bg-[--color-input-bg] text-md font-normal border p-2 text-[--color-text-weak] ".concat(isValid ? 'border-[--color-stroke]' : 'border-utilRed1000', " ").concat(disabled ? 'opacity-50 cursor-not-allowed' : '');
12745
12844
  const handleSelect = item => {
12746
12845
  if (disabled) return;
12747
12846
  setSelectedItem(item);
@@ -12751,53 +12850,64 @@ function Dropdown(_ref) {
12751
12850
  value: item.value
12752
12851
  }
12753
12852
  };
12754
- onChange(event);
12853
+ onChange === null || onChange === void 0 || onChange(event);
12755
12854
  };
12756
- return /*#__PURE__*/external_react_default().createElement(lo, {
12757
- as: "div",
12758
- className: "".concat(className, " relative inline-block text-left"),
12759
- name: name,
12760
- title: title,
12761
- "aria-label": title,
12762
- tabIndex: tabIndex,
12763
- "data-cy": getDataCy({
12764
- name,
12765
- dataCy
12766
- })
12767
- }, /*#__PURE__*/external_react_default().createElement("label", {
12768
- className: "flex items-center text-[--color-text-weak] mb-1"
12855
+ return /*#__PURE__*/external_react_default().createElement("div", {
12856
+ className: "flex flex-col mb-4 ".concat(className)
12857
+ }, /*#__PURE__*/external_react_default().createElement(Text, {
12858
+ as: "label",
12859
+ variant: "label",
12860
+ className: "mb-1",
12861
+ htmlFor: name
12769
12862
  }, label, required && /*#__PURE__*/external_react_default().createElement("span", {
12770
- className: "ml-1 text-utilRed1000"
12771
- }, "*")), /*#__PURE__*/external_react_default().createElement("div", null, /*#__PURE__*/external_react_default().createElement(yt, {
12772
- className: inputClasses,
12773
- onClick: () => !disabled && setIsOpen(prev => !prev),
12774
- disabled: disabled
12775
- }, /*#__PURE__*/external_react_default().createElement("div", {
12776
- className: "flex items-center gap-2"
12777
- }, Icon && /*#__PURE__*/external_react_default().createElement(Icon, {
12778
- className: "h-5 w-5 text-[--color-text-weak]"
12779
- }), /*#__PURE__*/external_react_default().createElement("span", null, selectedItem ? selectedItem.label : placeholder)), /*#__PURE__*/external_react_default().createElement(solid_esm_ChevronDownIcon, {
12780
- "aria-hidden": "true",
12781
- className: "-mr-1 h-5 w-5 text-[--color-text-weak] transition-transform duration-200 ".concat(isOpen ? 'rotate-180' : 'rotate-0')
12782
- }))), !disabled && /*#__PURE__*/external_react_default().createElement(Pt, {
12783
- transition: true,
12784
- className: " absolute right-0 z-10 mt-2 w-56 origin-top-right rounded-md bg-[--color-primary-bg] shadow-lg ring-1 ring-[--color-stroke] ring-opacity-1 transition focus:outline-none max-h-48 overflow-y-auto ",
12785
- onClick: () => setIsOpen(false)
12786
- }, /*#__PURE__*/external_react_default().createElement("div", {
12787
- className: "py-1"
12788
- }, items.map((item, index) => /*#__PURE__*/external_react_default().createElement(Et, {
12789
- key: index
12790
- }, _ref2 => {
12863
+ className: "ml-1 text-[--color-util-red]"
12864
+ }, "*")), /*#__PURE__*/external_react_default().createElement(lo, null, _ref2 => {
12791
12865
  let {
12792
- active
12866
+ open
12793
12867
  } = _ref2;
12794
- return /*#__PURE__*/external_react_default().createElement("button", {
12795
- type: "button",
12796
- onClick: () => handleSelect(item),
12797
- className: "block w-full px-4 py-2 text-left text-sm text-[--color-text-weak] ".concat(active ? 'bg-[--color-input-bg] text-[--color-text-weak]' : '', " hover:bg-[--color-input-bg]")
12798
- }, item.label);
12799
- })))), !isValid && /*#__PURE__*/external_react_default().createElement("span", {
12800
- className: "text-utilRed1000 text-sm"
12868
+ return /*#__PURE__*/external_react_default().createElement("div", {
12869
+ className: "relative"
12870
+ }, /*#__PURE__*/external_react_default().createElement(yt, {
12871
+ id: name,
12872
+ name: name,
12873
+ title: title,
12874
+ "aria-invalid": !isValid,
12875
+ "aria-describedby": !isValid ? "".concat(name, "-error") : undefined,
12876
+ tabIndex: tabIndex,
12877
+ disabled: disabled,
12878
+ "data-cy": getDataCy({
12879
+ name,
12880
+ dataCy
12881
+ }),
12882
+ className: inputClasses
12883
+ }, /*#__PURE__*/external_react_default().createElement("div", {
12884
+ className: "flex items-center gap-2"
12885
+ }, Icon && /*#__PURE__*/external_react_default().createElement(Icon, {
12886
+ className: "h-5 w-5 text-[--color-text-weak]"
12887
+ }), /*#__PURE__*/external_react_default().createElement("span", null, selectedItem ? selectedItem.label : placeholder)), /*#__PURE__*/external_react_default().createElement(solid_esm_ChevronDownIcon, {
12888
+ "aria-hidden": "true",
12889
+ className: "-mr-1 h-5 w-5 text-[--color-text-weak] transition-transform duration-200 ".concat(open ? 'rotate-180' : 'rotate-0')
12890
+ })), !disabled && /*#__PURE__*/external_react_default().createElement(Pt, {
12891
+ className: " absolute right-0 z-10 mt-2 w-56 origin-top-right rounded-md bg-[--color-primary-bg] shadow-lg ring-1 ring-[--color-stroke] ring-opacity-1 focus:outline-none max-h-48 overflow-y-auto "
12892
+ }, /*#__PURE__*/external_react_default().createElement("div", {
12893
+ className: "py-1"
12894
+ }, items.map((item, index) => /*#__PURE__*/external_react_default().createElement(Et, {
12895
+ key: index
12896
+ }, _ref3 => {
12897
+ let {
12898
+ active
12899
+ } = _ref3;
12900
+ return /*#__PURE__*/external_react_default().createElement("button", {
12901
+ type: "button",
12902
+ onClick: () => handleSelect(item),
12903
+ className: "block w-full px-4 py-2 text-left text-sm text-[--color-text-weak] ".concat(active ? 'bg-[--color-input-bg]' : '')
12904
+ }, item.label);
12905
+ })))));
12906
+ }), !isValid && /*#__PURE__*/external_react_default().createElement(Text, {
12907
+ as: "span",
12908
+ variant: "small",
12909
+ id: "".concat(name, "-error"),
12910
+ className: "text-[--color-util-red] mt-1"
12801
12911
  }, errorMessage));
12802
12912
  }
12803
12913
  // EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./src/components/Navbar/navbar.scss
@@ -12883,6 +12993,7 @@ const XMarkIcon_ForwardRef = /*#__PURE__*/ external_react_.forwardRef(XMarkIcon)
12883
12993
  ;// ./src/components/Modals/Modal.js
12884
12994
 
12885
12995
 
12996
+
12886
12997
  const Modal = _ref => {
12887
12998
  let {
12888
12999
  isOpen,
@@ -12890,27 +13001,47 @@ const Modal = _ref => {
12890
13001
  header,
12891
13002
  body,
12892
13003
  footer,
12893
- className = "",
12894
- footerClassName = "",
12895
- headerClassName = ""
13004
+ className = '',
13005
+ footerClassName = '',
13006
+ headerClassName = ''
12896
13007
  } = _ref;
12897
- if (!isOpen) return true;
13008
+ // Hook must be called unconditionally
13009
+ (0,external_react_.useEffect)(() => {
13010
+ const handleEscape = e => {
13011
+ if (e.key === 'Escape' && isOpen) {
13012
+ onClose === null || onClose === void 0 || onClose();
13013
+ }
13014
+ };
13015
+ document.addEventListener('keydown', handleEscape);
13016
+ return () => document.removeEventListener('keydown', handleEscape);
13017
+ }, [isOpen, onClose]);
13018
+
13019
+ // ✅ Conditional render *after* hooks
13020
+ if (!isOpen) return null;
12898
13021
  return /*#__PURE__*/external_react_default().createElement("div", {
12899
13022
  className: "fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50"
12900
13023
  }, /*#__PURE__*/external_react_default().createElement("div", {
13024
+ role: "dialog",
13025
+ "aria-modal": "true",
13026
+ "aria-labelledby": "modal-title",
13027
+ "aria-describedby": "modal-description",
12901
13028
  className: "bg-[--color-primary-bg] rounded-lg shadow-xl w-11/12 max-w-fit p-6 ".concat(className)
12902
13029
  }, /*#__PURE__*/external_react_default().createElement("div", {
12903
13030
  className: "flex justify-end pb-3"
12904
- }, /*#__PURE__*/external_react_default().createElement("div", {
13031
+ }, /*#__PURE__*/external_react_default().createElement("button", {
12905
13032
  onClick: onClose,
12906
- className: "hover:cursor-pointer text-[--color-text-strong]"
13033
+ className: "hover:cursor-pointer text-[--color-text-strong]",
13034
+ "aria-label": "Close modal"
12907
13035
  }, /*#__PURE__*/external_react_default().createElement(esm_XMarkIcon, {
12908
13036
  width: "24px",
12909
13037
  className: "text-[--color-text-strong]"
12910
13038
  }))), /*#__PURE__*/external_react_default().createElement("div", {
12911
13039
  className: "border-b border-[--color-stroke] pb-4 text-[--color-text-strong] ".concat(headerClassName)
12912
- }, header), /*#__PURE__*/external_react_default().createElement("div", {
12913
- className: "my-2 text-[--color-text-strong]"
13040
+ }, /*#__PURE__*/external_react_default().createElement("div", {
13041
+ id: "modal-title"
13042
+ }, header)), /*#__PURE__*/external_react_default().createElement("div", {
13043
+ id: "modal-description",
13044
+ className: "my-4 text-[--color-text-weak]"
12914
13045
  }, body), /*#__PURE__*/external_react_default().createElement("div", {
12915
13046
  className: "text-[--color-text-weak] ".concat(footerClassName)
12916
13047
  }, footer)));
@@ -12922,19 +13053,25 @@ var c247_loader_gif_default = /*#__PURE__*/__webpack_require__.n(c247_loader_gif
12922
13053
  ;// ./src/components/Loader/Loader.js
12923
13054
 
12924
13055
 
13056
+
12925
13057
  function Loader(_ref) {
12926
13058
  let {
12927
13059
  isLoading,
12928
- loaderText = "loading..."
13060
+ loaderText = 'loading...',
13061
+ customLoader,
13062
+ className = ''
12929
13063
  } = _ref;
12930
13064
  return isLoading && /*#__PURE__*/external_react_default().createElement("div", {
12931
- className: "fixed inset-0 flex flex-col items-center justify-center bg-greySunkenDark1000 bg-opacity-80 z-50"
12932
- }, /*#__PURE__*/external_react_default().createElement("img", {
13065
+ role: "status",
13066
+ "aria-live": "polite",
13067
+ className: "fixed inset-0 flex flex-col items-center justify-center bg-greySunkenDark1000 bg-opacity-80 z-50 ".concat(className)
13068
+ }, customLoader ? customLoader : /*#__PURE__*/external_react_default().createElement("img", {
12933
13069
  src: (c247_loader_gif_default()),
12934
13070
  alt: "Loading",
12935
13071
  className: "h-60"
12936
- }), /*#__PURE__*/external_react_default().createElement("h4", {
12937
- className: "mt-4 text-greyBaseLight text-lg font-medium animate-pulse"
13072
+ }), /*#__PURE__*/external_react_default().createElement(Text, {
13073
+ variant: "h4",
13074
+ className: "mt-4 animate-pulse"
12938
13075
  }, loaderText));
12939
13076
  }
12940
13077
  ;// external "opus-toolkit-styles/assets/logos/footer-logos.svg"