@wavelengthusaf/components 2.7.0 → 2.7.1

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.
@@ -497,7 +497,10 @@ interface TextFieldProps {
497
497
  regex?: RegExp;
498
498
  placeholder?: string;
499
499
  type?: string;
500
+ variant?: "outlined" | "standard";
501
+ error?: boolean;
502
+ errorMessage?: string;
500
503
  }
501
- declare function WavelengthTextField(props: TextFieldProps): react_jsx_runtime.JSX.Element;
504
+ declare function WavelengthTextField(props: TextFieldProps): react_jsx_runtime.JSX.Element | null;
502
505
 
503
506
  export { AppLogo, ButtonIcon, ButtonMenu, DefaultCarousel, DefaultIcon, DefaultPagination, ManyPlanesComponent, NotAvailablePage, type SearchProps, type SearchResult, SearchTextField, SliderCardCarousel, type StyledButtonPropsTwo, TestSnackbar, type ThemeProperties, WavelengthAppTheme, WavelengthAutocomplete, WavelengthBanner, WavelengthBox, WavelengthButton, WavelengthCommentDisplay, WavelengthConfirmationModal, WavelengthContentModal, WavelengthContentPlaceholder, WavelengthDragAndDrop, WavelengthDropdown, WavelengthDropdownButton, WavelengthExampleComponent, WavelengthFileDownloader, WavelengthFooter, WavelengthPlaneTrail, WavelengthPopUpMenu, WavelengthProgressBar, WavelengthSearch, WavelengthSideBar, WavelengthSlider, WavelengthSnackbar, WavelengthSpinningLogo, WavelengthSpinningOuterCircle, WavelengthStandardSnackbar, WavelengthStyledButton, WavelengthTextField, WavelengthTitleBar, add, ascendingRange, concat, findBestStringMatch, type menuItemProps, range, useOutsideClick, useThemeContext };
@@ -13,7 +13,10 @@ interface TextFieldProps {
13
13
  regex?: RegExp;
14
14
  placeholder?: string;
15
15
  type?: string;
16
+ variant?: "outlined" | "standard";
17
+ error?: boolean;
18
+ errorMessage?: string;
16
19
  }
17
- export declare function WavelengthTextField(props: TextFieldProps): import("react/jsx-runtime").JSX.Element;
20
+ export declare function WavelengthTextField(props: TextFieldProps): import("react/jsx-runtime").JSX.Element | null;
18
21
  export default WavelengthTextField;
19
22
  //# sourceMappingURL=WavelengthTextField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WavelengthTextField.d.ts","sourceRoot":"","sources":["../../../src/components/TextField/WavelengthTextField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAGrD,UAAU,cAAc;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,gBAAgB,GAAG,mBAAmB,CAAC,GAAG,SAAS,CAAC;IACxF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,2CAoDxD;AAED,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"WavelengthTextField.d.ts","sourceRoot":"","sources":["../../../src/components/TextField/WavelengthTextField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAyDrD,UAAU,cAAc;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,gBAAgB,GAAG,mBAAmB,CAAC,GAAG,SAAS,CAAC;IACxF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IAClC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,kDAoFxD;AAED,eAAe,mBAAmB,CAAC"}
@@ -497,7 +497,10 @@ interface TextFieldProps {
497
497
  regex?: RegExp;
498
498
  placeholder?: string;
499
499
  type?: string;
500
+ variant?: "outlined" | "standard";
501
+ error?: boolean;
502
+ errorMessage?: string;
500
503
  }
501
- declare function WavelengthTextField(props: TextFieldProps): react_jsx_runtime.JSX.Element;
504
+ declare function WavelengthTextField(props: TextFieldProps): react_jsx_runtime.JSX.Element | null;
502
505
 
503
506
  export { AppLogo, ButtonIcon, ButtonMenu, DefaultCarousel, DefaultIcon, DefaultPagination, ManyPlanesComponent, NotAvailablePage, type SearchProps, type SearchResult, SearchTextField, SliderCardCarousel, type StyledButtonPropsTwo, TestSnackbar, type ThemeProperties, WavelengthAppTheme, WavelengthAutocomplete, WavelengthBanner, WavelengthBox, WavelengthButton, WavelengthCommentDisplay, WavelengthConfirmationModal, WavelengthContentModal, WavelengthContentPlaceholder, WavelengthDragAndDrop, WavelengthDropdown, WavelengthDropdownButton, WavelengthExampleComponent, WavelengthFileDownloader, WavelengthFooter, WavelengthPlaneTrail, WavelengthPopUpMenu, WavelengthProgressBar, WavelengthSearch, WavelengthSideBar, WavelengthSlider, WavelengthSnackbar, WavelengthSpinningLogo, WavelengthSpinningOuterCircle, WavelengthStandardSnackbar, WavelengthStyledButton, WavelengthTextField, WavelengthTitleBar, add, ascendingRange, concat, findBestStringMatch, type menuItemProps, range, useOutsideClick, useThemeContext };
package/dist/esm/index.js CHANGED
@@ -206,7 +206,7 @@ var require_react_is_development = __commonJS({
206
206
  var ContextProvider = REACT_PROVIDER_TYPE;
207
207
  var Element = REACT_ELEMENT_TYPE;
208
208
  var ForwardRef2 = REACT_FORWARD_REF_TYPE;
209
- var Fragment15 = REACT_FRAGMENT_TYPE;
209
+ var Fragment14 = REACT_FRAGMENT_TYPE;
210
210
  var Lazy = REACT_LAZY_TYPE;
211
211
  var Memo2 = REACT_MEMO_TYPE;
212
212
  var Portal = REACT_PORTAL_TYPE;
@@ -265,7 +265,7 @@ var require_react_is_development = __commonJS({
265
265
  exports.ContextProvider = ContextProvider;
266
266
  exports.Element = Element;
267
267
  exports.ForwardRef = ForwardRef2;
268
- exports.Fragment = Fragment15;
268
+ exports.Fragment = Fragment14;
269
269
  exports.Lazy = Lazy;
270
270
  exports.Memo = Memo2;
271
271
  exports.Portal = Portal;
@@ -5958,7 +5958,55 @@ function DefaultPagination({ totalPages, currentPageNumber, siblingCount = 1, bo
5958
5958
  // src/components/TextField/WavelengthTextField.tsx
5959
5959
  import { useCallback, useState as useState9 } from "react";
5960
5960
  import TextField4 from "@mui/material/TextField";
5961
- import { Fragment as Fragment14, jsx as jsx37 } from "react/jsx-runtime";
5961
+ import styled10 from "styled-components";
5962
+ import { jsx as jsx37, jsxs as jsxs29 } from "react/jsx-runtime";
5963
+ var InputWrapper = styled10.div`
5964
+ position: relative;
5965
+ width: 100%;
5966
+ `;
5967
+ var StandardTextField = styled10.input`
5968
+ width: ${(props) => props.width || "320px"};
5969
+ height: ${(props) => props.height || "35px"};
5970
+ padding-left: 12px;
5971
+ font-size: 16px;
5972
+ border: none;
5973
+ border-bottom: 2px solid ${(props) => props.error ? "red" : props.borderColor || "#ccc"}; /* Red border when error */
5974
+ color: ${(props) => props.textColor || "black"};
5975
+ outline: none;
5976
+ box-sizing: border-box;
5977
+ background-color: transparent;
5978
+
5979
+ &:focus {
5980
+ border-bottom-color: ${(props) => props.error ? "red" : props.focusColor || "#d16a2f"};
5981
+ }
5982
+
5983
+ &::placeholder {
5984
+ opacity: 0.4;
5985
+ color: ${(props) => props.error ? "red" : "#888"}; /* Placeholder color changes to red on error */
5986
+ }
5987
+
5988
+ &:focus + label,
5989
+ &:valid + label {
5990
+ top: -5px;
5991
+ font-size: 12px;
5992
+ color: ${(props) => props.error ? "red" : props.labelColor}; // Change label color on error
5993
+ }
5994
+
5995
+ &:not(:placeholder-shown) + label {
5996
+ top: -8px;
5997
+ font-size: 12px;
5998
+ color: ${(props) => props.error ? "red" : props.labelColor}; // Label color when input has a value
5999
+ }
6000
+ `;
6001
+ var StyledLabel = styled10.label`
6002
+ position: absolute;
6003
+ top: 8px;
6004
+ left: 16px;
6005
+ font-size: 14px;
6006
+ color: ${(props) => props.color || "#aaa"};
6007
+ pointer-events: none;
6008
+ transition: all 0.3s ease-out;
6009
+ `;
5962
6010
  function WavelengthTextField(props) {
5963
6011
  const [hasError, setHasError] = useState9(false);
5964
6012
  const handleChange = useCallback(
@@ -5969,48 +6017,74 @@ function WavelengthTextField(props) {
5969
6017
  }
5970
6018
  },
5971
6019
  [props.regex]
5972
- // Ensures function doesn't change unless `regex` does
5973
6020
  );
5974
- return /* @__PURE__ */ jsx37(Fragment14, { children: /* @__PURE__ */ jsx37(
5975
- TextField4,
5976
- {
5977
- type: props.type,
5978
- required: props.required,
5979
- label: props.label,
5980
- onChange: (e) => {
5981
- handleChange(e);
5982
- props.onChange?.(e);
5983
- },
5984
- error: hasError,
5985
- helperText: hasError ? "Invalid Input" : "",
5986
- sx: {
5987
- "& .MuiInputBase-root": {
5988
- height: props.height || "51px",
5989
- width: props.width || "320px",
5990
- borderRadius: "8px"
6021
+ if (props.variant === "outlined") {
6022
+ return /* @__PURE__ */ jsx37(
6023
+ TextField4,
6024
+ {
6025
+ type: props.type,
6026
+ required: props.required,
6027
+ label: props.label,
6028
+ onChange: (e) => {
6029
+ handleChange(e);
6030
+ props.onChange?.(e);
5991
6031
  },
5992
- "&.MuiTextField-root": {
5993
- "& label": { color: !hasError ? props.labelColor || "rgba(89, 99, 129, 1)" : "red" },
5994
- "& .MuiOutlinedInput-root": {
5995
- "& fieldset": {
5996
- border: "1px solid",
5997
- borderColor: !hasError ? props.borderColor || `rgba(89, 99, 129, 1)` : "red"
5998
- },
5999
- "&.Mui-focused fieldset": {
6000
- borderColor: !hasError ? props.focusColor || `rgba(26, 128, 131, 0.1)` : "red"
6032
+ error: hasError,
6033
+ helperText: hasError ? props.errorMessage : "",
6034
+ sx: {
6035
+ "& .MuiInputBase-root": {
6036
+ height: props.height || "51px",
6037
+ width: props.width || "320px",
6038
+ borderRadius: "8px"
6039
+ },
6040
+ "&.MuiTextField-root": {
6041
+ "& label": { color: !hasError ? props.labelColor || "rgba(89, 99, 129, 1)" : "red" },
6042
+ "& .MuiOutlinedInput-root": {
6043
+ "& fieldset": {
6044
+ border: "1px solid",
6045
+ borderColor: !hasError ? props.borderColor || `rgba(89, 99, 129, 1)` : "red"
6046
+ },
6047
+ "&.Mui-focused fieldset": {
6048
+ borderColor: !hasError ? props.focusColor || `rgba(26, 128, 131, 0.1)` : "red"
6049
+ }
6001
6050
  }
6002
6051
  }
6052
+ },
6053
+ placeholder: props.placeholder,
6054
+ InputLabelProps: {
6055
+ shrink: props.shrink
6056
+ },
6057
+ InputProps: {
6058
+ style: { color: props.textColor || "inherit" }
6003
6059
  }
6004
- },
6005
- placeholder: props.placeholder,
6006
- InputLabelProps: {
6007
- shrink: props.shrink
6008
- },
6009
- InputProps: {
6010
- style: { color: props.textColor || "inherit" }
6011
6060
  }
6012
- }
6013
- ) });
6061
+ );
6062
+ } else if (props.variant === "standard") {
6063
+ return /* @__PURE__ */ jsxs29(InputWrapper, { children: [
6064
+ /* @__PURE__ */ jsx37(
6065
+ StandardTextField,
6066
+ {
6067
+ type: props.type,
6068
+ id: "custom-input",
6069
+ placeholder: props.placeholder,
6070
+ required: props.required,
6071
+ focusColor: props.focusColor,
6072
+ borderColor: props.borderColor,
6073
+ width: props.width,
6074
+ height: props.height,
6075
+ textColor: props.textColor,
6076
+ error: hasError,
6077
+ onChange: (e) => {
6078
+ handleChange(e);
6079
+ props.onChange?.(e);
6080
+ }
6081
+ }
6082
+ ),
6083
+ props.label && /* @__PURE__ */ jsx37(StyledLabel, { htmlFor: "custom-input", color: props.labelColor, children: props.label }),
6084
+ props.error && /* @__PURE__ */ jsx37("div", { style: { fontSize: ".75rem", color: "red", paddingLeft: "12px", marginTop: "3px" }, children: props.errorMessage })
6085
+ ] });
6086
+ }
6087
+ return null;
6014
6088
  }
6015
6089
  export {
6016
6090
  AppLogo,