@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,63 @@
1
+ /// Slot media sizing — resolves the `data-media-fit` the renderer stamps from a
2
+ /// slot's PIDL `media` field. Geometry lives here (fluid, token-driven); the
3
+ /// Image's own `fit` prop controls pixel-fill within that geometry.
4
+ /// @group shared
5
+
6
+ @mixin _img-fill($object-fit) {
7
+ inline-size: 100%;
8
+ block-size: 100%;
9
+ object-fit: $object-fit;
10
+ }
11
+
12
+ [data-media-fit='fill'] {
13
+ &.ui-image,
14
+ .ui-image {
15
+ inline-size: 100%;
16
+ block-size: 100%;
17
+ }
18
+ &.ui-image .ui-image-img,
19
+ .ui-image .ui-image-img {
20
+ @include _img-fill(cover);
21
+ }
22
+ }
23
+
24
+ [data-media-fit='fit'] {
25
+ &.ui-image,
26
+ .ui-image {
27
+ inline-size: 100%;
28
+ block-size: 100%;
29
+ }
30
+ &.ui-image .ui-image-img,
31
+ .ui-image .ui-image-img {
32
+ @include _img-fill(contain);
33
+ }
34
+ }
35
+
36
+ [data-media-fit='logo'] {
37
+ &.ui-image,
38
+ .ui-image {
39
+ block-size: var(--icon-size-lg);
40
+ inline-size: auto;
41
+ max-inline-size: 100%;
42
+ flex-shrink: 0;
43
+ }
44
+ &.ui-image .ui-image-img,
45
+ .ui-image .ui-image-img {
46
+ block-size: 100%;
47
+ inline-size: auto;
48
+ object-fit: contain;
49
+ }
50
+ }
51
+
52
+ [data-media-fit='avatar'] {
53
+ &.ui-image,
54
+ .ui-image {
55
+ aspect-ratio: 1;
56
+ inline-size: 100%;
57
+ block-size: auto;
58
+ }
59
+ &.ui-image .ui-image-img,
60
+ .ui-image .ui-image-img {
61
+ @include _img-fill(cover);
62
+ }
63
+ }
@@ -0,0 +1,69 @@
1
+ /// Shared layout mixins for UI Kit components.
2
+ ///
3
+ /// @group shared
4
+
5
+ @use 'tokens' as *;
6
+
7
+ // ============================================
8
+ // Fluid center
9
+ // ============================================
10
+
11
+ // Breakpoint at which two $min-column children + a typical gap no longer fit
12
+ // side-by-side. Below this the layout stacks and we switch to centered text.
13
+ // 2 × 18rem + ~4rem gap ≈ 40rem.
14
+ $_stacking-threshold: $min-column * 2 + 4rem;
15
+
16
+ /// Centre a flex child that may wrap to full width — **parent-side** mixin.
17
+ ///
18
+ /// Apply this to the `flex-wrap: wrap` **container**, not the child.
19
+ ///
20
+ /// **Problem:** In a two-column `flex-wrap: wrap` layout, each side is
21
+ /// start-aligned. When the container narrows and children wrap to their own
22
+ /// line, they stretch to full width — but their content sits flush-start,
23
+ /// leaving an awkward void on the inline-end side.
24
+ ///
25
+ /// **Why not `margin-inline: auto` on the child?** In flexbox, `flex-grow`
26
+ /// consumes free space *before* auto margins can claim it. Even after
27
+ /// `max-inline-size` clamps the item, browsers do not redistribute the
28
+ /// clamped-off space to auto margins — they resolve to 0.
29
+ ///
30
+ /// **Solution:** Set `justify-content: center` on the **parent** and make it
31
+ /// an inline-size container. `justify-content` positions items within whatever
32
+ /// free space remains *after* flex sizing + max clamping. When two items share
33
+ /// a line and flex-grow fills it, free space = 0 and centering has no visible
34
+ /// effect. When one item wraps to its own line and gets clamped by
35
+ /// `max-inline-size`, the remaining space is distributed equally → the item
36
+ /// centres. A `@container` query on the child switches `text-align` to
37
+ /// `center` only when the parent is narrow enough for stacking — layout
38
+ /// itself stays intrinsically fluid (no breakpoints for stacking).
39
+ ///
40
+ /// Pair with `fluid-center-child($max)` on the item that should cap + center.
41
+ ///
42
+ /// @access public
43
+ @mixin fluid-center-parent {
44
+ justify-content: center;
45
+ container-type: inline-size;
46
+ }
47
+
48
+ /// Cap a flex child's inline size so it centres when wrapped.
49
+ ///
50
+ /// Apply to individual children inside a `fluid-center-parent` container.
51
+ /// The cap has no visual effect in two-column mode (the item is narrower
52
+ /// than `$max` anyway); when the child wraps to its own line, the cap
53
+ /// limits its width and the parent's `justify-content: center` centres it.
54
+ /// Text alignment switches to `center` only when the parent container is
55
+ /// narrow enough that children stack (below `$_stacking-threshold`).
56
+ ///
57
+ /// @param {Length} $max [$measure-half] - Maximum inline size of the block
58
+ /// @access public
59
+ @mixin fluid-center-child($max: $measure-half) {
60
+ max-inline-size: $max;
61
+
62
+ // Default: left-aligned text (two-column mode)
63
+ text-align: start;
64
+
65
+ // When parent is narrow → children stacked → centre text
66
+ @container (max-width: #{$_stacking-threshold}) {
67
+ text-align: center;
68
+ }
69
+ }
@@ -0,0 +1,116 @@
1
+ /// Shared SCSS tokens for UI Kit components.
2
+ /// Single source of truth for color scheme lists, fluid layout constraints,
3
+ /// and content measures.
4
+ ///
5
+ /// @group shared
6
+
7
+ $semantic-colors: (
8
+ primary,
9
+ secondary,
10
+ tertiary,
11
+ success,
12
+ info,
13
+ warning,
14
+ danger
15
+ ) !default;
16
+ $control-sizes: (sm, md, lg) !default;
17
+
18
+ // -- Control font-size map ----------------------------------------------------
19
+ // Controls use one font-size step below the control size for compact text.
20
+ $control-font-sizes: (
21
+ sm: var(--font-size-xs),
22
+ md: var(--font-size-sm),
23
+ lg: var(--font-size-body),
24
+ ) !default;
25
+
26
+ // -- Control icon-size map ----------------------------------------------------
27
+ // Icons inside controls scale with the control size.
28
+ $control-icon-sizes: (
29
+ sm: var(--icon-size-xs),
30
+ md: var(--icon-size-sm),
31
+ lg: var(--icon-size-md),
32
+ ) !default;
33
+
34
+ // -- Control indicator size map -----------------------------------------------
35
+ // Visual indicators rendered inline with control labels (checkbox box, radio
36
+ // dot, toggle thumb). Derived from font-size tokens so indicators scale
37
+ // proportionally when the site builder theme changes typography — slightly
38
+ // smaller than --icon-size-* so the indicator reads as part of the text run.
39
+ $control-indicator-sizes: (
40
+ sm: calc(var(--font-size-xs) * 1.25),
41
+ md: calc(var(--font-size-sm) * 1.25),
42
+ lg: calc(var(--font-size-body) * 1.25),
43
+ ) !default;
44
+
45
+ // -- Control inline-button size map -------------------------------------------
46
+ // Interactive buttons inside form controls (clear ×, password toggle) need
47
+ // a visible hit area slightly larger than the icon itself. The invisible 44×44
48
+ // touch target (in the form-inline-button mixin) handles WCAG 2.5.8 AAA.
49
+ $control-btn-sizes: (
50
+ sm: 1.25rem,
51
+ md: 1.5rem,
52
+ lg: 1.75rem,
53
+ ) !default;
54
+
55
+ // -- Label letter-spacing -----------------------------------------------------
56
+ // Slight positive tracking for compact label text (badges, tags) at small sizes.
57
+ // Sits between the design-system "normal" (0) and "wide" (0.025em) scale steps;
58
+ // --body-letter-spacing (0.02em) is too wide for single-word badge labels.
59
+ $label-letter-spacing: 0.01em !default;
60
+
61
+ // -- Checked-glow shadow opacity ----------------------------------------------
62
+ // When a form control (checkbox, radio, toggle) is checked, the box-shadow is
63
+ // tinted with the accent color at this opacity. Kept as a SCSS variable so all
64
+ // form atoms share a single source of truth; the value is baked into the
65
+ // `color-mix()` call at build time.
66
+ $checked-glow-opacity: 45% !default;
67
+
68
+ // -- Spinner layout -----------------------------------------------------------
69
+ // Inset for the loading spinner ring inside square indicators (checkbox, radio).
70
+ // Toggle uses explicit sizing instead because its pill-shaped track would create
71
+ // an oval with a percentage inset.
72
+ $spinner-inset: 15% !default;
73
+
74
+ // Opacity for the spinner's reduced-motion fallback (full ring, dimmed).
75
+ // Shared across all form atoms that render a loading spinner.
76
+ $spinner-reduced-opacity: 0.5 !default;
77
+
78
+ // -- Ghost dot preview --------------------------------------------------------
79
+ // When hovering an unchecked radio, a faint ghost of the inner dot appears to
80
+ // preview what the checked state will look like. These tokens control its
81
+ // opacity and scale. Kept here so all radio-like controls share the same
82
+ // preview affordance values.
83
+ $ghost-dot-opacity: 0.25 !default;
84
+ $ghost-dot-scale: 0.6 !default;
85
+
86
+ // -- Focus ring offset --------------------------------------------------------
87
+ // Offset between the control indicator border and the focus ring. Shared across
88
+ // form atoms that render a custom focus ring via borders.ring().
89
+ $focus-ring-offset: 2px !default;
90
+
91
+ // -- Disabled desaturation ----------------------------------------------------
92
+ // Disabled form controls are dimmed (via --state-disabled-opacity) *and*
93
+ // desaturated so colors look properly deactivated, not just transparent.
94
+ $disabled-saturation: 0.4 !default;
95
+
96
+ // -- Form control placeholder opacity -----------------------------------------
97
+ // Placeholder text is subtler than input text — shared across Input, Select, etc.
98
+ $placeholder-opacity: 0.8 !default;
99
+
100
+ // -- Scrollbar thumb width ----------------------------------------------------
101
+ // Thin scrollbar for scrollable form controls (Textarea, Select listbox).
102
+ // Derived from spacing tokens so scrollbar sizing stays design-system driven.
103
+ $scrollbar-thumb-size: calc(var(--space-sm) * 0.75) !default;
104
+
105
+ // -- Fluid layout constraints -------------------------------------------------
106
+ // Children use `flex: 1 1 $min-column` so they wrap naturally when the
107
+ // container can no longer fit two columns — no @container breakpoints needed.
108
+ $min-column: 18rem !default; // Min inline-size for a content column (text, info, cards)
109
+ $min-column-wide: 24rem !default; // Min inline-size for wide content (forms with field rows)
110
+
111
+ // -- Content measure constraints ----------------------------------------------
112
+ $measure-content: 48rem !default; // Max inline-size for centered content blocks
113
+ $measure-text: 60ch !default; // Max inline-size for readable text lines
114
+ $measure-half: 24rem !default; // Max inline-size for a "half-column" block (see fluid-center mixin)
115
+ $measure-tooltip: 16rem !default; // Max inline-size for a tooltip / hint bubble
116
+ $card-media-max-block: 18rem !default; // Max block-size for card media so it never dominates a wide card
@@ -0,0 +1,15 @@
1
+ /** @codex
2
+ {
3
+ "id": "pithy.ui-kit.badge-constants",
4
+ "title": "Badge Shared Constants",
5
+ "category": "types"
6
+ }
7
+ */
8
+ /**
9
+ * Badge-specific constants. Shared types (SemanticColor, CONTROL_SIZES)
10
+ * live in shared/types.ts.
11
+ */
12
+ /** @codexApi {"parent":"pithy.ui-kit.badge-constants","name":"BADGE_VARIANTS","stability":"stable","signature":"readonly [\"filled\", \"outline\", \"subtle\"]"} */
13
+ export declare const BADGE_VARIANTS: readonly ["filled", "outline", "subtle"];
14
+ export type BadgeVariant = (typeof BADGE_VARIANTS)[number];
15
+ //# sourceMappingURL=badge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../src/shared/badge.ts"],"names":[],"mappings":"AAAA;;;;;;EAME;AAEF;;;GAGG;AAIH,oKAAoK;AACpK,eAAO,MAAM,cAAc,0CAA2C,CAAC;AACvE,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ /** @codex
2
+ {
3
+ "id": "pithy.ui-kit.badge-constants",
4
+ "title": "Badge Shared Constants",
5
+ "category": "types"
6
+ }
7
+ */
8
+ /**
9
+ * Badge-specific constants. Shared types (SemanticColor, CONTROL_SIZES)
10
+ * live in shared/types.ts.
11
+ */
12
+ // -- Variants -----------------------------------------------------------------
13
+ /** @codexApi {"parent":"pithy.ui-kit.badge-constants","name":"BADGE_VARIANTS","stability":"stable","signature":"readonly [\"filled\", \"outline\", \"subtle\"]"} */
14
+ export const BADGE_VARIANTS = ['filled', 'outline', 'subtle'];
15
+ //# sourceMappingURL=badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.js","sourceRoot":"","sources":["../../src/shared/badge.ts"],"names":[],"mappings":"AAAA;;;;;;EAME;AAEF;;;GAGG;AAEH,gFAAgF;AAEhF,oKAAoK;AACpK,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAU,CAAC"}
@@ -0,0 +1,22 @@
1
+ /** @codex
2
+ {
3
+ "id": "pithy.ui-kit.button-constants",
4
+ "title": "Button Shared Constants",
5
+ "category": "types"
6
+ }
7
+ */
8
+ /**
9
+ * Button-specific constants. Shared types (SemanticColor, CONTROL_SIZES)
10
+ * live in shared/types.ts; shared class maps (CONTROL_CLASS) live in
11
+ * shared/common.ts.
12
+ */
13
+ /** @codexApi {"parent":"pithy.ui-kit.button-constants","name":"BUTTON_VARIANTS","stability":"stable","signature":"readonly [\"solid\", \"outline\", \"ghost\", \"link\"]"} */
14
+ export declare const BUTTON_VARIANTS: readonly ["solid", "outline", "ghost", "link"];
15
+ export type ButtonVariant = (typeof BUTTON_VARIANTS)[number];
16
+ /** @codexApi {"parent":"pithy.ui-kit.button-constants","name":"BUTTON_TAGS","stability":"stable","signature":"readonly [\"button\", \"a\"]"} */
17
+ export declare const BUTTON_TAGS: readonly ["button", "a"];
18
+ export type ButtonTag = (typeof BUTTON_TAGS)[number];
19
+ /** @codexApi {"parent":"pithy.ui-kit.button-constants","name":"BUTTON_TYPES","stability":"stable","signature":"readonly [\"button\", \"submit\", \"reset\"]"} */
20
+ export declare const BUTTON_TYPES: readonly ["button", "submit", "reset"];
21
+ export type ButtonType = (typeof BUTTON_TYPES)[number];
22
+ //# sourceMappingURL=button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../src/shared/button.ts"],"names":[],"mappings":"AAAA;;;;;;EAME;AAEF;;;;GAIG;AAIH,8KAA8K;AAC9K,eAAO,MAAM,eAAe,gDAAiD,CAAC;AAC9E,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAI7D,gJAAgJ;AAChJ,eAAO,MAAM,WAAW,0BAA2B,CAAC;AACpD,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAIrD,iKAAiK;AACjK,eAAO,MAAM,YAAY,wCAAyC,CAAC;AACnE,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ /** @codex
2
+ {
3
+ "id": "pithy.ui-kit.button-constants",
4
+ "title": "Button Shared Constants",
5
+ "category": "types"
6
+ }
7
+ */
8
+ /**
9
+ * Button-specific constants. Shared types (SemanticColor, CONTROL_SIZES)
10
+ * live in shared/types.ts; shared class maps (CONTROL_CLASS) live in
11
+ * shared/common.ts.
12
+ */
13
+ // -- Variants -----------------------------------------------------------------
14
+ /** @codexApi {"parent":"pithy.ui-kit.button-constants","name":"BUTTON_VARIANTS","stability":"stable","signature":"readonly [\"solid\", \"outline\", \"ghost\", \"link\"]"} */
15
+ export const BUTTON_VARIANTS = ['solid', 'outline', 'ghost', 'link'];
16
+ // -- Element tags -------------------------------------------------------------
17
+ /** @codexApi {"parent":"pithy.ui-kit.button-constants","name":"BUTTON_TAGS","stability":"stable","signature":"readonly [\"button\", \"a\"]"} */
18
+ export const BUTTON_TAGS = ['button', 'a'];
19
+ // -- HTML button types --------------------------------------------------------
20
+ /** @codexApi {"parent":"pithy.ui-kit.button-constants","name":"BUTTON_TYPES","stability":"stable","signature":"readonly [\"button\", \"submit\", \"reset\"]"} */
21
+ export const BUTTON_TYPES = ['button', 'submit', 'reset'];
22
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.js","sourceRoot":"","sources":["../../src/shared/button.ts"],"names":[],"mappings":"AAAA;;;;;;EAME;AAEF;;;;GAIG;AAEH,gFAAgF;AAEhF,8KAA8K;AAC9K,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAG9E,gFAAgF;AAEhF,gJAAgJ;AAChJ,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAU,CAAC;AAGpD,gFAAgF;AAEhF,iKAAiK;AACjK,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAU,CAAC"}
@@ -0,0 +1,21 @@
1
+ /** @codex
2
+ {
3
+ "id": "pithy.ui-kit.card-constants",
4
+ "title": "Card Shared Constants",
5
+ "category": "types"
6
+ }
7
+ */
8
+ import type { ControlSize } from '@pithyjs/design-system';
9
+ /** @codexApi {"parent":"pithy.ui-kit.card-constants","name":"CARD_VARIANTS","stability":"stable","signature":"readonly [\"default\", \"outlined\", \"elevated\", \"subtle\", \"ghost\"]"} */
10
+ export declare const CARD_VARIANTS: readonly ["default", "outlined", "elevated", "subtle", "ghost"];
11
+ export type CardVariant = (typeof CARD_VARIANTS)[number];
12
+ /** @codexApi {"parent":"pithy.ui-kit.card-constants","name":"CARD_PADDINGS","stability":"stable","signature":"readonly [\"none\", ...typeof CONTROL_SIZES]"} */
13
+ export declare const CARD_PADDINGS: readonly ["none", "sm", "md", "lg"];
14
+ export type CardPadding = 'none' | ControlSize;
15
+ /** @codexApi {"parent":"pithy.ui-kit.card-constants","name":"CARD_RADII","stability":"stable","signature":"readonly [\"none\", ...typeof CONTROL_SIZES]"} */
16
+ export declare const CARD_RADII: readonly ["none", "sm", "md", "lg"];
17
+ export type CardRadius = 'none' | ControlSize;
18
+ /** @codexApi {"parent":"pithy.ui-kit.card-constants","name":"CARD_MEDIA_ASPECTS","stability":"stable","signature":"readonly [\"1/1\", \"4/3\", \"16/9\", \"3/2\", \"21/9\"]"} */
19
+ export declare const CARD_MEDIA_ASPECTS: readonly ["1/1", "4/3", "16/9", "3/2", "21/9"];
20
+ export type CardMediaAspect = (typeof CARD_MEDIA_ASPECTS)[number];
21
+ //# sourceMappingURL=card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../src/shared/card.ts"],"names":[],"mappings":"AAAA;;;;;;EAME;AASF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAI1D,6LAA6L;AAC7L,eAAO,MAAM,aAAa,iEAMhB,CAAC;AACX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAIzD,gKAAgK;AAChK,eAAO,MAAM,aAAa,qCAAsC,CAAC;AACjE,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,WAAW,CAAC;AAI/C,6JAA6J;AAC7J,eAAO,MAAM,UAAU,qCAAsC,CAAC;AAC9D,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,WAAW,CAAC;AAI9C,iLAAiL;AACjL,eAAO,MAAM,kBAAkB,gDAMrB,CAAC;AACX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,38 @@
1
+ /** @codex
2
+ {
3
+ "id": "pithy.ui-kit.card-constants",
4
+ "title": "Card Shared Constants",
5
+ "category": "types"
6
+ }
7
+ */
8
+ /**
9
+ * Card-specific constants. Shared types (Orientation, ControlSize) live in
10
+ * shared/types.ts; padding/radius scales mirror CONTROL_SIZES with "none"
11
+ * prepended so the card's size vocabulary tracks the rest of the atoms.
12
+ */
13
+ import { CONTROL_SIZES } from './types';
14
+ // -- Variants -----------------------------------------------------------------
15
+ /** @codexApi {"parent":"pithy.ui-kit.card-constants","name":"CARD_VARIANTS","stability":"stable","signature":"readonly [\"default\", \"outlined\", \"elevated\", \"subtle\", \"ghost\"]"} */
16
+ export const CARD_VARIANTS = [
17
+ 'default',
18
+ 'outlined',
19
+ 'elevated',
20
+ 'subtle',
21
+ 'ghost',
22
+ ];
23
+ // -- Padding (mirrors CONTROL_SIZES + "none") ---------------------------------
24
+ /** @codexApi {"parent":"pithy.ui-kit.card-constants","name":"CARD_PADDINGS","stability":"stable","signature":"readonly [\"none\", ...typeof CONTROL_SIZES]"} */
25
+ export const CARD_PADDINGS = ['none', ...CONTROL_SIZES];
26
+ // -- Radius (mirrors CONTROL_SIZES + "none") ----------------------------------
27
+ /** @codexApi {"parent":"pithy.ui-kit.card-constants","name":"CARD_RADII","stability":"stable","signature":"readonly [\"none\", ...typeof CONTROL_SIZES]"} */
28
+ export const CARD_RADII = ['none', ...CONTROL_SIZES];
29
+ // -- Media aspect ratios ------------------------------------------------------
30
+ /** @codexApi {"parent":"pithy.ui-kit.card-constants","name":"CARD_MEDIA_ASPECTS","stability":"stable","signature":"readonly [\"1/1\", \"4/3\", \"16/9\", \"3/2\", \"21/9\"]"} */
31
+ export const CARD_MEDIA_ASPECTS = [
32
+ '1/1',
33
+ '4/3',
34
+ '16/9',
35
+ '3/2',
36
+ '21/9',
37
+ ];
38
+ //# sourceMappingURL=card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.js","sourceRoot":"","sources":["../../src/shared/card.ts"],"names":[],"mappings":"AAAA;;;;;;EAME;AAEF;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGxC,gFAAgF;AAEhF,6LAA6L;AAC7L,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,SAAS;IACT,UAAU;IACV,UAAU;IACV,QAAQ;IACR,OAAO;CACC,CAAC;AAGX,gFAAgF;AAEhF,gKAAgK;AAChK,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,GAAG,aAAa,CAAU,CAAC;AAGjE,gFAAgF;AAEhF,6JAA6J;AAC7J,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,GAAG,aAAa,CAAU,CAAC;AAG9D,gFAAgF;AAEhF,iLAAiL;AACjL,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;CACE,CAAC"}
@@ -0,0 +1,10 @@
1
+ /** @codex { "id": "pithy.ui-kit.shared-checkbox", "title": "Shared Checkbox Constants", "category": "types" } */
2
+ /** @codexApi {"parent":"pithy.ui-kit.shared-checkbox","name":"generateCheckboxId","stability":"stable","signature":"() => string"} */
3
+ export declare function generateCheckboxId(): string;
4
+ /** @codexApi {"parent":"pithy.ui-kit.shared-checkbox","name":"resetCheckboxIdCounter","stability":"stable","signature":"() => void"} */
5
+ export declare function resetCheckboxIdCounter(): void;
6
+ /** @codexApi {"parent":"pithy.ui-kit.shared-checkbox","name":"generateCheckboxGroupId","stability":"stable","signature":"() => string"} */
7
+ export declare function generateCheckboxGroupId(): string;
8
+ /** @codexApi {"parent":"pithy.ui-kit.shared-checkbox","name":"resetCheckboxGroupIdCounter","stability":"stable","signature":"() => void"} */
9
+ export declare function resetCheckboxGroupIdCounter(): void;
10
+ //# sourceMappingURL=checkbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../src/shared/checkbox.ts"],"names":[],"mappings":"AAAA,iHAAiH;AAajH,sIAAsI;AACtI,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wIAAwI;AACxI,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAID,2IAA2I;AAC3I,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED,6IAA6I;AAC7I,wBAAgB,2BAA2B,IAAI,IAAI,CAElD"}
@@ -0,0 +1,28 @@
1
+ /** @codex { "id": "pithy.ui-kit.shared-checkbox", "title": "Shared Checkbox Constants", "category": "types" } */
2
+ /**
3
+ * Shared constants for the Checkbox / CheckboxGroup atoms.
4
+ * Single source of truth for ID generation.
5
+ *
6
+ * **SSR:** Counters are module-level state. Call `resetCheckboxIdCounter()` and
7
+ * `resetCheckboxGroupIdCounter()` between SSR requests to ensure deterministic
8
+ * IDs (same pattern as `resetSectionIdCounter()` in section templates).
9
+ */
10
+ let checkboxIdCounter = 0;
11
+ /** @codexApi {"parent":"pithy.ui-kit.shared-checkbox","name":"generateCheckboxId","stability":"stable","signature":"() => string"} */
12
+ export function generateCheckboxId() {
13
+ return `ui-checkbox-${++checkboxIdCounter}`;
14
+ }
15
+ /** @codexApi {"parent":"pithy.ui-kit.shared-checkbox","name":"resetCheckboxIdCounter","stability":"stable","signature":"() => void"} */
16
+ export function resetCheckboxIdCounter() {
17
+ checkboxIdCounter = 0;
18
+ }
19
+ let checkboxGroupIdCounter = 0;
20
+ /** @codexApi {"parent":"pithy.ui-kit.shared-checkbox","name":"generateCheckboxGroupId","stability":"stable","signature":"() => string"} */
21
+ export function generateCheckboxGroupId() {
22
+ return `ui-checkbox-group-${++checkboxGroupIdCounter}`;
23
+ }
24
+ /** @codexApi {"parent":"pithy.ui-kit.shared-checkbox","name":"resetCheckboxGroupIdCounter","stability":"stable","signature":"() => void"} */
25
+ export function resetCheckboxGroupIdCounter() {
26
+ checkboxGroupIdCounter = 0;
27
+ }
28
+ //# sourceMappingURL=checkbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox.js","sourceRoot":"","sources":["../../src/shared/checkbox.ts"],"names":[],"mappings":"AAAA,iHAAiH;AAEjH;;;;;;;GAOG;AAEH,IAAI,iBAAiB,GAAG,CAAC,CAAC;AAE1B,sIAAsI;AACtI,MAAM,UAAU,kBAAkB;IAChC,OAAO,eAAe,EAAE,iBAAiB,EAAE,CAAC;AAC9C,CAAC;AAED,wIAAwI;AACxI,MAAM,UAAU,sBAAsB;IACpC,iBAAiB,GAAG,CAAC,CAAC;AACxB,CAAC;AAED,IAAI,sBAAsB,GAAG,CAAC,CAAC;AAE/B,2IAA2I;AAC3I,MAAM,UAAU,uBAAuB;IACrC,OAAO,qBAAqB,EAAE,sBAAsB,EAAE,CAAC;AACzD,CAAC;AAED,6IAA6I;AAC7I,MAAM,UAAU,2BAA2B;IACzC,sBAAsB,GAAG,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,34 @@
1
+ /** @codex
2
+ {
3
+ "id": "pithy.ui-kit.clickable",
4
+ "title": "Clickable Reactive State Helpers",
5
+ "category": "types"
6
+ }
7
+ */
8
+ /** A prop that is either a static value or a `() => T` accessor (signal/computed). */
9
+ /** @codexApi {"parent":"pithy.ui-kit.clickable","name":"Reactive","stability":"stable","signature":"type Reactive<T> = T | (() => T)"} */
10
+ export type Reactive<T> = T | (() => T);
11
+ /** @codexApi {"parent":"pithy.ui-kit.clickable","name":"ReactiveText","stability":"stable","signature":"type ReactiveText = string | (() => string | undefined)"} */
12
+ export type ReactiveText = string | (() => string | undefined);
13
+ /** Read a `Reactive<T>` — invokes the accessor when given a function, otherwise returns the value. */
14
+ /** @codexApi {"parent":"pithy.ui-kit.clickable","name":"readReactive","stability":"stable","signature":"<T>(value: Reactive<T>) => T"} */
15
+ export declare function readReactive<T>(value: Reactive<T>): T;
16
+ /** True when at least one of the given values is a function (i.e. a reactive accessor). */
17
+ /** @codexApi {"parent":"pithy.ui-kit.clickable","name":"hasReactive","stability":"stable","signature":"(...values: ReadonlyArray<unknown>) => boolean"} */
18
+ export declare function hasReactive(...values: ReadonlyArray<unknown>): boolean;
19
+ /**
20
+ * Run `apply` either inside a tracked `effect()` (when any source is reactive)
21
+ * or once for the synchronous initial paint. Returns a disposer — a no-op when
22
+ * no effect was created — so callers can push it into their disposers list
23
+ * without branching.
24
+ */
25
+ /** @codexApi {"parent":"pithy.ui-kit.clickable","name":"bindReactive","stability":"stable","signature":"(reactive: boolean, apply: () => void) => () => void"} */
26
+ export declare function bindReactive(reactive: boolean, apply: () => void): () => void;
27
+ /**
28
+ * Wrap a click handler so it short-circuits while `isBlocked()` is true.
29
+ * `preventDefault` + `stopImmediatePropagation` mirror the Button pattern —
30
+ * the element stays focusable for screen readers but the click is neutralised.
31
+ */
32
+ /** @codexApi {"parent":"pithy.ui-kit.clickable","name":"guardClick","stability":"stable","signature":"(handler: ((e: MouseEvent) => void) | undefined, isBlocked: () => boolean) => (e: MouseEvent) => void"} */
33
+ export declare function guardClick(handler: ((e: MouseEvent) => void) | undefined, isBlocked: () => boolean): (e: MouseEvent) => void;
34
+ //# sourceMappingURL=clickable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clickable.d.ts","sourceRoot":"","sources":["../../src/shared/clickable.ts"],"names":[],"mappings":"AAAA;;;;;;EAME;AAWF,sFAAsF;AACtF,0IAA0I;AAC1I,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAGxC,qKAAqK;AACrK,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC;AAE/D,sGAAsG;AACtG,0IAA0I;AAC1I,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAErD;AAED,2FAA2F;AAC3F,2JAA2J;AAC3J,wBAAgB,WAAW,CAAC,GAAG,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,OAAO,CAEtE;AAED;;;;;GAKG;AACH,kKAAkK;AAClK,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAI7E;AAED;;;;GAIG;AACH,iNAAiN;AACjN,wBAAgB,UAAU,CACxB,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC,GAAG,SAAS,EAC9C,SAAS,EAAE,MAAM,OAAO,GACvB,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CASzB"}
@@ -0,0 +1,54 @@
1
+ /** @codex
2
+ {
3
+ "id": "pithy.ui-kit.clickable",
4
+ "title": "Clickable Reactive State Helpers",
5
+ "category": "types"
6
+ }
7
+ */
8
+ /**
9
+ * Composable primitives for reactive boolean props (disabled / selected /
10
+ * loading) and click-handler guarding. Used by clickable atoms (Tile, …)
11
+ * to avoid duplicating the `typeof === "function"` ternary, the
12
+ * effect-vs-once branch, and the disabled-click guard.
13
+ */
14
+ import { effect } from '@pithyjs/signals';
15
+ /** Read a `Reactive<T>` — invokes the accessor when given a function, otherwise returns the value. */
16
+ /** @codexApi {"parent":"pithy.ui-kit.clickable","name":"readReactive","stability":"stable","signature":"<T>(value: Reactive<T>) => T"} */
17
+ export function readReactive(value) {
18
+ return typeof value === 'function' ? value() : value;
19
+ }
20
+ /** True when at least one of the given values is a function (i.e. a reactive accessor). */
21
+ /** @codexApi {"parent":"pithy.ui-kit.clickable","name":"hasReactive","stability":"stable","signature":"(...values: ReadonlyArray<unknown>) => boolean"} */
22
+ export function hasReactive(...values) {
23
+ return values.some(v => typeof v === 'function');
24
+ }
25
+ /**
26
+ * Run `apply` either inside a tracked `effect()` (when any source is reactive)
27
+ * or once for the synchronous initial paint. Returns a disposer — a no-op when
28
+ * no effect was created — so callers can push it into their disposers list
29
+ * without branching.
30
+ */
31
+ /** @codexApi {"parent":"pithy.ui-kit.clickable","name":"bindReactive","stability":"stable","signature":"(reactive: boolean, apply: () => void) => () => void"} */
32
+ export function bindReactive(reactive, apply) {
33
+ if (reactive)
34
+ return effect(apply);
35
+ apply();
36
+ return () => { };
37
+ }
38
+ /**
39
+ * Wrap a click handler so it short-circuits while `isBlocked()` is true.
40
+ * `preventDefault` + `stopImmediatePropagation` mirror the Button pattern —
41
+ * the element stays focusable for screen readers but the click is neutralised.
42
+ */
43
+ /** @codexApi {"parent":"pithy.ui-kit.clickable","name":"guardClick","stability":"stable","signature":"(handler: ((e: MouseEvent) => void) | undefined, isBlocked: () => boolean) => (e: MouseEvent) => void"} */
44
+ export function guardClick(handler, isBlocked) {
45
+ return (e) => {
46
+ if (isBlocked()) {
47
+ e.preventDefault();
48
+ e.stopImmediatePropagation();
49
+ return;
50
+ }
51
+ handler?.(e);
52
+ };
53
+ }
54
+ //# sourceMappingURL=clickable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clickable.js","sourceRoot":"","sources":["../../src/shared/clickable.ts"],"names":[],"mappings":"AAAA;;;;;;EAME;AAEF;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAU1C,sGAAsG;AACtG,0IAA0I;AAC1I,MAAM,UAAU,YAAY,CAAI,KAAkB;IAChD,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAE,KAAiB,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AACpE,CAAC;AAED,2FAA2F;AAC3F,2JAA2J;AAC3J,MAAM,UAAU,WAAW,CAAC,GAAG,MAA8B;IAC3D,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,CAAC;AACnD,CAAC;AAED;;;;;GAKG;AACH,kKAAkK;AAClK,MAAM,UAAU,YAAY,CAAC,QAAiB,EAAE,KAAiB;IAC/D,IAAI,QAAQ;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACnC,KAAK,EAAE,CAAC;IACR,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,iNAAiN;AACjN,MAAM,UAAU,UAAU,CACxB,OAA8C,EAC9C,SAAwB;IAExB,OAAO,CAAC,CAAa,EAAE,EAAE;QACvB,IAAI,SAAS,EAAE,EAAE,CAAC;YAChB,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,CAAC,CAAC,wBAAwB,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IACf,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,31 @@
1
+ /** @codex { "id": "pithy.ui-kit.shared-common", "title": "Shared Utility Class Maps", "category": "types" } */
2
+ /**
3
+ * Shared utility class maps for layout and control components.
4
+ *
5
+ * Full class strings are written out explicitly so the design-system JIT
6
+ * scanner detects them on startup — dynamic template literals like
7
+ * `u-gap-${gap}` produce incomplete fragments the scanner can't match.
8
+ *
9
+ * Derived from the design-system spacing tokens and layout SCSS values.
10
+ */
11
+ import type { ControlSize, SpacingSize } from '@pithyjs/design-system';
12
+ export declare const GAP_CLASS: Record<SpacingSize, string>;
13
+ export declare const ROW_GAP_CLASS: Record<SpacingSize, string>;
14
+ export declare const COL_GAP_CLASS: Record<SpacingSize, string>;
15
+ declare const ALIGN_ITEMS: readonly ["start", "center", "end", "stretch", "baseline"];
16
+ export type AlignItems = (typeof ALIGN_ITEMS)[number];
17
+ export declare const ALIGN_CLASS: Record<AlignItems, string>;
18
+ declare const JUSTIFY_ITEMS: readonly ["start", "end", "center", "between", "around", "evenly"];
19
+ export type JustifyContent = (typeof JUSTIFY_ITEMS)[number];
20
+ export declare const JUSTIFY_CLASS: Record<JustifyContent, string>;
21
+ export declare const PY_CLASS: Record<SpacingSize, string>;
22
+ export declare const SECTION_TAGS: readonly ["section", "article", "aside", "header", "footer", "main"];
23
+ export type SectionTag = (typeof SECTION_TAGS)[number];
24
+ /** @codexApi {"parent":"pithy.ui-kit.shared-common","name":"CONTROL_CLASS","stability":"stable","signature":"Record<ControlSize, string>"} */
25
+ export declare const CONTROL_CLASS: Record<ControlSize, string>;
26
+ /** Matches a numeric CSS length value (e.g. "250px", "15rem", "50%"). */
27
+ export declare const CSS_LENGTH_PATTERN: RegExp;
28
+ /** @codexApi {"parent":"pithy.ui-kit.shared-common","name":"nextUid","stability":"internal","signature":"(prefix: string) => string"} */
29
+ export declare function nextUid(prefix: string): string;
30
+ export {};
31
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/shared/common.ts"],"names":[],"mappings":"AAAA,+GAA+G;AAE/G;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAIvE,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAOjD,CAAC;AAIF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAOrD,CAAC;AAIF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAOrD,CAAC;AAIF,QAAA,MAAM,WAAW,4DAA6D,CAAC;AAC/E,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAMlD,CAAC;AAIF,QAAA,MAAM,aAAa,oEAOT,CAAC;AACX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAOxD,CAAC;AAIF,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAOhD,CAAC;AAIF,eAAO,MAAM,YAAY,sEAOf,CAAC;AACX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAIvD,8IAA8I;AAC9I,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAIrD,CAAC;AAIF,yEAAyE;AACzE,eAAO,MAAM,kBAAkB,QAC0C,CAAC;AAM1E,yIAAyI;AACzI,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAI9C"}