@rjsf/daisyui 6.0.0-beta.2

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 (315) hide show
  1. package/README.md +231 -0
  2. package/dist/chakra-ui.esm.js +2192 -0
  3. package/dist/chakra-ui.esm.js.map +7 -0
  4. package/dist/chakra-ui.umd.js +2011 -0
  5. package/dist/index.js +2180 -0
  6. package/dist/index.js.map +7 -0
  7. package/lib/DaisyUIForm.d.ts +5 -0
  8. package/lib/DaisyUIForm.js +8 -0
  9. package/lib/DaisyUIForm.js.map +1 -0
  10. package/lib/DaisyUIFrameProvider.d.ts +35 -0
  11. package/lib/DaisyUIFrameProvider.js +93 -0
  12. package/lib/DaisyUIFrameProvider.js.map +1 -0
  13. package/lib/daisyForm/DaisyForm.d.ts +12 -0
  14. package/lib/daisyForm/DaisyForm.js +15 -0
  15. package/lib/daisyForm/DaisyForm.js.map +1 -0
  16. package/lib/daisyForm/index.d.ts +2 -0
  17. package/lib/daisyForm/index.js +3 -0
  18. package/lib/daisyForm/index.js.map +1 -0
  19. package/lib/index.d.ts +10 -0
  20. package/lib/index.js +11 -0
  21. package/lib/index.js.map +1 -0
  22. package/lib/templates/ArrayFieldDescriptionTemplate/ArrayFieldDescriptionTemplate.d.ts +7 -0
  23. package/lib/templates/ArrayFieldDescriptionTemplate/ArrayFieldDescriptionTemplate.js +11 -0
  24. package/lib/templates/ArrayFieldDescriptionTemplate/ArrayFieldDescriptionTemplate.js.map +1 -0
  25. package/lib/templates/ArrayFieldDescriptionTemplate/index.d.ts +2 -0
  26. package/lib/templates/ArrayFieldDescriptionTemplate/index.js +3 -0
  27. package/lib/templates/ArrayFieldDescriptionTemplate/index.js.map +1 -0
  28. package/lib/templates/ArrayFieldItemButtonsTemplate/ArrayFieldItemButtonsTemplate.d.ts +5 -0
  29. package/lib/templates/ArrayFieldItemButtonsTemplate/ArrayFieldItemButtonsTemplate.js +20 -0
  30. package/lib/templates/ArrayFieldItemButtonsTemplate/ArrayFieldItemButtonsTemplate.js.map +1 -0
  31. package/lib/templates/ArrayFieldItemButtonsTemplate/index.d.ts +2 -0
  32. package/lib/templates/ArrayFieldItemButtonsTemplate/index.js +3 -0
  33. package/lib/templates/ArrayFieldItemButtonsTemplate/index.js.map +1 -0
  34. package/lib/templates/ArrayFieldItemTemplate/ArrayFieldItemTemplate.d.ts +14 -0
  35. package/lib/templates/ArrayFieldItemTemplate/ArrayFieldItemTemplate.js +27 -0
  36. package/lib/templates/ArrayFieldItemTemplate/ArrayFieldItemTemplate.js.map +1 -0
  37. package/lib/templates/ArrayFieldItemTemplate/index.d.ts +2 -0
  38. package/lib/templates/ArrayFieldItemTemplate/index.js +3 -0
  39. package/lib/templates/ArrayFieldItemTemplate/index.js.map +1 -0
  40. package/lib/templates/ArrayFieldTemplate/ArrayFieldTemplate.d.ts +15 -0
  41. package/lib/templates/ArrayFieldTemplate/ArrayFieldTemplate.js +37 -0
  42. package/lib/templates/ArrayFieldTemplate/ArrayFieldTemplate.js.map +1 -0
  43. package/lib/templates/ArrayFieldTemplate/index.d.ts +2 -0
  44. package/lib/templates/ArrayFieldTemplate/index.js +3 -0
  45. package/lib/templates/ArrayFieldTemplate/index.js.map +1 -0
  46. package/lib/templates/ArrayFieldTitleTemplate/ArrayFieldTitleTemplate.d.ts +7 -0
  47. package/lib/templates/ArrayFieldTitleTemplate/ArrayFieldTitleTemplate.js +11 -0
  48. package/lib/templates/ArrayFieldTitleTemplate/ArrayFieldTitleTemplate.js.map +1 -0
  49. package/lib/templates/ArrayFieldTitleTemplate/index.d.ts +2 -0
  50. package/lib/templates/ArrayFieldTitleTemplate/index.js +3 -0
  51. package/lib/templates/ArrayFieldTitleTemplate/index.js.map +1 -0
  52. package/lib/templates/BaseInputTemplate/BaseInputTemplate.d.ts +16 -0
  53. package/lib/templates/BaseInputTemplate/BaseInputTemplate.js +33 -0
  54. package/lib/templates/BaseInputTemplate/BaseInputTemplate.js.map +1 -0
  55. package/lib/templates/BaseInputTemplate/index.d.ts +2 -0
  56. package/lib/templates/BaseInputTemplate/index.js +3 -0
  57. package/lib/templates/BaseInputTemplate/index.js.map +1 -0
  58. package/lib/templates/ButtonTemplates/AddButton.d.ts +6 -0
  59. package/lib/templates/ButtonTemplates/AddButton.js +15 -0
  60. package/lib/templates/ButtonTemplates/AddButton.js.map +1 -0
  61. package/lib/templates/ButtonTemplates/DaisyUIButton.d.ts +18 -0
  62. package/lib/templates/ButtonTemplates/DaisyUIButton.js +15 -0
  63. package/lib/templates/ButtonTemplates/DaisyUIButton.js.map +1 -0
  64. package/lib/templates/ButtonTemplates/IconButton.d.ts +5 -0
  65. package/lib/templates/ButtonTemplates/IconButton.js +21 -0
  66. package/lib/templates/ButtonTemplates/IconButton.js.map +1 -0
  67. package/lib/templates/ButtonTemplates/SubmitButton.d.ts +4 -0
  68. package/lib/templates/ButtonTemplates/SubmitButton.js +12 -0
  69. package/lib/templates/ButtonTemplates/SubmitButton.js.map +1 -0
  70. package/lib/templates/ButtonTemplates/index.d.ts +15 -0
  71. package/lib/templates/ButtonTemplates/index.js +17 -0
  72. package/lib/templates/ButtonTemplates/index.js.map +1 -0
  73. package/lib/templates/DescriptionField/DescriptionField.d.ts +8 -0
  74. package/lib/templates/DescriptionField/DescriptionField.js +16 -0
  75. package/lib/templates/DescriptionField/DescriptionField.js.map +1 -0
  76. package/lib/templates/DescriptionField/index.d.ts +2 -0
  77. package/lib/templates/DescriptionField/index.js +3 -0
  78. package/lib/templates/DescriptionField/index.js.map +1 -0
  79. package/lib/templates/ErrorList/ErrorList.d.ts +7 -0
  80. package/lib/templates/ErrorList/ErrorList.js +11 -0
  81. package/lib/templates/ErrorList/ErrorList.js.map +1 -0
  82. package/lib/templates/ErrorList/index.d.ts +2 -0
  83. package/lib/templates/ErrorList/index.js +3 -0
  84. package/lib/templates/ErrorList/index.js.map +1 -0
  85. package/lib/templates/FieldErrorTemplate/FieldErrorTemplate.d.ts +10 -0
  86. package/lib/templates/FieldErrorTemplate/FieldErrorTemplate.js +15 -0
  87. package/lib/templates/FieldErrorTemplate/FieldErrorTemplate.js.map +1 -0
  88. package/lib/templates/FieldErrorTemplate/index.d.ts +2 -0
  89. package/lib/templates/FieldErrorTemplate/index.js +3 -0
  90. package/lib/templates/FieldErrorTemplate/index.js.map +1 -0
  91. package/lib/templates/FieldHelpTemplate/FieldHelpTemplate.d.ts +11 -0
  92. package/lib/templates/FieldHelpTemplate/FieldHelpTemplate.js +15 -0
  93. package/lib/templates/FieldHelpTemplate/FieldHelpTemplate.js.map +1 -0
  94. package/lib/templates/FieldHelpTemplate/index.d.ts +2 -0
  95. package/lib/templates/FieldHelpTemplate/index.js +3 -0
  96. package/lib/templates/FieldHelpTemplate/index.js.map +1 -0
  97. package/lib/templates/FieldTemplate/FieldTemplate.d.ts +15 -0
  98. package/lib/templates/FieldTemplate/FieldTemplate.js +23 -0
  99. package/lib/templates/FieldTemplate/FieldTemplate.js.map +1 -0
  100. package/lib/templates/FieldTemplate/index.d.ts +2 -0
  101. package/lib/templates/FieldTemplate/index.js +3 -0
  102. package/lib/templates/FieldTemplate/index.js.map +1 -0
  103. package/lib/templates/GridTemplate/GridTemplate.d.ts +7 -0
  104. package/lib/templates/GridTemplate/GridTemplate.js +16 -0
  105. package/lib/templates/GridTemplate/GridTemplate.js.map +1 -0
  106. package/lib/templates/GridTemplate/index.d.ts +2 -0
  107. package/lib/templates/GridTemplate/index.js +3 -0
  108. package/lib/templates/GridTemplate/index.js.map +1 -0
  109. package/lib/templates/ObjectFieldTemplate/ObjectFieldTemplate.d.ts +13 -0
  110. package/lib/templates/ObjectFieldTemplate/ObjectFieldTemplate.js +25 -0
  111. package/lib/templates/ObjectFieldTemplate/ObjectFieldTemplate.js.map +1 -0
  112. package/lib/templates/ObjectFieldTemplate/index.d.ts +2 -0
  113. package/lib/templates/ObjectFieldTemplate/index.js +3 -0
  114. package/lib/templates/ObjectFieldTemplate/index.js.map +1 -0
  115. package/lib/templates/Templates.d.ts +19 -0
  116. package/lib/templates/Templates.js +56 -0
  117. package/lib/templates/Templates.js.map +1 -0
  118. package/lib/templates/TitleField/TitleField.d.ts +13 -0
  119. package/lib/templates/TitleField/TitleField.js +19 -0
  120. package/lib/templates/TitleField/TitleField.js.map +1 -0
  121. package/lib/templates/TitleField/index.d.ts +2 -0
  122. package/lib/templates/TitleField/index.js +3 -0
  123. package/lib/templates/TitleField/index.js.map +1 -0
  124. package/lib/templates/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.d.ts +7 -0
  125. package/lib/templates/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.js +20 -0
  126. package/lib/templates/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.js.map +1 -0
  127. package/lib/templates/WrapIfAdditionalTemplate/index.d.ts +2 -0
  128. package/lib/templates/WrapIfAdditionalTemplate/index.js +3 -0
  129. package/lib/templates/WrapIfAdditionalTemplate/index.js.map +1 -0
  130. package/lib/templates/index.d.ts +19 -0
  131. package/lib/templates/index.js +20 -0
  132. package/lib/templates/index.js.map +1 -0
  133. package/lib/theme/Theme.d.ts +43 -0
  134. package/lib/theme/Theme.js +68 -0
  135. package/lib/theme/Theme.js.map +1 -0
  136. package/lib/theme/index.d.ts +2 -0
  137. package/lib/theme/index.js +3 -0
  138. package/lib/theme/index.js.map +1 -0
  139. package/lib/tsconfig.tsbuildinfo +1 -0
  140. package/lib/types/DaisyProps.d.ts +5 -0
  141. package/lib/types/DaisyProps.js +2 -0
  142. package/lib/types/DaisyProps.js.map +1 -0
  143. package/lib/utils.d.ts +13 -0
  144. package/lib/utils.js +5 -0
  145. package/lib/utils.js.map +1 -0
  146. package/lib/widgets/AltDateTimeWidget/AltDateTimeWidget.d.ts +6 -0
  147. package/lib/widgets/AltDateTimeWidget/AltDateTimeWidget.js +10 -0
  148. package/lib/widgets/AltDateTimeWidget/AltDateTimeWidget.js.map +1 -0
  149. package/lib/widgets/AltDateTimeWidget/index.d.ts +2 -0
  150. package/lib/widgets/AltDateTimeWidget/index.js +3 -0
  151. package/lib/widgets/AltDateTimeWidget/index.js.map +1 -0
  152. package/lib/widgets/AltDateWidget/AltDateWidget.d.ts +15 -0
  153. package/lib/widgets/AltDateWidget/AltDateWidget.js +138 -0
  154. package/lib/widgets/AltDateWidget/AltDateWidget.js.map +1 -0
  155. package/lib/widgets/AltDateWidget/index.d.ts +2 -0
  156. package/lib/widgets/AltDateWidget/index.js +3 -0
  157. package/lib/widgets/AltDateWidget/index.js.map +1 -0
  158. package/lib/widgets/CheckboxWidget/CheckboxWidget.d.ts +13 -0
  159. package/lib/widgets/CheckboxWidget/CheckboxWidget.js +43 -0
  160. package/lib/widgets/CheckboxWidget/CheckboxWidget.js.map +1 -0
  161. package/lib/widgets/CheckboxWidget/index.d.ts +2 -0
  162. package/lib/widgets/CheckboxWidget/index.js +3 -0
  163. package/lib/widgets/CheckboxWidget/index.js.map +1 -0
  164. package/lib/widgets/CheckboxesWidget/CheckboxesWidget.d.ts +16 -0
  165. package/lib/widgets/CheckboxesWidget/CheckboxesWidget.js +73 -0
  166. package/lib/widgets/CheckboxesWidget/CheckboxesWidget.js.map +1 -0
  167. package/lib/widgets/CheckboxesWidget/index.d.ts +2 -0
  168. package/lib/widgets/CheckboxesWidget/index.js +3 -0
  169. package/lib/widgets/CheckboxesWidget/index.js.map +1 -0
  170. package/lib/widgets/DateTimeWidget/DateTimeWidget.d.ts +14 -0
  171. package/lib/widgets/DateTimeWidget/DateTimeWidget.js +207 -0
  172. package/lib/widgets/DateTimeWidget/DateTimeWidget.js.map +1 -0
  173. package/lib/widgets/DateTimeWidget/index.d.ts +2 -0
  174. package/lib/widgets/DateTimeWidget/index.js +3 -0
  175. package/lib/widgets/DateTimeWidget/index.js.map +1 -0
  176. package/lib/widgets/DateWidget/DateWidget.d.ts +14 -0
  177. package/lib/widgets/DateWidget/DateWidget.js +274 -0
  178. package/lib/widgets/DateWidget/DateWidget.js.map +1 -0
  179. package/lib/widgets/DateWidget/index.d.ts +2 -0
  180. package/lib/widgets/DateWidget/index.js +3 -0
  181. package/lib/widgets/DateWidget/index.js.map +1 -0
  182. package/lib/widgets/FileWidget/FileWidget.d.ts +12 -0
  183. package/lib/widgets/FileWidget/FileWidget.js +57 -0
  184. package/lib/widgets/FileWidget/FileWidget.js.map +1 -0
  185. package/lib/widgets/FileWidget/index.d.ts +2 -0
  186. package/lib/widgets/FileWidget/index.js +3 -0
  187. package/lib/widgets/FileWidget/index.js.map +1 -0
  188. package/lib/widgets/RadioWidget/RadioWidget.d.ts +14 -0
  189. package/lib/widgets/RadioWidget/RadioWidget.js +67 -0
  190. package/lib/widgets/RadioWidget/RadioWidget.js.map +1 -0
  191. package/lib/widgets/RadioWidget/index.d.ts +2 -0
  192. package/lib/widgets/RadioWidget/index.js +3 -0
  193. package/lib/widgets/RadioWidget/index.js.map +1 -0
  194. package/lib/widgets/RangeWidget/RangeWidget.d.ts +13 -0
  195. package/lib/widgets/RangeWidget/RangeWidget.js +42 -0
  196. package/lib/widgets/RangeWidget/RangeWidget.js.map +1 -0
  197. package/lib/widgets/RangeWidget/index.d.ts +2 -0
  198. package/lib/widgets/RangeWidget/index.js +3 -0
  199. package/lib/widgets/RangeWidget/index.js.map +1 -0
  200. package/lib/widgets/RatingWidget/RatingWidget.d.ts +17 -0
  201. package/lib/widgets/RatingWidget/RatingWidget.js +64 -0
  202. package/lib/widgets/RatingWidget/RatingWidget.js.map +1 -0
  203. package/lib/widgets/RatingWidget/index.d.ts +2 -0
  204. package/lib/widgets/RatingWidget/index.js +3 -0
  205. package/lib/widgets/RatingWidget/index.js.map +1 -0
  206. package/lib/widgets/SelectWidget/SelectWidget.d.ts +14 -0
  207. package/lib/widgets/SelectWidget/SelectWidget.js +74 -0
  208. package/lib/widgets/SelectWidget/SelectWidget.js.map +1 -0
  209. package/lib/widgets/SelectWidget/index.d.ts +2 -0
  210. package/lib/widgets/SelectWidget/index.js +3 -0
  211. package/lib/widgets/SelectWidget/index.js.map +1 -0
  212. package/lib/widgets/TextareaWidget/TextareaWidget.d.ts +12 -0
  213. package/lib/widgets/TextareaWidget/TextareaWidget.js +44 -0
  214. package/lib/widgets/TextareaWidget/TextareaWidget.js.map +1 -0
  215. package/lib/widgets/TextareaWidget/index.d.ts +2 -0
  216. package/lib/widgets/TextareaWidget/index.js +3 -0
  217. package/lib/widgets/TextareaWidget/index.js.map +1 -0
  218. package/lib/widgets/TimeWidget/TimeWidget.d.ts +12 -0
  219. package/lib/widgets/TimeWidget/TimeWidget.js +42 -0
  220. package/lib/widgets/TimeWidget/TimeWidget.js.map +1 -0
  221. package/lib/widgets/TimeWidget/index.d.ts +2 -0
  222. package/lib/widgets/TimeWidget/index.js +3 -0
  223. package/lib/widgets/TimeWidget/index.js.map +1 -0
  224. package/lib/widgets/ToggleWidget/ToggleWidget.d.ts +13 -0
  225. package/lib/widgets/ToggleWidget/ToggleWidget.js +40 -0
  226. package/lib/widgets/ToggleWidget/ToggleWidget.js.map +1 -0
  227. package/lib/widgets/ToggleWidget/index.d.ts +2 -0
  228. package/lib/widgets/ToggleWidget/index.js +3 -0
  229. package/lib/widgets/ToggleWidget/index.js.map +1 -0
  230. package/lib/widgets/Widgets.d.ts +18 -0
  231. package/lib/widgets/Widgets.js +35 -0
  232. package/lib/widgets/Widgets.js.map +1 -0
  233. package/lib/widgets/index.d.ts +2 -0
  234. package/lib/widgets/index.js +3 -0
  235. package/lib/widgets/index.js.map +1 -0
  236. package/package.json +95 -0
  237. package/src/DaisyUIForm.tsx +9 -0
  238. package/src/DaisyUIFrameProvider.tsx +107 -0
  239. package/src/daisyForm/DaisyForm.tsx +20 -0
  240. package/src/daisyForm/index.ts +2 -0
  241. package/src/index.ts +13 -0
  242. package/src/styles.css +9 -0
  243. package/src/templates/ArrayFieldDescriptionTemplate/ArrayFieldDescriptionTemplate.tsx +19 -0
  244. package/src/templates/ArrayFieldDescriptionTemplate/index.ts +2 -0
  245. package/src/templates/ArrayFieldItemButtonsTemplate/ArrayFieldItemButtonsTemplate.tsx +89 -0
  246. package/src/templates/ArrayFieldItemButtonsTemplate/index.ts +2 -0
  247. package/src/templates/ArrayFieldItemTemplate/ArrayFieldItemTemplate.tsx +55 -0
  248. package/src/templates/ArrayFieldItemTemplate/index.ts +2 -0
  249. package/src/templates/ArrayFieldTemplate/ArrayFieldTemplate.tsx +120 -0
  250. package/src/templates/ArrayFieldTemplate/index.ts +2 -0
  251. package/src/templates/ArrayFieldTitleTemplate/ArrayFieldTitleTemplate.tsx +15 -0
  252. package/src/templates/ArrayFieldTitleTemplate/index.ts +2 -0
  253. package/src/templates/BaseInputTemplate/BaseInputTemplate.tsx +104 -0
  254. package/src/templates/BaseInputTemplate/index.ts +2 -0
  255. package/src/templates/ButtonTemplates/AddButton.tsx +38 -0
  256. package/src/templates/ButtonTemplates/DaisyUIButton.tsx +31 -0
  257. package/src/templates/ButtonTemplates/IconButton.tsx +62 -0
  258. package/src/templates/ButtonTemplates/SubmitButton.tsx +25 -0
  259. package/src/templates/ButtonTemplates/index.ts +19 -0
  260. package/src/templates/DescriptionField/DescriptionField.tsx +26 -0
  261. package/src/templates/DescriptionField/index.ts +2 -0
  262. package/src/templates/ErrorList/ErrorList.tsx +21 -0
  263. package/src/templates/ErrorList/index.ts +2 -0
  264. package/src/templates/FieldErrorTemplate/FieldErrorTemplate.tsx +22 -0
  265. package/src/templates/FieldErrorTemplate/index.ts +2 -0
  266. package/src/templates/FieldHelpTemplate/FieldHelpTemplate.tsx +23 -0
  267. package/src/templates/FieldHelpTemplate/index.ts +2 -0
  268. package/src/templates/FieldTemplate/FieldTemplate.tsx +66 -0
  269. package/src/templates/FieldTemplate/index.ts +2 -0
  270. package/src/templates/GridTemplate/GridTemplate.tsx +26 -0
  271. package/src/templates/GridTemplate/index.ts +2 -0
  272. package/src/templates/ObjectFieldTemplate/ObjectFieldTemplate.tsx +108 -0
  273. package/src/templates/ObjectFieldTemplate/index.ts +2 -0
  274. package/src/templates/Templates.tsx +63 -0
  275. package/src/templates/TitleField/TitleField.tsx +26 -0
  276. package/src/templates/TitleField/index.ts +2 -0
  277. package/src/templates/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.tsx +74 -0
  278. package/src/templates/WrapIfAdditionalTemplate/index.ts +2 -0
  279. package/src/templates/index.ts +22 -0
  280. package/src/theme/Theme.tsx +93 -0
  281. package/src/theme/index.ts +2 -0
  282. package/src/tsconfig.json +26 -0
  283. package/src/types/DaisyProps.ts +5 -0
  284. package/src/types.d.ts +4 -0
  285. package/src/utils.ts +18 -0
  286. package/src/widgets/AltDateTimeWidget/AltDateTimeWidget.tsx +14 -0
  287. package/src/widgets/AltDateTimeWidget/index.ts +2 -0
  288. package/src/widgets/AltDateWidget/AltDateWidget.tsx +328 -0
  289. package/src/widgets/AltDateWidget/index.ts +2 -0
  290. package/src/widgets/CheckboxWidget/CheckboxWidget.tsx +108 -0
  291. package/src/widgets/CheckboxWidget/index.ts +2 -0
  292. package/src/widgets/CheckboxesWidget/CheckboxesWidget.tsx +124 -0
  293. package/src/widgets/CheckboxesWidget/index.ts +2 -0
  294. package/src/widgets/DateTimeWidget/DateTimeWidget.tsx +343 -0
  295. package/src/widgets/DateTimeWidget/index.ts +2 -0
  296. package/src/widgets/DateWidget/DateWidget.tsx +393 -0
  297. package/src/widgets/DateWidget/index.ts +2 -0
  298. package/src/widgets/FileWidget/FileWidget.tsx +86 -0
  299. package/src/widgets/FileWidget/index.ts +2 -0
  300. package/src/widgets/RadioWidget/RadioWidget.tsx +114 -0
  301. package/src/widgets/RadioWidget/index.ts +2 -0
  302. package/src/widgets/RangeWidget/RangeWidget.tsx +78 -0
  303. package/src/widgets/RangeWidget/index.ts +2 -0
  304. package/src/widgets/RatingWidget/RatingWidget.tsx +120 -0
  305. package/src/widgets/RatingWidget/index.ts +2 -0
  306. package/src/widgets/SelectWidget/SelectWidget.tsx +161 -0
  307. package/src/widgets/SelectWidget/index.ts +2 -0
  308. package/src/widgets/TextareaWidget/TextareaWidget.tsx +77 -0
  309. package/src/widgets/TextareaWidget/index.ts +2 -0
  310. package/src/widgets/TimeWidget/TimeWidget.tsx +72 -0
  311. package/src/widgets/TimeWidget/index.ts +2 -0
  312. package/src/widgets/ToggleWidget/ToggleWidget.tsx +70 -0
  313. package/src/widgets/ToggleWidget/index.ts +2 -0
  314. package/src/widgets/Widgets.tsx +58 -0
  315. package/src/widgets/index.ts +2 -0
@@ -0,0 +1,120 @@
1
+ import { ChangeEvent, FocusEvent, useCallback } from 'react';
2
+ import { FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';
3
+
4
+ /** The `RatingWidget` component renders a star or heart rating input with DaisyUI styling
5
+ *
6
+ * Features:
7
+ * - Configurable number of stars/hearts (1-5) with default of 5
8
+ * - Supports different shapes (star, heart)
9
+ * - Supports different colors (red, orange, yellow, lime, green, blue, purple, pink)
10
+ * - Supports different sizes (xs, sm, md, lg, xl)
11
+ * - Uses DaisyUI's mask and star/heart styling
12
+ * - Supports minimum and maximum values from schema
13
+ * - Handles required, disabled, and readonly states
14
+ * - Provides focus and blur event handling for accessibility
15
+ * - Uses radio inputs for a11y compatibility
16
+ *
17
+ * @param props - The `WidgetProps` for this component
18
+ */
19
+ export default function RatingWidget<
20
+ T = any,
21
+ S extends StrictRJSFSchema = RJSFSchema,
22
+ F extends FormContextType = any,
23
+ >({
24
+ id,
25
+ value,
26
+ required,
27
+ disabled,
28
+ readonly,
29
+ autofocus,
30
+ onChange,
31
+ onFocus,
32
+ onBlur,
33
+ schema,
34
+ options,
35
+ }: WidgetProps<T, S, F>) {
36
+ const { stars = 5, shape = 'star', color = 'orange', size = 'md', colorGradient = false } = options;
37
+
38
+ // Use schema.maximum if provided, otherwise use stars option (limited to 1-5)
39
+ const numStars = schema.maximum ? Math.min(schema.maximum, 5) : Math.min(Math.max(stars as number, 1), 5);
40
+ const min = schema.minimum || 0;
41
+
42
+ // Generate shape class
43
+ const maskClass = shape === 'heart' ? 'mask-heart' : 'mask-star-2';
44
+
45
+ // Generate size class
46
+ const sizeClass = size === 'md' ? '' : `rating-${size}`;
47
+
48
+ /** Handles change events from radio inputs */
49
+ const _onChange = useCallback(
50
+ ({ target: { value } }: ChangeEvent<HTMLInputElement>) => {
51
+ onChange(parseInt(value));
52
+ },
53
+ [onChange],
54
+ );
55
+
56
+ /** Handles focus events for accessibility */
57
+ const handleFocus = useCallback(
58
+ (event: FocusEvent<HTMLInputElement>) => {
59
+ if (onFocus) {
60
+ const starValue = Number(event.target.value);
61
+ onFocus(id, starValue);
62
+ }
63
+ },
64
+ [onFocus, id],
65
+ );
66
+
67
+ /** Handles blur events for accessibility */
68
+ const handleBlur = useCallback(
69
+ (event: FocusEvent<HTMLInputElement>) => {
70
+ if (onBlur) {
71
+ const starValue = Number(event.target.value);
72
+ onBlur(id, starValue);
73
+ }
74
+ },
75
+ [onBlur, id],
76
+ );
77
+
78
+ /** Get color class for a specific star/heart
79
+ *
80
+ * @param index - The index of the star/heart (0-based)
81
+ * @returns The appropriate color class
82
+ */
83
+ const getColorClass = (index: number): string => {
84
+ if (!colorGradient) {
85
+ return `bg-${color}-400`;
86
+ }
87
+
88
+ // For gradient effect, use different colors based on position
89
+ const colors = ['red', 'orange', 'yellow', 'lime', 'green'];
90
+ const colorIdx = Math.min(index, colors.length - 1);
91
+ return `bg-${colors[colorIdx]}-400`;
92
+ };
93
+
94
+ return (
95
+ <div className='form-control w-full'>
96
+ <div className={`rating gap-1 ${sizeClass}`}>
97
+ {[...Array(numStars)].map((_, index) => {
98
+ const starValue = min + index;
99
+ return (
100
+ <input
101
+ key={index}
102
+ type='radio'
103
+ name={id}
104
+ value={starValue}
105
+ checked={value === starValue}
106
+ onChange={_onChange}
107
+ onFocus={handleFocus}
108
+ onBlur={handleBlur}
109
+ className={`mask ${maskClass} ${getColorClass(index)}`}
110
+ disabled={disabled || readonly}
111
+ required={required}
112
+ autoFocus={autofocus && index === 0}
113
+ aria-label={`${starValue} ${shape === 'heart' ? 'heart' : 'star'}${starValue === 1 ? '' : 's'}`}
114
+ />
115
+ );
116
+ })}
117
+ </div>
118
+ </div>
119
+ );
120
+ }
@@ -0,0 +1,2 @@
1
+ export { default } from './RatingWidget';
2
+ export * from './RatingWidget';
@@ -0,0 +1,161 @@
1
+ import { FocusEvent, useCallback } from 'react';
2
+ import {
3
+ enumOptionsIndexForValue,
4
+ enumOptionsValueForIndex,
5
+ FormContextType,
6
+ RJSFSchema,
7
+ StrictRJSFSchema,
8
+ WidgetProps,
9
+ } from '@rjsf/utils';
10
+
11
+ /** The `SelectWidget` component renders a select input with DaisyUI styling
12
+ *
13
+ * Features:
14
+ * - Supports both single and multiple selection
15
+ * - Handles enumerated objects and primitive values
16
+ * - Uses DaisyUI select styling with proper width
17
+ * - Supports required, disabled, and readonly states
18
+ * - Manages focus and blur events for accessibility
19
+ * - Provides placeholder option when needed
20
+ *
21
+ * @param props - The `WidgetProps` for this component
22
+ */
23
+ export default function SelectWidget<
24
+ T = any,
25
+ S extends StrictRJSFSchema = RJSFSchema,
26
+ F extends FormContextType = any,
27
+ >({
28
+ schema,
29
+ id,
30
+ options,
31
+ label,
32
+ disabled,
33
+ placeholder,
34
+ readonly,
35
+ value,
36
+ multiple,
37
+ onChange,
38
+ onBlur,
39
+ onFocus,
40
+ }: WidgetProps<T, S, F>) {
41
+ const { enumOptions, emptyValue: optEmptyVal } = options;
42
+ multiple = typeof multiple === 'undefined' ? false : !!multiple;
43
+
44
+ const getDisplayValue = (val: any) => {
45
+ if (!val) {
46
+ return '';
47
+ }
48
+ if (typeof val === 'object') {
49
+ if (val.name) {
50
+ return val.name;
51
+ }
52
+ return val.label || JSON.stringify(val);
53
+ }
54
+ return String(val);
55
+ };
56
+
57
+ const isEnumeratedObject = enumOptions && enumOptions[0]?.value && typeof enumOptions[0].value === 'object';
58
+
59
+ const handleOptionClick = useCallback(
60
+ (event: React.MouseEvent<HTMLLIElement>) => {
61
+ const index = Number(event.currentTarget.dataset.value);
62
+ if (isNaN(index)) {
63
+ return;
64
+ }
65
+
66
+ if (multiple) {
67
+ const currentValue = Array.isArray(value) ? value : [];
68
+ const optionValue = isEnumeratedObject
69
+ ? enumOptions[index].value
70
+ : enumOptionsValueForIndex<S>(String(index), enumOptions, optEmptyVal);
71
+ const newValue = currentValue.includes(optionValue)
72
+ ? currentValue.filter((v) => v !== optionValue)
73
+ : [...currentValue, optionValue];
74
+ onChange(newValue);
75
+ } else {
76
+ onChange(
77
+ isEnumeratedObject
78
+ ? enumOptions[index].value
79
+ : enumOptionsValueForIndex<S>(String(index), enumOptions, optEmptyVal),
80
+ );
81
+ }
82
+ },
83
+ [value, multiple, isEnumeratedObject, enumOptions, optEmptyVal, onChange],
84
+ );
85
+
86
+ const _onBlur = useCallback(
87
+ ({ target }: FocusEvent<HTMLDivElement>) => {
88
+ const dataValue = target?.getAttribute('data-value');
89
+ if (dataValue !== null) {
90
+ onBlur(id, enumOptionsValueForIndex<S>(dataValue, enumOptions, optEmptyVal));
91
+ }
92
+ },
93
+ [onBlur, id, enumOptions, optEmptyVal],
94
+ );
95
+
96
+ const _onFocus = useCallback(
97
+ ({ target }: FocusEvent<HTMLDivElement>) => {
98
+ const dataValue = target?.getAttribute('data-value');
99
+ if (dataValue !== null) {
100
+ onFocus(id, enumOptionsValueForIndex<S>(dataValue, enumOptions, optEmptyVal));
101
+ }
102
+ },
103
+ [onFocus, id, enumOptions, optEmptyVal],
104
+ );
105
+
106
+ const selectedIndexes = enumOptionsIndexForValue<S>(value, enumOptions, multiple);
107
+ const selectedValues = Array.isArray(selectedIndexes) ? selectedIndexes : [selectedIndexes];
108
+
109
+ const optionsList =
110
+ enumOptions ||
111
+ (Array.isArray(schema.examples) ? schema.examples.map((example) => ({ value: example, label: example })) : []);
112
+
113
+ return (
114
+ <div className='form-control w-full'>
115
+ <div className='dropdown w-full'>
116
+ <div
117
+ tabIndex={0}
118
+ role='button'
119
+ className={`btn btn-outline w-full text-left flex justify-between items-center ${
120
+ disabled || readonly ? 'btn-disabled' : ''
121
+ }`}
122
+ onBlur={_onBlur}
123
+ onFocus={_onFocus}
124
+ >
125
+ <span className='truncate'>
126
+ {selectedValues.length > 0
127
+ ? selectedValues.map((index) => optionsList[Number(index)]?.label).join(', ')
128
+ : placeholder || label || 'Select...'}
129
+ </span>
130
+ <span className='ml-2'>▼</span>
131
+ </div>
132
+ <ul className='dropdown-content z-[1] bg-base-100 w-full max-h-60 overflow-auto rounded-box shadow-lg'>
133
+ {optionsList.map(({ label }, i) => (
134
+ <li
135
+ key={i}
136
+ role='button'
137
+ tabIndex={0}
138
+ className={`px-4 py-2 hover:bg-base-200 cursor-pointer ${
139
+ selectedValues.includes(String(i)) ? 'bg-primary/10' : ''
140
+ }`}
141
+ onClick={handleOptionClick}
142
+ data-value={i}
143
+ >
144
+ <div className='flex items-center gap-2'>
145
+ {multiple && (
146
+ <input
147
+ type='checkbox'
148
+ className='checkbox checkbox-sm'
149
+ checked={selectedValues.includes(String(i))}
150
+ readOnly
151
+ />
152
+ )}
153
+ <span>{isEnumeratedObject ? label : getDisplayValue(label)}</span>
154
+ </div>
155
+ </li>
156
+ ))}
157
+ </ul>
158
+ </div>
159
+ </div>
160
+ );
161
+ }
@@ -0,0 +1,2 @@
1
+ export { default } from './SelectWidget';
2
+ export * from './SelectWidget';
@@ -0,0 +1,77 @@
1
+ import { FocusEvent, useCallback } from 'react';
2
+ import { WidgetProps, StrictRJSFSchema, RJSFSchema, FormContextType } from '@rjsf/utils';
3
+
4
+ /** The `TextareaWidget` component renders a multi-line text input with DaisyUI styling
5
+ *
6
+ * Features:
7
+ * - Handles multi-line text input with proper styling
8
+ * - Supports required, disabled, and readonly states
9
+ * - Manages focus and blur events for accessibility
10
+ * - Uses DaisyUI's textarea component for consistent styling
11
+ *
12
+ * @param props - The `WidgetProps` for this component
13
+ */
14
+ export default function TextareaWidget<
15
+ T = any,
16
+ S extends StrictRJSFSchema = RJSFSchema,
17
+ F extends FormContextType = any,
18
+ >(props: WidgetProps<T, S, F>) {
19
+ const { id, value, required, disabled, readonly, onChange, onFocus, onBlur, options } = props;
20
+
21
+ /** Handle focus events
22
+ *
23
+ * @param event - The focus event
24
+ */
25
+ const handleFocus = useCallback(
26
+ (event: FocusEvent<HTMLTextAreaElement>) => {
27
+ if (onFocus) {
28
+ onFocus(id, event.target.value);
29
+ }
30
+ },
31
+ [onFocus, id],
32
+ );
33
+
34
+ /** Handle blur events
35
+ *
36
+ * @param event - The blur event
37
+ */
38
+ const handleBlur = useCallback(
39
+ (event: FocusEvent<HTMLTextAreaElement>) => {
40
+ if (onBlur) {
41
+ onBlur(id, event.target.value);
42
+ }
43
+ },
44
+ [onBlur, id],
45
+ );
46
+
47
+ /** Handle change events
48
+ *
49
+ * @param event - The change event
50
+ */
51
+ const handleChange = useCallback(
52
+ (event: React.ChangeEvent<HTMLTextAreaElement>) => {
53
+ onChange(event.target.value);
54
+ },
55
+ [onChange],
56
+ );
57
+
58
+ // Extract rows and other textarea-specific props from options
59
+ const rows = options?.rows || 5;
60
+
61
+ return (
62
+ <div className='form-control'>
63
+ <textarea
64
+ id={id}
65
+ value={value || ''}
66
+ required={required}
67
+ disabled={disabled || readonly}
68
+ readOnly={readonly}
69
+ rows={rows}
70
+ onChange={handleChange}
71
+ onFocus={handleFocus}
72
+ onBlur={handleBlur}
73
+ className='textarea textarea-bordered w-full'
74
+ />
75
+ </div>
76
+ );
77
+ }
@@ -0,0 +1,2 @@
1
+ export { default } from './TextareaWidget';
2
+ export * from './TextareaWidget';
@@ -0,0 +1,72 @@
1
+ import { FocusEvent, useCallback } from 'react';
2
+ import { WidgetProps, StrictRJSFSchema, RJSFSchema, FormContextType } from '@rjsf/utils';
3
+
4
+ /** The `TimeWidget` component renders a time input with DaisyUI styling
5
+ *
6
+ * Features:
7
+ * - Provides a time picker with hours and minutes
8
+ * - Handles required, disabled, and readonly states
9
+ * - Manages focus and blur events for accessibility
10
+ * - Uses DaisyUI's input styling with proper width
11
+ *
12
+ * @param props - The `WidgetProps` for this component
13
+ */
14
+ export default function TimeWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(
15
+ props: WidgetProps<T, S, F>,
16
+ ) {
17
+ const { id, value, onChange, onFocus, onBlur, required, disabled, readonly } = props;
18
+
19
+ /** Handle focus events
20
+ *
21
+ * @param event - The focus event
22
+ */
23
+ const handleFocus = useCallback(
24
+ (event: FocusEvent<HTMLInputElement>) => {
25
+ if (onFocus) {
26
+ onFocus(id, event.target.value);
27
+ }
28
+ },
29
+ [onFocus, id],
30
+ );
31
+
32
+ /** Handle blur events
33
+ *
34
+ * @param event - The blur event
35
+ */
36
+ const handleBlur = useCallback(
37
+ (event: FocusEvent<HTMLInputElement>) => {
38
+ if (onBlur) {
39
+ onBlur(id, event.target.value);
40
+ }
41
+ },
42
+ [onBlur, id],
43
+ );
44
+
45
+ /** Handle change events
46
+ *
47
+ * @param event - The change event
48
+ */
49
+ const handleChange = useCallback(
50
+ (event: React.ChangeEvent<HTMLInputElement>) => {
51
+ onChange(event.target.value);
52
+ },
53
+ [onChange],
54
+ );
55
+
56
+ return (
57
+ <div className='form-control'>
58
+ <input
59
+ type='time'
60
+ id={id}
61
+ className='input input-bordered w-full'
62
+ value={value || ''}
63
+ required={required}
64
+ disabled={disabled || readonly}
65
+ readOnly={readonly}
66
+ onChange={handleChange}
67
+ onFocus={handleFocus}
68
+ onBlur={handleBlur}
69
+ />
70
+ </div>
71
+ );
72
+ }
@@ -0,0 +1,2 @@
1
+ export { default } from './TimeWidget';
2
+ export * from './TimeWidget';
@@ -0,0 +1,70 @@
1
+ import { ChangeEvent, useCallback } from 'react';
2
+ import { FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';
3
+
4
+ /** The `ToggleWidget` component renders a toggle switch input with DaisyUI styling
5
+ *
6
+ * Features:
7
+ * - Provides a visual toggle switch rather than a standard checkbox
8
+ * - Supports different sizes through options (sm, md, lg)
9
+ * - Handles required, disabled, and readonly states
10
+ * - Manages focus and blur events for accessibility
11
+ * - Includes an optional label from options
12
+ *
13
+ * @param props - The `WidgetProps` for this component
14
+ */
15
+ export default function ToggleWidget<
16
+ T = any,
17
+ S extends StrictRJSFSchema = RJSFSchema,
18
+ F extends FormContextType = any,
19
+ >({ id, value, required, disabled, readonly, autofocus, onChange, onFocus, onBlur, options }: WidgetProps<T, S, F>) {
20
+ /** Handle change events from the toggle input
21
+ *
22
+ * @param event - The change event
23
+ */
24
+ const _onChange = useCallback(
25
+ ({ target: { checked } }: ChangeEvent<HTMLInputElement>) => onChange(checked),
26
+ [onChange],
27
+ );
28
+
29
+ /** Handle focus events
30
+ */
31
+ const handleFocus = useCallback(() => {
32
+ if (onFocus) {
33
+ onFocus(id, value);
34
+ }
35
+ }, [onFocus, id, value]);
36
+
37
+ /** Handle blur events
38
+ */
39
+ const handleBlur = useCallback(() => {
40
+ if (onBlur) {
41
+ onBlur(id, value);
42
+ }
43
+ }, [onBlur, id, value]);
44
+
45
+ // Get size from options or use default "md"
46
+ const { size = 'md' } = options;
47
+
48
+ // Only add size class if it's not the default size
49
+ const sizeClass = size !== 'md' ? `toggle-${size}` : '';
50
+
51
+ return (
52
+ <div className='form-control'>
53
+ <label className='cursor-pointer label my-auto'>
54
+ <input
55
+ type='checkbox'
56
+ id={id}
57
+ checked={value}
58
+ required={required}
59
+ disabled={disabled || readonly}
60
+ autoFocus={autofocus}
61
+ onChange={_onChange}
62
+ onFocus={handleFocus}
63
+ onBlur={handleBlur}
64
+ className={`toggle ${sizeClass}`}
65
+ />
66
+ <span className='label-text'>{options.label}</span>
67
+ </label>
68
+ </div>
69
+ );
70
+ }
@@ -0,0 +1,2 @@
1
+ export { default } from './ToggleWidget';
2
+ export * from './ToggleWidget';
@@ -0,0 +1,58 @@
1
+ import { FormContextType, RegistryWidgetsType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';
2
+
3
+ import AltDateTimeWidget from './AltDateTimeWidget/AltDateTimeWidget';
4
+ import AltDateWidget from './AltDateWidget/AltDateWidget';
5
+ import CheckboxWidget from './CheckboxWidget/CheckboxWidget';
6
+ import CheckboxesWidget from './CheckboxesWidget/CheckboxesWidget';
7
+ import DateTimeWidget from './DateTimeWidget/DateTimeWidget';
8
+ import DateWidget from './DateWidget/DateWidget';
9
+ import FileWidget from './FileWidget/FileWidget';
10
+ import RadioWidget from './RadioWidget/RadioWidget';
11
+ import RangeWidget from './RangeWidget/RangeWidget';
12
+ import RatingWidget from './RatingWidget/RatingWidget';
13
+ import SelectWidget from './SelectWidget/SelectWidget';
14
+ import TextareaWidget from './TextareaWidget/TextareaWidget';
15
+ import TimeWidget from './TimeWidget/TimeWidget';
16
+ import ToggleWidget from './ToggleWidget/ToggleWidget';
17
+
18
+ export {
19
+ AltDateTimeWidget,
20
+ AltDateWidget,
21
+ CheckboxesWidget,
22
+ CheckboxWidget,
23
+ DateTimeWidget,
24
+ DateWidget,
25
+ FileWidget,
26
+ RadioWidget,
27
+ RangeWidget,
28
+ RatingWidget,
29
+ SelectWidget,
30
+ TextareaWidget,
31
+ TimeWidget,
32
+ ToggleWidget,
33
+ };
34
+
35
+ export function generateWidgets<
36
+ T = any,
37
+ S extends StrictRJSFSchema = RJSFSchema,
38
+ F extends FormContextType = any,
39
+ >(): RegistryWidgetsType<T, S, F> {
40
+ return {
41
+ AltDateTimeWidget,
42
+ AltDateWidget,
43
+ CheckboxesWidget,
44
+ CheckboxWidget,
45
+ DateTimeWidget,
46
+ DateWidget,
47
+ FileWidget,
48
+ RadioWidget,
49
+ RangeWidget,
50
+ RatingWidget,
51
+ SelectWidget,
52
+ TextareaWidget,
53
+ TimeWidget,
54
+ toggle: ToggleWidget,
55
+ };
56
+ }
57
+
58
+ export default generateWidgets;
@@ -0,0 +1,2 @@
1
+ export { default } from './Widgets';
2
+ export * from './Widgets';