@pithyjs/ui-kit 0.1.0-beta.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 (417) hide show
  1. package/LICENSE +21 -0
  2. package/dist/animation/animate-in.d.ts +35 -0
  3. package/dist/animation/animate-in.d.ts.map +1 -0
  4. package/dist/animation/animate-in.js +71 -0
  5. package/dist/animation/animate-in.js.map +1 -0
  6. package/dist/atoms/actions/_icon-control.scss +53 -0
  7. package/dist/atoms/actions/button/Button.d.ts +93 -0
  8. package/dist/atoms/actions/button/Button.d.ts.map +1 -0
  9. package/dist/atoms/actions/button/Button.js +332 -0
  10. package/dist/atoms/actions/button/Button.js.map +1 -0
  11. package/dist/atoms/actions/button/button.scss +342 -0
  12. package/dist/atoms/actions/icon-button/IconButton.d.ts +47 -0
  13. package/dist/atoms/actions/icon-button/IconButton.d.ts.map +1 -0
  14. package/dist/atoms/actions/icon-button/IconButton.js +81 -0
  15. package/dist/atoms/actions/icon-button/IconButton.js.map +1 -0
  16. package/dist/atoms/actions/icon-button/icon-button.scss +20 -0
  17. package/dist/atoms/actions/icon-group/IconGroup.d.ts +60 -0
  18. package/dist/atoms/actions/icon-group/IconGroup.d.ts.map +1 -0
  19. package/dist/atoms/actions/icon-group/IconGroup.js +191 -0
  20. package/dist/atoms/actions/icon-group/IconGroup.js.map +1 -0
  21. package/dist/atoms/actions/icon-group/icon-group.scss +36 -0
  22. package/dist/atoms/actions/segmented-control/SegmentedControl.d.ts +49 -0
  23. package/dist/atoms/actions/segmented-control/SegmentedControl.d.ts.map +1 -0
  24. package/dist/atoms/actions/segmented-control/SegmentedControl.js +107 -0
  25. package/dist/atoms/actions/segmented-control/SegmentedControl.js.map +1 -0
  26. package/dist/atoms/actions/segmented-control/segmented-control.scss +90 -0
  27. package/dist/atoms/content/_mixins.scss +79 -0
  28. package/dist/atoms/content/action-tile/ActionTile.d.ts +27 -0
  29. package/dist/atoms/content/action-tile/ActionTile.d.ts.map +1 -0
  30. package/dist/atoms/content/action-tile/ActionTile.js +98 -0
  31. package/dist/atoms/content/action-tile/ActionTile.js.map +1 -0
  32. package/dist/atoms/content/action-tile/action-tile.scss +150 -0
  33. package/dist/atoms/content/badge/Badge.d.ts +57 -0
  34. package/dist/atoms/content/badge/Badge.d.ts.map +1 -0
  35. package/dist/atoms/content/badge/Badge.js +177 -0
  36. package/dist/atoms/content/badge/Badge.js.map +1 -0
  37. package/dist/atoms/content/badge/badge.scss +198 -0
  38. package/dist/atoms/content/heading/Heading.d.ts +53 -0
  39. package/dist/atoms/content/heading/Heading.d.ts.map +1 -0
  40. package/dist/atoms/content/heading/Heading.js +142 -0
  41. package/dist/atoms/content/heading/Heading.js.map +1 -0
  42. package/dist/atoms/content/heading/heading.scss +43 -0
  43. package/dist/atoms/content/icon/Icon.d.ts +68 -0
  44. package/dist/atoms/content/icon/Icon.d.ts.map +1 -0
  45. package/dist/atoms/content/icon/Icon.js +137 -0
  46. package/dist/atoms/content/icon/Icon.js.map +1 -0
  47. package/dist/atoms/content/icon/icon.scss +66 -0
  48. package/dist/atoms/content/icon/resolveIconSvg.d.ts +21 -0
  49. package/dist/atoms/content/icon/resolveIconSvg.d.ts.map +1 -0
  50. package/dist/atoms/content/icon/resolveIconSvg.js +73 -0
  51. package/dist/atoms/content/icon/resolveIconSvg.js.map +1 -0
  52. package/dist/atoms/content/image/Image.d.ts +81 -0
  53. package/dist/atoms/content/image/Image.d.ts.map +1 -0
  54. package/dist/atoms/content/image/Image.js +293 -0
  55. package/dist/atoms/content/image/Image.js.map +1 -0
  56. package/dist/atoms/content/image/image.scss +77 -0
  57. package/dist/atoms/content/text/Text.d.ts +58 -0
  58. package/dist/atoms/content/text/Text.d.ts.map +1 -0
  59. package/dist/atoms/content/text/Text.js +158 -0
  60. package/dist/atoms/content/text/Text.js.map +1 -0
  61. package/dist/atoms/content/text/text.scss +98 -0
  62. package/dist/atoms/content/tile/Tile.d.ts +66 -0
  63. package/dist/atoms/content/tile/Tile.d.ts.map +1 -0
  64. package/dist/atoms/content/tile/Tile.js +125 -0
  65. package/dist/atoms/content/tile/Tile.js.map +1 -0
  66. package/dist/atoms/content/tile/tile.scss +122 -0
  67. package/dist/atoms/feedback/tooltip/Tooltip.d.ts +44 -0
  68. package/dist/atoms/feedback/tooltip/Tooltip.d.ts.map +1 -0
  69. package/dist/atoms/feedback/tooltip/Tooltip.js +121 -0
  70. package/dist/atoms/feedback/tooltip/Tooltip.js.map +1 -0
  71. package/dist/atoms/feedback/tooltip/tooltip.scss +96 -0
  72. package/dist/atoms/forms/checkbox/Checkbox.d.ts +49 -0
  73. package/dist/atoms/forms/checkbox/Checkbox.d.ts.map +1 -0
  74. package/dist/atoms/forms/checkbox/Checkbox.js +269 -0
  75. package/dist/atoms/forms/checkbox/Checkbox.js.map +1 -0
  76. package/dist/atoms/forms/checkbox/CheckboxGroup.d.ts +50 -0
  77. package/dist/atoms/forms/checkbox/CheckboxGroup.d.ts.map +1 -0
  78. package/dist/atoms/forms/checkbox/CheckboxGroup.js +132 -0
  79. package/dist/atoms/forms/checkbox/CheckboxGroup.js.map +1 -0
  80. package/dist/atoms/forms/checkbox/checkbox.scss +506 -0
  81. package/dist/atoms/forms/file-picker/FilePicker.d.ts +23 -0
  82. package/dist/atoms/forms/file-picker/FilePicker.d.ts.map +1 -0
  83. package/dist/atoms/forms/file-picker/FilePicker.js +103 -0
  84. package/dist/atoms/forms/file-picker/FilePicker.js.map +1 -0
  85. package/dist/atoms/forms/file-picker/file-picker.scss +84 -0
  86. package/dist/atoms/forms/form-field/FormField.d.ts +39 -0
  87. package/dist/atoms/forms/form-field/FormField.d.ts.map +1 -0
  88. package/dist/atoms/forms/form-field/FormField.js +139 -0
  89. package/dist/atoms/forms/form-field/FormField.js.map +1 -0
  90. package/dist/atoms/forms/form-field/form-field.scss +46 -0
  91. package/dist/atoms/forms/input/Input.d.ts +81 -0
  92. package/dist/atoms/forms/input/Input.d.ts.map +1 -0
  93. package/dist/atoms/forms/input/Input.js +417 -0
  94. package/dist/atoms/forms/input/Input.js.map +1 -0
  95. package/dist/atoms/forms/input/input.scss +547 -0
  96. package/dist/atoms/forms/radio/Radio.d.ts +54 -0
  97. package/dist/atoms/forms/radio/Radio.d.ts.map +1 -0
  98. package/dist/atoms/forms/radio/Radio.js +278 -0
  99. package/dist/atoms/forms/radio/Radio.js.map +1 -0
  100. package/dist/atoms/forms/radio/RadioGroup.d.ts +54 -0
  101. package/dist/atoms/forms/radio/RadioGroup.d.ts.map +1 -0
  102. package/dist/atoms/forms/radio/RadioGroup.js +137 -0
  103. package/dist/atoms/forms/radio/RadioGroup.js.map +1 -0
  104. package/dist/atoms/forms/radio/radio.scss +459 -0
  105. package/dist/atoms/forms/select/Select.d.ts +57 -0
  106. package/dist/atoms/forms/select/Select.d.ts.map +1 -0
  107. package/dist/atoms/forms/select/Select.js +457 -0
  108. package/dist/atoms/forms/select/Select.js.map +1 -0
  109. package/dist/atoms/forms/select/select-dropdown.d.ts +49 -0
  110. package/dist/atoms/forms/select/select-dropdown.d.ts.map +1 -0
  111. package/dist/atoms/forms/select/select-dropdown.js +305 -0
  112. package/dist/atoms/forms/select/select-dropdown.js.map +1 -0
  113. package/dist/atoms/forms/select/select-keyboard.d.ts +14 -0
  114. package/dist/atoms/forms/select/select-keyboard.d.ts.map +1 -0
  115. package/dist/atoms/forms/select/select-keyboard.js +182 -0
  116. package/dist/atoms/forms/select/select-keyboard.js.map +1 -0
  117. package/dist/atoms/forms/select/select.scss +630 -0
  118. package/dist/atoms/forms/textarea/Textarea.d.ts +69 -0
  119. package/dist/atoms/forms/textarea/Textarea.d.ts.map +1 -0
  120. package/dist/atoms/forms/textarea/Textarea.js +394 -0
  121. package/dist/atoms/forms/textarea/Textarea.js.map +1 -0
  122. package/dist/atoms/forms/textarea/textarea.scss +486 -0
  123. package/dist/atoms/forms/toggle/Toggle.d.ts +47 -0
  124. package/dist/atoms/forms/toggle/Toggle.d.ts.map +1 -0
  125. package/dist/atoms/forms/toggle/Toggle.js +243 -0
  126. package/dist/atoms/forms/toggle/Toggle.js.map +1 -0
  127. package/dist/atoms/forms/toggle/toggle.scss +561 -0
  128. package/dist/compiler.d.ts +7 -0
  129. package/dist/compiler.d.ts.map +1 -0
  130. package/dist/compiler.js +18 -0
  131. package/dist/compiler.js.map +1 -0
  132. package/dist/icons/index.d.ts +14 -0
  133. package/dist/icons/index.d.ts.map +1 -0
  134. package/dist/icons/index.js +14 -0
  135. package/dist/icons/index.js.map +1 -0
  136. package/dist/icons/registry.d.ts +65 -0
  137. package/dist/icons/registry.d.ts.map +1 -0
  138. package/dist/icons/registry.js +126 -0
  139. package/dist/icons/registry.js.map +1 -0
  140. package/dist/index.d.ts +55 -0
  141. package/dist/index.d.ts.map +1 -0
  142. package/dist/index.js +64 -0
  143. package/dist/index.js.map +1 -0
  144. package/dist/layout/Grid.d.ts +78 -0
  145. package/dist/layout/Grid.d.ts.map +1 -0
  146. package/dist/layout/Grid.js +272 -0
  147. package/dist/layout/Grid.js.map +1 -0
  148. package/dist/layout/GridItem.d.ts +52 -0
  149. package/dist/layout/GridItem.d.ts.map +1 -0
  150. package/dist/layout/GridItem.js +99 -0
  151. package/dist/layout/GridItem.js.map +1 -0
  152. package/dist/layout/PageSection.d.ts +43 -0
  153. package/dist/layout/PageSection.d.ts.map +1 -0
  154. package/dist/layout/PageSection.js +75 -0
  155. package/dist/layout/PageSection.js.map +1 -0
  156. package/dist/layout/SmartContainer.d.ts +66 -0
  157. package/dist/layout/SmartContainer.d.ts.map +1 -0
  158. package/dist/layout/SmartContainer.js +194 -0
  159. package/dist/layout/SmartContainer.js.map +1 -0
  160. package/dist/layout/Stack.d.ts +65 -0
  161. package/dist/layout/Stack.d.ts.map +1 -0
  162. package/dist/layout/Stack.js +114 -0
  163. package/dist/layout/Stack.js.map +1 -0
  164. package/dist/organisms/content/Card.d.ts +93 -0
  165. package/dist/organisms/content/Card.d.ts.map +1 -0
  166. package/dist/organisms/content/Card.js +353 -0
  167. package/dist/organisms/content/Card.js.map +1 -0
  168. package/dist/organisms/content/_card-horizontal.scss +88 -0
  169. package/dist/organisms/content/_card-link.scss +49 -0
  170. package/dist/organisms/content/_card-overlay.scss +91 -0
  171. package/dist/organisms/content/_card-root.scss +99 -0
  172. package/dist/organisms/content/_card-slots.scss +143 -0
  173. package/dist/organisms/content/_card-states.scss +166 -0
  174. package/dist/organisms/content/_card-tokens.scss +22 -0
  175. package/dist/organisms/content/_card-variants.scss +31 -0
  176. package/dist/organisms/content/card.scss +15 -0
  177. package/dist/organisms/feedback/Modal.d.ts +39 -0
  178. package/dist/organisms/feedback/Modal.d.ts.map +1 -0
  179. package/dist/organisms/feedback/Modal.js +120 -0
  180. package/dist/organisms/feedback/Modal.js.map +1 -0
  181. package/dist/organisms/feedback/Popover.d.ts +30 -0
  182. package/dist/organisms/feedback/Popover.d.ts.map +1 -0
  183. package/dist/organisms/feedback/Popover.js +151 -0
  184. package/dist/organisms/feedback/Popover.js.map +1 -0
  185. package/dist/organisms/feedback/modal.scss +66 -0
  186. package/dist/organisms/feedback/popover.scss +27 -0
  187. package/dist/organisms/forms/DynamicForm.d.ts +118 -0
  188. package/dist/organisms/forms/DynamicForm.d.ts.map +1 -0
  189. package/dist/organisms/forms/DynamicForm.js +546 -0
  190. package/dist/organisms/forms/DynamicForm.js.map +1 -0
  191. package/dist/organisms/forms/Form.d.ts +62 -0
  192. package/dist/organisms/forms/Form.d.ts.map +1 -0
  193. package/dist/organisms/forms/Form.js +131 -0
  194. package/dist/organisms/forms/Form.js.map +1 -0
  195. package/dist/organisms/forms/dynamic-form.scss +91 -0
  196. package/dist/organisms/forms/form-helpers.d.ts +21 -0
  197. package/dist/organisms/forms/form-helpers.d.ts.map +1 -0
  198. package/dist/organisms/forms/form-helpers.js +57 -0
  199. package/dist/organisms/forms/form-helpers.js.map +1 -0
  200. package/dist/organisms/forms/form-state.d.ts +66 -0
  201. package/dist/organisms/forms/form-state.d.ts.map +1 -0
  202. package/dist/organisms/forms/form-state.js +156 -0
  203. package/dist/organisms/forms/form-state.js.map +1 -0
  204. package/dist/organisms/forms/form.scss +23 -0
  205. package/dist/organisms/forms/validation.d.ts +32 -0
  206. package/dist/organisms/forms/validation.d.ts.map +1 -0
  207. package/dist/organisms/forms/validation.js +118 -0
  208. package/dist/organisms/forms/validation.js.map +1 -0
  209. package/dist/organisms/navigation/Navbar.d.ts +66 -0
  210. package/dist/organisms/navigation/Navbar.d.ts.map +1 -0
  211. package/dist/organisms/navigation/Navbar.js +881 -0
  212. package/dist/organisms/navigation/Navbar.js.map +1 -0
  213. package/dist/organisms/navigation/_navbar-announcement.scss +62 -0
  214. package/dist/organisms/navigation/_navbar-brand.scss +69 -0
  215. package/dist/organisms/navigation/_navbar-container.scss +37 -0
  216. package/dist/organisms/navigation/_navbar-desktop.scss +116 -0
  217. package/dist/organisms/navigation/_navbar-drawer.scss +97 -0
  218. package/dist/organisms/navigation/_navbar-links.scss +143 -0
  219. package/dist/organisms/navigation/_navbar-menu.scss +193 -0
  220. package/dist/organisms/navigation/_navbar-root.scss +107 -0
  221. package/dist/organisms/navigation/_navbar-search.scss +83 -0
  222. package/dist/organisms/navigation/_navbar-toggle.scss +91 -0
  223. package/dist/organisms/navigation/_navbar-tokens.scss +15 -0
  224. package/dist/organisms/navigation/navbar.scss +17 -0
  225. package/dist/registry/categories.d.ts +6 -0
  226. package/dist/registry/categories.d.ts.map +1 -0
  227. package/dist/registry/categories.js +13 -0
  228. package/dist/registry/categories.js.map +1 -0
  229. package/dist/registry/components.d.ts +5 -0
  230. package/dist/registry/components.d.ts.map +1 -0
  231. package/dist/registry/components.js +95 -0
  232. package/dist/registry/components.js.map +1 -0
  233. package/dist/registry/index.d.ts +59 -0
  234. package/dist/registry/index.d.ts.map +1 -0
  235. package/dist/registry/index.js +79 -0
  236. package/dist/registry/index.js.map +1 -0
  237. package/dist/registry/levels.d.ts +6 -0
  238. package/dist/registry/levels.d.ts.map +1 -0
  239. package/dist/registry/levels.js +9 -0
  240. package/dist/registry/levels.js.map +1 -0
  241. package/dist/registry/registry-meta-types.d.ts +67 -0
  242. package/dist/registry/registry-meta-types.d.ts.map +1 -0
  243. package/dist/registry/registry-meta-types.js +6 -0
  244. package/dist/registry/registry-meta-types.js.map +1 -0
  245. package/dist/registry/registry-meta.d.ts +5 -0
  246. package/dist/registry/registry-meta.d.ts.map +1 -0
  247. package/dist/registry/registry-meta.js +731 -0
  248. package/dist/registry/registry-meta.js.map +1 -0
  249. package/dist/registry/renderer.d.ts +69 -0
  250. package/dist/registry/renderer.d.ts.map +1 -0
  251. package/dist/registry/renderer.js +311 -0
  252. package/dist/registry/renderer.js.map +1 -0
  253. package/dist/sections/_section-base.scss +204 -0
  254. package/dist/sections/contact/ContactSection.d.ts +55 -0
  255. package/dist/sections/contact/ContactSection.d.ts.map +1 -0
  256. package/dist/sections/contact/ContactSection.js +142 -0
  257. package/dist/sections/contact/ContactSection.js.map +1 -0
  258. package/dist/sections/contact/contact-section.scss +142 -0
  259. package/dist/sections/cta/CTASection.d.ts +52 -0
  260. package/dist/sections/cta/CTASection.d.ts.map +1 -0
  261. package/dist/sections/cta/CTASection.js +130 -0
  262. package/dist/sections/cta/CTASection.js.map +1 -0
  263. package/dist/sections/cta/cta-section.scss +131 -0
  264. package/dist/sections/entrance.d.ts +29 -0
  265. package/dist/sections/entrance.d.ts.map +1 -0
  266. package/dist/sections/entrance.js +69 -0
  267. package/dist/sections/entrance.js.map +1 -0
  268. package/dist/sections/features/FeaturesSection.d.ts +54 -0
  269. package/dist/sections/features/FeaturesSection.d.ts.map +1 -0
  270. package/dist/sections/features/FeaturesSection.js +139 -0
  271. package/dist/sections/features/FeaturesSection.js.map +1 -0
  272. package/dist/sections/features/features-section.scss +140 -0
  273. package/dist/sections/footer/FooterSection.d.ts +53 -0
  274. package/dist/sections/footer/FooterSection.d.ts.map +1 -0
  275. package/dist/sections/footer/FooterSection.js +147 -0
  276. package/dist/sections/footer/FooterSection.js.map +1 -0
  277. package/dist/sections/footer/footer-section.scss +131 -0
  278. package/dist/sections/hero/HeroSection.d.ts +66 -0
  279. package/dist/sections/hero/HeroSection.d.ts.map +1 -0
  280. package/dist/sections/hero/HeroSection.js +156 -0
  281. package/dist/sections/hero/HeroSection.js.map +1 -0
  282. package/dist/sections/hero/hero-section.scss +211 -0
  283. package/dist/shared/_form-animations.scss +283 -0
  284. package/dist/shared/_media-fit.scss +63 -0
  285. package/dist/shared/_mixins.scss +69 -0
  286. package/dist/shared/_tokens.scss +116 -0
  287. package/dist/shared/badge.d.ts +15 -0
  288. package/dist/shared/badge.d.ts.map +1 -0
  289. package/dist/shared/badge.js +15 -0
  290. package/dist/shared/badge.js.map +1 -0
  291. package/dist/shared/button.d.ts +22 -0
  292. package/dist/shared/button.d.ts.map +1 -0
  293. package/dist/shared/button.js +22 -0
  294. package/dist/shared/button.js.map +1 -0
  295. package/dist/shared/card.d.ts +21 -0
  296. package/dist/shared/card.d.ts.map +1 -0
  297. package/dist/shared/card.js +38 -0
  298. package/dist/shared/card.js.map +1 -0
  299. package/dist/shared/checkbox.d.ts +10 -0
  300. package/dist/shared/checkbox.d.ts.map +1 -0
  301. package/dist/shared/checkbox.js +28 -0
  302. package/dist/shared/checkbox.js.map +1 -0
  303. package/dist/shared/clickable.d.ts +34 -0
  304. package/dist/shared/clickable.d.ts.map +1 -0
  305. package/dist/shared/clickable.js +54 -0
  306. package/dist/shared/clickable.js.map +1 -0
  307. package/dist/shared/common.d.ts +31 -0
  308. package/dist/shared/common.d.ts.map +1 -0
  309. package/dist/shared/common.js +92 -0
  310. package/dist/shared/common.js.map +1 -0
  311. package/dist/shared/entrance-config.d.ts +46 -0
  312. package/dist/shared/entrance-config.d.ts.map +1 -0
  313. package/dist/shared/entrance-config.js +54 -0
  314. package/dist/shared/entrance-config.js.map +1 -0
  315. package/dist/shared/focusable.d.ts +8 -0
  316. package/dist/shared/focusable.d.ts.map +1 -0
  317. package/dist/shared/focusable.js +17 -0
  318. package/dist/shared/focusable.js.map +1 -0
  319. package/dist/shared/form-elements.d.ts +57 -0
  320. package/dist/shared/form-elements.d.ts.map +1 -0
  321. package/dist/shared/form-elements.js +95 -0
  322. package/dist/shared/form-elements.js.map +1 -0
  323. package/dist/shared/form-state.d.ts +52 -0
  324. package/dist/shared/form-state.d.ts.map +1 -0
  325. package/dist/shared/form-state.js +151 -0
  326. package/dist/shared/form-state.js.map +1 -0
  327. package/dist/shared/grid.d.ts +21 -0
  328. package/dist/shared/grid.d.ts.map +1 -0
  329. package/dist/shared/grid.js +187 -0
  330. package/dist/shared/grid.js.map +1 -0
  331. package/dist/shared/icon-slot.d.ts +22 -0
  332. package/dist/shared/icon-slot.d.ts.map +1 -0
  333. package/dist/shared/icon-slot.js +38 -0
  334. package/dist/shared/icon-slot.js.map +1 -0
  335. package/dist/shared/icon.d.ts +17 -0
  336. package/dist/shared/icon.d.ts.map +1 -0
  337. package/dist/shared/icon.js +18 -0
  338. package/dist/shared/icon.js.map +1 -0
  339. package/dist/shared/icons.d.ts +19 -0
  340. package/dist/shared/icons.d.ts.map +1 -0
  341. package/dist/shared/icons.js +22 -0
  342. package/dist/shared/icons.js.map +1 -0
  343. package/dist/shared/image.d.ts +35 -0
  344. package/dist/shared/image.d.ts.map +1 -0
  345. package/dist/shared/image.js +46 -0
  346. package/dist/shared/image.js.map +1 -0
  347. package/dist/shared/input.d.ts +12 -0
  348. package/dist/shared/input.d.ts.map +1 -0
  349. package/dist/shared/input.js +29 -0
  350. package/dist/shared/input.js.map +1 -0
  351. package/dist/shared/radio.d.ts +10 -0
  352. package/dist/shared/radio.d.ts.map +1 -0
  353. package/dist/shared/radio.js +29 -0
  354. package/dist/shared/radio.js.map +1 -0
  355. package/dist/shared/reconcile-list.d.ts +37 -0
  356. package/dist/shared/reconcile-list.d.ts.map +1 -0
  357. package/dist/shared/reconcile-list.js +95 -0
  358. package/dist/shared/reconcile-list.js.map +1 -0
  359. package/dist/shared/section.d.ts +23 -0
  360. package/dist/shared/section.d.ts.map +1 -0
  361. package/dist/shared/section.js +65 -0
  362. package/dist/shared/section.js.map +1 -0
  363. package/dist/shared/segmented.d.ts +17 -0
  364. package/dist/shared/segmented.d.ts.map +1 -0
  365. package/dist/shared/segmented.js +53 -0
  366. package/dist/shared/segmented.js.map +1 -0
  367. package/dist/shared/select.d.ts +18 -0
  368. package/dist/shared/select.d.ts.map +1 -0
  369. package/dist/shared/select.js +14 -0
  370. package/dist/shared/select.js.map +1 -0
  371. package/dist/shared/slots.d.ts +11 -0
  372. package/dist/shared/slots.d.ts.map +1 -0
  373. package/dist/shared/slots.js +33 -0
  374. package/dist/shared/slots.js.map +1 -0
  375. package/dist/shared/smart-container.d.ts +19 -0
  376. package/dist/shared/smart-container.d.ts.map +1 -0
  377. package/dist/shared/smart-container.js +29 -0
  378. package/dist/shared/smart-container.js.map +1 -0
  379. package/dist/shared/text.d.ts +29 -0
  380. package/dist/shared/text.d.ts.map +1 -0
  381. package/dist/shared/text.js +72 -0
  382. package/dist/shared/text.js.map +1 -0
  383. package/dist/shared/textarea.d.ts +6 -0
  384. package/dist/shared/textarea.d.ts.map +1 -0
  385. package/dist/shared/textarea.js +18 -0
  386. package/dist/shared/textarea.js.map +1 -0
  387. package/dist/shared/toggle.d.ts +6 -0
  388. package/dist/shared/toggle.d.ts.map +1 -0
  389. package/dist/shared/toggle.js +19 -0
  390. package/dist/shared/toggle.js.map +1 -0
  391. package/dist/shared/types.d.ts +41 -0
  392. package/dist/shared/types.d.ts.map +1 -0
  393. package/dist/shared/types.js +20 -0
  394. package/dist/shared/types.js.map +1 -0
  395. package/dist/structural/ErrorBoundary.d.ts +18 -0
  396. package/dist/structural/ErrorBoundary.d.ts.map +1 -0
  397. package/dist/structural/ErrorBoundary.js +119 -0
  398. package/dist/structural/ErrorBoundary.js.map +1 -0
  399. package/dist/structural/For.d.ts +37 -0
  400. package/dist/structural/For.d.ts.map +1 -0
  401. package/dist/structural/For.js +129 -0
  402. package/dist/structural/For.js.map +1 -0
  403. package/dist/structural/Lazy.d.ts +43 -0
  404. package/dist/structural/Lazy.d.ts.map +1 -0
  405. package/dist/structural/Lazy.js +47 -0
  406. package/dist/structural/Lazy.js.map +1 -0
  407. package/dist/structural/NavLink.d.ts +45 -0
  408. package/dist/structural/NavLink.d.ts.map +1 -0
  409. package/dist/structural/NavLink.js +37 -0
  410. package/dist/structural/NavLink.js.map +1 -0
  411. package/dist/structural/Show.d.ts +35 -0
  412. package/dist/structural/Show.d.ts.map +1 -0
  413. package/dist/structural/Show.js +34 -0
  414. package/dist/structural/Show.js.map +1 -0
  415. package/dist/structural/nav-link.scss +54 -0
  416. package/dist/styles/index.scss +58 -0
  417. package/package.json +64 -0
@@ -0,0 +1,417 @@
1
+ /** @codex
2
+ {
3
+ "id": "pithy.ui-kit.input",
4
+ "title": "<Input> Form Atom",
5
+ "category": "feature"
6
+ }
7
+ */
8
+ import { effect } from '@pithyjs/signals';
9
+ import { CONTROL_SIZES, } from '../../../shared/types';
10
+ import { INPUT_TYPES, generateInputId, } from '../../../shared/input';
11
+ import { CONTROL_CLASS } from '../../../shared/common';
12
+ import { createHelperElement, createErrorElement, createStateIcon, wrapFormControl, } from '../../../shared/form-elements';
13
+ import { EYE_ICON, EYE_OFF_ICON } from '../../../shared/icons';
14
+ import { createFormStateTracker, applyFormState, cleanupFormState, } from '../../../shared/form-state';
15
+ import { captureSlot } from '../../../shared/slots';
16
+ /**
17
+ * Accessible text input atom with polished micro-interactions.
18
+ *
19
+ * Renders a wrapper `<div>` with an inner `<input>`. Supports floating label,
20
+ * success/error states with shake animation, character counter, clear button,
21
+ * loading spinner, and polished prefix/suffix grouping.
22
+ *
23
+ * This is a pure visual atom — no validation logic. Error/success states are
24
+ * driven externally via props.
25
+ *
26
+ * @param props - Input configuration
27
+ * @returns `{ el, destroy }` — mounted element and cleanup function
28
+ *
29
+ * @example
30
+ * ```html
31
+ * <Input label="'Email'" type="'email'" floatingLabel="true" />
32
+ * <Input label="'Search'" clearable="true" onInput="handleSearch" />
33
+ * <Input label="'Bio'" maxLength="200" />
34
+ * <Input label="'Username'" loading="isChecking" />
35
+ * ```
36
+ */
37
+ /** @codexApi {"parent":"pithy.ui-kit.input","name":"Input","stability":"stable","signature":"(props: InputProps) => { el: HTMLElement | DocumentFragment; destroy: () => void }"} */
38
+ export function Input({ type: rawType = 'text', id: externalId, name, value, placeholder, disabled = false, readonly: readonlyProp = false, required = false, error = false, errorMessage, helperText, success = false, size: rawSize = 'md', label, floatingLabel = false, autocomplete, maxLength, min, max, step, clearable = false, showPasswordToggle, loading = false, prefix, suffix, onInput, onChange, onBlur, onFocus, }) {
39
+ // -- Prop validation -------------------------------------------------------
40
+ const validType = INPUT_TYPES.includes(rawType);
41
+ const validSize = CONTROL_SIZES.includes(rawSize);
42
+ if (import.meta.env?.DEV) {
43
+ if (!validType) {
44
+ const valid = INPUT_TYPES.join(', ');
45
+ console.warn(`[<Input>] Invalid type: "${rawType}". Expected one of: ${valid}. Falling back to "text".`);
46
+ }
47
+ if (!validSize) {
48
+ const valid = CONTROL_SIZES.join(', ');
49
+ console.warn(`[<Input>] Invalid size: "${rawSize}". Expected one of: ${valid}. Falling back to "md".`);
50
+ }
51
+ if (!label) {
52
+ console.warn(`[<Input>] Empty label — all inputs require an accessible name. Pass a non-empty label string.`);
53
+ }
54
+ if (floatingLabel && prefix) {
55
+ console.warn(`[<Input>] floatingLabel with prefix is not supported — label position conflicts with prefix. The floating label will render but may overlap.`);
56
+ }
57
+ if (maxLength != null &&
58
+ (!Number.isFinite(maxLength) ||
59
+ maxLength < 0 ||
60
+ maxLength !== Math.floor(maxLength))) {
61
+ console.warn(`[<Input>] Invalid maxLength: ${maxLength}. Expected a non-negative integer. Counter and native constraint will be skipped.`);
62
+ }
63
+ if (showPasswordToggle && rawType !== 'password') {
64
+ console.warn(`[<Input>] showPasswordToggle is intended for type="password". On type="${rawType}" the toggle will override the input type.`);
65
+ }
66
+ }
67
+ const type = validType ? rawType : 'text';
68
+ const size = validSize ? rawSize : 'md';
69
+ const validMaxLength = maxLength != null &&
70
+ Number.isFinite(maxLength) &&
71
+ maxLength >= 0 &&
72
+ maxLength === Math.floor(maxLength)
73
+ ? maxLength
74
+ : undefined;
75
+ // -- Element creation ------------------------------------------------------
76
+ const wrapper = document.createElement('div');
77
+ // Skip u-control-* for floating-label inputs — SCSS sets asymmetric padding directly
78
+ if (floatingLabel) {
79
+ wrapper.classList.add('ui-input', 'u-radius-md');
80
+ }
81
+ else {
82
+ wrapper.classList.add('ui-input', CONTROL_CLASS[size], 'u-radius-md');
83
+ }
84
+ wrapper.setAttribute('data-size', size);
85
+ const inputId = externalId ?? generateInputId();
86
+ const input = document.createElement('input');
87
+ input.classList.add('ui-input-field');
88
+ input.type = type;
89
+ input.id = inputId;
90
+ // Label — either aria-label or visible <label> for floating mode
91
+ let labelEl;
92
+ if (floatingLabel) {
93
+ wrapper.setAttribute('data-floating-label', '');
94
+ labelEl = document.createElement('label');
95
+ labelEl.classList.add('ui-input-label');
96
+ labelEl.setAttribute('for', inputId);
97
+ labelEl.textContent = label;
98
+ }
99
+ else {
100
+ input.setAttribute('aria-label', label);
101
+ }
102
+ // Static attributes
103
+ if (name != null)
104
+ input.name = name;
105
+ if (placeholder != null)
106
+ input.placeholder = placeholder;
107
+ if (required) {
108
+ input.required = true;
109
+ input.setAttribute('aria-required', 'true');
110
+ wrapper.setAttribute('data-required', '');
111
+ }
112
+ if (autocomplete != null)
113
+ input.setAttribute('autocomplete', autocomplete);
114
+ if (validMaxLength != null)
115
+ input.maxLength = validMaxLength;
116
+ if (min != null)
117
+ input.setAttribute('min', String(min));
118
+ if (max != null)
119
+ input.setAttribute('max', String(max));
120
+ if (step != null)
121
+ input.setAttribute('step', String(step));
122
+ // -- Prefix ----------------------------------------------------------------
123
+ let prefixHandle;
124
+ if (prefix) {
125
+ prefixHandle = prefix();
126
+ const prefixEl = document.createElement('span');
127
+ prefixEl.classList.add('ui-input-prefix');
128
+ captureSlot(prefixEl, 'prefix');
129
+ prefixEl.appendChild(prefixHandle.el);
130
+ wrapper.appendChild(prefixEl);
131
+ }
132
+ // -- Floating label (after prefix, before input) ---------------------------
133
+ if (labelEl) {
134
+ wrapper.appendChild(labelEl);
135
+ }
136
+ // -- Input -----------------------------------------------------------------
137
+ wrapper.appendChild(input);
138
+ // -- Clear button ----------------------------------------------------------
139
+ let clearBtnEl;
140
+ let clearClickHandler;
141
+ if (clearable) {
142
+ clearBtnEl = document.createElement('button');
143
+ clearBtnEl.type = 'button';
144
+ clearBtnEl.classList.add('ui-input-clear');
145
+ clearBtnEl.setAttribute('aria-label', 'Clear');
146
+ // Tabbable so keyboard users can clear the field
147
+ clearBtnEl.textContent = '\u00D7'; // ×
148
+ clearBtnEl.toggleAttribute('data-hidden', true);
149
+ clearBtnEl.tabIndex = -1;
150
+ clearBtnEl.setAttribute('aria-hidden', 'true');
151
+ clearClickHandler = () => {
152
+ input.value = '';
153
+ input.focus();
154
+ // Dispatch through the actual input so e.target is the input element
155
+ // and all handlers (onInput, updateFilledState, updateCounter, etc.) fire naturally.
156
+ input.dispatchEvent(new InputEvent('input', { bubbles: true, inputType: 'deleteContent' }));
157
+ };
158
+ clearBtnEl.addEventListener('click', clearClickHandler);
159
+ wrapper.appendChild(clearBtnEl);
160
+ }
161
+ // -- Password visibility toggle ---------------------------------------------
162
+ const hasPasswordToggle = showPasswordToggle ?? type === 'password';
163
+ let passwordToggleEl;
164
+ let passwordToggleHandler;
165
+ let passwordVisible = false;
166
+ if (hasPasswordToggle) {
167
+ passwordToggleEl = document.createElement('button');
168
+ passwordToggleEl.type = 'button';
169
+ passwordToggleEl.classList.add('ui-input-password-toggle');
170
+ passwordToggleEl.setAttribute('aria-label', 'Show password');
171
+ passwordToggleEl.setAttribute('aria-pressed', 'false');
172
+ // Tabbable so keyboard users can toggle visibility
173
+ passwordToggleEl.innerHTML = EYE_ICON;
174
+ passwordToggleHandler = () => {
175
+ passwordVisible = !passwordVisible;
176
+ input.type = passwordVisible ? 'text' : 'password';
177
+ passwordToggleEl.innerHTML = passwordVisible ? EYE_OFF_ICON : EYE_ICON;
178
+ passwordToggleEl.setAttribute('aria-label', passwordVisible ? 'Hide password' : 'Show password');
179
+ passwordToggleEl.setAttribute('aria-pressed', String(passwordVisible));
180
+ input.focus();
181
+ };
182
+ passwordToggleEl.addEventListener('click', passwordToggleHandler);
183
+ wrapper.appendChild(passwordToggleEl);
184
+ }
185
+ // -- State icon (success checkmark / error alert) --------------------------
186
+ const stateIconEl = createStateIcon('ui-input-state-icon');
187
+ wrapper.appendChild(stateIconEl);
188
+ // -- Suffix ----------------------------------------------------------------
189
+ let suffixHandle;
190
+ let suffixEl;
191
+ if (suffix) {
192
+ suffixHandle = suffix();
193
+ suffixEl = document.createElement('span');
194
+ suffixEl.classList.add('ui-input-suffix');
195
+ captureSlot(suffixEl, 'suffix');
196
+ suffixEl.appendChild(suffixHandle.el);
197
+ wrapper.appendChild(suffixEl);
198
+ }
199
+ // -- Character counter -----------------------------------------------------
200
+ let counterEl;
201
+ if (validMaxLength != null) {
202
+ counterEl = document.createElement('span');
203
+ counterEl.classList.add('ui-input-counter');
204
+ counterEl.setAttribute('aria-hidden', 'true');
205
+ counterEl.textContent = `0/${validMaxLength}`;
206
+ wrapper.appendChild(counterEl);
207
+ }
208
+ // -- Helper text ------------------------------------------------------------
209
+ const helperId = `${inputId}-helper`;
210
+ const helperEl = createHelperElement(helperId, helperText);
211
+ // -- Error message ----------------------------------------------------------
212
+ const errorMsgId = `${inputId}-error`;
213
+ const errorMsgEl = createErrorElement(errorMsgId, errorMessage);
214
+ function updateCounter() {
215
+ if (counterEl && validMaxLength != null) {
216
+ const len = input.value.length;
217
+ counterEl.textContent = `${len}/${validMaxLength}`;
218
+ counterEl.classList.toggle('ui-input-counter-warn', len >= validMaxLength * 0.8 && len < validMaxLength);
219
+ counterEl.classList.toggle('ui-input-counter-danger', len >= validMaxLength);
220
+ }
221
+ }
222
+ // -- Click on wrapper focuses the input ------------------------------------
223
+ const wrapperClickHandler = (e) => {
224
+ const target = e.target;
225
+ if (!target ||
226
+ target === input ||
227
+ target === clearBtnEl ||
228
+ target === passwordToggleEl)
229
+ return;
230
+ // Don't steal focus from interactive elements inside prefix/suffix slots
231
+ if (target.closest("button, a, input, select, textarea, [role='button'], [role='link']"))
232
+ return;
233
+ input.focus();
234
+ };
235
+ wrapper.addEventListener('click', wrapperClickHandler);
236
+ // -- Event handlers --------------------------------------------------------
237
+ const inputHandler = ((e) => {
238
+ onInput?.(input.value, e);
239
+ updateFilledState();
240
+ updateCounter();
241
+ updateClearVisibility();
242
+ });
243
+ const changeHandler = ((e) => {
244
+ onChange?.(input.value, e);
245
+ updateFilledState();
246
+ updateCounter();
247
+ updateClearVisibility();
248
+ });
249
+ const blurHandler = ((e) => {
250
+ onBlur?.(e);
251
+ });
252
+ const focusHandler = ((e) => {
253
+ onFocus?.(e);
254
+ });
255
+ input.addEventListener('input', inputHandler);
256
+ input.addEventListener('change', changeHandler);
257
+ input.addEventListener('blur', blurHandler);
258
+ input.addEventListener('focus', focusHandler);
259
+ // -- Helper: filled state --------------------------------------------------
260
+ function updateFilledState() {
261
+ if (input.value.length > 0) {
262
+ wrapper.setAttribute('data-filled', '');
263
+ }
264
+ else {
265
+ wrapper.removeAttribute('data-filled');
266
+ }
267
+ }
268
+ function updateClearVisibility() {
269
+ if (clearBtnEl) {
270
+ const show = input.value.length > 0 && !input.disabled && !input.readOnly;
271
+ clearBtnEl.toggleAttribute('data-hidden', !show);
272
+ clearBtnEl.tabIndex = show ? 0 : -1;
273
+ clearBtnEl.setAttribute('aria-hidden', show ? 'false' : 'true');
274
+ }
275
+ }
276
+ // -- Reactive state --------------------------------------------------------
277
+ const readValue = () => (typeof value === 'function' ? value() : value);
278
+ const readDisabled = () => typeof disabled === 'function' ? disabled() : disabled;
279
+ const readReadonly = () => typeof readonlyProp === 'function' ? readonlyProp() : readonlyProp;
280
+ const readError = () => (typeof error === 'function' ? error() : error);
281
+ const readErrorMessage = () => typeof errorMessage === 'function' ? errorMessage() : errorMessage;
282
+ const readSuccess = () => typeof success === 'function' ? success() : success;
283
+ const readLoading = () => typeof loading === 'function' ? loading() : loading;
284
+ const isReactive = typeof value === 'function' ||
285
+ typeof disabled === 'function' ||
286
+ typeof readonlyProp === 'function' ||
287
+ typeof error === 'function' ||
288
+ typeof errorMessage === 'function' ||
289
+ typeof success === 'function' ||
290
+ typeof loading === 'function';
291
+ const formTracker = createFormStateTracker();
292
+ // Track the last value applied from state. We only sync DOM ← state when
293
+ // the state value actually changes, not on every effect re-run. This
294
+ // prevents wiping DOM-only values (e.g. browser autofill) when some
295
+ // OTHER signal in the same state object changes.
296
+ //
297
+ // Known limitation: if browser autofill writes a DOM value while state
298
+ // is still empty, then a parent calls state.reset() (which sets state
299
+ // back to the same empty initial value), this guard will skip the sync
300
+ // and the autofilled DOM persists. The autofill cascade case (common)
301
+ // and the reset-to-same-value case (rare) are indistinguishable from
302
+ // the Input's perspective. We optimize for the common case.
303
+ let lastAppliedValue = undefined;
304
+ const applyState = () => {
305
+ // Value
306
+ const val = readValue();
307
+ if (val == null) {
308
+ // Uncontrolled mode — clear lastAppliedValue so a future return to
309
+ // controlled mode forces a fresh sync (even if state value happens
310
+ // to equal what we applied before going uncontrolled).
311
+ lastAppliedValue = undefined;
312
+ }
313
+ else if (val !== lastAppliedValue) {
314
+ if (input.value !== val) {
315
+ input.value = val;
316
+ }
317
+ lastAppliedValue = val;
318
+ }
319
+ // Filled state (for floating label + clear button)
320
+ updateFilledState();
321
+ // Disabled
322
+ const isDisabled = readDisabled();
323
+ input.disabled = !!isDisabled;
324
+ if (isDisabled) {
325
+ wrapper.setAttribute('data-disabled', '');
326
+ }
327
+ else {
328
+ wrapper.removeAttribute('data-disabled');
329
+ }
330
+ // Readonly
331
+ const isReadonly = readReadonly();
332
+ input.readOnly = !!isReadonly;
333
+ if (isReadonly) {
334
+ wrapper.setAttribute('data-readonly', '');
335
+ }
336
+ else {
337
+ wrapper.removeAttribute('data-readonly');
338
+ }
339
+ // Error / success state, icons, shake, pop, helper/error text swap
340
+ applyFormState({ wrapper, control: input, stateIconEl, helperEl, errorMsgEl }, { readError, readErrorMessage, readSuccess }, { helperId, errorMsgId }, { shakeClass: 'ui-input-shake', iconPrefix: 'ui-input-state-icon' }, formTracker);
341
+ // Loading
342
+ const isLoading = readLoading();
343
+ wrapper.classList.toggle('ui-input-loading', !!isLoading);
344
+ if (isLoading) {
345
+ input.setAttribute('aria-busy', 'true');
346
+ }
347
+ else {
348
+ input.removeAttribute('aria-busy');
349
+ }
350
+ // Hide suffix and clear button while loading
351
+ if (suffixEl) {
352
+ suffixEl.hidden = !!isLoading;
353
+ }
354
+ if (clearBtnEl && isLoading) {
355
+ clearBtnEl.toggleAttribute('data-hidden', true);
356
+ clearBtnEl.tabIndex = -1;
357
+ clearBtnEl.setAttribute('aria-hidden', 'true');
358
+ }
359
+ if (passwordToggleEl) {
360
+ passwordToggleEl.toggleAttribute('data-hidden', !!isLoading);
361
+ if (isLoading) {
362
+ passwordToggleEl.tabIndex = -1;
363
+ passwordToggleEl.setAttribute('aria-hidden', 'true');
364
+ }
365
+ else {
366
+ passwordToggleEl.removeAttribute('tabindex');
367
+ passwordToggleEl.removeAttribute('aria-hidden');
368
+ }
369
+ }
370
+ // Clear button visibility
371
+ if (!isLoading) {
372
+ updateClearVisibility();
373
+ }
374
+ // Counter
375
+ updateCounter();
376
+ formTracker.firstRun = false;
377
+ };
378
+ const cleanupEffect = isReactive
379
+ ? effect(applyState)
380
+ : (applyState(), undefined);
381
+ // -- Return ----------------------------------------------------------------
382
+ // When helperText or errorMessage is provided, wrap in a container div
383
+ // so the sub-text sits in normal flow below the input (no overlap).
384
+ const { root, needsContainer: needsWrapper } = wrapFormControl(wrapper, {
385
+ helperEl,
386
+ errorMsgEl,
387
+ });
388
+ return {
389
+ el: root,
390
+ destroy: () => {
391
+ cleanupEffect?.();
392
+ input.removeEventListener('input', inputHandler);
393
+ input.removeEventListener('change', changeHandler);
394
+ input.removeEventListener('blur', blurHandler);
395
+ input.removeEventListener('focus', focusHandler);
396
+ wrapper.removeEventListener('click', wrapperClickHandler);
397
+ cleanupFormState(wrapper, stateIconEl, formTracker);
398
+ if (clearBtnEl && clearClickHandler) {
399
+ clearBtnEl.removeEventListener('click', clearClickHandler);
400
+ }
401
+ if (passwordToggleEl && passwordToggleHandler) {
402
+ passwordToggleEl.removeEventListener('click', passwordToggleHandler);
403
+ }
404
+ if (prefixHandle) {
405
+ prefixHandle.destroy();
406
+ }
407
+ if (suffixHandle) {
408
+ suffixHandle.destroy();
409
+ }
410
+ wrapper.replaceChildren();
411
+ if (needsWrapper) {
412
+ root.replaceChildren();
413
+ }
414
+ },
415
+ };
416
+ }
417
+ //# sourceMappingURL=Input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.js","sourceRoot":"","sources":["../../../../src/atoms/forms/input/Input.ts"],"names":[],"mappings":"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"}