@hellobetterdigitalnz/selwynui 0.0.1-38 → 0.0.1-39

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 (72) hide show
  1. package/dist/Components/DataDisplay/ChatItenaryBlock/ChatItenaryBlockProps.d.ts +8 -1
  2. package/dist/Components/DataDisplay/PathwayBlock/PathwayBlockProps.d.ts +9 -0
  3. package/dist/Components/Form/Checkbox/Checkbox.d.ts +3 -0
  4. package/dist/Components/Form/Checkbox/CheckboxProps.d.ts +22 -0
  5. package/dist/Components/Form/EmailField/EmailField.d.ts +3 -0
  6. package/dist/Components/Form/EmailField/EmailField.stories.d.ts +13 -0
  7. package/dist/Components/Form/FormFieldHolder/FormFieldHolder.d.ts +3 -0
  8. package/dist/Components/Form/FormFieldHolder/FormFieldHolderProps.d.ts +13 -0
  9. package/dist/Components/Form/InputProps.d.ts +27 -0
  10. package/dist/Components/Form/LoadingInput/LoadingInput.d.ts +2 -0
  11. package/dist/Components/Form/SimpleForm/SimpleForm.d.ts +3 -0
  12. package/dist/Components/Form/SimpleForm/SimpleFormProps.d.ts +9 -0
  13. package/dist/Components/Form/SimpleForm/simple-form-bg-design.d.ts +2 -0
  14. package/dist/Components/Form/TextField/TextField.d.ts +3 -0
  15. package/dist/Components/Form/TextField/TextField.stories.d.ts +13 -0
  16. package/dist/Components/Form/TextField/TextFieldProps.d.ts +6 -0
  17. package/dist/Components/Form/Textarea/Textarea.d.ts +3 -0
  18. package/dist/Components/Form/Textarea/Textarea.stories.d.ts +14 -0
  19. package/dist/Components/Form/Textarea/TextareaProps.d.ts +26 -0
  20. package/dist/Components/Form/index.d.ts +3 -0
  21. package/dist/Components/Layout/Footer/FooterProps.d.ts +1 -1
  22. package/dist/index.cjs.js +12 -12
  23. package/dist/index.cjs.js.map +1 -1
  24. package/dist/index.es.js +1515 -1407
  25. package/dist/index.es.js.map +1 -1
  26. package/dist/selwynui.css +1 -1
  27. package/package.json +3 -1
  28. package/src/Components/DataDisplay/Accordion/accordion.module.scss +49 -36
  29. package/src/Components/DataDisplay/ChatItenaryBlock/ChatItenaryBlock.stories.tsx +36 -6
  30. package/src/Components/DataDisplay/ChatItenaryBlock/ChatItenaryBlock.tsx +39 -20
  31. package/src/Components/DataDisplay/ChatItenaryBlock/ChatItenaryBlockProps.tsx +8 -1
  32. package/src/Components/DataDisplay/ChatItenaryBlock/chatItenaryBlock.module.scss +98 -41
  33. package/src/Components/DataDisplay/KPIBlock/kpiBlock.module.scss +96 -7
  34. package/src/Components/DataDisplay/ListingDetailBlock/ListingDetailBlock.tsx +5 -2
  35. package/src/Components/DataDisplay/ListingDetailBlock/listingDetailBlock.module.scss +130 -15
  36. package/src/Components/DataDisplay/PathwayBlock/PathwayBlock.stories.tsx +6 -0
  37. package/src/Components/DataDisplay/PathwayBlock/PathwayBlock.tsx +4 -1
  38. package/src/Components/DataDisplay/PathwayBlock/PathwayBlockProps.tsx +9 -0
  39. package/src/Components/DataDisplay/TestimonyCard/TestimonyCard.stories.tsx +2 -1
  40. package/src/Components/DataDisplay/TestimonyCard/TestimonyCard.tsx +1 -1
  41. package/src/Components/DataDisplay/TestimonyCard/testimonyCard.module.scss +1 -3
  42. package/src/Components/Form/Checkbox/Checkbox.stories.tsx +51 -0
  43. package/src/Components/Form/Checkbox/Checkbox.tsx +111 -0
  44. package/src/Components/Form/Checkbox/CheckboxProps.tsx +24 -0
  45. package/src/Components/Form/Checkbox/checkbox.module.scss +105 -0
  46. package/src/Components/Form/EmailField/EmailField.stories.ts +23 -0
  47. package/src/Components/Form/EmailField/EmailField.tsx +56 -0
  48. package/src/Components/Form/FormFieldHolder/FormFieldHolder.stories.tsx +31 -0
  49. package/src/Components/Form/FormFieldHolder/FormFieldHolder.tsx +55 -0
  50. package/src/Components/Form/FormFieldHolder/FormFieldHolderProps.tsx +15 -0
  51. package/src/Components/Form/FormFieldHolder/formHolder.module.scss +68 -0
  52. package/src/Components/Form/InputProps.tsx +30 -0
  53. package/src/Components/Form/LoadingInput/LoadingInput.tsx +12 -0
  54. package/src/Components/Form/LoadingInput/loadingInput.module.scss +15 -0
  55. package/src/Components/Form/SimpleForm/SimpleForm.stories.tsx +54 -0
  56. package/src/Components/Form/SimpleForm/SimpleForm.tsx +55 -0
  57. package/src/Components/Form/SimpleForm/SimpleFormProps.tsx +11 -0
  58. package/src/Components/Form/SimpleForm/simple-form-bg-design.svg +14 -0
  59. package/src/Components/Form/SimpleForm/simple-form-bg-design.tsx +21 -0
  60. package/src/Components/Form/SimpleForm/simpleForm.module.scss +36 -0
  61. package/src/Components/Form/TextField/TextField.stories.ts +22 -0
  62. package/src/Components/Form/TextField/TextField.tsx +62 -0
  63. package/src/Components/Form/TextField/TextFieldProps.tsx +8 -0
  64. package/src/Components/Form/Textarea/Textarea.stories.ts +31 -0
  65. package/src/Components/Form/Textarea/Textarea.tsx +74 -0
  66. package/src/Components/Form/Textarea/TextareaProps.tsx +28 -0
  67. package/src/Components/Form/Textarea/textarea.module.scss +48 -0
  68. package/src/Components/Form/index.ts +6 -1
  69. package/src/Components/Form/inputs.module.scss +172 -0
  70. package/src/Components/Layout/Footer/Footer.tsx +0 -1
  71. package/src/Components/Layout/Footer/FooterProps.tsx +1 -1
  72. package/src/Components/Shared/Container/container.module.scss +1 -1
@@ -0,0 +1,74 @@
1
+ import React, {useState} from "react";
2
+ import cx from 'classnames';
3
+ import TextareaProps from "./TextareaProps";
4
+ import styles from './textarea.module.scss';
5
+ import LoadingInput from "../LoadingInput/LoadingInput.tsx";
6
+
7
+ const Textarea = (props: TextareaProps) => {
8
+ const {
9
+ name,
10
+ id,
11
+ value,
12
+ placeholder,
13
+ extraClass,
14
+ disabled,
15
+ error,
16
+ ariaLabel,
17
+ required,
18
+ readonly,
19
+ autoComplete,
20
+ rows,
21
+ displayChars,
22
+ maxLength,
23
+ onChange,
24
+ loading,
25
+ ...args
26
+ } = props;
27
+
28
+
29
+ const [text, setText] = useState('');
30
+
31
+ const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {
32
+ setText(e.target?.value);
33
+ if (onChange) {
34
+ onChange(e);
35
+ }
36
+ };
37
+
38
+ const classes = [styles.textarea];
39
+ if (error) {
40
+ classes.push(styles.error);
41
+ }
42
+ if (extraClass) {
43
+ classes.push(extraClass);
44
+ }
45
+
46
+ return <div className={styles.field}>
47
+ {loading && <LoadingInput />}
48
+ <textarea
49
+ className={cx(classes)}
50
+ id={id}
51
+ name={name}
52
+ value={value}
53
+ placeholder={placeholder}
54
+ rows={rows}
55
+ onChange={handleChange}
56
+ disabled={disabled}
57
+ readOnly={readonly}
58
+ required={required}
59
+ autoComplete={autoComplete ? "on" : "off"}
60
+ aria-label={ariaLabel ? ariaLabel : name}
61
+ aria-required={required ? "true" : "false"}
62
+ aria-invalid={error ? "true" : "false"}
63
+ aria-disabled={disabled ? "true" : "false"}
64
+ aria-readonly={readonly ? "true" : "false"}
65
+ aria-autocomplete={autoComplete ? "list" : "none"}
66
+ {...args}
67
+ />
68
+ {!!displayChars && <p className={styles.length}>
69
+ {text.length} / {maxLength}
70
+ </p>}
71
+ </div>
72
+ };
73
+
74
+ export default Textarea;
@@ -0,0 +1,28 @@
1
+ import {FocusEvent, MouseEvent, ChangeEvent} from 'react'
2
+
3
+ interface TextareaProps {
4
+ name?: string;
5
+ id?: string;
6
+ value?: string;
7
+ extraClass?: string;
8
+ placeholder?: string;
9
+ error?: boolean;
10
+ disabled?:boolean;
11
+ readonly?: boolean;
12
+ autoComplete?: boolean;
13
+ minLength?: number;
14
+ maxLength?: number;
15
+ required?: boolean;
16
+ ariaLabel?: string;
17
+ ariaLabeledby?: string;
18
+ ariaDescribedby?: string;
19
+ rows?: number,
20
+ displayChars?: boolean,
21
+ onClick?: (e: MouseEvent) => void;
22
+ onChange?: (e: ChangeEvent<HTMLTextAreaElement>) => void;
23
+ onFocus?: (e: FocusEvent) => void;
24
+ onBlur?: (e: FocusEvent) => void;
25
+ loading?:boolean;
26
+ }
27
+
28
+ export default TextareaProps;
@@ -0,0 +1,48 @@
1
+ .textarea {
2
+ display: inline-block;
3
+ border: 1px solid #CACDC9;
4
+ border-radius: 6px;
5
+ resize: none;
6
+ padding: calc(var(--space-unit) * 3);
7
+ width: 100%;
8
+ height: 96px;
9
+ font-family: var(--font);
10
+ font-size: var(--font-size-label);
11
+ line-height: var(--line-height-h3);
12
+ font-weight: var(--font-weight-h3);
13
+
14
+ &::placeholder {
15
+ font-family: var(--font);
16
+ color: #727972;
17
+ font-size: var(--font-size-label);
18
+ line-height: var(--line-height-h3);
19
+ font-weight: var(--font-weight-h3);
20
+ }
21
+
22
+ &:focus {
23
+ outline: none;
24
+ border: 2px solid var(--color-taste);
25
+ color: #253123;
26
+ }
27
+
28
+ &:disabled {
29
+ cursor: not-allowed;
30
+ opacity: 0.3;
31
+ }
32
+
33
+ &.error {
34
+ border: 1px solid var(--color-error);
35
+ background: var(--color-error-lite);
36
+
37
+ &:focus {
38
+ border: 2px solid var(--color-error);
39
+ background: #ffffff;
40
+ }
41
+ }
42
+ }
43
+
44
+ .length {
45
+ display: flex;
46
+ justify-content: flex-end;
47
+ font-size: 12px;
48
+ }
@@ -1,2 +1,7 @@
1
1
  export { default as Button } from './Button/Button';
2
- export type { default as ButtonProps } from './Button/ButtonProps';
2
+ export type { default as ButtonProps } from './Button/ButtonProps';
3
+
4
+ export { default as TextField } from './TextField/TextField';
5
+ export type { default as TextFieldProps } from './TextField/TextFieldProps';
6
+
7
+ export { default as LoadingInput } from './LoadingInput/LoadingInput';
@@ -0,0 +1,172 @@
1
+ .field {
2
+ position: relative;
3
+ }
4
+
5
+ .input {
6
+
7
+ &[type="text"],
8
+ &[type="password"],
9
+ &[type="email"],
10
+ &[type="number"],
11
+ &[type="date"],
12
+ &[type="tel"],
13
+ &[type="time"] {
14
+ width: 100%;
15
+ max-width: 100%;
16
+ height: 48px;
17
+ padding: 18px 28px;
18
+ border: 1px solid #CACDC9;
19
+ border-radius: 4px;
20
+ font-family: var(--font);
21
+ font-size: var(--font-size-label);
22
+ line-height: var(--line-height-h3);
23
+ font-weight: var(--font-weight-h3);
24
+
25
+ &::placeholder {
26
+ color: #727972;
27
+ font-size: var(--font-size-label);
28
+ line-height: var(--line-height-h3);
29
+ font-weight: var(--font-weight-h3);
30
+ }
31
+
32
+ &:focus {
33
+ outline: none;
34
+ border: 2px solid var(--color-taste);
35
+ color: #253123;
36
+ }
37
+
38
+ &:disabled {
39
+ opacity: 0.5;
40
+ pointer-events: none;
41
+ }
42
+ }
43
+
44
+ &.error {
45
+
46
+ &[type="text"],
47
+ &[type="password"],
48
+ &[type="email"],
49
+ &[type="number"],
50
+ &[type="date"],
51
+ &[type="tel"],
52
+ &[type="time"] {
53
+ border: 1px solid var(--color-error);
54
+ background: var(--color-error-lite);
55
+
56
+ &:focus {
57
+ border: 2px solid var(--color-error);
58
+ background: #ffffff;
59
+ }
60
+ }
61
+ }
62
+ }
63
+
64
+ .passwordCon {
65
+ width: 100%;
66
+ position: relative;
67
+
68
+ [type="password"],
69
+ [type="text"] {
70
+ padding-right: calc(var(--space-unit) * 9);
71
+ }
72
+
73
+ .eyeicon {
74
+ display: flex;
75
+ position: absolute;
76
+ right: 12px;
77
+ top: 50%;
78
+ transform: translateY(-50%);
79
+ cursor: pointer;
80
+
81
+ svg {
82
+ width: 16px;
83
+ height: 16px;
84
+ }
85
+ }
86
+ }
87
+
88
+ .date,
89
+ .time,
90
+ .currency,
91
+ .textField {
92
+ width: 100%;
93
+ max-width: 100%;
94
+ position: relative;
95
+
96
+ [type="date"],
97
+ [type="time"] {
98
+ -webkit-appearance: none;
99
+ }
100
+
101
+ [type="date"],
102
+ [type="time"],
103
+ [type="number"] {
104
+ text-transform: uppercase;
105
+ }
106
+
107
+ [type="date"],
108
+ [type="text"],
109
+ [type="time"],
110
+ [type="number"] {
111
+ // padding-left: calc(var(--space-unit) * 11);
112
+ font-family: var(--font);
113
+
114
+ &::-webkit-calendar-picker-indicator {
115
+ position: absolute;
116
+ left: 12px;
117
+ top: 50%;
118
+ transform: translateY(-50%);
119
+ cursor: pointer;
120
+ opacity: 0;
121
+ }
122
+ }
123
+
124
+ .calendarIcon,
125
+ .clockIcon,
126
+ .currencyIcon,
127
+ .textFieldIcon {
128
+ display: flex;
129
+ position: absolute;
130
+ left: 12px;
131
+ top: 50%;
132
+ transform: translateY(-50%);
133
+ pointer-events: none;
134
+
135
+ svg {
136
+ flex-shrink: 0;
137
+ width: 24px;
138
+ height: 24px;
139
+ }
140
+ }
141
+ }
142
+
143
+ .unitField {
144
+ position: relative;
145
+
146
+ .input {
147
+
148
+ &[type="text"],
149
+ &[type="number"] {
150
+ text-align: left;
151
+ }
152
+ }
153
+
154
+ .unitText {
155
+ display: flex;
156
+ position: absolute;
157
+ right: 12px;
158
+ top: 50%;
159
+ transform: translateY(-50%);
160
+ pointer-events: none;
161
+ color: var(--color-gray-500);
162
+ font-size: var(--font-size-input);
163
+ line-height: var(--line-height-input);
164
+ font-weight: var(--font-weight-input);
165
+
166
+ &.active {
167
+ color: var(--color-gray-900);
168
+ }
169
+
170
+ }
171
+
172
+ }
@@ -21,7 +21,6 @@ const Footer = (props: FooterProps) => {
21
21
  <img src={logo} alt="" />
22
22
  </div>
23
23
  {footerMiddle}
24
-
25
24
  </div>
26
25
  </Container>
27
26
  </div>}
@@ -5,7 +5,7 @@ interface FooterProps {
5
5
  footerMiddle?: ReactNode
6
6
  footerBottom?: ReactNode
7
7
  extraClass?: string
8
- logo?: string
8
+ logo?: string | undefined
9
9
  }
10
10
 
11
11
  export default FooterProps;
@@ -3,7 +3,7 @@
3
3
  margin: 0px auto;
4
4
 
5
5
  &.default{
6
- max-width: 1432px;
6
+ max-width: 1520px;
7
7
  }
8
8
 
9
9
  @media screen and (min-width: 1748px) {