@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,93 @@
1
+ import { createContext, ReactNode, useCallback, useContext, useState } from 'react';
2
+ import { getDefaultRegistry, ThemeProps } from '@rjsf/core';
3
+ import { FormContextType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';
4
+
5
+ import { generateTemplates } from '../templates/Templates';
6
+ import { generateWidgets } from '../widgets/Widgets';
7
+
8
+ /** Generates a complete theme configuration for RJSF with DaisyUI styling
9
+ *
10
+ * Combines templates and widgets with default fields to create a complete theme
11
+ * that can be used with react-jsonschema-form.
12
+ *
13
+ * @returns A ThemeProps object containing all necessary components for the theme
14
+ */
15
+ export function generateTheme<
16
+ T = any,
17
+ S extends StrictRJSFSchema = RJSFSchema,
18
+ F extends FormContextType = any,
19
+ >(): ThemeProps<T, S, F> {
20
+ const { fields } = getDefaultRegistry<T, S, F>();
21
+ const generatedWidgets = generateWidgets<T, S, F>();
22
+ const templates = generateTemplates<T, S, F>();
23
+
24
+ return {
25
+ templates,
26
+ widgets: {
27
+ ...generatedWidgets,
28
+ boolean: generatedWidgets.toggle,
29
+ },
30
+ fields,
31
+ };
32
+ }
33
+
34
+ /** Default theme export with pre-generated theme components */
35
+ const Theme = generateTheme();
36
+
37
+ export default Theme;
38
+
39
+ /** Interface for the theme context that manages and provides the current DaisyUI theme */
40
+ interface ThemeContextType {
41
+ /** Current DaisyUI theme name */
42
+ theme: string;
43
+ /** Function to update the current theme */
44
+ setTheme: (theme: string) => void;
45
+ }
46
+
47
+ /** React context for sharing theme information throughout the application */
48
+ export const ThemeContext = createContext<ThemeContextType>({
49
+ theme: 'night',
50
+ setTheme: () => {},
51
+ });
52
+
53
+ /** Props for the ThemeProvider component */
54
+ interface ThemeProviderProps {
55
+ /** React components to be wrapped by the provider */
56
+ children: ReactNode;
57
+ }
58
+
59
+ /** ThemeProvider component that manages DaisyUI theme state and persistence
60
+ *
61
+ * This provider:
62
+ * - Loads the theme from localStorage
63
+ * - Provides theme state via context
64
+ * - Persists theme changes to localStorage
65
+ *
66
+ * @param props - The props for the component
67
+ */
68
+ export function ThemeProvider({ children }: ThemeProviderProps) {
69
+ const [theme, setTheme] = useState(() => {
70
+ try {
71
+ return localStorage.getItem('daisyui-theme') || 'cupcake';
72
+ } catch {
73
+ return 'cupcake';
74
+ }
75
+ });
76
+
77
+ const handleSetTheme = useCallback((newTheme: string) => {
78
+ try {
79
+ localStorage.setItem('daisyui-theme', newTheme);
80
+ setTheme(newTheme);
81
+ } catch {
82
+ // Ignore localStorage errors
83
+ }
84
+ }, []);
85
+
86
+ return <ThemeContext.Provider value={{ theme, setTheme: handleSetTheme }}>{children}</ThemeContext.Provider>;
87
+ }
88
+
89
+ /** Custom hook for accessing the current theme and theme setter function
90
+ *
91
+ * @returns The current theme context with theme name and setter function
92
+ */
93
+ export const useTheme = () => useContext(ThemeContext);
@@ -0,0 +1,2 @@
1
+ export { default } from './Theme';
2
+ export * from './Theme';
@@ -0,0 +1,26 @@
1
+ {
2
+ "extends": "../../../tsconfig.base.json",
3
+ "include": [
4
+ "./"
5
+ ],
6
+ "compilerOptions": {
7
+ "rootDir": "./",
8
+ "outDir": "../lib",
9
+ "baseUrl": "../",
10
+ "jsx": "react-jsx",
11
+ "moduleResolution": "node",
12
+ "allowSyntheticDefaultImports": true,
13
+ "esModuleInterop": true
14
+ },
15
+ "references": [
16
+ {
17
+ "path": "../../core"
18
+ },
19
+ {
20
+ "path": "../../utils"
21
+ },
22
+ {
23
+ "path": "../../validator-ajv8"
24
+ }
25
+ ]
26
+ }
@@ -0,0 +1,5 @@
1
+ export interface DaisyProps {
2
+ theme?: string;
3
+ className?: string;
4
+ style?: React.CSSProperties;
5
+ }
package/src/types.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ declare module '*.css?inline' {
2
+ const content: string;
3
+ export default content;
4
+ }
package/src/utils.ts ADDED
@@ -0,0 +1,18 @@
1
+ import { UiSchema } from '@rjsf/utils';
2
+
3
+ import { DaisyProps } from './types/DaisyProps';
4
+
5
+ export interface DaisyUiSchema extends Omit<UiSchema, 'ui:options'> {
6
+ 'ui:options'?: DaisyUiOptions;
7
+ }
8
+
9
+ type DaisyUiOptions = UiSchema['ui:options'] & { daisy?: DaisyProps };
10
+
11
+ interface GetDaisyProps {
12
+ uiSchema?: DaisyUiSchema;
13
+ }
14
+
15
+ export function getDaisy({ uiSchema = {} }: GetDaisyProps): DaisyProps {
16
+ const daisyProps = (uiSchema['ui:options'] && uiSchema['ui:options'].daisy) || {};
17
+ return daisyProps;
18
+ }
@@ -0,0 +1,14 @@
1
+ import { FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';
2
+
3
+ /** The `AltDateTimeWidget` is an alternative widget for rendering datetime properties.
4
+ * It uses the AltDateWidget for rendering, with the `time` prop set to true by default.
5
+ */
6
+ function AltDateTimeWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({
7
+ time = true,
8
+ ...props
9
+ }: WidgetProps<T, S, F>) {
10
+ const { AltDateWidget } = props.registry.widgets;
11
+ return <AltDateWidget time={time} {...props} />;
12
+ }
13
+
14
+ export default AltDateTimeWidget;
@@ -0,0 +1,2 @@
1
+ export { default } from './AltDateTimeWidget';
2
+ export * from './AltDateTimeWidget';
@@ -0,0 +1,328 @@
1
+ import { MouseEvent, useCallback, useEffect, useReducer, useState } from 'react';
2
+ import {
3
+ ariaDescribedByIds,
4
+ FormContextType,
5
+ RJSFSchema,
6
+ StrictRJSFSchema,
7
+ WidgetProps,
8
+ TranslatableString,
9
+ parseDateString,
10
+ toDateString,
11
+ dateRangeOptions,
12
+ DateObject as RJSFDateObject,
13
+ Registry,
14
+ } from '@rjsf/utils';
15
+
16
+ /** Interface for date object with optional string fields for each date/time component */
17
+ interface DateObject {
18
+ year?: string;
19
+ month?: string;
20
+ day?: string;
21
+ hour?: string;
22
+ minute?: string;
23
+ second?: string;
24
+ }
25
+
26
+ /** Determines if the date object has all required fields to form a valid date
27
+ *
28
+ * @param state - The date object to check
29
+ * @param time - Whether to check time fields as well
30
+ * @returns True if all required fields are present
31
+ */
32
+ function readyForChange(state: DateObject, time = false) {
33
+ return state.year && state.month && state.day && (!time || (state.hour && state.minute && state.second));
34
+ }
35
+
36
+ /** Supported date element display formats */
37
+ type DateElementFormat = 'YMD' | 'MDY' | 'DMY';
38
+
39
+ /** Gets configuration for date elements based on format and ranges
40
+ *
41
+ * @param state - The current date object state
42
+ * @param time - Whether to include time elements
43
+ * @param yearsRange - Optional range of years to display
44
+ * @param format - Format for ordering date elements (year, month, day)
45
+ * @returns Array of element properties for rendering
46
+ */
47
+ function getDateElementProps(
48
+ state: DateObject,
49
+ time: boolean,
50
+ yearsRange?: [number, number],
51
+ format: DateElementFormat = 'YMD',
52
+ ) {
53
+ const rangeOptions = yearsRange ?? [1900, new Date().getFullYear() + 2];
54
+ // Define the order based on the format
55
+ const formats: Record<DateElementFormat, Array<keyof DateObject>> = {
56
+ YMD: ['year', 'month', 'day'],
57
+ MDY: ['month', 'day', 'year'],
58
+ DMY: ['day', 'month', 'year'],
59
+ };
60
+
61
+ // Get the elements in the specified order
62
+ const dateElements = formats[format].map((key) => ({
63
+ type: key,
64
+ value: state[key],
65
+ range:
66
+ key === 'year'
67
+ ? (rangeOptions as [number, number])
68
+ : key === 'month'
69
+ ? ([1, 12] as [number, number])
70
+ : key === 'day'
71
+ ? ([1, 31] as [number, number])
72
+ : ([0, 59] as [number, number]),
73
+ }));
74
+
75
+ // Add time elements if needed
76
+ if (time) {
77
+ dateElements.push(
78
+ { type: 'hour', value: state.hour, range: [0, 23] as [number, number] },
79
+ { type: 'minute', value: state.minute, range: [0, 59] as [number, number] },
80
+ { type: 'second', value: state.second, range: [0, 59] as [number, number] },
81
+ );
82
+ }
83
+
84
+ return dateElements;
85
+ }
86
+
87
+ /** Props for the DateElement component */
88
+ interface DateElementProps<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any> {
89
+ /** Type of date element (year, month, day, etc.) */
90
+ type: string;
91
+ /** Min/max range for the element values */
92
+ range: [number, number];
93
+ /** Current value */
94
+ value?: string;
95
+ /** Function to call when value is selected */
96
+ select: (property: keyof DateObject, value: any) => void;
97
+ /** Base ID for the form element */
98
+ rootId: string;
99
+ /** Name attribute for the form element */
100
+ name: string;
101
+ /** Whether the input is disabled */
102
+ disabled?: boolean;
103
+ /** Whether the input is readonly */
104
+ readonly?: boolean;
105
+ /** Whether the input should autofocus */
106
+ autofocus?: boolean;
107
+ /** Registry containing widgets and templates */
108
+ registry: Registry<T, S, F>;
109
+ /** Function called when input loses focus */
110
+ onBlur: (id: string, value: string) => void;
111
+ /** Function called when input gains focus */
112
+ onFocus: (id: string, value: string) => void;
113
+ }
114
+
115
+ /** Component for rendering individual date/time elements (year, month, day, etc.)
116
+ *
117
+ * Renders a select input for each date component with appropriate options.
118
+ *
119
+ * @param props - The props for the component
120
+ */
121
+ function DateElement<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({
122
+ type,
123
+ range,
124
+ value,
125
+ select,
126
+ rootId,
127
+ name,
128
+ disabled,
129
+ readonly,
130
+ autofocus,
131
+ registry,
132
+ onBlur,
133
+ onFocus,
134
+ }: DateElementProps<T, S, F>) {
135
+ const id = `${rootId}_${type}`;
136
+ const { SelectWidget } = registry.widgets as Registry<T, S, F>['widgets'];
137
+
138
+ // Memoize the onChange handler
139
+ const handleChange = useCallback(
140
+ (value: any) => {
141
+ select(type as keyof DateObject, value);
142
+ },
143
+ [select, type],
144
+ );
145
+
146
+ return (
147
+ <SelectWidget
148
+ schema={{ type: 'integer' } as S}
149
+ id={id}
150
+ name={name}
151
+ className='select select-bordered select-sm w-full'
152
+ options={{ enumOptions: dateRangeOptions<S>(range[0], range[1]) }}
153
+ placeholder={type}
154
+ value={value}
155
+ disabled={disabled}
156
+ readonly={readonly}
157
+ autofocus={autofocus}
158
+ onChange={handleChange}
159
+ onBlur={onBlur}
160
+ onFocus={onFocus}
161
+ registry={registry}
162
+ label=''
163
+ aria-describedby={ariaDescribedByIds<T>(rootId)}
164
+ required={false}
165
+ />
166
+ );
167
+ }
168
+
169
+ /** Converts our DateObject to the expected format for toDateString
170
+ *
171
+ * @param dateObj - The internal DateObject
172
+ * @returns A properly formatted object for the utils toDateString function
173
+ */
174
+ function convertToRJSFDateObject(dateObj: DateObject): RJSFDateObject {
175
+ return {
176
+ year: dateObj.year ? parseInt(dateObj.year) : 0,
177
+ month: dateObj.month ? parseInt(dateObj.month) : 0,
178
+ day: dateObj.day ? parseInt(dateObj.day) : 0,
179
+ hour: dateObj.hour ? parseInt(dateObj.hour) : 0,
180
+ minute: dateObj.minute ? parseInt(dateObj.minute) : 0,
181
+ second: dateObj.second ? parseInt(dateObj.second) : 0,
182
+ };
183
+ }
184
+
185
+ /** The `AltDateWidget` component provides an alternative date/time input
186
+ * with individual fields for year, month, day, and optionally time components.
187
+ *
188
+ * Features:
189
+ * - Supports different date formats (YMD, MDY, DMY)
190
+ * - Optional time selection (hours, minutes, seconds)
191
+ * - "Set to now" and "Clear" buttons
192
+ * - Configurable year ranges
193
+ * - Accessible controls with proper labeling
194
+ * - DaisyUI styling for all elements
195
+ *
196
+ * @param props - The `WidgetProps` for this component
197
+ */
198
+ export default function AltDateWidget<
199
+ T = any,
200
+ S extends StrictRJSFSchema = RJSFSchema,
201
+ F extends FormContextType = any,
202
+ >({
203
+ time = false,
204
+ disabled = false,
205
+ readonly = false,
206
+ autofocus = false,
207
+ options = {},
208
+ id,
209
+ name,
210
+ registry,
211
+ onBlur,
212
+ onFocus,
213
+ onChange,
214
+ value,
215
+ }: WidgetProps<T, S, F>) {
216
+ const { translateString } = registry;
217
+ const [lastValue, setLastValue] = useState(value);
218
+
219
+ // Use a type-safe version of parseDateString result
220
+ const initialState = parseDateString(value, time) as unknown as DateObject;
221
+
222
+ // Create a reducer for date objects
223
+ const dateReducer = (state: DateObject, action: Partial<DateObject>): DateObject => {
224
+ return { ...state, ...action };
225
+ };
226
+
227
+ const [state, setState] = useReducer(dateReducer, initialState);
228
+
229
+ // Handle changes in props or state
230
+ useEffect(() => {
231
+ const rjsfDateObj = convertToRJSFDateObject(state);
232
+ const stateValue = toDateString(rjsfDateObj, time);
233
+ if (readyForChange(state, time) && stateValue !== value) {
234
+ // Valid date changed via the selects
235
+ onChange(stateValue);
236
+ } else if (lastValue !== value) {
237
+ // New value from props
238
+ setLastValue(value);
239
+ setState(parseDateString(value, time) as unknown as DateObject);
240
+ }
241
+ }, [time, value, onChange, state, lastValue]);
242
+
243
+ // Handle individual field changes
244
+ const handleChange = useCallback((property: keyof DateObject, value: string) => {
245
+ setState({ [property]: value });
246
+ }, []);
247
+
248
+ // Set current date
249
+ const handleSetNow = useCallback(
250
+ (event: MouseEvent<HTMLButtonElement>) => {
251
+ event.preventDefault();
252
+ if (disabled || readonly) {
253
+ return;
254
+ }
255
+ const nextState = parseDateString(new Date().toJSON(), time) as unknown as DateObject;
256
+ const rjsfDateObj = convertToRJSFDateObject(nextState);
257
+ onChange(toDateString(rjsfDateObj, time));
258
+ },
259
+ [disabled, readonly, time, onChange],
260
+ );
261
+
262
+ // Clear the date
263
+ const handleClear = useCallback(
264
+ (event: MouseEvent<HTMLButtonElement>) => {
265
+ event.preventDefault();
266
+ if (disabled || readonly) {
267
+ return;
268
+ }
269
+ onChange(undefined);
270
+ },
271
+ [disabled, readonly, onChange],
272
+ );
273
+
274
+ return (
275
+ <div className='space-y-3'>
276
+ <div className='grid grid-cols-3 gap-2'>
277
+ {getDateElementProps(
278
+ state,
279
+ time,
280
+ options.yearsRange as [number, number] | undefined,
281
+ options.format as DateElementFormat | undefined,
282
+ ).map((elemProps, i) => (
283
+ <div key={i} className='form-control'>
284
+ <label className='label'>
285
+ <span className='label-text capitalize'>{elemProps.type}</span>
286
+ </label>
287
+ <DateElement
288
+ rootId={id}
289
+ name={name}
290
+ select={handleChange}
291
+ type={elemProps.type}
292
+ range={elemProps.range}
293
+ value={elemProps.value}
294
+ disabled={disabled}
295
+ readonly={readonly}
296
+ registry={registry}
297
+ onBlur={onBlur}
298
+ onFocus={onFocus}
299
+ autofocus={autofocus && i === 0}
300
+ />
301
+ </div>
302
+ ))}
303
+ </div>
304
+ <div className='flex justify-start space-x-2'>
305
+ {(options.hideNowButton !== undefined ? !options.hideNowButton : true) && (
306
+ <button
307
+ type='button'
308
+ className='btn btn-sm btn-primary'
309
+ onClick={handleSetNow}
310
+ disabled={disabled || readonly}
311
+ >
312
+ {translateString(TranslatableString.NowLabel)}
313
+ </button>
314
+ )}
315
+ {(options.hideClearButton !== undefined ? !options.hideClearButton : true) && (
316
+ <button
317
+ type='button'
318
+ className='btn btn-sm btn-secondary'
319
+ onClick={handleClear}
320
+ disabled={disabled || readonly}
321
+ >
322
+ {translateString(TranslatableString.ClearLabel)}
323
+ </button>
324
+ )}
325
+ </div>
326
+ </div>
327
+ );
328
+ }
@@ -0,0 +1,2 @@
1
+ export { default } from './AltDateWidget';
2
+ export * from './AltDateWidget';
@@ -0,0 +1,108 @@
1
+ import { useCallback } from 'react';
2
+ import { WidgetProps, StrictRJSFSchema, RJSFSchema, FormContextType, getTemplate, descriptionId } from '@rjsf/utils';
3
+
4
+ /** The `CheckboxWidget` component renders a single checkbox input with DaisyUI styling.
5
+ *
6
+ * Features:
7
+ * - Simple boolean input with DaisyUI checkbox styling
8
+ * - Handles required, disabled, and readonly states
9
+ * - No label rendering (handled by the parent FieldTemplate)
10
+ * - Proper onChange handling for boolean values
11
+ * - Manages focus and blur events for accessibility
12
+ *
13
+ * @param props - The `WidgetProps` for this component
14
+ */
15
+ export default function CheckboxWidget<
16
+ T = any,
17
+ S extends StrictRJSFSchema = RJSFSchema,
18
+ F extends FormContextType = any,
19
+ >(props: WidgetProps<T, S, F>) {
20
+ const {
21
+ id,
22
+ value,
23
+ required,
24
+ disabled,
25
+ hideLabel,
26
+ label,
27
+ readonly,
28
+ registry,
29
+ options,
30
+ schema,
31
+ uiSchema,
32
+ onChange,
33
+ onFocus,
34
+ onBlur,
35
+ } = props;
36
+ const DescriptionFieldTemplate = getTemplate<'DescriptionFieldTemplate', T, S, F>(
37
+ 'DescriptionFieldTemplate',
38
+ registry,
39
+ options,
40
+ );
41
+ const description = options.description || schema.description;
42
+
43
+ /** Handle focus events
44
+ */
45
+ const handleFocus = useCallback(() => {
46
+ if (onFocus) {
47
+ onFocus(id, value);
48
+ }
49
+ }, [onFocus, id, value]);
50
+
51
+ /** Handle blur events
52
+ */
53
+ const handleBlur = useCallback(() => {
54
+ if (onBlur) {
55
+ onBlur(id, value);
56
+ }
57
+ }, [onBlur, id, value]);
58
+
59
+ /** Handle change events
60
+ *
61
+ * @param event - The change event
62
+ */
63
+ const handleChange = useCallback(
64
+ (event: React.ChangeEvent<HTMLInputElement>) => {
65
+ onChange(event.target.checked);
66
+ },
67
+ [onChange],
68
+ );
69
+
70
+ const input = (
71
+ <input
72
+ type='checkbox'
73
+ id={id}
74
+ checked={value}
75
+ required={required}
76
+ disabled={disabled || readonly}
77
+ onChange={handleChange}
78
+ onFocus={handleFocus}
79
+ onBlur={handleBlur}
80
+ className='checkbox'
81
+ />
82
+ );
83
+
84
+ return (
85
+ <div className='form-control'>
86
+ {!hideLabel && description && (
87
+ <DescriptionFieldTemplate
88
+ id={descriptionId<T>(id)}
89
+ description={description}
90
+ schema={schema}
91
+ uiSchema={uiSchema}
92
+ registry={registry}
93
+ />
94
+ )}
95
+ {hideLabel || !label ? (
96
+ input
97
+ ) : (
98
+ <label className='label cursor-pointer justify-start'>
99
+ <div className='mr-2'>{input}</div>
100
+ <span className='label-text'>
101
+ {label}
102
+ {required && <span className='text-error ml-1'>*</span>}
103
+ </span>
104
+ </label>
105
+ )}
106
+ </div>
107
+ );
108
+ }
@@ -0,0 +1,2 @@
1
+ export { default } from './CheckboxWidget';
2
+ export * from './CheckboxWidget';