@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,107 @@
1
+ /**
2
+ * __createDaisyUIFrameProvider is used to ensure that DaisyUI styles
3
+ * can be rendered within an iframe without affecting the parent page.
4
+ * Required for using DaisyUI in the playground.
5
+ *
6
+ * We have to define DaisyUIFrameProvider in this library, as opposed to the playground,
7
+ * to ensure consistent styling and proper theme management across frames.
8
+ *
9
+ * This provider:
10
+ * - Injects Tailwind CSS and DaisyUI stylesheets into the iframe
11
+ * - Configures Tailwind with DaisyUI themes
12
+ * - Manages theme persistence through localStorage
13
+ * - Wraps content in a themed container
14
+ *
15
+ * NOTE: This is an internal component only used by @rjsf/playground (no
16
+ * backwards compatibility guarantees!)
17
+ */
18
+
19
+ import { useEffect, ReactNode } from 'react';
20
+
21
+ interface DaisyUIFrameProviderProps {
22
+ children: ReactNode;
23
+ subtheme?: { dataTheme?: string } | null;
24
+ }
25
+
26
+ /** This component has a useEffect with a cleanup function to remove the tailwind stylesheets loads upon unmount so
27
+ * that the styles are removed when the theme in the playground is switched to something else
28
+ *
29
+ * @param props - The component props
30
+ */
31
+ function DaisyUIFrameComponent(props: DaisyUIFrameProviderProps & { document?: Document }) {
32
+ const { children, subtheme = {}, document } = props;
33
+ const theme = (() => {
34
+ try {
35
+ if (subtheme?.dataTheme) {
36
+ localStorage.setItem('daisyui-theme', subtheme.dataTheme);
37
+ return subtheme.dataTheme;
38
+ }
39
+ return localStorage.getItem('daisyui-theme') || 'cupcake';
40
+ } catch {
41
+ return 'cupcake';
42
+ }
43
+ })();
44
+
45
+ useEffect(() => {
46
+ if (document) {
47
+ // Configure Tailwind first to ensure config is available before script loads
48
+ const configScript = document.createElement('script');
49
+ configScript.textContent = `
50
+ window.tailwind = window.tailwind || {};
51
+ window.tailwind.config = {
52
+ daisyui: {
53
+ themes: true,
54
+ },
55
+ future: {
56
+ disableProductionWarning: true
57
+ }
58
+ }
59
+ `;
60
+ document.head.appendChild(configScript);
61
+
62
+ // Add Tailwind
63
+ const tailwindScript = document.createElement('script');
64
+ tailwindScript.src = 'https://unpkg.com/@tailwindcss/browser@4.1.3';
65
+ document.head.appendChild(tailwindScript);
66
+
67
+ // Add DaisyUI CSS
68
+ const daisyLink = document.createElement('link');
69
+ daisyLink.rel = 'stylesheet';
70
+ daisyLink.href = 'https://cdn.jsdelivr.net/npm/daisyui@5.0.20';
71
+ document.head.appendChild(daisyLink);
72
+
73
+ // Add all themes
74
+ const daisyLinkAllThemes = document.createElement('link');
75
+ daisyLinkAllThemes.rel = 'stylesheet';
76
+ daisyLinkAllThemes.href = 'https://cdn.jsdelivr.net/npm/daisyui@5.0.20/themes.css';
77
+ document.head.appendChild(daisyLinkAllThemes);
78
+ return () => {
79
+ configScript.remove();
80
+ tailwindScript.remove();
81
+ daisyLink.remove();
82
+ daisyLinkAllThemes.remove();
83
+ };
84
+ }
85
+ return undefined;
86
+ }, [document]);
87
+
88
+ return (
89
+ <div data-theme={theme} className='daisy-ui-theme'>
90
+ {children}
91
+ </div>
92
+ );
93
+ }
94
+
95
+ /**
96
+ * Creates a DaisyUI frame provider component that can be used within an iframe
97
+ * to properly render DaisyUI styles without affecting the parent document.
98
+ *
99
+ * @param props - The component props
100
+ * @returns A component that sets up DaisyUI within an iframe context
101
+ */
102
+ export const __createDaisyUIFrameProvider = (props: DaisyUIFrameProviderProps) => {
103
+ return function DaisyUIFrame({ document }: { document?: Document }) {
104
+ // Get theme from localStorage or use default
105
+ return <DaisyUIFrameComponent document={document} {...props} />;
106
+ };
107
+ };
@@ -0,0 +1,20 @@
1
+ import { withTheme } from '@rjsf/core';
2
+ import { RJSFSchema, StrictRJSFSchema, FormContextType } from '@rjsf/utils';
3
+
4
+ import { generateTheme } from '../theme/Theme';
5
+
6
+ /**
7
+ * Generate a form with the DaisyUI theme
8
+ */
9
+ export function generateForm<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>() {
10
+ return withTheme(generateTheme<T, S, F>());
11
+ }
12
+
13
+ /**
14
+ * Form component with DaisyUI theme
15
+ */
16
+ const Form = generateForm();
17
+
18
+ export { Form, generateTheme };
19
+
20
+ export default Form;
@@ -0,0 +1,2 @@
1
+ export { default } from './DaisyForm';
2
+ export * from './DaisyForm';
package/src/index.ts ADDED
@@ -0,0 +1,13 @@
1
+ import { withTheme } from '@rjsf/core';
2
+
3
+ import Theme, { ThemeProvider, useTheme } from './theme';
4
+
5
+ export { default as Form } from './DaisyUIForm';
6
+ export { __createDaisyUIFrameProvider } from './DaisyUIFrameProvider';
7
+ export { default as GridTemplate } from './templates/GridTemplate/GridTemplate';
8
+ export { default as Templates } from './templates/Templates';
9
+ export { default as Theme } from './theme';
10
+ export { default as Widgets } from './widgets/Widgets';
11
+ export { ThemeProvider, useTheme };
12
+
13
+ export default withTheme(Theme);
package/src/styles.css ADDED
@@ -0,0 +1,9 @@
1
+ @import "tailwindcss/preflight";
2
+ @import "tailwindcss/utilities";
3
+
4
+ @layer base {
5
+ :root {
6
+ --color-primary: 255 115 179;
7
+ --color-secondary: 111 114 185;
8
+ }
9
+ }
@@ -0,0 +1,19 @@
1
+ import { FormContextType, StrictRJSFSchema, RJSFSchema, ArrayFieldDescriptionProps } from '@rjsf/utils';
2
+
3
+ /** The `ArrayFieldDescriptionTemplate` component renders the description for an array field
4
+ * with DaisyUI styling, displaying it as a small text with accent color.
5
+ *
6
+ * @param props - The `ArrayFieldDescriptionProps` for the component
7
+ */
8
+ export default function ArrayFieldDescriptionTemplate<
9
+ T = any,
10
+ S extends StrictRJSFSchema = RJSFSchema,
11
+ F extends FormContextType = any,
12
+ >(props: ArrayFieldDescriptionProps<T, S, F>) {
13
+ const { description } = props;
14
+ return (
15
+ <div>
16
+ <div className='text-sm text-accent'>{description}</div>
17
+ </div>
18
+ );
19
+ }
@@ -0,0 +1,2 @@
1
+ export { default } from './ArrayFieldDescriptionTemplate';
2
+ export * from './ArrayFieldDescriptionTemplate';
@@ -0,0 +1,89 @@
1
+ import { useMemo } from 'react';
2
+ import {
3
+ FormContextType,
4
+ RJSFSchema,
5
+ StrictRJSFSchema,
6
+ ArrayFieldItemButtonsTemplateType,
7
+ buttonId,
8
+ } from '@rjsf/utils';
9
+
10
+ /** The `ArrayFieldItemButtonsTemplate` component renders the action buttons for an array field item
11
+ * using DaisyUI's join component when multiple buttons are present.
12
+ */
13
+ export default function ArrayFieldItemButtonsTemplate<
14
+ T = any,
15
+ S extends StrictRJSFSchema = RJSFSchema,
16
+ F extends FormContextType = any,
17
+ >(props: ArrayFieldItemButtonsTemplateType<T, S, F>) {
18
+ const {
19
+ disabled,
20
+ hasCopy,
21
+ hasMoveDown,
22
+ hasMoveUp,
23
+ hasRemove,
24
+ idSchema,
25
+ index,
26
+ onCopyIndexClick,
27
+ onDropIndexClick,
28
+ onReorderClick,
29
+ readonly,
30
+ registry,
31
+ uiSchema,
32
+ } = props;
33
+ const { CopyButton, MoveDownButton, MoveUpButton, RemoveButton } = registry.templates.ButtonTemplates;
34
+ const onCopyClick = useMemo(() => onCopyIndexClick(index), [index, onCopyIndexClick]);
35
+ const onRemoveClick = useMemo(() => onDropIndexClick(index), [index, onDropIndexClick]);
36
+ const onArrowUpClick = useMemo(() => onReorderClick(index, index - 1), [index, onReorderClick]);
37
+ const onArrowDownClick = useMemo(() => onReorderClick(index, index + 1), [index, onReorderClick]);
38
+
39
+ const renderMany = [hasMoveUp || hasMoveDown, hasCopy, hasRemove].filter(Boolean).length > 1;
40
+ const btnClass = renderMany ? 'join-item btn btn-sm px-2' : 'btn btn-sm px-2 rounded-sm';
41
+ const removeBtnClass = renderMany ? 'join-item btn btn-sm btn-error px-2' : 'btn btn-sm btn-error px-2 rounded-sm';
42
+
43
+ const buttons = (
44
+ <>
45
+ {(hasMoveUp || hasMoveDown) && (
46
+ <>
47
+ <MoveUpButton
48
+ id={buttonId<T>(idSchema, 'moveUp')}
49
+ className={`rjsf-array-item-move-up ${btnClass}`}
50
+ disabled={disabled || readonly || !hasMoveUp}
51
+ onClick={onArrowUpClick}
52
+ uiSchema={uiSchema}
53
+ registry={registry}
54
+ />
55
+ <MoveDownButton
56
+ id={buttonId<T>(idSchema, 'moveDown')}
57
+ className={`rjsf-array-item-move-down ${btnClass}`}
58
+ disabled={disabled || readonly || !hasMoveDown}
59
+ onClick={onArrowDownClick}
60
+ uiSchema={uiSchema}
61
+ registry={registry}
62
+ />
63
+ </>
64
+ )}
65
+ {hasCopy && (
66
+ <CopyButton
67
+ id={buttonId<T>(idSchema, 'copy')}
68
+ className={`rjsf-array-item-copy ${btnClass}`}
69
+ disabled={disabled || readonly}
70
+ onClick={onCopyClick}
71
+ uiSchema={uiSchema}
72
+ registry={registry}
73
+ />
74
+ )}
75
+ {hasRemove && (
76
+ <RemoveButton
77
+ id={buttonId<T>(idSchema, 'remove')}
78
+ className={`rjsf-array-item-remove ${removeBtnClass}`}
79
+ disabled={disabled || readonly}
80
+ onClick={onRemoveClick}
81
+ uiSchema={uiSchema}
82
+ registry={registry}
83
+ />
84
+ )}
85
+ </>
86
+ );
87
+
88
+ return renderMany ? <div className='join'>{buttons}</div> : buttons;
89
+ }
@@ -0,0 +1,2 @@
1
+ export { default } from './ArrayFieldItemButtonsTemplate';
2
+ export * from './ArrayFieldItemButtonsTemplate';
@@ -0,0 +1,55 @@
1
+ import {
2
+ ArrayFieldItemTemplateType,
3
+ FormContextType,
4
+ getTemplate,
5
+ getUiOptions,
6
+ RJSFSchema,
7
+ StrictRJSFSchema,
8
+ } from '@rjsf/utils';
9
+
10
+ /** The `ArrayFieldItemTemplate` component is the template used to render an item of an array.
11
+ *
12
+ * This DaisyUI implementation:
13
+ * - Uses the fieldset component for proper form grouping
14
+ * - Maintains connected appearance for multiple items
15
+ * - Positions items with z-index to create a stacked effect
16
+ * - Places action buttons in an easily accessible location
17
+ *
18
+ * @param props - The `ArrayFieldItemTemplateType` props for the component with additional properties:
19
+ * @param props.index - The position of this item in the array (optional)
20
+ * @param props.totalItems - The total number of items in the array (optional)
21
+ */
22
+ export default function ArrayFieldItemTemplate<
23
+ T = any,
24
+ S extends StrictRJSFSchema = RJSFSchema,
25
+ F extends FormContextType = any,
26
+ >(props: ArrayFieldItemTemplateType<T, S, F>) {
27
+ const { children, buttonsProps, hasToolbar, registry, uiSchema, index, totalItems } = props;
28
+ const uiOptions = getUiOptions<T, S, F>(uiSchema);
29
+ const ArrayFieldItemButtonsTemplate = getTemplate<'ArrayFieldItemButtonsTemplate', T, S, F>(
30
+ 'ArrayFieldItemButtonsTemplate',
31
+ registry,
32
+ uiOptions,
33
+ );
34
+
35
+ // Different styling for first, middle, and last items to create connected feel
36
+ const isFirstItem = index === 0;
37
+ const isLastItem = index === totalItems - 1;
38
+ const borderRadius = isFirstItem ? 'rounded-t-lg' : isLastItem ? 'rounded-b-lg' : '';
39
+ const marginBottom = isLastItem ? '' : 'mb-[-1px]';
40
+ const zIndex = index === undefined ? '' : 'z-' + (10 - Math.min(index, 9));
41
+
42
+ return (
43
+ <fieldset className={`fieldset bg-base-100 border border-base-300 p-4 ${borderRadius} ${marginBottom} ${zIndex}`}>
44
+ {/* Main content area */}
45
+ {children}
46
+
47
+ {/* Action buttons */}
48
+ {hasToolbar && (
49
+ <div className='flex justify-end mt-2'>
50
+ <ArrayFieldItemButtonsTemplate {...buttonsProps} />
51
+ </div>
52
+ )}
53
+ </fieldset>
54
+ );
55
+ }
@@ -0,0 +1,2 @@
1
+ export { default } from './ArrayFieldItemTemplate';
2
+ export * from './ArrayFieldItemTemplate';
@@ -0,0 +1,120 @@
1
+ import React, { useCallback } from 'react';
2
+ import {
3
+ ArrayFieldTemplateProps,
4
+ getTemplate,
5
+ getUiOptions,
6
+ Registry,
7
+ RJSFSchema,
8
+ FormContextType,
9
+ TranslatableString,
10
+ buttonId,
11
+ } from '@rjsf/utils';
12
+
13
+ /** The `ArrayFieldTemplate` component is the template used to render all items in an array.
14
+ *
15
+ * This DaisyUI implementation:
16
+ * - Renders the entire array in a rounded container with base-200 background
17
+ * - Uses custom ArrayFieldTitleTemplate and ArrayFieldDescriptionTemplate
18
+ * - Displays an info alert when the array is empty
19
+ * - Renders each array item using ArrayFieldItemTemplate with additional props
20
+ * - Positions the add button at the bottom right using flexbox
21
+ * - Uses DaisyUI's button styling for the add button
22
+ * - Maintains proper spacing with margin and padding utilities
23
+ *
24
+ * @param props - The `ArrayFieldTemplateProps` for the component
25
+ */
26
+ export default function ArrayFieldTemplate<T = any, S extends RJSFSchema = RJSFSchema, F extends FormContextType = any>(
27
+ props: ArrayFieldTemplateProps<T, S, F>,
28
+ ) {
29
+ const {
30
+ canAdd,
31
+ className,
32
+ disabled,
33
+ idSchema,
34
+ items,
35
+ onAddClick,
36
+ readonly,
37
+ registry,
38
+ required,
39
+ schema,
40
+ title,
41
+ uiSchema,
42
+ } = props;
43
+
44
+ const uiOptions = getUiOptions<T, S, F>(uiSchema);
45
+ const ArrayFieldDescriptionTemplate = getTemplate<'ArrayFieldDescriptionTemplate', T, S, F>(
46
+ 'ArrayFieldDescriptionTemplate',
47
+ registry as Registry<T, S, F>,
48
+ uiOptions,
49
+ );
50
+ const ArrayFieldItemTemplate = getTemplate<'ArrayFieldItemTemplate', T, S, F>(
51
+ 'ArrayFieldItemTemplate',
52
+ registry as Registry<T, S, F>,
53
+ uiOptions,
54
+ );
55
+ const ArrayFieldTitleTemplate = getTemplate<'ArrayFieldTitleTemplate', T, S, F>(
56
+ 'ArrayFieldTitleTemplate',
57
+ registry as Registry<T, S, F>,
58
+ uiOptions,
59
+ );
60
+ // Button templates are not overridden in the uiSchema
61
+ const {
62
+ ButtonTemplates: { AddButton },
63
+ } = registry.templates;
64
+
65
+ /** Handle the add button click
66
+ *
67
+ * @param e - The click event
68
+ */
69
+ const handleAddClick = useCallback(
70
+ (e: React.MouseEvent<HTMLButtonElement>) => {
71
+ e.preventDefault();
72
+ e.stopPropagation();
73
+ onAddClick(e);
74
+ },
75
+ [onAddClick],
76
+ );
77
+
78
+ return (
79
+ <div className={`array-field-template ${className}`}>
80
+ <ArrayFieldTitleTemplate
81
+ idSchema={idSchema}
82
+ title={uiOptions.title || title}
83
+ schema={schema}
84
+ uiSchema={uiSchema}
85
+ required={required}
86
+ registry={registry}
87
+ />
88
+ <ArrayFieldDescriptionTemplate
89
+ idSchema={idSchema}
90
+ description={uiOptions.description || schema.description}
91
+ schema={schema}
92
+ uiSchema={uiSchema}
93
+ registry={registry}
94
+ />
95
+ <div className='flex flex-col gap-4'>
96
+ <div className='rjsf-array-item-list'>
97
+ {items &&
98
+ items.map(({ key, ...itemProps }, index) => (
99
+ <ArrayFieldItemTemplate key={key} {...itemProps} index={index} totalItems={items.length} />
100
+ ))}
101
+ {items && items.length === 0 && canAdd && (
102
+ <div className='text-center italic text-base-content/70'>{TranslatableString.EmptyArray}</div>
103
+ )}
104
+ </div>
105
+ {canAdd && (
106
+ <div className='flex justify-end'>
107
+ <AddButton
108
+ id={buttonId<T>(idSchema, 'add')}
109
+ className='rjsf-array-item-add btn btn-primary btn-sm'
110
+ onClick={handleAddClick}
111
+ disabled={disabled || readonly}
112
+ uiSchema={uiSchema}
113
+ registry={registry}
114
+ />
115
+ </div>
116
+ )}
117
+ </div>
118
+ </div>
119
+ );
120
+ }
@@ -0,0 +1,2 @@
1
+ export { default } from './ArrayFieldTemplate';
2
+ export * from './ArrayFieldTemplate';
@@ -0,0 +1,15 @@
1
+ import { ArrayFieldTitleProps, StrictRJSFSchema, RJSFSchema, FormContextType } from '@rjsf/utils';
2
+
3
+ /** The `ArrayFieldTitleTemplate` component renders the title for an array field
4
+ * using DaisyUI styling with large bold text.
5
+ *
6
+ * @param props - The `ArrayFieldTitleProps` for the component
7
+ */
8
+ export default function ArrayFieldTitleTemplate<
9
+ T = any,
10
+ S extends StrictRJSFSchema = RJSFSchema,
11
+ F extends FormContextType = any,
12
+ >(props: ArrayFieldTitleProps<T, S, F>) {
13
+ const { title } = props;
14
+ return <h3 className='text-2xl font-bold'>{title}</h3>;
15
+ }
@@ -0,0 +1,2 @@
1
+ export { default } from './ArrayFieldTitleTemplate';
2
+ export * from './ArrayFieldTitleTemplate';
@@ -0,0 +1,104 @@
1
+ import { ChangeEvent, FocusEvent, useCallback } from 'react';
2
+ import {
3
+ WidgetProps,
4
+ StrictRJSFSchema,
5
+ RJSFSchema,
6
+ FormContextType,
7
+ getInputProps,
8
+ ariaDescribedByIds,
9
+ examplesId,
10
+ } from '@rjsf/utils';
11
+
12
+ /** The `BaseInputTemplate` component is a template for rendering basic input elements
13
+ * with DaisyUI styling. It's used as the foundation for various input types in forms.
14
+ *
15
+ * Features:
16
+ * - Wraps input in DaisyUI's form-control for proper spacing
17
+ * - Uses DaisyUI's input and input-bordered classes for styling
18
+ * - Includes a hidden label for accessibility
19
+ * - Handles common input properties like disabled and readonly states
20
+ * - Processes input props based on schema type and options
21
+ * - Supports schema examples with datalist
22
+ * - Handles onChange, onBlur, and onFocus events
23
+ *
24
+ * @param props - The `WidgetProps` for the component
25
+ */
26
+ export default function BaseInputTemplate<
27
+ T = any,
28
+ S extends StrictRJSFSchema = RJSFSchema,
29
+ F extends FormContextType = any,
30
+ >(props: WidgetProps<T, S, F>) {
31
+ const {
32
+ id,
33
+ value,
34
+ required,
35
+ disabled,
36
+ readonly,
37
+ autofocus,
38
+ onChange,
39
+ onBlur,
40
+ onFocus,
41
+ onChangeOverride,
42
+ options,
43
+ schema,
44
+ type,
45
+ label,
46
+ placeholder,
47
+ } = props;
48
+
49
+ const inputProps = getInputProps<T, S, F>(schema, type, options);
50
+
51
+ // Extract step, min, max, accept from inputProps
52
+ const { step, min, max, accept, ...rest } = inputProps;
53
+ const htmlInputProps = { step, min, max, accept, ...(schema.examples ? { list: examplesId<T>(id) } : undefined) };
54
+
55
+ const _onChange = useCallback(
56
+ ({ target: { value } }: ChangeEvent<HTMLInputElement>) => onChange(value === '' ? options.emptyValue : value),
57
+ [onChange, options],
58
+ );
59
+
60
+ const _onBlur = useCallback(
61
+ ({ target }: FocusEvent<HTMLInputElement>) => onBlur && onBlur(id, target.value),
62
+ [onBlur, id],
63
+ );
64
+
65
+ const _onFocus = useCallback(
66
+ ({ target }: FocusEvent<HTMLInputElement>) => onFocus && onFocus(id, target.value),
67
+ [onFocus, id],
68
+ );
69
+
70
+ return (
71
+ <>
72
+ <div className='form-control'>
73
+ <label htmlFor={id} className='label hidden' style={{ display: 'none' }}>
74
+ <span className='label-text'>{label}</span>
75
+ </label>
76
+ <input
77
+ id={id}
78
+ name={id}
79
+ value={value || value === 0 ? value : ''}
80
+ placeholder={placeholder}
81
+ required={required}
82
+ disabled={disabled || readonly}
83
+ autoFocus={autofocus}
84
+ className='input input-bordered'
85
+ {...rest}
86
+ {...htmlInputProps}
87
+ onChange={onChangeOverride || _onChange}
88
+ onBlur={_onBlur}
89
+ onFocus={_onFocus}
90
+ aria-describedby={ariaDescribedByIds<T>(id, !!schema.examples)}
91
+ />
92
+ </div>
93
+ {Array.isArray(schema.examples) && (
94
+ <datalist id={examplesId<T>(id)}>
95
+ {(schema.examples as string[])
96
+ .concat(schema.default && !schema.examples.includes(schema.default) ? ([schema.default] as string[]) : [])
97
+ .map((example: any) => {
98
+ return <option key={example} value={example} />;
99
+ })}
100
+ </datalist>
101
+ )}
102
+ </>
103
+ );
104
+ }
@@ -0,0 +1,2 @@
1
+ export { default } from './BaseInputTemplate';
2
+ export * from './BaseInputTemplate';
@@ -0,0 +1,38 @@
1
+ import { FormContextType, IconButtonProps, RJSFSchema, StrictRJSFSchema, TranslatableString } from '@rjsf/utils';
2
+ import { library } from '@fortawesome/fontawesome-svg-core';
3
+ import { faArrowDown, faArrowUp, faCopy, faTrash, faPlus } from '@fortawesome/free-solid-svg-icons';
4
+ import type { IconDefinition } from '@fortawesome/fontawesome-svg-core';
5
+
6
+ import DaisyUIButton from './DaisyUIButton';
7
+
8
+ library.add(faPlus, faCopy, faArrowDown, faArrowUp, faTrash);
9
+
10
+ /** The `AddButton` renders a button that represent the `Add` action on a form
11
+ *
12
+ * @param props - The props for the component
13
+ */
14
+ export default function AddButton<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({
15
+ className,
16
+ onClick,
17
+ disabled,
18
+ registry,
19
+ ...otherProps
20
+ }: IconButtonProps<T, S, F>) {
21
+ const { translateString } = registry;
22
+ return (
23
+ <div className='row'>
24
+ <p className={`col-xs-3 col-xs-offset-9 text-right ${className}`}>
25
+ <DaisyUIButton
26
+ {...otherProps}
27
+ iconType='info'
28
+ icon={faPlus as IconDefinition}
29
+ className='btn-add col-xs-12 btn-primary btn-primary-content'
30
+ title={translateString(TranslatableString.AddButton)}
31
+ onClick={onClick}
32
+ disabled={disabled}
33
+ registry={registry}
34
+ />
35
+ </p>
36
+ </div>
37
+ );
38
+ }
@@ -0,0 +1,31 @@
1
+ import { memo } from 'react';
2
+ import { FormContextType, IconButtonProps, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';
3
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
4
+ import { IconDefinition } from '@fortawesome/fontawesome-svg-core';
5
+
6
+ /** Interface for props specific to DaisyUIButton, extending IconButtonProps but with stricter icon typing */
7
+ interface DaisyUIButtonProps<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>
8
+ extends Omit<IconButtonProps<T, S, F>, 'icon'> {
9
+ /** The FontAwesome icon to display in the button */
10
+ icon: IconDefinition;
11
+ }
12
+
13
+ /** The `DaisyUIButton` component renders a button with an icon using DaisyUI styling.
14
+ * It's used as the base for various button components like add, remove, copy, move up/down.
15
+ *
16
+ * @param props - The component props
17
+ */
18
+ function DaisyUIButton<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(
19
+ props: DaisyUIButtonProps<T, S, F>,
20
+ ) {
21
+ const { icon, iconType, uiSchema, registry, className, ...otherProps } = props;
22
+ return (
23
+ <button type='button' className={className} aria-label={props.title!} {...otherProps}>
24
+ <FontAwesomeIcon icon={icon} className='h-5 w-5' />
25
+ </button>
26
+ );
27
+ }
28
+
29
+ DaisyUIButton.displayName = 'DaisyUIButton';
30
+
31
+ export default memo(DaisyUIButton) as typeof DaisyUIButton;