@kanda-libs/ks-component-ts 0.2.291 → 0.2.293

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.
package/dist/library.css CHANGED
@@ -2273,6 +2273,16 @@ input[type="number"]::-webkit-inner-spin-button,
2273
2273
  border-color: rgb(247 249 252 / var(--tw-border-opacity));
2274
2274
  }
2275
2275
 
2276
+ .border-orange-200 {
2277
+ --tw-border-opacity: 1;
2278
+ border-color: rgb(235 125 50 / var(--tw-border-opacity));
2279
+ }
2280
+
2281
+ .border-orange-100 {
2282
+ --tw-border-opacity: 1;
2283
+ border-color: rgb(253 240 232 / var(--tw-border-opacity));
2284
+ }
2285
+
2276
2286
  .border-neutral-500 {
2277
2287
  --tw-border-opacity: 1;
2278
2288
  border-color: rgb(156 173 196 / var(--tw-border-opacity));
@@ -2366,6 +2376,11 @@ input[type="number"]::-webkit-inner-spin-button,
2366
2376
  background-color: rgb(229 245 255 / var(--tw-bg-opacity));
2367
2377
  }
2368
2378
 
2379
+ .bg-orange-100 {
2380
+ --tw-bg-opacity: 1;
2381
+ background-color: rgb(253 240 232 / var(--tw-bg-opacity));
2382
+ }
2383
+
2369
2384
  .bg-neutral-900 {
2370
2385
  --tw-bg-opacity: 1;
2371
2386
  background-color: rgb(13 27 46 / var(--tw-bg-opacity));
@@ -2593,11 +2608,6 @@ input[type="number"]::-webkit-inner-spin-button,
2593
2608
  padding-right: 32px;
2594
2609
  }
2595
2610
 
2596
- .px-5 {
2597
- padding-left: 20px;
2598
- padding-right: 20px;
2599
- }
2600
-
2601
2611
  .py-2\.5 {
2602
2612
  padding-top: 10px;
2603
2613
  padding-bottom: 10px;
@@ -2623,6 +2633,11 @@ input[type="number"]::-webkit-inner-spin-button,
2623
2633
  padding-right: 10px;
2624
2634
  }
2625
2635
 
2636
+ .px-5 {
2637
+ padding-left: 20px;
2638
+ padding-right: 20px;
2639
+ }
2640
+
2626
2641
  .px-6 {
2627
2642
  padding-left: 24px;
2628
2643
  padding-right: 24px;
@@ -4116,6 +4131,11 @@ input[type="range"]::-webkit-slider-thumb {
4116
4131
  color: rgb(156 173 196 / var(--tw-text-opacity));
4117
4132
  }
4118
4133
 
4134
+ .first\:text-orange-200:first-child {
4135
+ --tw-text-opacity: 1;
4136
+ color: rgb(235 125 50 / var(--tw-text-opacity));
4137
+ }
4138
+
4119
4139
  .last\:right-0:last-child {
4120
4140
  right: 0;
4121
4141
  }
@@ -4159,6 +4179,11 @@ input[type="range"]::-webkit-slider-thumb {
4159
4179
  color: rgb(156 173 196 / var(--tw-text-opacity));
4160
4180
  }
4161
4181
 
4182
+ .last\:text-orange-200:last-child {
4183
+ --tw-text-opacity: 1;
4184
+ color: rgb(235 125 50 / var(--tw-text-opacity));
4185
+ }
4186
+
4162
4187
  .checked\:translate-x-5:checked {
4163
4188
  --tw-translate-x: 20px;
4164
4189
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kanda-libs/ks-component-ts",
3
- "version": "0.2.291",
3
+ "version": "0.2.293",
4
4
  "description": "Kanda form component library",
5
5
  "main": "dist/index.esm.js",
6
6
  "module": "dist/index.esm.js",
@@ -1,4 +1,3 @@
1
- import { string } from "io-ts";
2
1
  import { StringIndexedObject } from "~/types";
3
2
 
4
3
  interface VariantProps {
@@ -9,10 +8,22 @@ interface VariantProps {
9
8
  selected: {
10
9
  option: string;
11
10
  container: string;
11
+ icon?: string;
12
12
  };
13
13
  notSelected: {
14
14
  option: string;
15
15
  container: string;
16
+ icon?: string;
17
+ };
18
+ warning: {
19
+ option: string;
20
+ container: string;
21
+ icon?: string;
22
+ };
23
+ warningNotSelected: {
24
+ option: string;
25
+ container: string;
26
+ icon?: string;
16
27
  };
17
28
  disabled?: {
18
29
  option: string;
@@ -26,6 +37,21 @@ interface VariantProps {
26
37
  };
27
38
  }
28
39
 
40
+ // TODO: Make variant specific
41
+ const warning = {
42
+ option: "bg-orange-100 cursor-pointer",
43
+ container:
44
+ "rounded bg-orange-100 flex flex-full w-full px-4 py-2 text-orange-200 border border-orange-200",
45
+ icon: "text-orange-200",
46
+ };
47
+
48
+ const warningNotSelected = {
49
+ option: "bg-orange-100 border-orange-100 cursor-pointer",
50
+ container:
51
+ "rounded bg-orange-100 flex flex-full w-full px-4 py-2 text-orange-200 border border-orange-100",
52
+ icon: "text-orange-200",
53
+ };
54
+
29
55
  export const VARIANTS: StringIndexedObject<VariantProps> = {
30
56
  default: {
31
57
  span: "ml-3 select-none w-full text-style-f my-auto",
@@ -39,6 +65,8 @@ export const VARIANTS: StringIndexedObject<VariantProps> = {
39
65
  option: "overflow-hidden border border-neutral-300 cursor-pointer",
40
66
  container: "bg-neutral-000 flex flex-full w-full p-4 text-neutral-600",
41
67
  },
68
+ warning,
69
+ warningNotSelected,
42
70
  multiline: {
43
71
  option: "flex flex-1 rounded-xl mt-2 last:mb-2",
44
72
  },
@@ -60,6 +88,8 @@ export const VARIANTS: StringIndexedObject<VariantProps> = {
60
88
  container:
61
89
  "bg-neutral-000 flex flex-full w-full px-4 py-3.5 text-neutral-600",
62
90
  },
91
+ warning,
92
+ warningNotSelected,
63
93
  multiline: {
64
94
  option: "flex flex-1 rounded-xl mt-2 last:mb-2",
65
95
  },
@@ -81,6 +111,8 @@ export const VARIANTS: StringIndexedObject<VariantProps> = {
81
111
  "overflow-hidden border-b border-neutral-100 cursor-pointer last:border-0",
82
112
  container: "bg-neutral-000 flex flex-full w-full p-4 text-neutral-700",
83
113
  },
114
+ warning,
115
+ warningNotSelected,
84
116
  multiline: {
85
117
  option: "flex flex-1 rounded-xl mt-2 last:mb-2",
86
118
  },
@@ -101,6 +133,8 @@ export const VARIANTS: StringIndexedObject<VariantProps> = {
101
133
  option: "border-neutral-000 overflow-hidden cursor-pointer",
102
134
  container: "bg-neutral-000 flex flex-full w-full py-2 text-neutral-600",
103
135
  },
136
+ warning,
137
+ warningNotSelected,
104
138
  multiline: {
105
139
  option: "flex flex-1 rounded-xl mt-2 last:mb-2",
106
140
  },
@@ -121,6 +155,8 @@ export const VARIANTS: StringIndexedObject<VariantProps> = {
121
155
  option: "border-neutral-000 overflow-hidden cursor-pointer",
122
156
  container: "bg-neutral-000 flex flex-full w-full text-neutral-600",
123
157
  },
158
+ warning,
159
+ warningNotSelected,
124
160
  multiline: {
125
161
  option: "flex flex-1 rounded-xl mt-2 last:mb-2",
126
162
  },
@@ -142,6 +178,8 @@ export const VARIANTS: StringIndexedObject<VariantProps> = {
142
178
  container:
143
179
  "bg-neutral-000 px-3 py-2.25 flex flex-full w-full text-neutral-900 rounded hover:bg-neutral-100",
144
180
  },
181
+ warning,
182
+ warningNotSelected,
145
183
  multiline: {
146
184
  option: "flex flex-1 rounded-xl first:mt-2 last:mb-2",
147
185
  },
@@ -165,6 +203,8 @@ export const VARIANTS: StringIndexedObject<VariantProps> = {
165
203
  container:
166
204
  "bg-neutral-000 flex flex-full w-full p-1.5 text-neutral-600 hover:text-turquoise-300",
167
205
  },
206
+ warning,
207
+ warningNotSelected,
168
208
  multiline: {
169
209
  option: "flex flex-1",
170
210
  },
@@ -187,6 +227,8 @@ export const VARIANTS: StringIndexedObject<VariantProps> = {
187
227
  "overflow-hidden border border-neutral-300 cursor-pointer border-l-0 first:border-l",
188
228
  container: "bg-neutral-000 flex flex-full w-full p-2.5 text-neutral-600",
189
229
  },
230
+ warning,
231
+ warningNotSelected,
190
232
  multiline: {
191
233
  option: "flex flex-1",
192
234
  },
@@ -195,7 +237,7 @@ export const VARIANTS: StringIndexedObject<VariantProps> = {
195
237
  },
196
238
  },
197
239
  streamline: {
198
- span: "select-none w-full text-14-22-em whitespace-nowrap my-auto text-center",
240
+ span: "select-none w-full text-14-22-em whitespace-nowrap my-auto text-center flex flex-row items-center justify-center gap-x-2",
199
241
  skeleton: "w-full",
200
242
  skeletonWrapper: "w-10 -mt-0.5",
201
243
  handleContainer: "hidden",
@@ -209,6 +251,8 @@ export const VARIANTS: StringIndexedObject<VariantProps> = {
209
251
  container:
210
252
  "rounded bg-neutral-000 flex flex-full w-full px-4 py-2 text-neutral-600",
211
253
  },
254
+ warning,
255
+ warningNotSelected,
212
256
  disabled: {
213
257
  option: "border border-neutral-300 cursor-not-allowed",
214
258
  container:
@@ -236,6 +280,8 @@ export const VARIANTS: StringIndexedObject<VariantProps> = {
236
280
  container:
237
281
  "rounded bg-neutral-000 flex flex-full w-full px-2.5 py-2.25 md:py-1.5 text-neutral-900",
238
282
  },
283
+ warning,
284
+ warningNotSelected,
239
285
  multiline: {
240
286
  option: "",
241
287
  },
@@ -257,6 +303,8 @@ export const CLASS_NAMES_MULTIPLE: VariantProps = {
257
303
  option: "overflow-hidden border border-neutral-300 cursor-pointer",
258
304
  container: "bg-neutral-000 flex flex-full w-full p-4 flex-row-reverse",
259
305
  },
306
+ warning,
307
+ warningNotSelected,
260
308
  multiline: {
261
309
  option: "flex flex-1 rounded-xl mt-2 last:mb-2",
262
310
  },
@@ -3,6 +3,7 @@ import { RadioSelectVariant } from "~/field/components/RadioSelect/types";
3
3
  import { FieldRegisterMethod } from "~/field/types";
4
4
  import useOption from "./useOption";
5
5
  import Skeleton from "react-loading-skeleton";
6
+ import { Icon } from "@kanda-libs/ks-design-library";
6
7
 
7
8
  export interface Props {
8
9
  /**
@@ -37,6 +38,10 @@ export interface Props {
37
38
  * Display options wrap
38
39
  */
39
40
  wrap?: boolean;
41
+ /**
42
+ * Adds a border to options when wrapping
43
+ */
44
+ wrapBorder?: boolean;
40
45
  /**
41
46
  * Display variant
42
47
  */
@@ -49,6 +54,22 @@ export interface Props {
49
54
  * Event handler for clicking the option
50
55
  */
51
56
  onClick?: () => void;
57
+ /**
58
+ * Whether or not to show the option in a warning state
59
+ */
60
+ warning?: boolean;
61
+ /**
62
+ * Icon to display next to the option
63
+ */
64
+ icon?: string;
65
+ /**
66
+ * Class name for the option
67
+ */
68
+ className?: string;
69
+ /**
70
+ * Footer content that is shown outside of the option
71
+ */
72
+ footer?: JSX.Element;
52
73
  }
53
74
 
54
75
  const Option: FunctionComponent<Props> = function ({
@@ -61,8 +82,13 @@ const Option: FunctionComponent<Props> = function ({
61
82
  isLoading,
62
83
  inline = false,
63
84
  wrap = false,
85
+ wrapBorder = true,
64
86
  register,
65
87
  onClick = () => {},
88
+ warning = false,
89
+ className = "",
90
+ footer,
91
+ icon,
66
92
  }) {
67
93
  const { id, classNames, handleProps, Handle } = useOption(
68
94
  multiple,
@@ -71,38 +97,53 @@ const Option: FunctionComponent<Props> = function ({
71
97
  variant,
72
98
  inline,
73
99
  wrap,
100
+ wrapBorder,
74
101
  register,
75
- disabled
102
+ disabled,
103
+ warning,
104
+ className
76
105
  );
77
106
 
78
107
  return (
79
- <label htmlFor={id} key={value} className={classNames.option as string}>
80
- <div className={classNames.container as string}>
81
- <div
82
- className={classNames.handleContainer as string}
83
- onClick={() => {
84
- onClick();
85
- }}
86
- >
87
- <Handle
88
- id={id}
89
- {...handleProps}
90
- value={value}
91
- isLoading={isLoading}
92
- disabled={disabled}
93
- />
94
- </div>
95
- {isLoading ? (
96
- <div className={classNames.skeletonWrapper as string}>
97
- <div className={classNames.skeleton as string}>
98
- <Skeleton />
99
- </div>
108
+ <div className="flex flex-col items-start justify-start">
109
+ <label htmlFor={id} key={value} className={classNames.option as string}>
110
+ <div className={classNames.container as string}>
111
+ <div
112
+ className={classNames.handleContainer as string}
113
+ onClick={() => {
114
+ onClick();
115
+ }}
116
+ >
117
+ <Handle
118
+ id={id}
119
+ {...handleProps}
120
+ value={value}
121
+ isLoading={isLoading}
122
+ disabled={disabled}
123
+ />
100
124
  </div>
101
- ) : (
102
- <span className={classNames.span as string}>{name}</span>
103
- )}
104
- </div>
105
- </label>
125
+ {isLoading ? (
126
+ <div className={classNames.skeletonWrapper as string}>
127
+ <div className={classNames.skeleton as string}>
128
+ <Skeleton />
129
+ </div>
130
+ </div>
131
+ ) : (
132
+ <span className={classNames.span as string}>
133
+ {icon && (
134
+ <Icon
135
+ icon={icon}
136
+ size={12}
137
+ className={classNames.icon as string}
138
+ />
139
+ )}
140
+ {name}
141
+ </span>
142
+ )}
143
+ </div>
144
+ </label>
145
+ {footer}
146
+ </div>
106
147
  );
107
148
  };
108
149
 
@@ -27,8 +27,11 @@ export default function useOption(
27
27
  variantName: RadioSelectVariant,
28
28
  inline: boolean,
29
29
  wrap: boolean,
30
+ wrapBorder: boolean,
30
31
  register: FieldRegisterMethod | null = null,
31
- disabled?: boolean
32
+ disabled?: boolean,
33
+ warning?: boolean,
34
+ className: string = ""
32
35
  ): Hook {
33
36
  const { skeletonClasses } = useFormTheme();
34
37
 
@@ -53,12 +56,16 @@ export default function useOption(
53
56
 
54
57
  const optionFlex = inline ? ".inline.option" : ".multiline.option";
55
58
 
56
- const selectedPrefix = isSelected ? "selected" : "notSelected";
59
+ const defaultSelectedPrefix = isSelected ? "selected" : "notSelected";
60
+ const warningPrefix = isSelected ? "warning" : "warningNotSelected";
61
+
62
+ const selectedPrefix = warning ? warningPrefix : defaultSelectedPrefix;
57
63
 
58
64
  const classNames = useClasses(variant, {
59
65
  option: [
66
+ className,
60
67
  optionFlex,
61
- wrap && "mt-2 ml-2",
68
+ wrap && wrapBorder && "mt-2 ml-2",
62
69
  disabled && variant?.disabled?.option
63
70
  ? `.disabled.option`
64
71
  : `.${selectedPrefix}.option`,
@@ -73,6 +80,8 @@ export default function useOption(
73
80
  skeleton: [
74
81
  variant?.skeleton ? `.${selectedPrefix}.skeleton` : skeletonClasses,
75
82
  ],
83
+ icon: [variant?.[selectedPrefix]?.icon],
84
+ optionWrapper: "flex flex-col items-start justify-start",
76
85
  });
77
86
 
78
87
  /**
@@ -8,7 +8,7 @@ export const CLASS_NAMES = {
8
8
  optionWrapper: "flex flex-1",
9
9
  },
10
10
  wrap: {
11
- container: "w-full flex flex-row flex-wrap -mt-2 -ml-2",
11
+ container: "w-full flex flex-row flex-wrap -mt-2 -ml-2 gap-x-2",
12
12
  optionWrapper: "flex",
13
13
  },
14
14
  };
@@ -6,8 +6,21 @@ import Option from "./Option";
6
6
 
7
7
  const RadioSelectUncontrolled: FunctionComponent<
8
8
  DefaultFormFieldProps<RadioSelectUncontrolledProps>
9
- > = function ({ name, inline = false, wrap = false, options, ...restProps }) {
10
- const classNames = useRadioSelectUncontrolledClassNames(inline, wrap);
9
+ > = function ({
10
+ name,
11
+ inline = false,
12
+ wrap = false,
13
+ wrapBorder = true,
14
+ options,
15
+ className,
16
+ ...restProps
17
+ }) {
18
+ const classNames = useRadioSelectUncontrolledClassNames(
19
+ inline,
20
+ wrap,
21
+ className
22
+ );
23
+
11
24
  return (
12
25
  <div className={classNames.container}>
13
26
  {options?.map((option) => (
@@ -17,8 +30,13 @@ const RadioSelectUncontrolled: FunctionComponent<
17
30
  name={option.name}
18
31
  inline={inline}
19
32
  wrap={wrap}
33
+ wrapBorder={wrapBorder}
20
34
  key={option.value}
21
35
  disabled={option?.disabled || false}
36
+ warning={option.warning || false}
37
+ icon={option.icon}
38
+ className={option.className}
39
+ footer={option.footer}
22
40
  {...restProps}
23
41
  />
24
42
  ))}
@@ -2,10 +2,12 @@ import { useMemo } from "react";
2
2
 
3
3
  import { CLASS_NAMES } from "./constants";
4
4
  import { type StringIndexedObject } from "~/types";
5
+ import clsx from "clsx";
5
6
 
6
7
  export default function useRadioSelectUncontrolledClassNames(
7
8
  inline: boolean,
8
- wrap: boolean
9
+ wrap: boolean,
10
+ className?: string
9
11
  ): StringIndexedObject<string> {
10
12
  const classNames = useMemo(() => {
11
13
  if (wrap) return CLASS_NAMES.wrap;
@@ -13,5 +15,5 @@ export default function useRadioSelectUncontrolledClassNames(
13
15
  return CLASS_NAMES.multiline;
14
16
  }, [inline, wrap]);
15
17
 
16
- return classNames;
18
+ return { ...classNames, container: clsx(classNames.container, className) };
17
19
  }
@@ -16,7 +16,9 @@ export interface RadioSelectUncontrolledProps {
16
16
  multiple?: boolean;
17
17
  inline?: boolean;
18
18
  wrap?: boolean;
19
+ wrapBorder?: boolean;
19
20
  variant?: RadioSelectVariant;
20
21
  options?: SelectOption[];
21
22
  onClick?: () => void;
23
+ className?: string;
22
24
  }
@@ -11,6 +11,7 @@ export interface RangeInputUncontrolledProps
11
11
  steps?: string;
12
12
  formatter?: (value: string) => string;
13
13
  prefix?: string;
14
+ highlightLabel?: "min" | "max";
14
15
  suffix?: string;
15
16
  }
16
17
 
@@ -28,10 +29,21 @@ const RangeInputUncontrolled: FunctionComponent<
28
29
  prefix = "",
29
30
  suffix = "",
30
31
  name = "",
32
+ highlightLabel,
31
33
  ...restProps
32
34
  }) {
33
35
  const { ref, inputProps, minLabel, maxLabel, currentLabel, classNames } =
34
- useRangeInputProps(name, min, max, steps, formatter, prefix, suffix, error);
36
+ useRangeInputProps(
37
+ name,
38
+ min,
39
+ max,
40
+ steps,
41
+ formatter,
42
+ prefix,
43
+ suffix,
44
+ error,
45
+ highlightLabel
46
+ );
35
47
 
36
48
  return (
37
49
  <div className={classNames.container}>
@@ -61,11 +73,11 @@ const RangeInputUncontrolled: FunctionComponent<
61
73
  <div className={classNames.cap} />
62
74
  </div>
63
75
  <div className={classNames.labels}>
64
- <p className={classNames.lowerLabel}>{minLabel}</p>
76
+ <p className={classNames.minLowerLabel}>{minLabel}</p>
65
77
  {currentLabel && (
66
78
  <p className={classNames.lowerLabel}>{currentLabel}</p>
67
79
  )}
68
- <p className={classNames.lowerLabel}>{maxLabel}</p>
80
+ <p className={classNames.maxLowerLabel}>{maxLabel}</p>
69
81
  </div>
70
82
  </>
71
83
  }
@@ -2,13 +2,15 @@ export const BG_COLOR =
2
2
  "linear-gradient(to right, transparent 10px, #1cb69c 10px, #1cb69c $PCT%, #e0e7f0 $PCT%, #e0e7f0 calc(100% - 10px), transparent calc(100% - 10px))";
3
3
 
4
4
  export const CLASS_NAMES = {
5
- container: "flex flex-col w-full px-5 py-4 bg-neutral-100 rounded-lg border",
5
+ container: "flex flex-col w-full",
6
6
  skeletonWrapper: "flex w-full",
7
7
  skeletonContainer: "w-full",
8
8
  labels: "flex flex-row justify-between first:mb-1 last:mt-1",
9
9
  upperLabel: "text-10-17-em-up text-green-600",
10
10
  lowerLabel:
11
11
  "text-12-18-em text-green-600 first:text-neutral-500 last:text-neutral-500 w-20 min-w-20 text-center first:text-left last:text-right",
12
+ highlightedLowerLabel:
13
+ "text-12-18-em text-green-600 first:text-orange-200 last:text-orange-200 w-20 min-w-20 text-center first:text-left last:text-right",
12
14
  rangeWrapper: "flex flex-row relative",
13
15
  cap: "w-2.5 h-2.5 bg-green-600 rounded-full border border-neutral-000 absolute z-0 top-[5px] first:left-0 last:right-0",
14
16
  };
@@ -5,6 +5,7 @@ import clsx from "clsx";
5
5
  import { BG_COLOR, CLASS_NAMES } from "./constants";
6
6
 
7
7
  import { ErrorMessage } from "~/field/types";
8
+ import { RangeInputUncontrolledProps } from "./RangeInputUncontrolled";
8
9
 
9
10
  interface RangeClassNames {
10
11
  container: string;
@@ -14,6 +15,8 @@ interface RangeClassNames {
14
15
  upperLabel: string;
15
16
  lowerLabel: string;
16
17
  rangeWrapper: string;
18
+ minLowerLabel: string;
19
+ maxLowerLabel: string;
17
20
  cap: string;
18
21
  }
19
22
 
@@ -40,7 +43,8 @@ export default function useRangeInputProps(
40
43
  formatter: (input: string) => string,
41
44
  prefix: string,
42
45
  suffix: string,
43
- error?: string | ErrorMessage
46
+ error?: string | ErrorMessage,
47
+ highlightLabel?: RangeInputUncontrolledProps["highlightLabel"]
44
48
  ): Hook {
45
49
  const value = useWatch({ name });
46
50
 
@@ -70,6 +74,14 @@ export default function useRangeInputProps(
70
74
  CLASS_NAMES.container,
71
75
  error ? "border-red-200" : "border-neutral-100"
72
76
  ),
77
+ minLowerLabel: clsx(
78
+ CLASS_NAMES.lowerLabel,
79
+ highlightLabel === "min" && CLASS_NAMES.highlightedLowerLabel
80
+ ),
81
+ maxLowerLabel: clsx(
82
+ CLASS_NAMES.lowerLabel,
83
+ highlightLabel === "max" && CLASS_NAMES.highlightedLowerLabel
84
+ ),
73
85
  };
74
86
 
75
87
  useEffect(() => {
@@ -5,6 +5,10 @@ export interface SelectOption {
5
5
  name: string;
6
6
  value: string;
7
7
  disabled?: boolean;
8
+ warning?: boolean;
9
+ icon?: string;
10
+ className?: string;
11
+ footer?: JSX.Element;
8
12
  }
9
13
 
10
14
  export interface SelectUncontrolledProps {