@rovula/ui 0.0.19 → 0.0.21

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 (207) hide show
  1. package/dist/cjs/bundle.css +3220 -1382
  2. package/dist/cjs/bundle.js +3 -3
  3. package/dist/cjs/bundle.js.map +1 -1
  4. package/dist/cjs/types/components/ActionButton/ActionButton.stories.d.ts +4 -4
  5. package/dist/cjs/types/components/ActionButton/ActionButton.styles copy.d.ts +6 -0
  6. package/dist/cjs/types/components/Button/Button.styles copy.d.ts +7 -0
  7. package/dist/cjs/types/components/Button/Button.styles.d.ts +1 -0
  8. package/dist/cjs/types/components/Button/Buttons.stories.d.ts +12 -4
  9. package/dist/cjs/types/components/Calendar/Calendar.d.ts +0 -1
  10. package/dist/cjs/types/components/Calendar/Calendar.stories.d.ts +7 -7
  11. package/dist/cjs/types/components/Checkbox/Checkbox.stories.d.ts +6 -6
  12. package/dist/cjs/types/components/DatePicker/DatePicker.d.ts +2 -0
  13. package/dist/cjs/types/components/DatePicker/DatePicker.stories.d.ts +2 -0
  14. package/dist/cjs/types/components/Dropdown/Dropdown.stories.d.ts +8 -6
  15. package/dist/cjs/types/components/Input/Input.stories.d.ts +12 -12
  16. package/dist/cjs/types/components/Label/Label.stories.d.ts +6 -6
  17. package/dist/cjs/types/components/Loading/Loading.d.ts +14 -0
  18. package/dist/cjs/types/components/Loading/Loading.stories.d.ts +35 -0
  19. package/dist/cjs/types/components/ProgressBar/ProgressBar.d.ts +13 -0
  20. package/dist/cjs/types/components/ProgressBar/ProgressBar.stories.d.ts +37 -0
  21. package/dist/cjs/types/components/RadioGroup/RadioGroup.stories.d.ts +5 -5
  22. package/dist/cjs/types/components/Search/Search.d.ts +22 -1
  23. package/dist/cjs/types/components/Search/Search.stories.d.ts +338 -7
  24. package/dist/cjs/types/components/Table/Table.stories.d.ts +4 -4
  25. package/dist/cjs/types/components/Text/Text.d.ts +1 -1
  26. package/dist/cjs/types/components/Text/Text.stories.d.ts +1 -1
  27. package/dist/cjs/types/components/TextInput/TextInput.d.ts +4 -0
  28. package/dist/cjs/types/components/TextInput/TextInput.stories.d.ts +11 -6
  29. package/dist/cjs/types/components/TextInput/TextInput.styles.d.ts +8 -0
  30. package/dist/cjs/types/index.d.ts +3 -0
  31. package/dist/cjs/types/stories/ColorGroupPreview.d.ts +1 -0
  32. package/dist/cjs/types/stories/ColorPreview.d.ts +5 -0
  33. package/dist/components/ActionButton/ActionButton.js +1 -1
  34. package/dist/components/ActionButton/ActionButton.stories.js +1 -1
  35. package/dist/components/ActionButton/ActionButton.styles copy.js +90 -0
  36. package/dist/components/ActionButton/ActionButton.styles.js +54 -15
  37. package/dist/components/AlertDialog/AlertDialog.js +2 -2
  38. package/dist/components/Avatar/Avatar.styles.js +1 -1
  39. package/dist/components/Button/Button.js +3 -2
  40. package/dist/components/Button/Button.styles copy.js +210 -0
  41. package/dist/components/Button/Button.styles.js +203 -43
  42. package/dist/components/Button/Buttons.stories.js +9 -1
  43. package/dist/components/Calendar/Calendar.js +39 -2
  44. package/dist/components/Checkbox/Checkbox.js +1 -1
  45. package/dist/components/Collapsible/Collapsible.styles.js +6 -3
  46. package/dist/components/DatePicker/DatePicker.js +13 -2
  47. package/dist/components/Dialog/Dialog.js +4 -4
  48. package/dist/components/Dropdown/Dropdown.js +9 -7
  49. package/dist/components/Dropdown/Dropdown.styles.js +1 -1
  50. package/dist/components/Input/Input.js +8 -1
  51. package/dist/components/Input/Input.stories.js +3 -2
  52. package/dist/components/Input/Input.styles.js +13 -5
  53. package/dist/components/Loading/Loading.js +23 -0
  54. package/dist/components/Loading/Loading.stories.js +37 -0
  55. package/dist/components/Popover/Popover.js +1 -1
  56. package/dist/components/ProgressBar/ProgressBar.js +22 -0
  57. package/dist/components/ProgressBar/ProgressBar.stories.js +52 -0
  58. package/dist/components/RadioGroup/RadioGroup.js +2 -2
  59. package/dist/components/Search/Search.js +6 -7
  60. package/dist/components/Search/Search.stories.js +8 -5
  61. package/dist/components/Text/Text.js +17 -2
  62. package/dist/components/Text/Text.stories.js +5 -1
  63. package/dist/components/TextInput/TextInput.js +14 -5
  64. package/dist/components/TextInput/TextInput.stories.js +3 -2
  65. package/dist/components/TextInput/TextInput.styles.js +120 -18
  66. package/dist/esm/bundle.css +3220 -1382
  67. package/dist/esm/bundle.js +3 -3
  68. package/dist/esm/bundle.js.map +1 -1
  69. package/dist/esm/types/components/ActionButton/ActionButton.stories.d.ts +4 -4
  70. package/dist/esm/types/components/ActionButton/ActionButton.styles copy.d.ts +6 -0
  71. package/dist/esm/types/components/Button/Button.styles copy.d.ts +7 -0
  72. package/dist/esm/types/components/Button/Button.styles.d.ts +1 -0
  73. package/dist/esm/types/components/Button/Buttons.stories.d.ts +12 -4
  74. package/dist/esm/types/components/Calendar/Calendar.d.ts +0 -1
  75. package/dist/esm/types/components/Calendar/Calendar.stories.d.ts +7 -7
  76. package/dist/esm/types/components/Checkbox/Checkbox.stories.d.ts +6 -6
  77. package/dist/esm/types/components/DatePicker/DatePicker.d.ts +2 -0
  78. package/dist/esm/types/components/DatePicker/DatePicker.stories.d.ts +2 -0
  79. package/dist/esm/types/components/Dropdown/Dropdown.stories.d.ts +8 -6
  80. package/dist/esm/types/components/Input/Input.stories.d.ts +12 -12
  81. package/dist/esm/types/components/Label/Label.stories.d.ts +6 -6
  82. package/dist/esm/types/components/Loading/Loading.d.ts +14 -0
  83. package/dist/esm/types/components/Loading/Loading.stories.d.ts +35 -0
  84. package/dist/esm/types/components/ProgressBar/ProgressBar.d.ts +13 -0
  85. package/dist/esm/types/components/ProgressBar/ProgressBar.stories.d.ts +37 -0
  86. package/dist/esm/types/components/RadioGroup/RadioGroup.stories.d.ts +5 -5
  87. package/dist/esm/types/components/Search/Search.d.ts +22 -1
  88. package/dist/esm/types/components/Search/Search.stories.d.ts +338 -7
  89. package/dist/esm/types/components/Table/Table.stories.d.ts +4 -4
  90. package/dist/esm/types/components/Text/Text.d.ts +1 -1
  91. package/dist/esm/types/components/Text/Text.stories.d.ts +1 -1
  92. package/dist/esm/types/components/TextInput/TextInput.d.ts +4 -0
  93. package/dist/esm/types/components/TextInput/TextInput.stories.d.ts +11 -6
  94. package/dist/esm/types/components/TextInput/TextInput.styles.d.ts +8 -0
  95. package/dist/esm/types/index.d.ts +3 -0
  96. package/dist/esm/types/stories/ColorGroupPreview.d.ts +1 -0
  97. package/dist/esm/types/stories/ColorPreview.d.ts +5 -0
  98. package/dist/index.d.ts +53 -2
  99. package/dist/index.js +3 -0
  100. package/dist/src/theme/global.css +5078 -918
  101. package/dist/stories/ColorGroupPreview.js +478 -0
  102. package/dist/stories/ColorPreview.js +8 -0
  103. package/dist/theme/global.css +7 -227
  104. package/dist/theme/main-preset.js +131 -67
  105. package/dist/theme/plugins/utilities/typography.js +12 -0
  106. package/dist/theme/presets/colors.js +101 -220
  107. package/dist/theme/theme.d.ts +69 -0
  108. package/dist/theme/themes/xspector/baseline.css +7 -0
  109. package/dist/theme/themes/xspector/color.css +67 -0
  110. package/dist/theme/themes/xspector/components/action-button.css +98 -0
  111. package/dist/theme/themes/xspector/components/loading.css +11 -0
  112. package/dist/theme/themes/xspector/palette.css +122 -0
  113. package/dist/theme/themes/xspector/state.css +89 -0
  114. package/dist/theme/themes/xspector/transparent.css +68 -0
  115. package/dist/theme/themes/xspector/typography.css +27 -0
  116. package/dist/theme/tokens/baseline.css +10 -0
  117. package/dist/theme/tokens/color.css +63 -0
  118. package/dist/theme/tokens/components/action-button.css +127 -0
  119. package/dist/theme/tokens/components/button.css +512 -0
  120. package/dist/theme/tokens/components/loading.css +11 -0
  121. package/dist/theme/tokens/components/navbar.css +8 -0
  122. package/dist/theme/tokens/components/progress-bar.css +8 -0
  123. package/dist/theme/tokens/palette.css +122 -0
  124. package/dist/theme/tokens/state.css +82 -0
  125. package/dist/theme/tokens/transparent.css +68 -0
  126. package/dist/theme/tokens/typography.css +178 -0
  127. package/dist/theme/tokens/variables.css +28 -0
  128. package/dist/theme/utils.js +98 -0
  129. package/package.json +1 -1
  130. package/src/_theme/global copy.css +761 -0
  131. package/src/_theme/global.css +39 -0
  132. package/src/_theme/main-preset.js +239 -0
  133. package/src/_theme/plugins/utilities/typography.js +81 -0
  134. package/src/_theme/presets/colors copy 2.js +319 -0
  135. package/src/_theme/presets/colors copy.js +229 -0
  136. package/src/_theme/presets/colors.js +94 -0
  137. package/src/_theme/theme.d.ts +69 -0
  138. package/src/_theme/variables/base/button.css +334 -0
  139. package/src/_theme/variables/base/components copy.css +19 -0
  140. package/src/_theme/variables/default/colors.css +292 -0
  141. package/src/_theme/variables/default/typography.css +178 -0
  142. package/src/_theme/variables/xspector/colors.css +468 -0
  143. package/src/_theme/variables/xspector/typography.css +178 -0
  144. package/src/components/ActionButton/ActionButton.stories.tsx +1 -1
  145. package/src/components/ActionButton/ActionButton.styles copy.ts +95 -0
  146. package/src/components/ActionButton/ActionButton.styles.ts +54 -19
  147. package/src/components/ActionButton/ActionButton.tsx +1 -1
  148. package/src/components/AlertDialog/AlertDialog.tsx +2 -2
  149. package/src/components/Avatar/Avatar.styles.ts +1 -1
  150. package/src/components/Button/Button.styles copy.ts +214 -0
  151. package/src/components/Button/Button.styles.ts +203 -47
  152. package/src/components/Button/Button.tsx +4 -0
  153. package/src/components/Button/Buttons.stories.tsx +9 -1
  154. package/src/components/Calendar/Calendar.tsx +49 -7
  155. package/src/components/Checkbox/Checkbox.tsx +1 -1
  156. package/src/components/Collapsible/Collapsible.styles.ts +6 -3
  157. package/src/components/DatePicker/DatePicker.tsx +8 -2
  158. package/src/components/Dialog/Dialog.tsx +5 -5
  159. package/src/components/Dropdown/Dropdown.styles.ts +1 -1
  160. package/src/components/Dropdown/Dropdown.tsx +14 -12
  161. package/src/components/Input/Input.stories.tsx +3 -2
  162. package/src/components/Input/Input.styles.tsx +13 -6
  163. package/src/components/Input/Input.tsx +8 -1
  164. package/src/components/Loading/Loading.stories.tsx +43 -0
  165. package/src/components/Loading/Loading.tsx +72 -0
  166. package/src/components/Popover/Popover.tsx +1 -1
  167. package/src/components/ProgressBar/ProgressBar.stories.tsx +78 -0
  168. package/src/components/ProgressBar/ProgressBar.tsx +62 -0
  169. package/src/components/RadioGroup/RadioGroup.tsx +2 -2
  170. package/src/components/Search/Search.stories.tsx +13 -13
  171. package/src/components/Search/Search.tsx +14 -19
  172. package/src/components/Text/Text.stories.tsx +6 -4
  173. package/src/components/Text/Text.tsx +27 -3
  174. package/src/components/TextInput/TextInput.stories.tsx +3 -2
  175. package/src/components/TextInput/TextInput.styles.ts +124 -19
  176. package/src/components/TextInput/TextInput.tsx +34 -4
  177. package/src/index.ts +3 -0
  178. package/src/stories/ColorGroupPreview.tsx +494 -0
  179. package/src/stories/ColorPreview.tsx +45 -0
  180. package/src/stories/Colors.mdx +14 -0
  181. package/src/stories/Typography.mdx +7 -151
  182. package/src/theme/global.css +7 -227
  183. package/src/theme/main-preset.js +131 -67
  184. package/src/theme/plugins/utilities/typography.js +12 -0
  185. package/src/theme/presets/colors.js +101 -220
  186. package/src/theme/theme.d.ts +69 -0
  187. package/src/theme/themes/xspector/baseline.css +7 -0
  188. package/src/theme/themes/xspector/color.css +67 -0
  189. package/src/theme/themes/xspector/components/action-button.css +98 -0
  190. package/src/theme/themes/xspector/components/loading.css +11 -0
  191. package/src/theme/themes/xspector/palette.css +122 -0
  192. package/src/theme/themes/xspector/state.css +89 -0
  193. package/src/theme/themes/xspector/transparent.css +68 -0
  194. package/src/theme/themes/xspector/typography.css +27 -0
  195. package/src/theme/tokens/baseline.css +10 -0
  196. package/src/theme/tokens/color.css +63 -0
  197. package/src/theme/tokens/components/action-button.css +127 -0
  198. package/src/theme/tokens/components/button.css +512 -0
  199. package/src/theme/tokens/components/loading.css +11 -0
  200. package/src/theme/tokens/components/navbar.css +8 -0
  201. package/src/theme/tokens/components/progress-bar.css +8 -0
  202. package/src/theme/tokens/palette.css +122 -0
  203. package/src/theme/tokens/state.css +82 -0
  204. package/src/theme/tokens/transparent.css +68 -0
  205. package/src/theme/tokens/typography.css +178 -0
  206. package/src/theme/tokens/variables.css +28 -0
  207. package/src/theme/utils.js +98 -0
@@ -4,7 +4,7 @@ export const inputVariant = cva(
4
4
  [
5
5
  "border-0 outline-none",
6
6
  "p-1 flex w-auto box-border",
7
- "peer text-black placeholder:text-transparent bg-transparent caret-primary",
7
+ "peer text-input-filled-text placeholder:text-transparent bg-transparent caret-primary",
8
8
  ],
9
9
  {
10
10
  variants: {
@@ -15,28 +15,40 @@ export const inputVariant = cva(
15
15
  },
16
16
  rounded: {
17
17
  none: "rounded-none",
18
- normal: "rounded-xl",
18
+ normal: "rounded-md",
19
19
  full: "rounded-full",
20
20
  },
21
21
  variant: {
22
22
  flat: "",
23
- outline:
24
- "ring-1 ring-inset ring-input-stroke hover:ring-input-active focus:ring-1 focus:ring-inset focus:ring-input-stroke-active",
23
+ outline: [
24
+ "ring-1 ring-inset ring-input-default-stroke",
25
+ "hover:ring-input-active-stroke",
26
+ "focus:ring-1 focus:ring-inset focus:ring-input-active-stroke",
27
+ ],
25
28
  underline:
26
- "border-b-2 border-input-stroke transition-colors hover:border-input-stroke-active focus:border-input-stroke",
29
+ "border-b-2 border-input-default-stroke transition-colors hover:border-input-active-stroke focus:border-input-stroke",
27
30
  },
28
31
  fullwidth: {
29
32
  true: "w-full",
30
33
  },
31
34
  disabled: {
32
- true: "text-input-text-disabled ring-input-stroke-disabled placeholder:text-input-text-disabled",
35
+ true: [
36
+ "bg-input-disable-bg text-input-disable-text ring-input-disable-stroke placeholder:text-input-disable-text",
37
+ "hover:ring-input-disable-stroke",
38
+ ],
33
39
  },
34
40
  error: {
35
- true: "ring-error focus:ring-error",
41
+ true: "ring-input-error focus:ring-input-error",
36
42
  },
37
43
  hasClearIcon: {
38
44
  true: "",
39
45
  },
46
+ hasSearchIcon: {
47
+ false: "",
48
+ },
49
+ leftSectionIcon: {
50
+ false: "",
51
+ },
40
52
  rightSectionIcon: {
41
53
  false: "",
42
54
  },
@@ -61,6 +73,36 @@ export const inputVariant = cva(
61
73
  size: "lg",
62
74
  class: "focus:pe-10",
63
75
  },
76
+ {
77
+ hasSearchIcon: true,
78
+ size: "sm",
79
+ class: "ps-6",
80
+ },
81
+ {
82
+ hasSearchIcon: true,
83
+ size: "md",
84
+ class: "ps-9",
85
+ },
86
+ {
87
+ hasSearchIcon: true,
88
+ size: "lg",
89
+ class: "ps-11",
90
+ },
91
+ {
92
+ leftSectionIcon: true,
93
+ size: "sm",
94
+ class: "ps-[38px]",
95
+ },
96
+ {
97
+ leftSectionIcon: true,
98
+ size: "md",
99
+ class: "ps-[46px]",
100
+ },
101
+ {
102
+ leftSectionIcon: true,
103
+ size: "lg",
104
+ class: "ps-[72px]",
105
+ },
64
106
  {
65
107
  rightSectionIcon: true,
66
108
  size: "sm",
@@ -85,6 +127,8 @@ export const inputVariant = cva(
85
127
  disabled: false,
86
128
  error: false,
87
129
  hasClearIcon: false,
130
+ hasSearchIcon: false,
131
+ leftSectionIcon: false, // TODO function style
88
132
  rightSectionIcon: false,
89
133
  },
90
134
  }
@@ -92,38 +136,72 @@ export const inputVariant = cva(
92
136
 
93
137
  export const labelVariant = cva(
94
138
  [
95
- "absolute block duration-450 transition-all px-[2px] text-input-text peer-focus:text-input-text-active peer-focus:bg-input-label-background",
139
+ "absolute block duration-450 transition-all px-[2px] text-input-default-text",
140
+ "peer-focus:text-input-filled-text peer-focus:bg-input-label-bg", // TODO bg
96
141
  ],
97
142
  {
98
143
  variants: {
99
144
  size: {
100
145
  sm: [
101
- "left-3 -top-1.5 typography-label2 bg-input-label-background",
146
+ "left-3 -top-1.5 typography-label2 bg-input-label-bg",
102
147
  "peer-placeholder-shown:top-2 peer-placeholder-shown:typography-small1 peer-placeholder-shown:bg-transparent",
103
148
  "peer-focus:-top-1.5 peer-focus:typography-label2",
104
149
  ],
105
150
  md: [
106
- "left-3 -top-1.5 typography-label1 bg-input-label-background",
151
+ "left-3 -top-1.5 typography-label1 bg-input-label-bg",
107
152
  "peer-placeholder-shown:top-2 peer-placeholder-shown:typography-subtitile4 peer-placeholder-shown:bg-transparent",
108
153
  "peer-focus:-top-1.5 peer-focus:typography-label1",
109
154
  ],
110
155
  lg: [
111
- "left-4 -top-1.5 typography-label1 bg-input-label-background",
156
+ "left-4 -top-1.5 typography-label1 bg-input-label-bg",
112
157
  "peer-placeholder-shown:top-4 peer-placeholder-shown:typography-subtitile1 peer-placeholder-shown:bg-transparent",
113
158
  "peer-focus:-top-1.5 peer-focus:typography-label1",
114
159
  ],
115
160
  },
116
161
  disabled: {
117
- true: "text-input-text-disabled ring-input-stroke-disabled placeholder:text-input-text-disabled",
162
+ true: "text-input-default-text placeholder:text-input-default-text",
118
163
  },
119
164
  error: {
120
165
  true: "ring-error",
121
166
  },
167
+ hasSearchIcon: {
168
+ false: "",
169
+ },
122
170
  },
171
+ compoundVariants: [
172
+ {
173
+ hasSearchIcon: true,
174
+ size: "sm",
175
+ className: [
176
+ "left-6 -top-1.5 typography-label2 bg-input-label-bg",
177
+ "peer-placeholder-shown:top-2 peer-placeholder-shown:typography-small1 peer-placeholder-shown:bg-transparent",
178
+ "peer-focus:-top-1.5 peer-focus:typography-label2",
179
+ ],
180
+ },
181
+ {
182
+ hasSearchIcon: true,
183
+ size: "md",
184
+ className: [
185
+ "left-9 -top-1.5 typography-label1 bg-input-label-bg",
186
+ "peer-placeholder-shown:top-2 peer-placeholder-shown:typography-subtitile4 peer-placeholder-shown:bg-transparent",
187
+ "peer-focus:-top-1.5 peer-focus:typography-label1",
188
+ ],
189
+ },
190
+ {
191
+ hasSearchIcon: true,
192
+ size: "lg",
193
+ className: [
194
+ "left-11 -top-1.5 typography-label1 bg-input-label-bg",
195
+ "peer-placeholder-shown:top-4 peer-placeholder-shown:typography-subtitile1 peer-placeholder-shown:bg-transparent",
196
+ "peer-focus:-top-1.5 peer-focus:typography-label1",
197
+ ],
198
+ },
199
+ ],
123
200
  defaultVariants: {
124
201
  size: "md",
125
202
  disabled: false,
126
203
  error: false,
204
+ hasSearchIcon: false,
127
205
  },
128
206
  }
129
207
  );
@@ -138,11 +216,11 @@ export const helperTextVariant = cva(
138
216
  lg: "mt-[6px]",
139
217
  },
140
218
  disabled: {
141
- true: "text-input-text-disabled",
219
+ true: "text-input-disable-text",
142
220
  },
143
221
  error: {
144
- true: "text-error",
145
- false: "text-input-text",
222
+ true: "text-input-error",
223
+ false: "text-input-filled-text",
146
224
  },
147
225
  },
148
226
  defaultVariants: {
@@ -171,8 +249,26 @@ export const iconWrapperVariant = cva(
171
249
  }
172
250
  );
173
251
 
252
+ export const iconSearchWrapperVariant = cva(
253
+ ["absolute inset-y-0 left-0 items-center justify-center flex"],
254
+ {
255
+ variants: {
256
+ size: {
257
+ sm: "ml-2",
258
+ md: "ml-3",
259
+ lg: "ml-4",
260
+ },
261
+ },
262
+ defaultVariants: {
263
+ size: "md",
264
+ },
265
+ }
266
+ );
267
+
174
268
  export const iconVariant = cva(
175
- ["cursor-pointer z-50 fill-input-stroke-active hover:fill-input-text"],
269
+ [
270
+ "cursor-pointer z-50 fill-input-active-stroke hover:fill-input-default-text",
271
+ ],
176
272
  {
177
273
  variants: {
178
274
  size: {
@@ -189,9 +285,9 @@ export const iconVariant = cva(
189
285
 
190
286
  export const sectionIconWrapperVariant = cva(
191
287
  [
192
- "absolute inset-y-0 right-0 items-center justify-center flex",
193
- "border-l border-l-input-stroke peer-hover:border-l-input-active peer-focus:border-l-input-stroke-active peer-disabled:border-l-input-stroke-disabled",
194
- "fill-input-text peer-hover:fill-input-text-active peer-focus:fill-input-text-active",
288
+ "absolute items-center justify-center flex",
289
+ "border-l border-l-input-default-stroke peer-hover:border-l-input-active-stroke peer-focus:border-l-input-active-stroke peer-disabled:border-l-input-disable-stroke",
290
+ "fill-input-default-text peer-hover:fill-input-filled-text peer-focus:fill-input-filled-text peer-disabled:fill-input-disable-stroke",
195
291
  ],
196
292
  {
197
293
  variants: {
@@ -205,10 +301,19 @@ export const sectionIconWrapperVariant = cva(
205
301
  normal: "rounded-r-xl",
206
302
  full: "rounded-r-full",
207
303
  },
304
+ error: {
305
+ true: "border-l-input-error",
306
+ },
307
+ position: {
308
+ start: "inset-y-0 left-0 ",
309
+ end: "inset-y-0 right-0 ",
310
+ },
208
311
  },
209
312
  defaultVariants: {
210
313
  size: "md",
211
314
  rounded: "normal",
315
+ error: false,
316
+ position: "end",
212
317
  },
213
318
  }
214
319
  );
@@ -7,13 +7,18 @@ import React, {
7
7
  } from "react";
8
8
  import {
9
9
  helperTextVariant,
10
+ iconSearchWrapperVariant,
10
11
  iconVariant,
11
12
  iconWrapperVariant,
12
13
  inputVariant,
13
14
  labelVariant,
14
15
  sectionIconWrapperVariant,
15
16
  } from "./TextInput.styles";
16
- import { XCircleIcon, ExclamationCircleIcon } from "@heroicons/react/16/solid";
17
+ import {
18
+ XCircleIcon,
19
+ ExclamationCircleIcon,
20
+ MagnifyingGlassIcon,
21
+ } from "@heroicons/react/16/solid";
17
22
  import { cn } from "@/utils/cn";
18
23
 
19
24
  export type InputProps = {
@@ -30,6 +35,8 @@ export type InputProps = {
30
35
  error?: boolean;
31
36
  required?: boolean;
32
37
  hasClearIcon?: boolean;
38
+ hasSearchIcon?: boolean;
39
+ startIcon?: ReactNode;
33
40
  endIcon?: ReactNode;
34
41
  className?: string;
35
42
  labelClassName?: string;
@@ -51,6 +58,8 @@ export const TextInput = forwardRef<HTMLInputElement, InputProps>(
51
58
  error = false,
52
59
  required = true,
53
60
  hasClearIcon = true,
61
+ hasSearchIcon = false,
62
+ startIcon,
54
63
  endIcon,
55
64
  labelClassName,
56
65
  ...props
@@ -59,6 +68,7 @@ export const TextInput = forwardRef<HTMLInputElement, InputProps>(
59
68
  ) => {
60
69
  const inputRef = useRef<HTMLInputElement>(null);
61
70
  const _id = id || `${type}-${label}-input`;
71
+ const hasLeftSectionIcon = !!startIcon;
62
72
  const hasRightSectionIcon = !!endIcon;
63
73
  const inputClassname = inputVariant({
64
74
  size,
@@ -67,20 +77,26 @@ export const TextInput = forwardRef<HTMLInputElement, InputProps>(
67
77
  fullwidth,
68
78
  disabled,
69
79
  error,
80
+ hasSearchIcon,
70
81
  hasClearIcon: hasRightSectionIcon ? false : hasClearIcon,
82
+ leftSectionIcon: hasLeftSectionIcon,
71
83
  rightSectionIcon: hasRightSectionIcon,
72
84
  });
73
85
  const labelClassname = labelVariant({
74
86
  size,
75
87
  disabled,
76
88
  error,
89
+ hasSearchIcon,
77
90
  });
78
91
  const helperTextClassname = helperTextVariant({ size, error, disabled });
79
92
  const iconWrapperClassname = iconWrapperVariant({ size });
93
+ const iconSearchWrapperClassname = iconSearchWrapperVariant({ size });
80
94
  const iconClassname = iconVariant({ size });
81
- const sectionIconWrapperClassname = sectionIconWrapperVariant({
95
+ // TODO startIcon
96
+ const endIconWrapperClassname = sectionIconWrapperVariant({
82
97
  size,
83
98
  rounded,
99
+ error,
84
100
  });
85
101
 
86
102
  useImperativeHandle(ref, () => inputRef?.current as HTMLInputElement);
@@ -94,6 +110,11 @@ export const TextInput = forwardRef<HTMLInputElement, InputProps>(
94
110
  return (
95
111
  <div className={`inline-flex flex-col ${fullwidth ? "w-full" : ""}`}>
96
112
  <div className="relative">
113
+ {hasSearchIcon && (
114
+ <div className={iconSearchWrapperClassname}>
115
+ <MagnifyingGlassIcon className={iconClassname} />
116
+ </div>
117
+ )}
97
118
  <input
98
119
  {...props}
99
120
  placeholder=" "
@@ -113,11 +134,20 @@ export const TextInput = forwardRef<HTMLInputElement, InputProps>(
113
134
  </div>
114
135
  )}
115
136
  {hasRightSectionIcon && (
116
- <div className={sectionIconWrapperClassname}>{endIcon}</div>
137
+ <div className={endIconWrapperClassname}>{endIcon}</div>
117
138
  )}
118
139
 
119
140
  <label htmlFor={_id} className={cn(labelClassname, labelClassName)}>
120
- {label} {required && <span className="text-error">*</span>}
141
+ {label}{" "}
142
+ {required && (
143
+ <span
144
+ className={cn("text-error", {
145
+ "text-input-disable-text": disabled,
146
+ })}
147
+ >
148
+ *
149
+ </span>
150
+ )}
121
151
  </label>
122
152
  </div>
123
153
  {(errorMessage || helperText) && (
package/src/index.ts CHANGED
@@ -20,10 +20,13 @@ export {
20
20
  PopoverTrigger,
21
21
  PopoverContent,
22
22
  } from "./components/Popover/Popover";
23
+ export { default as Loading } from "./components/Loading/Loading";
24
+ export { default as ProgressBar } from "./components/ProgressBar/ProgressBar";
23
25
  export * from "./components/Table/Table";
24
26
  export * from "./components/DataTable/DataTable";
25
27
  export * from "./components/Dialog/Dialog";
26
28
  export * from "./components/AlertDialog/AlertDialog";
29
+ export * from "./components/Search/Search";
27
30
 
28
31
  // Export component types
29
32
  export type { ButtonProps } from "./components/Button/Button";