@pixelated-tech/components 3.11.8 → 3.12.0

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 (286) hide show
  1. package/dist/components/admin/site-health/site-health-accessibility.js +6 -0
  2. package/dist/components/admin/site-health/site-health-axe-core.js +6 -0
  3. package/dist/components/admin/site-health/site-health-cloudwatch.js +10 -0
  4. package/dist/components/admin/site-health/site-health-dependency-vulnerabilities.js +6 -0
  5. package/dist/components/admin/site-health/site-health-github.js +10 -0
  6. package/dist/components/admin/site-health/site-health-google-analytics.js +10 -0
  7. package/dist/components/admin/site-health/site-health-google-search-console.js +10 -0
  8. package/dist/components/admin/site-health/site-health-mock-context.js +8 -0
  9. package/dist/components/admin/site-health/site-health-on-site-seo.js +6 -0
  10. package/dist/components/admin/site-health/site-health-overview.js +6 -0
  11. package/dist/components/admin/site-health/site-health-performance.js +6 -0
  12. package/dist/components/admin/site-health/site-health-security.js +6 -0
  13. package/dist/components/admin/site-health/site-health-seo.js +6 -0
  14. package/dist/components/admin/site-health/site-health-template.js +28 -0
  15. package/dist/components/admin/site-health/site-health-uptime.js +6 -0
  16. package/dist/components/config/config.server.js +8 -0
  17. package/dist/components/general/404.js +6 -0
  18. package/dist/components/general/accordion.js +11 -0
  19. package/dist/components/general/buzzwordbingo.js +18 -0
  20. package/dist/components/general/callout.js +65 -2
  21. package/dist/components/general/carousel.drag.js +12 -0
  22. package/dist/components/general/carousel.js +50 -0
  23. package/dist/components/general/faq-accordion.js +15 -0
  24. package/dist/components/general/global-error.js +12 -0
  25. package/dist/components/general/hero.js +13 -0
  26. package/dist/components/general/loading.js +10 -1
  27. package/dist/components/general/markdown.js +6 -0
  28. package/dist/components/general/menu-accordion.js +30 -1
  29. package/dist/components/general/menu-expando.js +24 -1
  30. package/dist/components/general/menu-simple.js +21 -0
  31. package/dist/components/general/metadata.components.js +10 -0
  32. package/dist/components/general/microinteractions.js +22 -0
  33. package/dist/components/general/modal.js +12 -0
  34. package/dist/components/general/nerdjoke.js +11 -1
  35. package/dist/components/general/proxy-handler.js +7 -7
  36. package/dist/components/general/recipe.js +46 -1
  37. package/dist/components/general/resume.js +82 -0
  38. package/dist/components/general/schema-blogposting.js +6 -0
  39. package/dist/components/general/schema-localbusiness.js +36 -0
  40. package/dist/components/general/schema-recipe.js +20 -0
  41. package/dist/components/general/semantic.js +178 -0
  42. package/dist/components/general/sidepanel.js +26 -0
  43. package/dist/components/general/sitemap.js +50 -0
  44. package/dist/components/general/skeleton-loading.css +5 -5
  45. package/dist/components/general/skeleton-loading.js +11 -2
  46. package/dist/components/general/skeleton.js +15 -0
  47. package/dist/components/general/smartimage.js +48 -2
  48. package/dist/components/general/splitscroll.js +21 -10
  49. package/dist/components/general/styleguide.js +6 -0
  50. package/dist/components/general/tab.js +12 -0
  51. package/dist/components/general/table.js +12 -0
  52. package/dist/components/general/tiles.js +32 -1
  53. package/dist/components/general/timeline.js +22 -0
  54. package/dist/components/integrations/calendly.js +10 -0
  55. package/dist/components/integrations/cloudinary.js +16 -0
  56. package/dist/components/integrations/contentful.delivery.js +84 -0
  57. package/dist/components/integrations/contentful.items.components.js +46 -0
  58. package/dist/components/integrations/flickr.js +34 -0
  59. package/dist/components/integrations/google.reviews.components.js +14 -0
  60. package/dist/components/integrations/googleanalytics.js +14 -0
  61. package/dist/components/integrations/googlemap.js +20 -0
  62. package/dist/components/integrations/googlesearch.js +6 -0
  63. package/dist/components/integrations/gravatar.components.js +59 -0
  64. package/dist/components/integrations/hubspot.components.js +30 -0
  65. package/dist/components/integrations/instagram.components.js +18 -0
  66. package/dist/components/integrations/lipsum.js +45 -0
  67. package/dist/components/integrations/loremipsum.js +13 -1
  68. package/dist/components/integrations/socialcard.js +20 -1
  69. package/dist/components/integrations/wordpress.components.js +40 -0
  70. package/dist/components/integrations/wordpress.functions.js +24 -0
  71. package/dist/components/integrations/yelp.js +8 -0
  72. package/dist/components/shoppingcart/ebay.components.js +70 -0
  73. package/dist/components/shoppingcart/ebay.functions.js +52 -0
  74. package/dist/components/shoppingcart/shoppingcart.components.js +89 -0
  75. package/dist/components/sitebuilder/config/CompoundFontSelector.js +32 -0
  76. package/dist/components/sitebuilder/config/ConfigBuilder.js +8 -0
  77. package/dist/components/sitebuilder/config/FontSelector.js +40 -0
  78. package/dist/components/sitebuilder/form/formbuilder.js +10 -1
  79. package/dist/components/sitebuilder/form/formcomponents.js +325 -6
  80. package/dist/components/sitebuilder/form/formengine.js +35 -1
  81. package/dist/components/sitebuilder/form/formextractor.js +33 -1
  82. package/dist/components/sitebuilder/form/formutils.js +0 -4
  83. package/dist/components/sitebuilder/form/formvalidator.js +6 -0
  84. package/dist/components/sitebuilder/page/components/ComponentPropertiesForm.js +8 -0
  85. package/dist/components/sitebuilder/page/components/ComponentSelector.js +10 -0
  86. package/dist/components/sitebuilder/page/components/ComponentTree.js +20 -0
  87. package/dist/components/sitebuilder/page/components/PageBuilderUI.js +6 -0
  88. package/dist/components/sitebuilder/page/components/PageEngine.js +20 -0
  89. package/dist/components/sitebuilder/page/components/SaveLoadSection.js +10 -0
  90. package/dist/config/pixelated.config.json.enc +1 -1
  91. package/dist/index.js +1 -0
  92. package/dist/index.server.js +1 -0
  93. package/dist/scripts/pixelated-eslint-plugin.js +56 -0
  94. package/dist/scripts/release.sh +12 -21
  95. package/dist/types/components/admin/site-health/site-health-accessibility.d.ts +1 -0
  96. package/dist/types/components/admin/site-health/site-health-accessibility.d.ts.map +1 -1
  97. package/dist/types/components/admin/site-health/site-health-axe-core.d.ts +1 -0
  98. package/dist/types/components/admin/site-health/site-health-axe-core.d.ts.map +1 -1
  99. package/dist/types/components/admin/site-health/site-health-cloudwatch.d.ts +3 -0
  100. package/dist/types/components/admin/site-health/site-health-cloudwatch.d.ts.map +1 -1
  101. package/dist/types/components/admin/site-health/site-health-dependency-vulnerabilities.d.ts +1 -0
  102. package/dist/types/components/admin/site-health/site-health-dependency-vulnerabilities.d.ts.map +1 -1
  103. package/dist/types/components/admin/site-health/site-health-github.d.ts +3 -0
  104. package/dist/types/components/admin/site-health/site-health-github.d.ts.map +1 -1
  105. package/dist/types/components/admin/site-health/site-health-google-analytics.d.ts +3 -0
  106. package/dist/types/components/admin/site-health/site-health-google-analytics.d.ts.map +1 -1
  107. package/dist/types/components/admin/site-health/site-health-google-search-console.d.ts +3 -0
  108. package/dist/types/components/admin/site-health/site-health-google-search-console.d.ts.map +1 -1
  109. package/dist/types/components/admin/site-health/site-health-mock-context.d.ts +8 -0
  110. package/dist/types/components/admin/site-health/site-health-mock-context.d.ts.map +1 -1
  111. package/dist/types/components/admin/site-health/site-health-on-site-seo.d.ts +1 -0
  112. package/dist/types/components/admin/site-health/site-health-on-site-seo.d.ts.map +1 -1
  113. package/dist/types/components/admin/site-health/site-health-overview.d.ts +1 -0
  114. package/dist/types/components/admin/site-health/site-health-overview.d.ts.map +1 -1
  115. package/dist/types/components/admin/site-health/site-health-performance.d.ts +1 -0
  116. package/dist/types/components/admin/site-health/site-health-performance.d.ts.map +1 -1
  117. package/dist/types/components/admin/site-health/site-health-security.d.ts +1 -0
  118. package/dist/types/components/admin/site-health/site-health-security.d.ts.map +1 -1
  119. package/dist/types/components/admin/site-health/site-health-seo.d.ts +1 -0
  120. package/dist/types/components/admin/site-health/site-health-seo.d.ts.map +1 -1
  121. package/dist/types/components/admin/site-health/site-health-template.d.ts +12 -0
  122. package/dist/types/components/admin/site-health/site-health-template.d.ts.map +1 -1
  123. package/dist/types/components/admin/site-health/site-health-uptime.d.ts +1 -0
  124. package/dist/types/components/admin/site-health/site-health-uptime.d.ts.map +1 -1
  125. package/dist/types/components/config/config.server.d.ts +2 -0
  126. package/dist/types/components/config/config.server.d.ts.map +1 -1
  127. package/dist/types/components/general/404.d.ts +1 -0
  128. package/dist/types/components/general/404.d.ts.map +1 -1
  129. package/dist/types/components/general/accordion.d.ts +2 -0
  130. package/dist/types/components/general/accordion.d.ts.map +1 -1
  131. package/dist/types/components/general/buzzwordbingo.d.ts +3 -0
  132. package/dist/types/components/general/buzzwordbingo.d.ts.map +1 -1
  133. package/dist/types/components/general/callout.d.ts +24 -0
  134. package/dist/types/components/general/callout.d.ts.map +1 -1
  135. package/dist/types/components/general/carousel.d.ts +13 -0
  136. package/dist/types/components/general/carousel.d.ts.map +1 -1
  137. package/dist/types/components/general/carousel.drag.d.ts +4 -0
  138. package/dist/types/components/general/carousel.drag.d.ts.map +1 -1
  139. package/dist/types/components/general/faq-accordion.d.ts +5 -0
  140. package/dist/types/components/general/faq-accordion.d.ts.map +1 -1
  141. package/dist/types/components/general/global-error.d.ts +4 -0
  142. package/dist/types/components/general/global-error.d.ts.map +1 -1
  143. package/dist/types/components/general/hero.d.ts +4 -0
  144. package/dist/types/components/general/hero.d.ts.map +1 -1
  145. package/dist/types/components/general/loading.d.ts +1 -0
  146. package/dist/types/components/general/loading.d.ts.map +1 -1
  147. package/dist/types/components/general/markdown.d.ts +1 -0
  148. package/dist/types/components/general/markdown.d.ts.map +1 -1
  149. package/dist/types/components/general/menu-accordion.d.ts +7 -0
  150. package/dist/types/components/general/menu-accordion.d.ts.map +1 -1
  151. package/dist/types/components/general/menu-expando.d.ts +6 -0
  152. package/dist/types/components/general/menu-expando.d.ts.map +1 -1
  153. package/dist/types/components/general/menu-simple.d.ts +6 -0
  154. package/dist/types/components/general/menu-simple.d.ts.map +1 -1
  155. package/dist/types/components/general/metadata.components.d.ts +3 -0
  156. package/dist/types/components/general/metadata.components.d.ts.map +1 -1
  157. package/dist/types/components/general/microinteractions.d.ts +9 -0
  158. package/dist/types/components/general/microinteractions.d.ts.map +1 -1
  159. package/dist/types/components/general/modal.d.ts +4 -0
  160. package/dist/types/components/general/modal.d.ts.map +1 -1
  161. package/dist/types/components/general/nerdjoke.d.ts +2 -0
  162. package/dist/types/components/general/nerdjoke.d.ts.map +1 -1
  163. package/dist/types/components/general/proxy-handler.d.ts +7 -7
  164. package/dist/types/components/general/proxy-handler.d.ts.map +1 -1
  165. package/dist/types/components/general/recipe.d.ts +13 -0
  166. package/dist/types/components/general/recipe.d.ts.map +1 -1
  167. package/dist/types/components/general/resume.d.ts +21 -0
  168. package/dist/types/components/general/resume.d.ts.map +1 -1
  169. package/dist/types/components/general/schema-blogposting.d.ts +1 -0
  170. package/dist/types/components/general/schema-blogposting.d.ts.map +1 -1
  171. package/dist/types/components/general/schema-localbusiness.d.ts +16 -0
  172. package/dist/types/components/general/schema-localbusiness.d.ts.map +1 -1
  173. package/dist/types/components/general/schema-recipe.d.ts +1 -0
  174. package/dist/types/components/general/schema-recipe.d.ts.map +1 -1
  175. package/dist/types/components/general/semantic.d.ts +67 -0
  176. package/dist/types/components/general/semantic.d.ts.map +1 -1
  177. package/dist/types/components/general/sidepanel.d.ts +11 -0
  178. package/dist/types/components/general/sidepanel.d.ts.map +1 -1
  179. package/dist/types/components/general/sitemap.d.ts +19 -0
  180. package/dist/types/components/general/sitemap.d.ts.map +1 -1
  181. package/dist/types/components/general/skeleton-loading.d.ts +3 -6
  182. package/dist/types/components/general/skeleton-loading.d.ts.map +1 -1
  183. package/dist/types/components/general/skeleton.d.ts +5 -0
  184. package/dist/types/components/general/skeleton.d.ts.map +1 -1
  185. package/dist/types/components/general/smartimage.d.ts +22 -0
  186. package/dist/types/components/general/smartimage.d.ts.map +1 -1
  187. package/dist/types/components/general/splitscroll.d.ts +18 -40
  188. package/dist/types/components/general/splitscroll.d.ts.map +1 -1
  189. package/dist/types/components/general/styleguide.d.ts +1 -0
  190. package/dist/types/components/general/styleguide.d.ts.map +1 -1
  191. package/dist/types/components/general/tab.d.ts +4 -0
  192. package/dist/types/components/general/tab.d.ts.map +1 -1
  193. package/dist/types/components/general/table.d.ts +4 -0
  194. package/dist/types/components/general/table.d.ts.map +1 -1
  195. package/dist/types/components/general/tiles.d.ts +12 -1
  196. package/dist/types/components/general/tiles.d.ts.map +1 -1
  197. package/dist/types/components/general/timeline.d.ts +5 -0
  198. package/dist/types/components/general/timeline.d.ts.map +1 -1
  199. package/dist/types/components/integrations/calendly.d.ts +3 -0
  200. package/dist/types/components/integrations/calendly.d.ts.map +1 -1
  201. package/dist/types/components/integrations/cloudinary.d.ts +4 -0
  202. package/dist/types/components/integrations/cloudinary.d.ts.map +1 -1
  203. package/dist/types/components/integrations/contentful.delivery.d.ts +22 -0
  204. package/dist/types/components/integrations/contentful.delivery.d.ts.map +1 -1
  205. package/dist/types/components/integrations/contentful.items.components.d.ts +10 -0
  206. package/dist/types/components/integrations/contentful.items.components.d.ts.map +1 -1
  207. package/dist/types/components/integrations/flickr.d.ts +11 -0
  208. package/dist/types/components/integrations/flickr.d.ts.map +1 -1
  209. package/dist/types/components/integrations/google.reviews.components.d.ts +5 -0
  210. package/dist/types/components/integrations/google.reviews.components.d.ts.map +1 -1
  211. package/dist/types/components/integrations/googleanalytics.d.ts +3 -0
  212. package/dist/types/components/integrations/googleanalytics.d.ts.map +1 -1
  213. package/dist/types/components/integrations/googlemap.d.ts +8 -0
  214. package/dist/types/components/integrations/googlemap.d.ts.map +1 -1
  215. package/dist/types/components/integrations/googlesearch.d.ts +1 -0
  216. package/dist/types/components/integrations/googlesearch.d.ts.map +1 -1
  217. package/dist/types/components/integrations/gravatar.components.d.ts +35 -0
  218. package/dist/types/components/integrations/gravatar.components.d.ts.map +1 -1
  219. package/dist/types/components/integrations/hubspot.components.d.ts +9 -0
  220. package/dist/types/components/integrations/hubspot.components.d.ts.map +1 -1
  221. package/dist/types/components/integrations/instagram.components.d.ts +7 -0
  222. package/dist/types/components/integrations/instagram.components.d.ts.map +1 -1
  223. package/dist/types/components/integrations/lipsum.d.ts +14 -0
  224. package/dist/types/components/integrations/lipsum.d.ts.map +1 -0
  225. package/dist/types/components/integrations/loremipsum.d.ts +4 -0
  226. package/dist/types/components/integrations/loremipsum.d.ts.map +1 -1
  227. package/dist/types/components/integrations/socialcard.d.ts +4 -0
  228. package/dist/types/components/integrations/socialcard.d.ts.map +1 -1
  229. package/dist/types/components/integrations/wordpress.components.d.ts +14 -0
  230. package/dist/types/components/integrations/wordpress.components.d.ts.map +1 -1
  231. package/dist/types/components/integrations/wordpress.functions.d.ts +6 -0
  232. package/dist/types/components/integrations/wordpress.functions.d.ts.map +1 -1
  233. package/dist/types/components/integrations/yelp.d.ts +2 -0
  234. package/dist/types/components/integrations/yelp.d.ts.map +1 -1
  235. package/dist/types/components/shoppingcart/ebay.components.d.ts +15 -0
  236. package/dist/types/components/shoppingcart/ebay.components.d.ts.map +1 -1
  237. package/dist/types/components/shoppingcart/ebay.functions.d.ts +12 -0
  238. package/dist/types/components/shoppingcart/ebay.functions.d.ts.map +1 -1
  239. package/dist/types/components/shoppingcart/shoppingcart.components.d.ts +30 -0
  240. package/dist/types/components/shoppingcart/shoppingcart.components.d.ts.map +1 -1
  241. package/dist/types/components/sitebuilder/config/CompoundFontSelector.d.ts +12 -0
  242. package/dist/types/components/sitebuilder/config/CompoundFontSelector.d.ts.map +1 -1
  243. package/dist/types/components/sitebuilder/config/ConfigBuilder.d.ts +2 -0
  244. package/dist/types/components/sitebuilder/config/ConfigBuilder.d.ts.map +1 -1
  245. package/dist/types/components/sitebuilder/config/FontSelector.d.ts +16 -0
  246. package/dist/types/components/sitebuilder/config/FontSelector.d.ts.map +1 -1
  247. package/dist/types/components/sitebuilder/form/formbuilder.d.ts +5 -1
  248. package/dist/types/components/sitebuilder/form/formbuilder.d.ts.map +1 -1
  249. package/dist/types/components/sitebuilder/form/formcomponents.d.ts +129 -0
  250. package/dist/types/components/sitebuilder/form/formcomponents.d.ts.map +1 -1
  251. package/dist/types/components/sitebuilder/form/formengine.d.ts +5 -0
  252. package/dist/types/components/sitebuilder/form/formengine.d.ts.map +1 -1
  253. package/dist/types/components/sitebuilder/form/formextractor.d.ts +6 -0
  254. package/dist/types/components/sitebuilder/form/formextractor.d.ts.map +1 -1
  255. package/dist/types/components/sitebuilder/form/formutils.d.ts +0 -2
  256. package/dist/types/components/sitebuilder/form/formutils.d.ts.map +1 -1
  257. package/dist/types/components/sitebuilder/form/formvalidator.d.ts +1 -0
  258. package/dist/types/components/sitebuilder/form/formvalidator.d.ts.map +1 -1
  259. package/dist/types/components/sitebuilder/page/components/ComponentPropertiesForm.d.ts +2 -0
  260. package/dist/types/components/sitebuilder/page/components/ComponentPropertiesForm.d.ts.map +1 -1
  261. package/dist/types/components/sitebuilder/page/components/ComponentSelector.d.ts +3 -0
  262. package/dist/types/components/sitebuilder/page/components/ComponentSelector.d.ts.map +1 -1
  263. package/dist/types/components/sitebuilder/page/components/ComponentTree.d.ts +8 -0
  264. package/dist/types/components/sitebuilder/page/components/ComponentTree.d.ts.map +1 -1
  265. package/dist/types/components/sitebuilder/page/components/PageBuilderUI.d.ts +1 -0
  266. package/dist/types/components/sitebuilder/page/components/PageBuilderUI.d.ts.map +1 -1
  267. package/dist/types/components/sitebuilder/page/components/PageEngine.d.ts +8 -0
  268. package/dist/types/components/sitebuilder/page/components/PageEngine.d.ts.map +1 -1
  269. package/dist/types/components/sitebuilder/page/components/SaveLoadSection.d.ts +3 -0
  270. package/dist/types/components/sitebuilder/page/components/SaveLoadSection.d.ts.map +1 -1
  271. package/dist/types/index.d.ts +1 -0
  272. package/dist/types/index.server.d.ts +1 -0
  273. package/dist/types/scripts/pixelated-eslint-plugin.d.ts +18 -0
  274. package/dist/types/stories/general/skeleton-loading.stories.d.ts +1 -1
  275. package/dist/types/stories/general/skeleton-loading.stories.d.ts.map +1 -1
  276. package/dist/types/stories/integrations/lipsum.stories.d.ts +38 -0
  277. package/dist/types/stories/integrations/lipsum.stories.d.ts.map +1 -0
  278. package/dist/types/stories/shoppingcart/shoppingcart.stories.d.ts +3 -1
  279. package/dist/types/stories/shoppingcart/shoppingcart.stories.d.ts.map +1 -1
  280. package/dist/types/tests/args.test.d.ts +2 -0
  281. package/dist/types/tests/args.test.d.ts.map +1 -0
  282. package/dist/types/tests/lipsum.test.d.ts +2 -0
  283. package/dist/types/tests/lipsum.test.d.ts.map +1 -0
  284. package/dist/types/tests/storybook-docgen.test.d.ts +2 -0
  285. package/dist/types/tests/storybook-docgen.test.d.ts.map +1 -0
  286. package/package.json +12 -9
@@ -90,10 +90,22 @@ const generateOptions = (options, parentProps, prefix, optionComponent) => {
90
90
  }
91
91
  return result;
92
92
  };
93
+ /**
94
+ * FormLabel — Render a label and optional tooltip for a form field.
95
+ *
96
+ * @param {string} [props.id] - ID of the form control the label targets.
97
+ * @param {string} [props.label] - Text to display as the label.
98
+ * @param {string} [props.tooltip] - Optional tooltip text explaining the field.
99
+ * @param {string} [props.className] - Optional CSS class names for the label element.
100
+ */
93
101
  FormLabel.propTypes = {
102
+ /** ID of the control associated with this label */
94
103
  id: PropTypes.string.isRequired,
104
+ /** Label text to display */
95
105
  label: PropTypes.string,
106
+ /** Optional tooltip text */
96
107
  tooltip: PropTypes.string,
108
+ /** Additional CSS class names */
97
109
  className: PropTypes.string,
98
110
  };
99
111
  FormLabel.defaultProps = {
@@ -108,10 +120,22 @@ function FormLabel(props) {
108
120
  ? _jsx(FormTooltip, { id: props.id, text: [props.tooltip] })
109
121
  : ""] }));
110
122
  }
123
+ /**
124
+ * FormTooltip — Display contextual helper or validation messages for a form field.
125
+ *
126
+ * @param {string} [props.id] - ID used to associate the tooltip with a control.
127
+ * @param {arrayOf} [props.text] - Array of strings to render inside the tooltip.
128
+ * @param {string} [props.className] - CSS class names applied to the tooltip container.
129
+ * @param {oneOf} [props.mode] - Mode of the tooltip: 'tooltip' for help or 'validate' for validation messages.
130
+ */
111
131
  FormTooltip.propTypes = {
132
+ /** Associated control id */
112
133
  id: PropTypes.string,
134
+ /** Text lines to display in the tooltip */
113
135
  text: PropTypes.arrayOf(PropTypes.string).isRequired,
136
+ /** Additional CSS class names */
114
137
  className: PropTypes.string,
138
+ /** Tooltip mode */
115
139
  mode: PropTypes.oneOf(['tooltip', 'validate']),
116
140
  };
117
141
  FormTooltip.defaultProps = {
@@ -144,39 +168,95 @@ function FormTooltip(props) {
144
168
  let clickHandler = toggleTooltip;
145
169
  return (_jsx(_Fragment, { children: _jsxs("div", { id: mode + "-" + props.id, className: `tooltip-container ${props.className || ''}`, children: [_jsx("span", { className: "tooltip-icon tooltip-icon-" + mode, ...mouseEvents, onClick: clickHandler, onKeyDown: handleKeyDown, "aria-label": "Show more info", "aria-expanded": showTooltip, "aria-describedby": showTooltip ? `${props.id}-tooltip` : undefined, tabIndex: 0, role: "button", children: icon }), showTooltip && _jsx("div", { className: "tooltip-text", role: "tooltip", id: `${props.id}-tooltip`, children: content })] }) }));
146
170
  }
171
+ /**
172
+ * FormInput — Generic input field used by the FormEngine. Supports standard input attributes and validation hooks.
173
+ *
174
+ * @param {string} [props.type] - Input type (text, number, email, etc.).
175
+ * @param {string} [props.id] - Input id attribute (required).
176
+ * @param {string} [props.name] - Input name attribute.
177
+ * @param {string} [props.defaultValue] - Default value for uncontrolled inputs.
178
+ * @param {string} [props.value] - Controlled value for the input.
179
+ * @param {string} [props.list] - Datalist id to associate with the input.
180
+ * @param {string} [props.listItems] - Comma-separated datalist items (internal convenience prop).
181
+ * @param {string} [props.size] - Size attribute for text input.
182
+ * @param {string} [props.maxLength] - Maximum characters allowed.
183
+ * @param {string} [props.placeholder] - Placeholder text.
184
+ * @param {string} [props.autoComplete] - Autocomplete hint.
185
+ * @param {number} [props.tabIndex] - Tab order index.
186
+ * @param {object} [props.style] - Inline styles applied to the input element.
187
+ * @param {string} [props.min] - Minimum value (for number/date inputs).
188
+ * @param {string} [props.max] - Maximum value (for number/date inputs).
189
+ * @param {string} [props.step] - Step increment (for number inputs).
190
+ * @param {string} [props.autoFocus] - Whether to autofocus the input.
191
+ * @param {string} [props.disabled] - Disabled flag.
192
+ * @param {string} [props.readOnly] - Read-only flag.
193
+ * @param {string} [props.required] - Required flag.
194
+ * @param {string} [props.display] - Display style (inline/block) for layout purposes.
195
+ * @param {string} [props.label] - Label text associated with the input.
196
+ * @param {string} [props.tooltip] - Tooltip/help text for the input.
197
+ * @param {string} [props.className] - CSS class names applied to the input container.
198
+ * @param {string} [props.validate] - Named validation rule to run for this input.
199
+ * @param {function} [props.onChange] - Change handler invoked with synthetic change events.
200
+ */
147
201
  FormInput.propTypes = {
202
+ /** Input type (text, number, email, etc.) */
148
203
  type: PropTypes.string,
204
+ /** Input id attribute */
149
205
  id: PropTypes.string.isRequired,
206
+ /** Input name attribute */
150
207
  name: PropTypes.string,
208
+ /** Default value for uncontrolled inputs */
151
209
  defaultValue: PropTypes.string,
210
+ /** Controlled value */
152
211
  value: PropTypes.string,
212
+ /** Associated datalist id */
153
213
  list: PropTypes.string,
214
+ /** Comma-separated datalist items */
154
215
  listItems: PropTypes.string, /* this one is mine */
216
+ /** Input size attribute */
155
217
  size: PropTypes.string,
218
+ /** Maximum allowed characters */
156
219
  maxLength: PropTypes.string,
220
+ /** Placeholder text */
157
221
  placeholder: PropTypes.string,
222
+ /** Autocomplete hint */
158
223
  autoComplete: PropTypes.string,
224
+ /** Tab ordering index */
159
225
  tabIndex: PropTypes.number,
226
+ /** Inline style object */
160
227
  style: PropTypes.object,
161
228
  "aria-label": PropTypes.string,
162
229
  "aria-hidden": PropTypes.string,
230
+ /** Minimum value for numeric/date inputs */
163
231
  min: PropTypes.string,
232
+ /** Maximum value for numeric/date inputs */
164
233
  max: PropTypes.string,
234
+ /** Step increment for numeric inputs */
165
235
  step: PropTypes.string,
166
236
  // flag attributes
237
+ /** Autofocus flag */
167
238
  autoFocus: PropTypes.string,
239
+ /** Disabled flag */
168
240
  disabled: PropTypes.string,
241
+ /** Read-only flag */
169
242
  readOnly: PropTypes.string,
243
+ /** Whether this field is required (use 'required' to mark mandatory) */
170
244
  required: PropTypes.string,
171
245
  // className,
172
246
  // data-mapping, data-component-endpoint, data-testid
173
247
  // aria-invalid, aria-describedby,
174
248
  // ----- for calculations
249
+ /** Layout hint; use 'vertical' to stack label and control */
175
250
  display: PropTypes.string,
251
+ /** Text label associated with the control */
176
252
  label: PropTypes.string,
253
+ /** Helper text shown in a tooltip for the control */
177
254
  tooltip: PropTypes.string,
255
+ /** Additional CSS classes applied to the container */
178
256
  className: PropTypes.string,
257
+ /** Name of the validation rule to run for this field */
179
258
  validate: PropTypes.string,
259
+ /** Change handler invoked with the new value */
180
260
  onChange: PropTypes.func,
181
261
  };
182
262
  export function FormInput(props) {
@@ -188,29 +268,65 @@ export function FormInput(props) {
188
268
  : undefined;
189
269
  return (_jsxs("div", { children: [props.type == "checkbox" ? _jsx("input", { ...inputProps }) : "", _jsx(FormLabel, { id: props.id, label: props.label }, "label-" + props.id), props.tooltip ? _jsx(FormTooltip, { id: props.id, text: [props.tooltip] }) : "", props.display == "vertical" ? formValidate : "", props.type != "checkbox" ? _jsx("input", { ...inputProps }) : "", formDataList && Array.isArray(formDataList) ? _jsx(FormDataList, { id: props.list ?? '', items: formDataList }) : "", props.display != "vertical" ? formValidate : ""] }));
190
270
  }
271
+ /**
272
+ * FormSelect — Render a standard HTML <select> element with generated option items.
273
+ *
274
+ * @param {string} [props.id] - Input id attribute.
275
+ * @param {string} [props.name] - Input name attribute.
276
+ * @param {string} [props.size] - visual size attribute for single-select lists.
277
+ * @param {string} [props.autoComplete] - Autocomplete hint.
278
+ * @param {oneOfType} [props.defaultValue] - Default selected value (string or array for multi-select).
279
+ * @param {string} [props.autoFocus] - Autofocus flag.
280
+ * @param {string} [props.disabled] - Disabled flag.
281
+ * @param {string} [props.multiple] - Multiple selection flag.
282
+ * @param {string} [props.readOnly] - Read-only flag.
283
+ * @param {string} [props.required] - Required flag.
284
+ * @param {string} [props.selected] - Currently selected value.
285
+ * @param {array} [props.options] - Array of option objects used to generate options.
286
+ * @param {string} [props.display] - Layout hint (e.g., 'vertical').
287
+ * @param {string} [props.label] - Field label text.
288
+ * @param {string} [props.tooltip] - Tooltip/help text.
289
+ * @param {string} [props.className] - CSS class names.
290
+ * @param {string} [props.validate] - Named validation rule.
291
+ * @param {function} [props.onChange] - Change handler invoked with new value.
292
+ */
191
293
  FormSelect.propTypes = {
294
+ /** Input id */
192
295
  id: PropTypes.string.isRequired,
296
+ /** Input name */
193
297
  name: PropTypes.string,
298
+ /** Visual size for select */
194
299
  size: PropTypes.string,
300
+ /** Autocomplete hint */
195
301
  autoComplete: PropTypes.string,
302
+ /** Default selected value (or array for multi-select) */
196
303
  defaultValue: PropTypes.oneOfType([
197
304
  PropTypes.string,
198
305
  PropTypes.array
199
306
  ]),
200
- // flag attributes
307
+ /** Autofocus flag */
201
308
  autoFocus: PropTypes.string,
309
+ /** Disabled flag */
202
310
  disabled: PropTypes.string,
311
+ /** Multiple selection flag */
203
312
  multiple: PropTypes.string,
313
+ /** Read-only flag */
204
314
  readOnly: PropTypes.string,
315
+ /** Required flag */
205
316
  required: PropTypes.string,
206
- // selected: PropTypes.string, // not used
207
- // ----- for calculations
317
+ /** Option list array */
208
318
  options: PropTypes.array,
319
+ /** Layout hint (e.g., 'vertical') */
209
320
  display: PropTypes.string,
321
+ /** Label text */
210
322
  label: PropTypes.string,
323
+ /** Helper text shown in a tooltip for the control */
211
324
  tooltip: PropTypes.string,
325
+ /** Additional CSS classes applied to the select container */
212
326
  className: PropTypes.string,
327
+ /** Name of the validation rule to run for this field */
213
328
  validate: PropTypes.string,
329
+ /** Change handler invoked with the new value */
214
330
  onChange: PropTypes.func,
215
331
  };
216
332
  export function FormSelect(props) {
@@ -218,12 +334,20 @@ export function FormSelect(props) {
218
334
  const options = generateOptions(props.options || [], props, "select", FormSelectOption);
219
335
  return (_jsxs("div", { children: [_jsx(FormLabel, { id: props.id, label: props.label }, "label-" + props.id), props.tooltip ? _jsx(FormTooltip, { id: props.id, text: [props.tooltip] }) : "", props.display == "vertical" ? formValidate : "", _jsx("select", { ...inputProps, suppressHydrationWarning: true, children: options }), props.display != "vertical" ? formValidate : ""] }));
220
336
  }
337
+ /**
338
+ * FormSelectOption — Render an individual <option> element for a select.
339
+ *
340
+ * @param {string} [props.text] - Visible option text.
341
+ * @param {string} [props.value] - Option value attribute.
342
+ * @param {boolean} [props.disabled] - Disable this option when true.
343
+ */
221
344
  FormSelectOption.propTypes = {
345
+ /** Visible text for the option */
222
346
  text: PropTypes.string,
347
+ /** Option value attribute */
223
348
  value: PropTypes.string,
224
- // flag attributes
349
+ /** Disabled flag for the option */
225
350
  disabled: PropTypes.bool,
226
- // selected : PropTypes.string
227
351
  };
228
352
  function FormSelectOption(props) {
229
353
  const { text, disabled, value, ...otherProps } = props;
@@ -234,47 +358,116 @@ function FormSelectOption(props) {
234
358
  };
235
359
  return (_jsx("option", { ...inputProps, children: text }));
236
360
  }
361
+ /**
362
+ * FormTextarea — Multi-line text input with optional validation and label/tooltip support.
363
+ *
364
+ * @param {string} [props.id] - Textarea id attribute.
365
+ * @param {string} [props.name] - Textarea name attribute.
366
+ * @param {string} [props.rows] - Number of rows to display.
367
+ * @param {string} [props.cols] - Number of columns (cols) attribute.
368
+ * @param {string} [props.defaultValue] - Default text value for uncontrolled mode.
369
+ * @param {number} [props.maxLength] - Maximum characters allowed.
370
+ * @param {string} [props.placeholder] - Placeholder text.
371
+ * @param {string} [props.autoComplete] - Autocomplete hint.
372
+ * @param {string} [props.autoFocus] - Autofocus flag.
373
+ * @param {string} [props.disabled] - Disabled flag.
374
+ * @param {string} [props.readOnly] - Read-only flag.
375
+ * @param {string} [props.required] - Required flag.
376
+ * @param {string} [props.display] - Layout hint (e.g., 'vertical').
377
+ * @param {string} [props.label] - Field label text.
378
+ * @param {string} [props.tooltip] - Tooltip/help text.
379
+ * @param {string} [props.className] - CSS class names.
380
+ * @param {string} [props.validate] - Named validation rule.
381
+ * @param {function} [props.onChange] - Change handler invoked with new value.
382
+ */
237
383
  FormTextarea.propTypes = {
384
+ /** Textarea id */
238
385
  id: PropTypes.string.isRequired,
386
+ /** Textarea name */
239
387
  name: PropTypes.string,
388
+ /** Number of rows */
240
389
  rows: PropTypes.string,
390
+ /** Number of columns (visual width) */
241
391
  cols: PropTypes.string,
392
+ /** Default uncontrolled text value */
242
393
  defaultValue: PropTypes.string,
394
+ /** Maximum number of characters allowed */
243
395
  maxLength: PropTypes.number,
396
+ /** Short hint displayed when the field is empty */
244
397
  placeholder: PropTypes.string,
398
+ /** Browser autocomplete hint */
245
399
  autoComplete: PropTypes.string,
246
400
  // flag attributes
401
+ /** If set, the control will receive focus on mount */
247
402
  autoFocus: PropTypes.string,
403
+ /** Set to 'disabled' to render the control disabled */
248
404
  disabled: PropTypes.string,
405
+ /** Set to 'readOnly' to prevent user edits */
249
406
  readOnly: PropTypes.string,
407
+ /** Whether this field is required ('required' to mark mandatory) */
250
408
  required: PropTypes.string,
251
409
  // ----- for calculations
410
+ /** Layout hint; use 'vertical' to stack label and control */
252
411
  display: PropTypes.string,
412
+ /** Text label associated with the control */
253
413
  label: PropTypes.string,
414
+ /** Helper text shown in a tooltip for the control */
254
415
  tooltip: PropTypes.string,
416
+ /** Additional CSS classes applied to the container */
255
417
  className: PropTypes.string,
418
+ /** Name of the validation rule to run for this field */
256
419
  validate: PropTypes.string,
420
+ /** Change handler invoked with the new value */
257
421
  onChange: PropTypes.func,
258
422
  };
259
423
  export function FormTextarea(props) {
260
424
  const { formValidate, inputProps } = useFormComponent(props);
261
425
  return (_jsxs("div", { children: [_jsx(FormLabel, { id: props.id, label: props.label }, "label-" + props.id), props.tooltip ? _jsx(FormTooltip, { id: props.id, text: [props.tooltip] }) : "", props.display == "vertical" ? formValidate : "", _jsx("textarea", { ...inputProps }), props.display != "vertical" ? formValidate : ""] }));
262
426
  }
427
+ /**
428
+ * FormRadio — Render a group of radio buttons from the provided options and handle selection.
429
+ *
430
+ * @param {string} [props.id] - Unique id for this control group.
431
+ * @param {string} [props.name] - HTML name attribute shared by the radio inputs.
432
+ * @param {array} [props.options] - Array of option objects ({ text, value, ... }).
433
+ * @param {string} [props.autoFocus] - If present, the control will receive focus on mount.
434
+ * @param {string} [props.disabled] - Set to 'disabled' to disable the control group.
435
+ * @param {string} [props.readOnly] - Read-only flag; selection cannot be changed.
436
+ * @param {string} [props.required] - Set to 'required' to mark the group mandatory.
437
+ * @param {string} [props.selected] - Currently selected value.
438
+ * @param {string} [props.display] - Layout hint ('vertical' to stack options).
439
+ * @param {string} [props.label] - Optional label text shown above the group.
440
+ * @param {string} [props.tooltip] - Optional helper text shown in a tooltip.
441
+ * @param {string} [props.validate] - Named validation rule to apply to this field.
442
+ * @param {function} [props.onChange] - Handler invoked with the new selected value.
443
+ */
263
444
  FormRadio.propTypes = {
445
+ /** Unique id for the control group */
264
446
  id: PropTypes.string.isRequired, // not using?
447
+ /** HTML name attribute shared by all radio inputs in the group */
265
448
  name: PropTypes.string.isRequired,
449
+ /** Array of option objects used to create radio options */
266
450
  options: PropTypes.array,
267
451
  // flag attributes
452
+ /** If present, the control will receive focus on mount */
268
453
  autoFocus: PropTypes.string,
454
+ /** Set to 'disabled' to disable the control group */
269
455
  disabled: PropTypes.string,
456
+ /** Read-only flag; prevent user changes when set to 'readOnly' */
270
457
  readOnly: PropTypes.string,
458
+ /** Set to 'required' to mark the group mandatory */
271
459
  required: PropTypes.string,
272
460
  // ? selected: PropTypes.string,
273
461
  // ----- for calculations
462
+ /** Layout hint (use 'vertical' to stack options) */
274
463
  display: PropTypes.string,
464
+ /** Optional label text shown above the group */
275
465
  label: PropTypes.string,
466
+ /** Helper text shown in a tooltip for the group */
276
467
  tooltip: PropTypes.string,
468
+ /** Named validation rule to apply */
277
469
  validate: PropTypes.string,
470
+ /** Handler invoked with the new selected value */
278
471
  onChange: PropTypes.func,
279
472
  };
280
473
  export function FormRadio(props) {
@@ -282,13 +475,27 @@ export function FormRadio(props) {
282
475
  const options = generateOptions(props.options || [], props, "radio", FormRadioOption);
283
476
  return (_jsxs("div", { children: [_jsx(FormLabel, { id: props.name, label: props.label }, "label-" + props.id), props.tooltip ? _jsx(FormTooltip, { id: props.id, text: [props.tooltip] }) : "", props.display == "vertical" ? formValidate : "", options, props.display != "vertical" ? formValidate : ""] }));
284
477
  }
478
+ /**
479
+ * FormRadioOption — Render an individual radio option within a FormRadio group.
480
+ *
481
+ * @param {string} [props.name] - HTML name attribute shared by the option.
482
+ * @param {string} [props.text] - Visible label text for the option.
483
+ * @param {string} [props.value] - Option value submitted when selected.
484
+ * @param {string} [props.checked] - Whether this option is currently selected.
485
+ * @param {any} [props.parent] - Reference to the parent control (used for controlled behavior).
486
+ */
285
487
  FormRadioOption.propTypes = {
488
+ /** HTML name attribute shared by the option */
286
489
  name: PropTypes.string,
490
+ /** Visible label text for the option */
287
491
  text: PropTypes.string,
492
+ /** Option value submitted when selected */
288
493
  value: PropTypes.string.isRequired,
289
494
  // flag attributes
495
+ /** Whether this option is currently selected */
290
496
  checked: PropTypes.string,
291
497
  // ----- for calculations
498
+ /** Reference to the parent control (used for controlled behavior) */
292
499
  parent: PropTypes.any,
293
500
  };
294
501
  function FormRadioOption(props) {
@@ -305,20 +512,48 @@ function FormRadioOption(props) {
305
512
  const controlProps = parentHasOnChange ? { checked: isChecked } : { defaultChecked: isChecked };
306
513
  return (_jsxs("span", { className: props.parent && props.parent.display == "vertical" ? "displayVertical" : "", children: [_jsx("input", { type: "radio", id: `${props.parent?.name}-${props.value}`, name: props.parent?.name, value: props.value, ...controlProps, onChange: handleChange, required: !!(props.parent && props.parent.required), ...inputProps }), _jsx("label", { htmlFor: `${props.parent?.name}-${props.value}`, children: props.text })] }));
307
514
  }
515
+ /**
516
+ * FormCheckbox — Render a set of checkbox inputs from provided options and manage selection array.
517
+ *
518
+ * @param {string} [props.id] - Unique id for this control group.
519
+ * @param {string} [props.name] - Base name used for generated checkbox inputs.
520
+ * @param {array} [props.options] - Array of option objects ({ text, value, ... }).
521
+ * @param {string} [props.autoFocus] - If present, the control will receive focus on mount.
522
+ * @param {string} [props.disabled] - Set to 'disabled' to disable the control group.
523
+ * @param {string} [props.readOnly] - Read-only flag; selection cannot be changed.
524
+ * @param {string} [props.display] - Layout hint (e.g., 'vertical' to stack checkboxes).
525
+ * @param {string} [props.label] - Optional label text shown above the group.
526
+ * @param {string} [props.tooltip] - Optional helper text shown in a tooltip.
527
+ * @param {string} [props.className] - Additional CSS classes applied to the container.
528
+ * @param {string} [props.validate] - Named validation rule to apply to the group.
529
+ * @param {function} [props.onChange] - Handler invoked with the updated selected values array.
530
+ */
308
531
  FormCheckbox.propTypes = {
532
+ /** Unique id for the control group */
309
533
  id: PropTypes.string.isRequired,
534
+ /** Base name used for generated checkbox inputs */
310
535
  name: PropTypes.string.isRequired,
536
+ /** Array of option objects used to create checkbox options */
311
537
  options: PropTypes.array,
312
538
  // flag attributes
539
+ /** If present, the control will receive focus on mount */
313
540
  autoFocus: PropTypes.string,
541
+ /** Set to 'disabled' to disable the control group */
314
542
  disabled: PropTypes.string,
543
+ /** Read-only flag; prevent user changes when set to 'readOnly' */
315
544
  readOnly: PropTypes.string,
316
545
  // ----- for calculations
546
+ /** Layout hint; use 'vertical' to stack checkboxes */
317
547
  display: PropTypes.string,
548
+ /** Optional label text shown above the group */
318
549
  label: PropTypes.string,
550
+ /** Helper text shown in a tooltip for the group */
319
551
  tooltip: PropTypes.string,
552
+ /** Additional CSS classes applied to the container */
320
553
  className: PropTypes.string,
554
+ /** Named validation rule to apply to the group */
321
555
  validate: PropTypes.string,
556
+ /** Handler invoked with the updated selected values array */
322
557
  onChange: PropTypes.func,
323
558
  };
324
559
  export function FormCheckbox(props) {
@@ -326,12 +561,24 @@ export function FormCheckbox(props) {
326
561
  const options = generateOptions(props.options || [], props, "checkbox", FormCheckboxOption);
327
562
  return (_jsxs("div", { children: [_jsx(FormLabel, { id: props.name, label: props.label }, "label-" + props.id), props.tooltip ? _jsx(FormTooltip, { id: props.id, text: [props.tooltip] }) : "", props.display == "vertical" ? formValidate : "", options, props.display != "vertical" ? formValidate : ""] }));
328
563
  }
564
+ /**
565
+ * FormCheckboxOption — Render a single checkbox option for a FormCheckbox group.
566
+ *
567
+ * @param {string} [props.text] - Visible label text for the checkbox option.
568
+ * @param {string} [props.value] - Value attribute for the option.
569
+ * @param {string} [props.selected] - Whether this option is selected (initial/default state).
570
+ * @param {any} [props.parent] - Reference to the parent control (used to update values).
571
+ */
329
572
  FormCheckboxOption.propTypes = {
573
+ /** Visible label text for the checkbox option */
330
574
  text: PropTypes.string.isRequired,
575
+ /** Value attribute for the option */
331
576
  value: PropTypes.string.isRequired,
332
577
  // flag attributes
578
+ /** Whether this option is selected (used for initial/default state) */
333
579
  selected: PropTypes.string,
334
580
  // ----- for calculations
581
+ /** Reference to the parent control (used to update values) */
335
582
  parent: PropTypes.any,
336
583
  };
337
584
  function FormCheckboxOption(props) {
@@ -352,19 +599,41 @@ function FormCheckboxOption(props) {
352
599
  };
353
600
  return (_jsxs("span", { className: props.parent.display == "vertical" ? "displayVertical" : "", children: [_jsx("input", { type: "checkbox", id: props.parent.name + "_" + props.text, name: props.text, value: props.value, checked: isChecked, onChange: handleChange, ...inputProps }), _jsx("label", { htmlFor: props.parent.name + "_" + props.text, children: props.text })] }));
354
601
  }
602
+ /**
603
+ * FormButton — Render a standard HTML button used for form actions.
604
+ *
605
+ * @param {string} [props.type] - Button type: 'button' | 'submit' | 'reset'.
606
+ * @param {string} [props.id] - Unique identifier for the button element.
607
+ * @param {string} [props.text] - Text displayed inside the button.
608
+ * @param {string} [props.className] - Additional CSS classes for the button.
609
+ * @param {function} [props.onClick] - Click handler function.
610
+ */
355
611
  FormButton.propTypes = {
612
+ /** Button type: 'button' | 'submit' | 'reset' */
356
613
  type: PropTypes.string,
614
+ /** Unique identifier for the button element */
357
615
  id: PropTypes.string.isRequired,
616
+ /** Text displayed inside the button */
358
617
  text: PropTypes.string,
359
618
  // ----- for calculations
619
+ /** Additional CSS classes for the button */
360
620
  className: PropTypes.string,
621
+ /** Click handler function */
361
622
  onClick: PropTypes.func
362
623
  };
363
624
  export function FormButton(props) {
364
625
  return (_jsx("div", { children: _jsx("button", { type: props.type, id: props.id, className: props.className || "", onClick: props.onClick || undefined, children: props.text }) }));
365
626
  }
627
+ /**
628
+ * FormDataList — Render a native HTML <datalist> used to provide suggestions for text inputs.
629
+ *
630
+ * @param {string} [props.id] - Id attribute for the generated <datalist> element.
631
+ * @param {array} [props.items] - Array of string items to include as options.
632
+ */
366
633
  FormDataList.propTypes = {
634
+ /** Id attribute for the generated <datalist> element */
367
635
  id: PropTypes.string.isRequired,
636
+ /** Array of string items to include as options */
368
637
  items: PropTypes.array,
369
638
  };
370
639
  export function FormDataList(props) {
@@ -377,23 +646,57 @@ export function FormDataList(props) {
377
646
  }
378
647
  return (_jsx("datalist", { id: props.id, children: options }));
379
648
  }
649
+ /**
650
+ * FormTagInput — Tag entry control that allows adding/removing multiple string tags.
651
+ *
652
+ * @param {string} [props.id] - Unique id for the tag input control.
653
+ * @param {string} [props.name] - Name attribute for the input element.
654
+ * @param {arrayOf} [props.defaultValue] - Initial tags for uncontrolled mode.
655
+ * @param {arrayOf} [props.value] - Controlled tags array when used as a controlled component.
656
+ * @param {string} [props.placeholder] - Placeholder text shown when empty.
657
+ * @param {string} [props.autoComplete] - Browser autocomplete hint.
658
+ * @param {string} [props.disabled] - Set to 'disabled' to disable input.
659
+ * @param {string} [props.readOnly] - Set to 'readOnly' to prevent edits.
660
+ * @param {string} [props.required] - Mark field as required when set to 'required'.
661
+ * @param {string} [props.display] - Layout hint (e.g., 'vertical' to place validation below).
662
+ * @param {string} [props.label] - Label text for the control.
663
+ * @param {string} [props.tooltip] - Helper text shown in a tooltip.
664
+ * @param {string} [props.className] - Additional CSS classes for the component.
665
+ * @param {string} [props.validate] - Named validation rule to run for this field.
666
+ * @param {function} [props.onChange] - Change handler invoked with the updated tags array.
667
+ */
380
668
  FormTagInput.propTypes = {
669
+ /** Unique id for the tag input control */
381
670
  id: PropTypes.string.isRequired,
671
+ /** Name attribute for the input element */
382
672
  name: PropTypes.string,
673
+ /** Initial tags for uncontrolled mode */
383
674
  defaultValue: PropTypes.arrayOf(PropTypes.string),
675
+ /** Controlled tags array when used as a controlled component */
384
676
  value: PropTypes.arrayOf(PropTypes.string),
677
+ /** Placeholder text shown when empty */
385
678
  placeholder: PropTypes.string,
679
+ /** Browser autocomplete hint */
386
680
  autoComplete: PropTypes.string,
387
681
  // flag attributes
682
+ /** Set to 'disabled' to disable input */
388
683
  disabled: PropTypes.string,
684
+ /** Set to 'readOnly' to prevent edits */
389
685
  readOnly: PropTypes.string,
686
+ /** Mark field as required when set to 'required' */
390
687
  required: PropTypes.string,
391
688
  // ----- for calculations
689
+ /** Layout hint (e.g., 'vertical' to place validation below) */
392
690
  display: PropTypes.string,
691
+ /** Label text for the control */
393
692
  label: PropTypes.string,
693
+ /** Helper text shown in a tooltip */
394
694
  tooltip: PropTypes.string,
695
+ /** Additional CSS classes for the component */
395
696
  className: PropTypes.string,
697
+ /** Named validation rule to run for this field */
396
698
  validate: PropTypes.string,
699
+ /** Change handler invoked with the updated tags array */
397
700
  onChange: PropTypes.func,
398
701
  };
399
702
  export function FormTagInput(props) {
@@ -463,7 +766,15 @@ export function FormTagInput(props) {
463
766
  };
464
767
  return (_jsxs("div", { className: `form-tag-input ${props.className || ''}`, children: [_jsx(FormLabel, { id: props.id, label: props.label }, "label-" + props.id), props.tooltip ? _jsx(FormTooltip, { id: props.id, text: [props.tooltip] }) : "", props.display === "vertical" ? formValidate : "", _jsxs("div", { className: "tag-container", children: [currentTags.map((tag, index) => (_jsxs("span", { className: "tag-chip", children: [tag, _jsx("button", { type: "button", className: "tag-remove", onClick: () => removeTag(tag), "aria-label": `Remove ${tag}`, disabled: props.disabled === 'disabled', children: "\u00D7" })] }, index))), _jsx("input", { type: "text", id: props.id, name: props.name || undefined, value: inputValue, onChange: handleInputChange, onKeyDown: handleKeyDown, placeholder: props.placeholder || "Add tag...", autoComplete: props.autoComplete || undefined, disabled: props.disabled === 'disabled', readOnly: props.readOnly === 'readOnly', required: props.required === 'required', className: "tag-input", "aria-label": "Add new tag" })] }), props.display !== "vertical" ? formValidate : ""] }));
465
768
  }
466
- FormFieldset.propTypes = {};
769
+ /**
770
+ * FormFieldset — Semantic grouping container used by form components.
771
+ *
772
+ * This component currently does not accept any props but provides a named
773
+ * placeholder for grouping form fields and future extensions.
774
+ * @param {any} [props] - No props are accepted by FormFieldset.
775
+ */
776
+ /** FormFieldset.propTypes — No props */
777
+ FormFieldset.propTypes = { /** no props */};
467
778
  export function FormFieldset(props) {
468
779
  return (_jsx(_Fragment, {}));
469
780
  }
@@ -475,8 +786,16 @@ export function FormFieldset(props) {
475
786
  - aria-hidden + tabIndex -1 + autocomplete="off"
476
787
  - no label / no validation / no required
477
788
  */
789
+ /**
790
+ * FormHoneypot — Render a hidden honeypot text input used to trap automated spam bots.
791
+ *
792
+ * @param {string} [props.id] - Id for the honeypot field (defaults to 'winnie').
793
+ * @param {string} [props.name] - Name attribute for the honeypot input (defaults to 'website').
794
+ */
478
795
  FormHoneypot.propTypes = {
796
+ /** Id for the honeypot field (defaults to 'winnie') */
479
797
  id: PropTypes.string.isRequired,
798
+ /** Name attribute for the honeypot input (defaults to 'website') */
480
799
  name: PropTypes.string,
481
800
  };
482
801
  export function FormHoneypot({ id = "winnie", name }) {
@@ -2,7 +2,7 @@
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import React from 'react';
4
4
  import PropTypes from 'prop-types';
5
- import { generateKey } from './formutils';
5
+ import { generateKey } from '../../general/utilities';
6
6
  import { FormValidationProvider, useFormValidation } from './formvalidator';
7
7
  import * as FC from './formcomponents';
8
8
  import { CompoundFontSelector } from '../config/CompoundFontSelector';
@@ -16,21 +16,49 @@ export const COMPONENTS = {
16
16
  const debug = false;
17
17
  /* ===== FORM ENGINE =====
18
18
  Generate all the elements to display a form */
19
+ /**
20
+ * FormEngine — Render a form defined by a JSON `formData` schema. Converts `formData.fields` to React components and manages submission handling and validation.
21
+ *
22
+ * @param {string} [props.name] - Form HTML name attribute.
23
+ * @param {string} [props.id] - Form HTML id attribute.
24
+ * @param {string} [props.method] - HTTP method for form submission (default: 'post').
25
+ * @param {function} [props.onSubmitHandler] - Optional submit handler invoked with the submit event.
26
+ * @param {object} [props.formData] - JSON schema describing fields (object with `fields` array).
27
+ */
19
28
  FormEngine.propTypes = {
29
+ /** Form name attribute */
20
30
  name: PropTypes.string,
31
+ /** Form id attribute */
21
32
  id: PropTypes.string,
33
+ /** HTTP method (e.g., 'post') */
22
34
  method: PropTypes.string,
35
+ /** Submit handler called when the form is valid and submitted */
23
36
  onSubmitHandler: PropTypes.func,
37
+ /** JSON schema describing form fields */
24
38
  formData: PropTypes.object.isRequired
25
39
  };
26
40
  export function FormEngine(props) {
27
41
  return (_jsx(FormValidationProvider, { children: _jsx(FormEngineInner, { ...props }) }));
28
42
  }
43
+ /**
44
+ * FormEngineInner — Internal implementation of the `FormEngine` that renders the generated fields and handles form submit/validation.
45
+ *
46
+ * @param {string} [props.name] - Form HTML name attribute.
47
+ * @param {string} [props.id] - Form HTML id attribute.
48
+ * @param {string} [props.method] - HTTP method for submission.
49
+ * @param {function} [props.onSubmitHandler] - Submit handler invoked when form is validated.
50
+ * @param {object} [props.formData] - JSON schema describing fields (object with `fields` array).
51
+ */
29
52
  FormEngineInner.propTypes = {
53
+ /** Form name attribute */
30
54
  name: PropTypes.string,
55
+ /** Form id attribute */
31
56
  id: PropTypes.string,
57
+ /** HTTP method */
32
58
  method: PropTypes.string,
59
+ /** Submit handler */
33
60
  onSubmitHandler: PropTypes.func,
61
+ /** JSON form schema */
34
62
  formData: PropTypes.object.isRequired
35
63
  };
36
64
  function FormEngineInner(props) {
@@ -46,7 +74,13 @@ function FormEngineInner(props) {
46
74
  formProps.method = 'post';
47
75
  return formProps;
48
76
  }
77
+ /**
78
+ * generateNewFields — Internal: convert JSON-form `formData.fields` into React elements for rendering.
79
+ *
80
+ * @param {any} [props.formData] - JSON form schema with `fields` array to convert.
81
+ */
49
82
  generateNewFields.propTypes = {
83
+ /** JSON form schema with `fields` array */
50
84
  formData: PropTypes.any.isRequired,
51
85
  };
52
86
  function generateNewFields(props) {