@nanisoft/prism-ui 0.13.0 → 0.16.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 (964) hide show
  1. package/THIRD-PARTY-NOTICES.md +22 -7
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/blocks/about-01/about.d.ts +296 -0
  4. package/dist/blocks/about-01/about.d.ts.map +1 -0
  5. package/dist/blocks/about-01/about.js +103 -0
  6. package/dist/blocks/about-01/index.d.ts +3 -0
  7. package/dist/blocks/about-01/index.d.ts.map +1 -0
  8. package/dist/blocks/about-01/index.js +1 -0
  9. package/dist/blocks/accept-invite-01/accept-invite.d.ts +324 -0
  10. package/dist/blocks/accept-invite-01/accept-invite.d.ts.map +1 -0
  11. package/dist/blocks/accept-invite-01/accept-invite.js +230 -0
  12. package/dist/blocks/accept-invite-01/index.d.ts +3 -0
  13. package/dist/blocks/accept-invite-01/index.d.ts.map +1 -0
  14. package/dist/blocks/accept-invite-01/index.js +1 -0
  15. package/dist/blocks/account-01/account-01.d.ts +393 -0
  16. package/dist/blocks/account-01/account-01.d.ts.map +1 -0
  17. package/dist/blocks/account-01/account-01.js +215 -0
  18. package/dist/blocks/account-01/index.d.ts +3 -0
  19. package/dist/blocks/account-01/index.d.ts.map +1 -0
  20. package/dist/blocks/account-01/index.js +1 -0
  21. package/dist/blocks/activity-feed-01/activity-feed-01.d.ts +271 -0
  22. package/dist/blocks/activity-feed-01/activity-feed-01.d.ts.map +1 -0
  23. package/dist/blocks/activity-feed-01/activity-feed-01.js +185 -0
  24. package/dist/blocks/activity-feed-01/index.d.ts +3 -0
  25. package/dist/blocks/activity-feed-01/index.d.ts.map +1 -0
  26. package/dist/blocks/activity-feed-01/index.js +1 -0
  27. package/dist/blocks/address-book-01/address-book-01.d.ts +312 -0
  28. package/dist/blocks/address-book-01/address-book-01.d.ts.map +1 -0
  29. package/dist/blocks/address-book-01/address-book-01.js +233 -0
  30. package/dist/blocks/address-book-01/index.d.ts +3 -0
  31. package/dist/blocks/address-book-01/index.d.ts.map +1 -0
  32. package/dist/blocks/address-book-01/index.js +1 -0
  33. package/dist/blocks/audit-log-01/audit-log-01.d.ts +333 -0
  34. package/dist/blocks/audit-log-01/audit-log-01.d.ts.map +1 -0
  35. package/dist/blocks/audit-log-01/audit-log-01.js +211 -0
  36. package/dist/blocks/audit-log-01/index.d.ts +3 -0
  37. package/dist/blocks/audit-log-01/index.d.ts.map +1 -0
  38. package/dist/blocks/audit-log-01/index.js +1 -0
  39. package/dist/blocks/auth-form-01/auth-form.d.ts +40 -1
  40. package/dist/blocks/auth-form-01/auth-form.d.ts.map +1 -1
  41. package/dist/blocks/auth-form-01/auth-form.js +26 -3
  42. package/dist/blocks/awards-01/awards.d.ts +156 -0
  43. package/dist/blocks/awards-01/awards.d.ts.map +1 -0
  44. package/dist/blocks/awards-01/awards.js +102 -0
  45. package/dist/blocks/awards-01/index.d.ts +3 -0
  46. package/dist/blocks/awards-01/index.d.ts.map +1 -0
  47. package/dist/blocks/awards-01/index.js +1 -0
  48. package/dist/blocks/backdrop-01/backdrop.d.ts +268 -0
  49. package/dist/blocks/backdrop-01/backdrop.d.ts.map +1 -0
  50. package/dist/blocks/backdrop-01/backdrop.js +170 -0
  51. package/dist/blocks/backdrop-01/index.d.ts +3 -0
  52. package/dist/blocks/backdrop-01/index.d.ts.map +1 -0
  53. package/dist/blocks/backdrop-01/index.js +1 -0
  54. package/dist/blocks/bento-01/bento-01.d.ts +136 -0
  55. package/dist/blocks/bento-01/bento-01.d.ts.map +1 -0
  56. package/dist/blocks/bento-01/bento-01.js +97 -0
  57. package/dist/blocks/bento-01/index.d.ts +3 -0
  58. package/dist/blocks/bento-01/index.d.ts.map +1 -0
  59. package/dist/blocks/bento-01/index.js +1 -0
  60. package/dist/blocks/billing-source-01/billing-source-01.d.ts +379 -0
  61. package/dist/blocks/billing-source-01/billing-source-01.d.ts.map +1 -0
  62. package/dist/blocks/billing-source-01/billing-source-01.js +222 -0
  63. package/dist/blocks/billing-source-01/index.d.ts +3 -0
  64. package/dist/blocks/billing-source-01/index.d.ts.map +1 -0
  65. package/dist/blocks/billing-source-01/index.js +1 -0
  66. package/dist/blocks/bundle-01/bundle.d.ts +387 -0
  67. package/dist/blocks/bundle-01/bundle.d.ts.map +1 -0
  68. package/dist/blocks/bundle-01/bundle.js +153 -0
  69. package/dist/blocks/bundle-01/index.d.ts +3 -0
  70. package/dist/blocks/bundle-01/index.d.ts.map +1 -0
  71. package/dist/blocks/bundle-01/index.js +1 -0
  72. package/dist/blocks/calendar-01/calendar.d.ts +251 -0
  73. package/dist/blocks/calendar-01/calendar.d.ts.map +1 -0
  74. package/dist/blocks/calendar-01/calendar.js +191 -0
  75. package/dist/blocks/calendar-01/index.d.ts +3 -0
  76. package/dist/blocks/calendar-01/index.d.ts.map +1 -0
  77. package/dist/blocks/calendar-01/index.js +1 -0
  78. package/dist/blocks/capacity-01/capacity.d.ts +363 -0
  79. package/dist/blocks/capacity-01/capacity.d.ts.map +1 -0
  80. package/dist/blocks/capacity-01/capacity.js +208 -0
  81. package/dist/blocks/capacity-01/index.d.ts +3 -0
  82. package/dist/blocks/capacity-01/index.d.ts.map +1 -0
  83. package/dist/blocks/capacity-01/index.js +1 -0
  84. package/dist/blocks/careers-01/careers.d.ts +186 -0
  85. package/dist/blocks/careers-01/careers.d.ts.map +1 -0
  86. package/dist/blocks/careers-01/careers.js +83 -0
  87. package/dist/blocks/careers-01/index.d.ts +3 -0
  88. package/dist/blocks/careers-01/index.d.ts.map +1 -0
  89. package/dist/blocks/careers-01/index.js +1 -0
  90. package/dist/blocks/case-studies-01/case-studies.d.ts +192 -0
  91. package/dist/blocks/case-studies-01/case-studies.d.ts.map +1 -0
  92. package/dist/blocks/case-studies-01/case-studies.js +97 -0
  93. package/dist/blocks/case-studies-01/index.d.ts +3 -0
  94. package/dist/blocks/case-studies-01/index.d.ts.map +1 -0
  95. package/dist/blocks/case-studies-01/index.js +1 -0
  96. package/dist/blocks/case-study-01/case-study.d.ts +214 -0
  97. package/dist/blocks/case-study-01/case-study.d.ts.map +1 -0
  98. package/dist/blocks/case-study-01/case-study.js +79 -0
  99. package/dist/blocks/case-study-01/index.d.ts +3 -0
  100. package/dist/blocks/case-study-01/index.d.ts.map +1 -0
  101. package/dist/blocks/case-study-01/index.js +1 -0
  102. package/dist/blocks/changelog-01/changelog.d.ts +200 -0
  103. package/dist/blocks/changelog-01/changelog.d.ts.map +1 -0
  104. package/dist/blocks/changelog-01/changelog.js +155 -0
  105. package/dist/blocks/changelog-01/index.d.ts +3 -0
  106. package/dist/blocks/changelog-01/index.d.ts.map +1 -0
  107. package/dist/blocks/changelog-01/index.js +1 -0
  108. package/dist/blocks/chart-card-01/chart-card-01.d.ts +149 -0
  109. package/dist/blocks/chart-card-01/chart-card-01.d.ts.map +1 -0
  110. package/dist/blocks/chart-card-01/chart-card-01.js +81 -0
  111. package/dist/blocks/chart-card-01/index.d.ts +3 -0
  112. package/dist/blocks/chart-card-01/index.d.ts.map +1 -0
  113. package/dist/blocks/chart-card-01/index.js +1 -0
  114. package/dist/blocks/chart-group-01/chart-group-01.d.ts +138 -0
  115. package/dist/blocks/chart-group-01/chart-group-01.d.ts.map +1 -0
  116. package/dist/blocks/chart-group-01/chart-group-01.js +74 -0
  117. package/dist/blocks/chart-group-01/index.d.ts +3 -0
  118. package/dist/blocks/chart-group-01/index.d.ts.map +1 -0
  119. package/dist/blocks/chart-group-01/index.js +1 -0
  120. package/dist/blocks/code-sample-01/code-sample.d.ts +193 -0
  121. package/dist/blocks/code-sample-01/code-sample.d.ts.map +1 -0
  122. package/dist/blocks/code-sample-01/code-sample.js +104 -0
  123. package/dist/blocks/code-sample-01/index.d.ts +3 -0
  124. package/dist/blocks/code-sample-01/index.d.ts.map +1 -0
  125. package/dist/blocks/code-sample-01/index.js +1 -0
  126. package/dist/blocks/community-01/community.d.ts +183 -0
  127. package/dist/blocks/community-01/community.d.ts.map +1 -0
  128. package/dist/blocks/community-01/community.js +102 -0
  129. package/dist/blocks/community-01/index.d.ts +3 -0
  130. package/dist/blocks/community-01/index.d.ts.map +1 -0
  131. package/dist/blocks/community-01/index.js +1 -0
  132. package/dist/blocks/compare-01/compare.d.ts +184 -0
  133. package/dist/blocks/compare-01/compare.d.ts.map +1 -0
  134. package/dist/blocks/compare-01/compare.js +106 -0
  135. package/dist/blocks/compare-01/index.d.ts +3 -0
  136. package/dist/blocks/compare-01/index.d.ts.map +1 -0
  137. package/dist/blocks/compare-01/index.js +1 -0
  138. package/dist/blocks/compliance-01/compliance.d.ts +249 -0
  139. package/dist/blocks/compliance-01/compliance.d.ts.map +1 -0
  140. package/dist/blocks/compliance-01/compliance.js +130 -0
  141. package/dist/blocks/compliance-01/index.d.ts +3 -0
  142. package/dist/blocks/compliance-01/index.d.ts.map +1 -0
  143. package/dist/blocks/compliance-01/index.js +1 -0
  144. package/dist/blocks/consent-01/consent.d.ts +211 -0
  145. package/dist/blocks/consent-01/consent.d.ts.map +1 -0
  146. package/dist/blocks/consent-01/consent.js +101 -0
  147. package/dist/blocks/consent-01/index.d.ts +3 -0
  148. package/dist/blocks/consent-01/index.d.ts.map +1 -0
  149. package/dist/blocks/consent-01/index.js +1 -0
  150. package/dist/blocks/contact-01/contact.d.ts +319 -0
  151. package/dist/blocks/contact-01/contact.d.ts.map +1 -0
  152. package/dist/blocks/contact-01/contact.js +211 -0
  153. package/dist/blocks/contact-01/index.d.ts +3 -0
  154. package/dist/blocks/contact-01/index.d.ts.map +1 -0
  155. package/dist/blocks/contact-01/index.js +1 -0
  156. package/dist/blocks/content-grid-01/content-grid.d.ts +262 -0
  157. package/dist/blocks/content-grid-01/content-grid.d.ts.map +1 -0
  158. package/dist/blocks/content-grid-01/content-grid.js +155 -0
  159. package/dist/blocks/content-grid-01/index.d.ts +3 -0
  160. package/dist/blocks/content-grid-01/index.d.ts.map +1 -0
  161. package/dist/blocks/content-grid-01/index.js +1 -0
  162. package/dist/blocks/cta-01/cta.d.ts +7 -1
  163. package/dist/blocks/cta-01/cta.d.ts.map +1 -1
  164. package/dist/blocks/cta-01/cta.js +11 -2
  165. package/dist/blocks/dashboard-01/dashboard-01.d.ts +247 -0
  166. package/dist/blocks/dashboard-01/dashboard-01.d.ts.map +1 -0
  167. package/dist/blocks/dashboard-01/dashboard-01.js +141 -0
  168. package/dist/blocks/dashboard-01/index.d.ts +3 -0
  169. package/dist/blocks/dashboard-01/index.d.ts.map +1 -0
  170. package/dist/blocks/dashboard-01/index.js +1 -0
  171. package/dist/blocks/data-table-01/data-table.d.ts +22 -1
  172. package/dist/blocks/data-table-01/data-table.d.ts.map +1 -1
  173. package/dist/blocks/data-table-01/data-table.js +9 -5
  174. package/dist/blocks/delivery-01/delivery.d.ts +343 -0
  175. package/dist/blocks/delivery-01/delivery.d.ts.map +1 -0
  176. package/dist/blocks/delivery-01/delivery.js +212 -0
  177. package/dist/blocks/delivery-01/index.d.ts +3 -0
  178. package/dist/blocks/delivery-01/index.d.ts.map +1 -0
  179. package/dist/blocks/delivery-01/index.js +1 -0
  180. package/dist/blocks/directory-01/directory-01.d.ts +316 -0
  181. package/dist/blocks/directory-01/directory-01.d.ts.map +1 -0
  182. package/dist/blocks/directory-01/directory-01.js +252 -0
  183. package/dist/blocks/directory-01/index.d.ts +3 -0
  184. package/dist/blocks/directory-01/index.d.ts.map +1 -0
  185. package/dist/blocks/directory-01/index.js +1 -0
  186. package/dist/blocks/download-01/download.d.ts +261 -0
  187. package/dist/blocks/download-01/download.d.ts.map +1 -0
  188. package/dist/blocks/download-01/download.js +115 -0
  189. package/dist/blocks/download-01/index.d.ts +3 -0
  190. package/dist/blocks/download-01/index.d.ts.map +1 -0
  191. package/dist/blocks/download-01/index.js +1 -0
  192. package/dist/blocks/faq-01/faq.d.ts +128 -0
  193. package/dist/blocks/faq-01/faq.d.ts.map +1 -0
  194. package/dist/blocks/faq-01/faq.js +53 -0
  195. package/dist/blocks/faq-01/index.d.ts +3 -0
  196. package/dist/blocks/faq-01/index.d.ts.map +1 -0
  197. package/dist/blocks/faq-01/index.js +1 -0
  198. package/dist/blocks/feature-rows-01/feature-rows-01.d.ts +158 -0
  199. package/dist/blocks/feature-rows-01/feature-rows-01.d.ts.map +1 -0
  200. package/dist/blocks/feature-rows-01/feature-rows-01.js +81 -0
  201. package/dist/blocks/feature-rows-01/index.d.ts +3 -0
  202. package/dist/blocks/feature-rows-01/index.d.ts.map +1 -0
  203. package/dist/blocks/feature-rows-01/index.js +1 -0
  204. package/dist/blocks/feedback-01/feedback.d.ts +235 -0
  205. package/dist/blocks/feedback-01/feedback.d.ts.map +1 -0
  206. package/dist/blocks/feedback-01/feedback.js +113 -0
  207. package/dist/blocks/feedback-01/index.d.ts +3 -0
  208. package/dist/blocks/feedback-01/index.d.ts.map +1 -0
  209. package/dist/blocks/feedback-01/index.js +1 -0
  210. package/dist/blocks/field-map-01/field-map.d.ts +247 -0
  211. package/dist/blocks/field-map-01/field-map.d.ts.map +1 -0
  212. package/dist/blocks/field-map-01/field-map.js +183 -0
  213. package/dist/blocks/field-map-01/index.d.ts +3 -0
  214. package/dist/blocks/field-map-01/index.d.ts.map +1 -0
  215. package/dist/blocks/field-map-01/index.js +1 -0
  216. package/dist/blocks/forgot-password-01/forgot-password.d.ts +288 -0
  217. package/dist/blocks/forgot-password-01/forgot-password.d.ts.map +1 -0
  218. package/dist/blocks/forgot-password-01/forgot-password.js +190 -0
  219. package/dist/blocks/forgot-password-01/index.d.ts +3 -0
  220. package/dist/blocks/forgot-password-01/index.d.ts.map +1 -0
  221. package/dist/blocks/forgot-password-01/index.js +1 -0
  222. package/dist/blocks/gallery-01/gallery.d.ts +208 -0
  223. package/dist/blocks/gallery-01/gallery.d.ts.map +1 -0
  224. package/dist/blocks/gallery-01/gallery.js +174 -0
  225. package/dist/blocks/gallery-01/index.d.ts +3 -0
  226. package/dist/blocks/gallery-01/index.d.ts.map +1 -0
  227. package/dist/blocks/gallery-01/index.js +1 -0
  228. package/dist/blocks/gantt-01/gantt.d.ts +290 -0
  229. package/dist/blocks/gantt-01/gantt.d.ts.map +1 -0
  230. package/dist/blocks/gantt-01/gantt.js +224 -0
  231. package/dist/blocks/gantt-01/index.d.ts +3 -0
  232. package/dist/blocks/gantt-01/index.d.ts.map +1 -0
  233. package/dist/blocks/gantt-01/index.js +1 -0
  234. package/dist/blocks/handoff-01/handoff-01.d.ts +326 -0
  235. package/dist/blocks/handoff-01/handoff-01.d.ts.map +1 -0
  236. package/dist/blocks/handoff-01/handoff-01.js +180 -0
  237. package/dist/blocks/handoff-01/index.d.ts +3 -0
  238. package/dist/blocks/handoff-01/index.d.ts.map +1 -0
  239. package/dist/blocks/handoff-01/index.js +1 -0
  240. package/dist/blocks/help-01/help.d.ts +254 -0
  241. package/dist/blocks/help-01/help.d.ts.map +1 -0
  242. package/dist/blocks/help-01/help.js +188 -0
  243. package/dist/blocks/help-01/index.d.ts +3 -0
  244. package/dist/blocks/help-01/index.d.ts.map +1 -0
  245. package/dist/blocks/help-01/index.js +1 -0
  246. package/dist/blocks/hero-01/hero.d.ts +105 -34
  247. package/dist/blocks/hero-01/hero.d.ts.map +1 -1
  248. package/dist/blocks/hero-01/hero.js +23 -15
  249. package/dist/blocks/hero-01/index.d.ts +1 -1
  250. package/dist/blocks/hero-01/index.d.ts.map +1 -1
  251. package/dist/blocks/hero-02/hero-02.d.ts +244 -0
  252. package/dist/blocks/hero-02/hero-02.d.ts.map +1 -0
  253. package/dist/blocks/hero-02/hero-02.js +87 -0
  254. package/dist/blocks/hero-02/index.d.ts +3 -0
  255. package/dist/blocks/hero-02/index.d.ts.map +1 -0
  256. package/dist/blocks/hero-02/index.js +1 -0
  257. package/dist/blocks/hero-03/hero-03.d.ts +247 -0
  258. package/dist/blocks/hero-03/hero-03.d.ts.map +1 -0
  259. package/dist/blocks/hero-03/hero-03.js +93 -0
  260. package/dist/blocks/hero-03/index.d.ts +3 -0
  261. package/dist/blocks/hero-03/index.d.ts.map +1 -0
  262. package/dist/blocks/hero-03/index.js +1 -0
  263. package/dist/blocks/history-01/history-01.d.ts +414 -0
  264. package/dist/blocks/history-01/history-01.d.ts.map +1 -0
  265. package/dist/blocks/history-01/history-01.js +285 -0
  266. package/dist/blocks/history-01/index.d.ts +3 -0
  267. package/dist/blocks/history-01/index.d.ts.map +1 -0
  268. package/dist/blocks/history-01/index.js +1 -0
  269. package/dist/blocks/inbox-01/inbox.d.ts +349 -0
  270. package/dist/blocks/inbox-01/inbox.d.ts.map +1 -0
  271. package/dist/blocks/inbox-01/inbox.js +244 -0
  272. package/dist/blocks/inbox-01/index.d.ts +3 -0
  273. package/dist/blocks/inbox-01/index.d.ts.map +1 -0
  274. package/dist/blocks/inbox-01/index.js +1 -0
  275. package/dist/blocks/index.d.ts +203 -0
  276. package/dist/blocks/index.d.ts.map +1 -1
  277. package/dist/blocks/index.js +118 -0
  278. package/dist/blocks/industries-01/index.d.ts +3 -0
  279. package/dist/blocks/industries-01/index.d.ts.map +1 -0
  280. package/dist/blocks/industries-01/index.js +1 -0
  281. package/dist/blocks/industries-01/industries.d.ts +164 -0
  282. package/dist/blocks/industries-01/industries.d.ts.map +1 -0
  283. package/dist/blocks/industries-01/industries.js +96 -0
  284. package/dist/blocks/intake-01/index.d.ts +3 -0
  285. package/dist/blocks/intake-01/index.d.ts.map +1 -0
  286. package/dist/blocks/intake-01/index.js +1 -0
  287. package/dist/blocks/intake-01/intake-01.d.ts +305 -0
  288. package/dist/blocks/intake-01/intake-01.d.ts.map +1 -0
  289. package/dist/blocks/intake-01/intake-01.js +178 -0
  290. package/dist/blocks/integration-01/index.d.ts +3 -0
  291. package/dist/blocks/integration-01/index.d.ts.map +1 -0
  292. package/dist/blocks/integration-01/index.js +1 -0
  293. package/dist/blocks/integration-01/integration.d.ts +226 -0
  294. package/dist/blocks/integration-01/integration.d.ts.map +1 -0
  295. package/dist/blocks/integration-01/integration.js +170 -0
  296. package/dist/blocks/invite-user-01/index.d.ts +3 -0
  297. package/dist/blocks/invite-user-01/index.d.ts.map +1 -0
  298. package/dist/blocks/invite-user-01/index.js +1 -0
  299. package/dist/blocks/invite-user-01/invite-user.d.ts +317 -0
  300. package/dist/blocks/invite-user-01/invite-user.d.ts.map +1 -0
  301. package/dist/blocks/invite-user-01/invite-user.js +228 -0
  302. package/dist/blocks/issue-detail-01/index.d.ts +3 -0
  303. package/dist/blocks/issue-detail-01/index.d.ts.map +1 -0
  304. package/dist/blocks/issue-detail-01/index.js +1 -0
  305. package/dist/blocks/issue-detail-01/issue-detail.d.ts +355 -0
  306. package/dist/blocks/issue-detail-01/issue-detail.d.ts.map +1 -0
  307. package/dist/blocks/issue-detail-01/issue-detail.js +187 -0
  308. package/dist/blocks/issue-list-01/index.d.ts +3 -0
  309. package/dist/blocks/issue-list-01/index.d.ts.map +1 -0
  310. package/dist/blocks/issue-list-01/index.js +1 -0
  311. package/dist/blocks/issue-list-01/issue-list.d.ts +298 -0
  312. package/dist/blocks/issue-list-01/issue-list.d.ts.map +1 -0
  313. package/dist/blocks/issue-list-01/issue-list.js +284 -0
  314. package/dist/blocks/kanban-01/index.d.ts +3 -0
  315. package/dist/blocks/kanban-01/index.d.ts.map +1 -0
  316. package/dist/blocks/kanban-01/index.js +1 -0
  317. package/dist/blocks/kanban-01/kanban.d.ts +278 -0
  318. package/dist/blocks/kanban-01/kanban.d.ts.map +1 -0
  319. package/dist/blocks/kanban-01/kanban.js +144 -0
  320. package/dist/blocks/leaderboard-01/index.d.ts +3 -0
  321. package/dist/blocks/leaderboard-01/index.d.ts.map +1 -0
  322. package/dist/blocks/leaderboard-01/index.js +1 -0
  323. package/dist/blocks/leaderboard-01/leaderboard.d.ts +250 -0
  324. package/dist/blocks/leaderboard-01/leaderboard.d.ts.map +1 -0
  325. package/dist/blocks/leaderboard-01/leaderboard.js +121 -0
  326. package/dist/blocks/login-01/index.d.ts +3 -0
  327. package/dist/blocks/login-01/index.d.ts.map +1 -0
  328. package/dist/blocks/login-01/index.js +1 -0
  329. package/dist/blocks/login-01/login-01.d.ts +356 -0
  330. package/dist/blocks/login-01/login-01.d.ts.map +1 -0
  331. package/dist/blocks/login-01/login-01.js +249 -0
  332. package/dist/blocks/logo-cloud-01/index.d.ts +3 -0
  333. package/dist/blocks/logo-cloud-01/index.d.ts.map +1 -0
  334. package/dist/blocks/logo-cloud-01/index.js +1 -0
  335. package/dist/blocks/logo-cloud-01/logo-cloud.d.ts +181 -0
  336. package/dist/blocks/logo-cloud-01/logo-cloud.d.ts.map +1 -0
  337. package/dist/blocks/logo-cloud-01/logo-cloud.js +118 -0
  338. package/dist/blocks/magic-link-01/index.d.ts +3 -0
  339. package/dist/blocks/magic-link-01/index.d.ts.map +1 -0
  340. package/dist/blocks/magic-link-01/index.js +1 -0
  341. package/dist/blocks/magic-link-01/magic-link-01.d.ts +367 -0
  342. package/dist/blocks/magic-link-01/magic-link-01.d.ts.map +1 -0
  343. package/dist/blocks/magic-link-01/magic-link-01.js +233 -0
  344. package/dist/blocks/member-list-01/index.d.ts +3 -0
  345. package/dist/blocks/member-list-01/index.d.ts.map +1 -0
  346. package/dist/blocks/member-list-01/index.js +1 -0
  347. package/dist/blocks/member-list-01/member-list.d.ts +192 -0
  348. package/dist/blocks/member-list-01/member-list.d.ts.map +1 -0
  349. package/dist/blocks/member-list-01/member-list.js +142 -0
  350. package/dist/blocks/milestone-timeline-01/index.d.ts +3 -0
  351. package/dist/blocks/milestone-timeline-01/index.d.ts.map +1 -0
  352. package/dist/blocks/milestone-timeline-01/index.js +1 -0
  353. package/dist/blocks/milestone-timeline-01/milestone-timeline.d.ts +217 -0
  354. package/dist/blocks/milestone-timeline-01/milestone-timeline.d.ts.map +1 -0
  355. package/dist/blocks/milestone-timeline-01/milestone-timeline.js +173 -0
  356. package/dist/blocks/newsletter-01/index.d.ts +3 -0
  357. package/dist/blocks/newsletter-01/index.d.ts.map +1 -0
  358. package/dist/blocks/newsletter-01/index.js +1 -0
  359. package/dist/blocks/newsletter-01/newsletter.d.ts +216 -0
  360. package/dist/blocks/newsletter-01/newsletter.d.ts.map +1 -0
  361. package/dist/blocks/newsletter-01/newsletter.js +102 -0
  362. package/dist/blocks/notification-center-01/index.d.ts +3 -0
  363. package/dist/blocks/notification-center-01/index.d.ts.map +1 -0
  364. package/dist/blocks/notification-center-01/index.js +1 -0
  365. package/dist/blocks/notification-center-01/notification-center-01.d.ts +341 -0
  366. package/dist/blocks/notification-center-01/notification-center-01.d.ts.map +1 -0
  367. package/dist/blocks/notification-center-01/notification-center-01.js +203 -0
  368. package/dist/blocks/offer-01/index.d.ts +3 -0
  369. package/dist/blocks/offer-01/index.d.ts.map +1 -0
  370. package/dist/blocks/offer-01/index.js +1 -0
  371. package/dist/blocks/offer-01/offer.d.ts +139 -0
  372. package/dist/blocks/offer-01/offer.d.ts.map +1 -0
  373. package/dist/blocks/offer-01/offer.js +81 -0
  374. package/dist/blocks/offering-01/index.d.ts +3 -0
  375. package/dist/blocks/offering-01/index.d.ts.map +1 -0
  376. package/dist/blocks/offering-01/index.js +1 -0
  377. package/dist/blocks/offering-01/offering.d.ts +245 -0
  378. package/dist/blocks/offering-01/offering.d.ts.map +1 -0
  379. package/dist/blocks/offering-01/offering.js +144 -0
  380. package/dist/blocks/offering-categories-01/index.d.ts +3 -0
  381. package/dist/blocks/offering-categories-01/index.d.ts.map +1 -0
  382. package/dist/blocks/offering-categories-01/index.js +1 -0
  383. package/dist/blocks/offering-categories-01/offering-categories.d.ts +248 -0
  384. package/dist/blocks/offering-categories-01/offering-categories.d.ts.map +1 -0
  385. package/dist/blocks/offering-categories-01/offering-categories.js +153 -0
  386. package/dist/blocks/offering-list-01/index.d.ts +3 -0
  387. package/dist/blocks/offering-list-01/index.d.ts.map +1 -0
  388. package/dist/blocks/offering-list-01/index.js +1 -0
  389. package/dist/blocks/offering-list-01/offering-list.d.ts +362 -0
  390. package/dist/blocks/offering-list-01/offering-list.d.ts.map +1 -0
  391. package/dist/blocks/offering-list-01/offering-list.js +366 -0
  392. package/dist/blocks/onboarding-01/index.d.ts +3 -0
  393. package/dist/blocks/onboarding-01/index.d.ts.map +1 -0
  394. package/dist/blocks/onboarding-01/index.js +1 -0
  395. package/dist/blocks/onboarding-01/onboarding.d.ts +199 -0
  396. package/dist/blocks/onboarding-01/onboarding.d.ts.map +1 -0
  397. package/dist/blocks/onboarding-01/onboarding.js +182 -0
  398. package/dist/blocks/ops-checklist-01/index.d.ts +3 -0
  399. package/dist/blocks/ops-checklist-01/index.d.ts.map +1 -0
  400. package/dist/blocks/ops-checklist-01/index.js +1 -0
  401. package/dist/blocks/ops-checklist-01/ops-checklist-01.d.ts +308 -0
  402. package/dist/blocks/ops-checklist-01/ops-checklist-01.d.ts.map +1 -0
  403. package/dist/blocks/ops-checklist-01/ops-checklist-01.js +165 -0
  404. package/dist/blocks/page-header-01/index.d.ts +1 -1
  405. package/dist/blocks/page-header-01/index.d.ts.map +1 -1
  406. package/dist/blocks/page-header-01/page-header.d.ts +131 -11
  407. package/dist/blocks/page-header-01/page-header.d.ts.map +1 -1
  408. package/dist/blocks/page-header-01/page-header.js +33 -9
  409. package/dist/blocks/passkey-01/index.d.ts +3 -0
  410. package/dist/blocks/passkey-01/index.d.ts.map +1 -0
  411. package/dist/blocks/passkey-01/index.js +1 -0
  412. package/dist/blocks/passkey-01/passkey-01.d.ts +334 -0
  413. package/dist/blocks/passkey-01/passkey-01.d.ts.map +1 -0
  414. package/dist/blocks/passkey-01/passkey-01.js +192 -0
  415. package/dist/blocks/permission-matrix-01/index.d.ts +3 -0
  416. package/dist/blocks/permission-matrix-01/index.d.ts.map +1 -0
  417. package/dist/blocks/permission-matrix-01/index.js +1 -0
  418. package/dist/blocks/permission-matrix-01/permission-matrix.d.ts +282 -0
  419. package/dist/blocks/permission-matrix-01/permission-matrix.d.ts.map +1 -0
  420. package/dist/blocks/permission-matrix-01/permission-matrix.js +173 -0
  421. package/dist/blocks/pricing-01/index.d.ts +1 -0
  422. package/dist/blocks/pricing-01/index.d.ts.map +1 -1
  423. package/dist/blocks/pricing-01/pricing.d.ts +118 -1
  424. package/dist/blocks/pricing-01/pricing.d.ts.map +1 -1
  425. package/dist/blocks/pricing-01/pricing.js +9 -2
  426. package/dist/blocks/pricing-compare-01/index.d.ts +3 -0
  427. package/dist/blocks/pricing-compare-01/index.d.ts.map +1 -0
  428. package/dist/blocks/pricing-compare-01/index.js +1 -0
  429. package/dist/blocks/pricing-compare-01/pricing-compare.d.ts +277 -0
  430. package/dist/blocks/pricing-compare-01/pricing-compare.d.ts.map +1 -0
  431. package/dist/blocks/pricing-compare-01/pricing-compare.js +126 -0
  432. package/dist/blocks/project-01/index.d.ts +3 -0
  433. package/dist/blocks/project-01/index.d.ts.map +1 -0
  434. package/dist/blocks/project-01/index.js +1 -0
  435. package/dist/blocks/project-01/project.d.ts +323 -0
  436. package/dist/blocks/project-01/project.d.ts.map +1 -0
  437. package/dist/blocks/project-01/project.js +247 -0
  438. package/dist/blocks/project-dashboard-01/index.d.ts +3 -0
  439. package/dist/blocks/project-dashboard-01/index.d.ts.map +1 -0
  440. package/dist/blocks/project-dashboard-01/index.js +1 -0
  441. package/dist/blocks/project-dashboard-01/project-dashboard.d.ts +200 -0
  442. package/dist/blocks/project-dashboard-01/project-dashboard.d.ts.map +1 -0
  443. package/dist/blocks/project-dashboard-01/project-dashboard.js +124 -0
  444. package/dist/blocks/project-list-01/index.d.ts +3 -0
  445. package/dist/blocks/project-list-01/index.d.ts.map +1 -0
  446. package/dist/blocks/project-list-01/index.js +1 -0
  447. package/dist/blocks/project-list-01/project-list.d.ts +301 -0
  448. package/dist/blocks/project-list-01/project-list.d.ts.map +1 -0
  449. package/dist/blocks/project-list-01/project-list.js +305 -0
  450. package/dist/blocks/provisioning-01/index.d.ts +3 -0
  451. package/dist/blocks/provisioning-01/index.d.ts.map +1 -0
  452. package/dist/blocks/provisioning-01/index.js +1 -0
  453. package/dist/blocks/provisioning-01/provisioning.d.ts +357 -0
  454. package/dist/blocks/provisioning-01/provisioning.d.ts.map +1 -0
  455. package/dist/blocks/provisioning-01/provisioning.js +230 -0
  456. package/dist/blocks/quick-view-01/index.d.ts +3 -0
  457. package/dist/blocks/quick-view-01/index.d.ts.map +1 -0
  458. package/dist/blocks/quick-view-01/index.js +1 -0
  459. package/dist/blocks/quick-view-01/quick-view.d.ts +215 -0
  460. package/dist/blocks/quick-view-01/quick-view.d.ts.map +1 -0
  461. package/dist/blocks/quick-view-01/quick-view.js +136 -0
  462. package/dist/blocks/rate-card-01/index.d.ts +3 -0
  463. package/dist/blocks/rate-card-01/index.d.ts.map +1 -0
  464. package/dist/blocks/rate-card-01/index.js +1 -0
  465. package/dist/blocks/rate-card-01/rate-card.d.ts +184 -0
  466. package/dist/blocks/rate-card-01/rate-card.d.ts.map +1 -0
  467. package/dist/blocks/rate-card-01/rate-card.js +79 -0
  468. package/dist/blocks/reset-password-01/index.d.ts +3 -0
  469. package/dist/blocks/reset-password-01/index.d.ts.map +1 -0
  470. package/dist/blocks/reset-password-01/index.js +1 -0
  471. package/dist/blocks/reset-password-01/reset-password.d.ts +276 -0
  472. package/dist/blocks/reset-password-01/reset-password.d.ts.map +1 -0
  473. package/dist/blocks/reset-password-01/reset-password.js +175 -0
  474. package/dist/blocks/resource-list-01/index.d.ts +3 -0
  475. package/dist/blocks/resource-list-01/index.d.ts.map +1 -0
  476. package/dist/blocks/resource-list-01/index.js +1 -0
  477. package/dist/blocks/resource-list-01/resource-list.d.ts +237 -0
  478. package/dist/blocks/resource-list-01/resource-list.d.ts.map +1 -0
  479. package/dist/blocks/resource-list-01/resource-list.js +154 -0
  480. package/dist/blocks/retention-01/index.d.ts +3 -0
  481. package/dist/blocks/retention-01/index.d.ts.map +1 -0
  482. package/dist/blocks/retention-01/index.js +1 -0
  483. package/dist/blocks/retention-01/retention.d.ts +255 -0
  484. package/dist/blocks/retention-01/retention.d.ts.map +1 -0
  485. package/dist/blocks/retention-01/retention.js +145 -0
  486. package/dist/blocks/run-console-01/run-console.d.ts +14 -1
  487. package/dist/blocks/run-console-01/run-console.d.ts.map +1 -1
  488. package/dist/blocks/run-console-01/run-console.js +4 -2
  489. package/dist/blocks/services-01/index.d.ts +3 -0
  490. package/dist/blocks/services-01/index.d.ts.map +1 -0
  491. package/dist/blocks/services-01/index.js +1 -0
  492. package/dist/blocks/services-01/services.d.ts +159 -0
  493. package/dist/blocks/services-01/services.d.ts.map +1 -0
  494. package/dist/blocks/services-01/services.js +81 -0
  495. package/dist/blocks/settings-integrations-01/index.d.ts +3 -0
  496. package/dist/blocks/settings-integrations-01/index.d.ts.map +1 -0
  497. package/dist/blocks/settings-integrations-01/index.js +1 -0
  498. package/dist/blocks/settings-integrations-01/settings-integrations.d.ts +246 -0
  499. package/dist/blocks/settings-integrations-01/settings-integrations.d.ts.map +1 -0
  500. package/dist/blocks/settings-integrations-01/settings-integrations.js +213 -0
  501. package/dist/blocks/settings-members-01/index.d.ts +3 -0
  502. package/dist/blocks/settings-members-01/index.d.ts.map +1 -0
  503. package/dist/blocks/settings-members-01/index.js +1 -0
  504. package/dist/blocks/settings-members-01/settings-members.d.ts +396 -0
  505. package/dist/blocks/settings-members-01/settings-members.d.ts.map +1 -0
  506. package/dist/blocks/settings-members-01/settings-members.js +255 -0
  507. package/dist/blocks/settings-notifications-01/index.d.ts +3 -0
  508. package/dist/blocks/settings-notifications-01/index.d.ts.map +1 -0
  509. package/dist/blocks/settings-notifications-01/index.js +1 -0
  510. package/dist/blocks/settings-notifications-01/settings-notifications.d.ts +270 -0
  511. package/dist/blocks/settings-notifications-01/settings-notifications.d.ts.map +1 -0
  512. package/dist/blocks/settings-notifications-01/settings-notifications.js +202 -0
  513. package/dist/blocks/settings-security-01/index.d.ts +3 -0
  514. package/dist/blocks/settings-security-01/index.d.ts.map +1 -0
  515. package/dist/blocks/settings-security-01/index.js +1 -0
  516. package/dist/blocks/settings-security-01/settings-security.d.ts +439 -0
  517. package/dist/blocks/settings-security-01/settings-security.d.ts.map +1 -0
  518. package/dist/blocks/settings-security-01/settings-security.js +244 -0
  519. package/dist/blocks/shortlist-01/index.d.ts +3 -0
  520. package/dist/blocks/shortlist-01/index.d.ts.map +1 -0
  521. package/dist/blocks/shortlist-01/index.js +1 -0
  522. package/dist/blocks/shortlist-01/shortlist-01.d.ts +337 -0
  523. package/dist/blocks/shortlist-01/shortlist-01.d.ts.map +1 -0
  524. package/dist/blocks/shortlist-01/shortlist-01.js +191 -0
  525. package/dist/blocks/showcase-01/index.d.ts +3 -0
  526. package/dist/blocks/showcase-01/index.d.ts.map +1 -0
  527. package/dist/blocks/showcase-01/index.js +1 -0
  528. package/dist/blocks/showcase-01/showcase-01.d.ts +238 -0
  529. package/dist/blocks/showcase-01/showcase-01.d.ts.map +1 -0
  530. package/dist/blocks/showcase-01/showcase-01.js +84 -0
  531. package/dist/blocks/signup-01/index.d.ts +3 -0
  532. package/dist/blocks/signup-01/index.d.ts.map +1 -0
  533. package/dist/blocks/signup-01/index.js +1 -0
  534. package/dist/blocks/signup-01/signup-01.d.ts +405 -0
  535. package/dist/blocks/signup-01/signup-01.d.ts.map +1 -0
  536. package/dist/blocks/signup-01/signup-01.js +209 -0
  537. package/dist/blocks/site-footer/site-footer.d.ts +34 -1
  538. package/dist/blocks/site-footer/site-footer.d.ts.map +1 -1
  539. package/dist/blocks/site-footer/site-footer.js +24 -2
  540. package/dist/blocks/site-header/site-header.js +1 -1
  541. package/dist/blocks/site-navbar/site-navbar.d.ts +37 -3
  542. package/dist/blocks/site-navbar/site-navbar.d.ts.map +1 -1
  543. package/dist/blocks/site-navbar/site-navbar.js +33 -4
  544. package/dist/blocks/spec-table-01/index.d.ts +3 -0
  545. package/dist/blocks/spec-table-01/index.d.ts.map +1 -0
  546. package/dist/blocks/spec-table-01/index.js +1 -0
  547. package/dist/blocks/spec-table-01/spec-table.d.ts +293 -0
  548. package/dist/blocks/spec-table-01/spec-table.d.ts.map +1 -0
  549. package/dist/blocks/spec-table-01/spec-table.js +217 -0
  550. package/dist/blocks/stack-grid-01/stack-grid.d.ts +13 -0
  551. package/dist/blocks/stack-grid-01/stack-grid.d.ts.map +1 -1
  552. package/dist/blocks/stack-grid-01/stack-grid.js +14 -1
  553. package/dist/blocks/story-01/index.d.ts +3 -0
  554. package/dist/blocks/story-01/index.d.ts.map +1 -0
  555. package/dist/blocks/story-01/index.js +1 -0
  556. package/dist/blocks/story-01/story.d.ts +153 -0
  557. package/dist/blocks/story-01/story.d.ts.map +1 -0
  558. package/dist/blocks/story-01/story.js +103 -0
  559. package/dist/blocks/summary-01/index.d.ts +3 -0
  560. package/dist/blocks/summary-01/index.d.ts.map +1 -0
  561. package/dist/blocks/summary-01/index.js +1 -0
  562. package/dist/blocks/summary-01/summary.d.ts +300 -0
  563. package/dist/blocks/summary-01/summary.d.ts.map +1 -0
  564. package/dist/blocks/summary-01/summary.js +174 -0
  565. package/dist/blocks/team-01/index.d.ts +3 -0
  566. package/dist/blocks/team-01/index.d.ts.map +1 -0
  567. package/dist/blocks/team-01/index.js +1 -0
  568. package/dist/blocks/team-01/team.d.ts +176 -0
  569. package/dist/blocks/team-01/team.d.ts.map +1 -0
  570. package/dist/blocks/team-01/team.js +117 -0
  571. package/dist/blocks/testimonial-01/index.d.ts +3 -0
  572. package/dist/blocks/testimonial-01/index.d.ts.map +1 -0
  573. package/dist/blocks/testimonial-01/index.js +1 -0
  574. package/dist/blocks/testimonial-01/testimonial.d.ts +173 -0
  575. package/dist/blocks/testimonial-01/testimonial.d.ts.map +1 -0
  576. package/dist/blocks/testimonial-01/testimonial.js +87 -0
  577. package/dist/blocks/todo-01/index.d.ts +3 -0
  578. package/dist/blocks/todo-01/index.d.ts.map +1 -0
  579. package/dist/blocks/todo-01/index.js +1 -0
  580. package/dist/blocks/todo-01/todo.d.ts +286 -0
  581. package/dist/blocks/todo-01/todo.d.ts.map +1 -0
  582. package/dist/blocks/todo-01/todo.js +149 -0
  583. package/dist/blocks/trend-01/index.d.ts +3 -0
  584. package/dist/blocks/trend-01/index.d.ts.map +1 -0
  585. package/dist/blocks/trend-01/index.js +1 -0
  586. package/dist/blocks/trend-01/trend.d.ts +184 -0
  587. package/dist/blocks/trend-01/trend.d.ts.map +1 -0
  588. package/dist/blocks/trend-01/trend.js +99 -0
  589. package/dist/blocks/trust-strip-01/index.d.ts +3 -0
  590. package/dist/blocks/trust-strip-01/index.d.ts.map +1 -0
  591. package/dist/blocks/trust-strip-01/index.js +1 -0
  592. package/dist/blocks/trust-strip-01/trust-strip-01.d.ts +139 -0
  593. package/dist/blocks/trust-strip-01/trust-strip-01.d.ts.map +1 -0
  594. package/dist/blocks/trust-strip-01/trust-strip-01.js +58 -0
  595. package/dist/blocks/two-factor-01/index.d.ts +3 -0
  596. package/dist/blocks/two-factor-01/index.d.ts.map +1 -0
  597. package/dist/blocks/two-factor-01/index.js +1 -0
  598. package/dist/blocks/two-factor-01/two-factor-01.d.ts +440 -0
  599. package/dist/blocks/two-factor-01/two-factor-01.d.ts.map +1 -0
  600. package/dist/blocks/two-factor-01/two-factor-01.js +273 -0
  601. package/dist/blocks/user-profile-01/index.d.ts +3 -0
  602. package/dist/blocks/user-profile-01/index.d.ts.map +1 -0
  603. package/dist/blocks/user-profile-01/index.js +1 -0
  604. package/dist/blocks/user-profile-01/user-profile-01.d.ts +258 -0
  605. package/dist/blocks/user-profile-01/user-profile-01.d.ts.map +1 -0
  606. package/dist/blocks/user-profile-01/user-profile-01.js +158 -0
  607. package/dist/blocks/verify-email-01/index.d.ts +3 -0
  608. package/dist/blocks/verify-email-01/index.d.ts.map +1 -0
  609. package/dist/blocks/verify-email-01/index.js +1 -0
  610. package/dist/blocks/verify-email-01/verify-email.d.ts +262 -0
  611. package/dist/blocks/verify-email-01/verify-email.d.ts.map +1 -0
  612. package/dist/blocks/verify-email-01/verify-email.js +190 -0
  613. package/dist/blocks/waitlist-01/index.d.ts +3 -0
  614. package/dist/blocks/waitlist-01/index.d.ts.map +1 -0
  615. package/dist/blocks/waitlist-01/index.js +1 -0
  616. package/dist/blocks/waitlist-01/waitlist.d.ts +254 -0
  617. package/dist/blocks/waitlist-01/waitlist.d.ts.map +1 -0
  618. package/dist/blocks/waitlist-01/waitlist.js +75 -0
  619. package/dist/catalog.d.ts.map +1 -1
  620. package/dist/catalog.js +1641 -1
  621. package/dist/components/index.d.ts +114 -0
  622. package/dist/components/index.d.ts.map +1 -1
  623. package/dist/components/index.js +134 -0
  624. package/dist/components/ui/accordion.d.ts.map +1 -1
  625. package/dist/components/ui/accordion.js +9 -2
  626. package/dist/components/ui/alert-dialog.d.ts.map +1 -1
  627. package/dist/components/ui/alert-dialog.js +22 -4
  628. package/dist/components/ui/announcement.d.ts +169 -0
  629. package/dist/components/ui/announcement.d.ts.map +1 -0
  630. package/dist/components/ui/announcement.js +123 -0
  631. package/dist/components/ui/avatar-group.d.ts +176 -0
  632. package/dist/components/ui/avatar-group.d.ts.map +1 -0
  633. package/dist/components/ui/avatar-group.js +135 -0
  634. package/dist/components/ui/billing-source.d.ts +293 -0
  635. package/dist/components/ui/billing-source.d.ts.map +1 -0
  636. package/dist/components/ui/billing-source.js +136 -0
  637. package/dist/components/ui/button.d.ts +16 -1
  638. package/dist/components/ui/button.d.ts.map +1 -1
  639. package/dist/components/ui/button.js +17 -2
  640. package/dist/components/ui/calendar.d.ts +9 -0
  641. package/dist/components/ui/calendar.d.ts.map +1 -1
  642. package/dist/components/ui/calendar.js +30 -2
  643. package/dist/components/ui/carousel.d.ts +7 -0
  644. package/dist/components/ui/carousel.d.ts.map +1 -1
  645. package/dist/components/ui/carousel.js +58 -1
  646. package/dist/components/ui/chart.d.ts +334 -0
  647. package/dist/components/ui/chart.d.ts.map +1 -0
  648. package/dist/components/ui/chart.js +369 -0
  649. package/dist/components/ui/checkbox.d.ts +10 -0
  650. package/dist/components/ui/checkbox.d.ts.map +1 -1
  651. package/dist/components/ui/checkbox.js +19 -1
  652. package/dist/components/ui/checklist.d.ts +262 -0
  653. package/dist/components/ui/checklist.d.ts.map +1 -0
  654. package/dist/components/ui/checklist.js +135 -0
  655. package/dist/components/ui/choice-card.d.ts +273 -0
  656. package/dist/components/ui/choice-card.d.ts.map +1 -0
  657. package/dist/components/ui/choice-card.js +138 -0
  658. package/dist/components/ui/code-block.d.ts +182 -0
  659. package/dist/components/ui/code-block.d.ts.map +1 -0
  660. package/dist/components/ui/code-block.js +108 -0
  661. package/dist/components/ui/cohort-grid.d.ts +210 -0
  662. package/dist/components/ui/cohort-grid.d.ts.map +1 -0
  663. package/dist/components/ui/cohort-grid.js +202 -0
  664. package/dist/components/ui/collapsible.d.ts +11 -0
  665. package/dist/components/ui/collapsible.d.ts.map +1 -1
  666. package/dist/components/ui/collapsible.js +13 -2
  667. package/dist/components/ui/combobox.d.ts +4 -1
  668. package/dist/components/ui/combobox.d.ts.map +1 -1
  669. package/dist/components/ui/combobox.js +20 -4
  670. package/dist/components/ui/command-palette.d.ts +11 -0
  671. package/dist/components/ui/command-palette.d.ts.map +1 -1
  672. package/dist/components/ui/command-palette.js +49 -3
  673. package/dist/components/ui/contribution-graph.d.ts +156 -0
  674. package/dist/components/ui/contribution-graph.d.ts.map +1 -0
  675. package/dist/components/ui/contribution-graph.js +170 -0
  676. package/dist/components/ui/creatable-combobox.d.ts +153 -0
  677. package/dist/components/ui/creatable-combobox.d.ts.map +1 -0
  678. package/dist/components/ui/creatable-combobox.js +285 -0
  679. package/dist/components/ui/data-toolbar.d.ts +133 -0
  680. package/dist/components/ui/data-toolbar.d.ts.map +1 -0
  681. package/dist/components/ui/data-toolbar.js +67 -0
  682. package/dist/components/ui/date-picker.d.ts.map +1 -1
  683. package/dist/components/ui/date-picker.js +9 -1
  684. package/dist/components/ui/diagram.d.ts +38 -7
  685. package/dist/components/ui/diagram.d.ts.map +1 -1
  686. package/dist/components/ui/diagram.js +134 -52
  687. package/dist/components/ui/dialog.d.ts +31 -2
  688. package/dist/components/ui/dialog.d.ts.map +1 -1
  689. package/dist/components/ui/dialog.js +40 -6
  690. package/dist/components/ui/drawer.d.ts +270 -0
  691. package/dist/components/ui/drawer.d.ts.map +1 -0
  692. package/dist/components/ui/drawer.js +241 -0
  693. package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
  694. package/dist/components/ui/dropdown-menu.js +6 -1
  695. package/dist/components/ui/dropzone.d.ts +147 -0
  696. package/dist/components/ui/dropzone.d.ts.map +1 -0
  697. package/dist/components/ui/dropzone.js +141 -0
  698. package/dist/components/ui/emoji-picker.d.ts +328 -0
  699. package/dist/components/ui/emoji-picker.d.ts.map +1 -0
  700. package/dist/components/ui/emoji-picker.js +278 -0
  701. package/dist/components/ui/fact-list.d.ts +17 -0
  702. package/dist/components/ui/fact-list.d.ts.map +1 -1
  703. package/dist/components/ui/fact-list.js +18 -1
  704. package/dist/components/ui/file-upload.d.ts +152 -0
  705. package/dist/components/ui/file-upload.d.ts.map +1 -0
  706. package/dist/components/ui/file-upload.js +101 -0
  707. package/dist/components/ui/filter-panel.d.ts +164 -0
  708. package/dist/components/ui/filter-panel.d.ts.map +1 -0
  709. package/dist/components/ui/filter-panel.js +91 -0
  710. package/dist/components/ui/form-dialog.d.ts +257 -0
  711. package/dist/components/ui/form-dialog.d.ts.map +1 -0
  712. package/dist/components/ui/form-dialog.js +176 -0
  713. package/dist/components/ui/form-wizard.d.ts +251 -0
  714. package/dist/components/ui/form-wizard.d.ts.map +1 -0
  715. package/dist/components/ui/form-wizard.js +151 -0
  716. package/dist/components/ui/image-list-field.d.ts +232 -0
  717. package/dist/components/ui/image-list-field.d.ts.map +1 -0
  718. package/dist/components/ui/image-list-field.js +168 -0
  719. package/dist/components/ui/image-zoom.d.ts +164 -0
  720. package/dist/components/ui/image-zoom.d.ts.map +1 -0
  721. package/dist/components/ui/image-zoom.js +169 -0
  722. package/dist/components/ui/intensity-grid.d.ts +270 -0
  723. package/dist/components/ui/intensity-grid.d.ts.map +1 -0
  724. package/dist/components/ui/intensity-grid.js +211 -0
  725. package/dist/components/ui/lifecycle-button.d.ts +276 -0
  726. package/dist/components/ui/lifecycle-button.d.ts.map +1 -0
  727. package/dist/components/ui/lifecycle-button.js +144 -0
  728. package/dist/components/ui/lightbox.d.ts +165 -0
  729. package/dist/components/ui/lightbox.d.ts.map +1 -0
  730. package/dist/components/ui/lightbox.js +130 -0
  731. package/dist/components/ui/list-panel.d.ts +288 -0
  732. package/dist/components/ui/list-panel.d.ts.map +1 -0
  733. package/dist/components/ui/list-panel.js +139 -0
  734. package/dist/components/ui/mega-menu.d.ts +244 -0
  735. package/dist/components/ui/mega-menu.d.ts.map +1 -0
  736. package/dist/components/ui/mega-menu.js +97 -0
  737. package/dist/components/ui/menubar.d.ts +9 -0
  738. package/dist/components/ui/menubar.d.ts.map +1 -1
  739. package/dist/components/ui/menubar.js +10 -1
  740. package/dist/components/ui/metric.d.ts +123 -0
  741. package/dist/components/ui/metric.d.ts.map +1 -0
  742. package/dist/components/ui/metric.js +68 -0
  743. package/dist/components/ui/mini-calendar.d.ts +143 -0
  744. package/dist/components/ui/mini-calendar.d.ts.map +1 -0
  745. package/dist/components/ui/mini-calendar.js +261 -0
  746. package/dist/components/ui/mode-toggle.d.ts +102 -0
  747. package/dist/components/ui/mode-toggle.d.ts.map +1 -0
  748. package/dist/components/ui/mode-toggle.js +83 -0
  749. package/dist/components/ui/money-field.d.ts +200 -0
  750. package/dist/components/ui/money-field.d.ts.map +1 -0
  751. package/dist/components/ui/money-field.js +215 -0
  752. package/dist/components/ui/multi-combobox.d.ts +181 -0
  753. package/dist/components/ui/multi-combobox.d.ts.map +1 -0
  754. package/dist/components/ui/multi-combobox.js +297 -0
  755. package/dist/components/ui/native-select.d.ts.map +1 -1
  756. package/dist/components/ui/native-select.js +8 -1
  757. package/dist/components/ui/navigation-menu.d.ts +7 -0
  758. package/dist/components/ui/navigation-menu.d.ts.map +1 -1
  759. package/dist/components/ui/navigation-menu.js +8 -1
  760. package/dist/components/ui/nested-tabs.d.ts +188 -0
  761. package/dist/components/ui/nested-tabs.d.ts.map +1 -0
  762. package/dist/components/ui/nested-tabs.js +75 -0
  763. package/dist/components/ui/number-field.d.ts +40 -7
  764. package/dist/components/ui/number-field.d.ts.map +1 -1
  765. package/dist/components/ui/number-field.js +37 -7
  766. package/dist/components/ui/overflow-actions.d.ts +169 -0
  767. package/dist/components/ui/overflow-actions.d.ts.map +1 -0
  768. package/dist/components/ui/overflow-actions.js +266 -0
  769. package/dist/components/ui/pack-swatch.d.ts +177 -0
  770. package/dist/components/ui/pack-swatch.d.ts.map +1 -0
  771. package/dist/components/ui/pack-swatch.js +117 -0
  772. package/dist/components/ui/pack-switcher.d.ts +221 -0
  773. package/dist/components/ui/pack-switcher.d.ts.map +1 -0
  774. package/dist/components/ui/pack-switcher.js +94 -0
  775. package/dist/components/ui/pagination.d.ts +22 -0
  776. package/dist/components/ui/pagination.d.ts.map +1 -1
  777. package/dist/components/ui/pagination.js +23 -1
  778. package/dist/components/ui/password-field.d.ts +122 -0
  779. package/dist/components/ui/password-field.d.ts.map +1 -0
  780. package/dist/components/ui/password-field.js +69 -0
  781. package/dist/components/ui/pill.d.ts +172 -0
  782. package/dist/components/ui/pill.d.ts.map +1 -0
  783. package/dist/components/ui/pill.js +102 -0
  784. package/dist/components/ui/platform-modifier-key.d.ts +129 -0
  785. package/dist/components/ui/platform-modifier-key.d.ts.map +1 -0
  786. package/dist/components/ui/platform-modifier-key.js +125 -0
  787. package/dist/components/ui/popover.d.ts.map +1 -1
  788. package/dist/components/ui/popover.js +8 -1
  789. package/dist/components/ui/price.d.ts +144 -0
  790. package/dist/components/ui/price.d.ts.map +1 -0
  791. package/dist/components/ui/price.js +107 -0
  792. package/dist/components/ui/progress.d.ts +55 -1
  793. package/dist/components/ui/progress.d.ts.map +1 -1
  794. package/dist/components/ui/progress.js +110 -2
  795. package/dist/components/ui/prompt-composer.d.ts +302 -0
  796. package/dist/components/ui/prompt-composer.d.ts.map +1 -0
  797. package/dist/components/ui/prompt-composer.js +145 -0
  798. package/dist/components/ui/proportion-list.d.ts +188 -0
  799. package/dist/components/ui/proportion-list.d.ts.map +1 -0
  800. package/dist/components/ui/proportion-list.js +134 -0
  801. package/dist/components/ui/prose.d.ts +34 -0
  802. package/dist/components/ui/prose.d.ts.map +1 -1
  803. package/dist/components/ui/prose.js +41 -1
  804. package/dist/components/ui/pulse-graph.d.ts +36 -4
  805. package/dist/components/ui/pulse-graph.d.ts.map +1 -1
  806. package/dist/components/ui/pulse-graph.js +174 -60
  807. package/dist/components/ui/radio-group.d.ts +7 -0
  808. package/dist/components/ui/radio-group.d.ts.map +1 -1
  809. package/dist/components/ui/radio-group.js +8 -1
  810. package/dist/components/ui/range-field.d.ts +158 -0
  811. package/dist/components/ui/range-field.d.ts.map +1 -0
  812. package/dist/components/ui/range-field.js +208 -0
  813. package/dist/components/ui/relative-time.d.ts +116 -0
  814. package/dist/components/ui/relative-time.d.ts.map +1 -0
  815. package/dist/components/ui/relative-time.js +67 -0
  816. package/dist/components/ui/reorderable-list.d.ts +262 -0
  817. package/dist/components/ui/reorderable-list.d.ts.map +1 -0
  818. package/dist/components/ui/reorderable-list.js +325 -0
  819. package/dist/components/ui/repeatable-rows.d.ts +241 -0
  820. package/dist/components/ui/repeatable-rows.d.ts.map +1 -0
  821. package/dist/components/ui/repeatable-rows.js +221 -0
  822. package/dist/components/ui/repo-stars.d.ts +165 -0
  823. package/dist/components/ui/repo-stars.d.ts.map +1 -0
  824. package/dist/components/ui/repo-stars.js +92 -0
  825. package/dist/components/ui/resizable.d.ts +24 -0
  826. package/dist/components/ui/resizable.d.ts.map +1 -1
  827. package/dist/components/ui/resizable.js +96 -4
  828. package/dist/components/ui/search-dialog.d.ts +40 -5
  829. package/dist/components/ui/search-dialog.d.ts.map +1 -1
  830. package/dist/components/ui/search-dialog.js +94 -16
  831. package/dist/components/ui/search-field.d.ts +159 -0
  832. package/dist/components/ui/search-field.d.ts.map +1 -0
  833. package/dist/components/ui/search-field.js +98 -0
  834. package/dist/components/ui/section.d.ts +110 -1
  835. package/dist/components/ui/section.d.ts.map +1 -1
  836. package/dist/components/ui/section.js +111 -3
  837. package/dist/components/ui/select.d.ts.map +1 -1
  838. package/dist/components/ui/select.js +9 -1
  839. package/dist/components/ui/selection-toolbar.d.ts +166 -0
  840. package/dist/components/ui/selection-toolbar.d.ts.map +1 -0
  841. package/dist/components/ui/selection-toolbar.js +139 -0
  842. package/dist/components/ui/sidebar.d.ts +29 -0
  843. package/dist/components/ui/sidebar.d.ts.map +1 -1
  844. package/dist/components/ui/sidebar.js +35 -2
  845. package/dist/components/ui/signal-field.d.ts.map +1 -1
  846. package/dist/components/ui/signal-field.js +1 -1
  847. package/dist/components/ui/slider.d.ts +7 -0
  848. package/dist/components/ui/slider.d.ts.map +1 -1
  849. package/dist/components/ui/slider.js +32 -1
  850. package/dist/components/ui/sparkline.d.ts +117 -0
  851. package/dist/components/ui/sparkline.d.ts.map +1 -0
  852. package/dist/components/ui/sparkline.js +113 -0
  853. package/dist/components/ui/spinner.d.ts.map +1 -1
  854. package/dist/components/ui/spinner.js +13 -0
  855. package/dist/components/ui/split-button.d.ts +207 -0
  856. package/dist/components/ui/split-button.d.ts.map +1 -0
  857. package/dist/components/ui/split-button.js +75 -0
  858. package/dist/components/ui/stateful-table.d.ts +345 -0
  859. package/dist/components/ui/stateful-table.d.ts.map +1 -0
  860. package/dist/components/ui/stateful-table.js +169 -0
  861. package/dist/components/ui/status.d.ts +99 -0
  862. package/dist/components/ui/status.d.ts.map +1 -0
  863. package/dist/components/ui/status.js +63 -0
  864. package/dist/components/ui/stepper.d.ts +155 -0
  865. package/dist/components/ui/stepper.d.ts.map +1 -0
  866. package/dist/components/ui/stepper.js +83 -0
  867. package/dist/components/ui/steps.d.ts +141 -0
  868. package/dist/components/ui/steps.d.ts.map +1 -0
  869. package/dist/components/ui/steps.js +128 -0
  870. package/dist/components/ui/switch.d.ts +8 -0
  871. package/dist/components/ui/switch.d.ts.map +1 -1
  872. package/dist/components/ui/switch.js +12 -1
  873. package/dist/components/ui/tabs.d.ts +21 -2
  874. package/dist/components/ui/tabs.d.ts.map +1 -1
  875. package/dist/components/ui/tabs.js +23 -4
  876. package/dist/components/ui/tag-group.d.ts +154 -0
  877. package/dist/components/ui/tag-group.d.ts.map +1 -0
  878. package/dist/components/ui/tag-group.js +111 -0
  879. package/dist/components/ui/task-progress.d.ts +149 -0
  880. package/dist/components/ui/task-progress.d.ts.map +1 -0
  881. package/dist/components/ui/task-progress.js +110 -0
  882. package/dist/components/ui/text-format-toolbar.d.ts +211 -0
  883. package/dist/components/ui/text-format-toolbar.d.ts.map +1 -0
  884. package/dist/components/ui/text-format-toolbar.js +186 -0
  885. package/dist/components/ui/timeline.d.ts.map +1 -1
  886. package/dist/components/ui/timeline.js +10 -1
  887. package/dist/components/ui/toast.d.ts +32 -10
  888. package/dist/components/ui/toast.d.ts.map +1 -1
  889. package/dist/components/ui/toast.js +150 -47
  890. package/dist/components/ui/toggle-group.d.ts +14 -5
  891. package/dist/components/ui/toggle-group.d.ts.map +1 -1
  892. package/dist/components/ui/toggle-group.js +15 -1
  893. package/dist/components/ui/toggle.d.ts.map +1 -1
  894. package/dist/components/ui/toggle.js +9 -1
  895. package/dist/components/ui/tree.d.ts +8 -0
  896. package/dist/components/ui/tree.d.ts.map +1 -1
  897. package/dist/components/ui/tree.js +92 -13
  898. package/dist/components/ui/video-player.d.ts +236 -0
  899. package/dist/components/ui/video-player.d.ts.map +1 -0
  900. package/dist/components/ui/video-player.js +72 -0
  901. package/dist/fonts/inter-latin-400-italic.woff2 +0 -0
  902. package/dist/index.d.ts +112 -0
  903. package/dist/index.d.ts.map +1 -1
  904. package/dist/index.js +72 -0
  905. package/dist/lib/figure.d.ts +149 -0
  906. package/dist/lib/figure.d.ts.map +1 -0
  907. package/dist/lib/figure.js +242 -0
  908. package/dist/lib/utils.d.ts +29 -0
  909. package/dist/lib/utils.d.ts.map +1 -1
  910. package/dist/lib/utils.js +35 -0
  911. package/dist/live/index.d.ts +10 -3
  912. package/dist/live/index.d.ts.map +1 -1
  913. package/dist/live/index.js +12 -3
  914. package/dist/live/run-stream-01/run-stream.d.ts.map +1 -1
  915. package/dist/live/run-stream-01/run-stream.js +6 -5
  916. package/dist/live/tool-ledger-01/index.d.ts +3 -0
  917. package/dist/live/tool-ledger-01/index.d.ts.map +1 -0
  918. package/dist/live/tool-ledger-01/index.js +1 -0
  919. package/dist/live/tool-ledger-01/tool-ledger.d.ts +348 -0
  920. package/dist/live/tool-ledger-01/tool-ledger.d.ts.map +1 -0
  921. package/dist/live/tool-ledger-01/tool-ledger.js +245 -0
  922. package/dist/pages/about-page/index.d.ts +306 -0
  923. package/dist/pages/about-page/index.d.ts.map +1 -0
  924. package/dist/pages/about-page/index.js +161 -0
  925. package/dist/pages/blog-post-page/index.d.ts +36 -15
  926. package/dist/pages/blog-post-page/index.d.ts.map +1 -1
  927. package/dist/pages/blog-post-page/index.js +35 -10
  928. package/dist/pages/careers-page/index.d.ts +288 -0
  929. package/dist/pages/careers-page/index.d.ts.map +1 -0
  930. package/dist/pages/careers-page/index.js +182 -0
  931. package/dist/pages/changelog-page/index.d.ts +255 -0
  932. package/dist/pages/changelog-page/index.d.ts.map +1 -0
  933. package/dist/pages/changelog-page/index.js +86 -0
  934. package/dist/pages/contact-page/index.d.ts +261 -0
  935. package/dist/pages/contact-page/index.d.ts.map +1 -0
  936. package/dist/pages/contact-page/index.js +136 -0
  937. package/dist/pages/docs-shell/docs-shell.d.ts +126 -16
  938. package/dist/pages/docs-shell/docs-shell.d.ts.map +1 -1
  939. package/dist/pages/docs-shell/docs-shell.js +229 -28
  940. package/dist/pages/error-page/index.d.ts +188 -0
  941. package/dist/pages/error-page/index.d.ts.map +1 -0
  942. package/dist/pages/error-page/index.js +102 -0
  943. package/dist/pages/index.d.ts +10 -0
  944. package/dist/pages/index.d.ts.map +1 -1
  945. package/dist/pages/index.js +14 -0
  946. package/dist/pages/legal-page/index.d.ts +194 -0
  947. package/dist/pages/legal-page/index.d.ts.map +1 -0
  948. package/dist/pages/legal-page/index.js +99 -0
  949. package/dist/pages/not-found-page/index.d.ts.map +1 -1
  950. package/dist/pages/not-found-page/index.js +4 -3
  951. package/dist/pages/onboarding-page/index.d.ts +199 -0
  952. package/dist/pages/onboarding-page/index.d.ts.map +1 -0
  953. package/dist/pages/onboarding-page/index.js +71 -0
  954. package/dist/pages/pricing-page/index.d.ts +286 -0
  955. package/dist/pages/pricing-page/index.d.ts.map +1 -0
  956. package/dist/pages/pricing-page/index.js +139 -0
  957. package/dist/pages/search-page/index.d.ts +305 -0
  958. package/dist/pages/search-page/index.d.ts.map +1 -0
  959. package/dist/pages/search-page/index.js +142 -0
  960. package/dist/pages/status-page/index.d.ts +366 -0
  961. package/dist/pages/status-page/index.d.ts.map +1 -0
  962. package/dist/pages/status-page/index.js +136 -0
  963. package/dist/styles.css +1105 -62
  964. package/package.json +9 -3
@@ -0,0 +1,102 @@
1
+ import type { ComponentProps } from 'react';
2
+ /** The props a `ModeToggle` takes. */
3
+ export interface ModeToggleProps extends Omit<ComponentProps<'button'>, 'children'> {
4
+ /**
5
+ * The control's accessible name.
6
+ *
7
+ * Required, and a `string` rather than a node because it is written into
8
+ * `aria-label` and an accessible name is a string. It names the mode the button
9
+ * moves to rather than the mode the page is in, so the words and the icon
10
+ * beside them always say the same thing. Three of the four products in this
11
+ * family phrase it the other way round, which is a caller's sentence and not a
12
+ * Component's, and the prop is where that difference goes.
13
+ */
14
+ label: string;
15
+ /**
16
+ * The control's height, forwarded to `Button`.
17
+ *
18
+ * `sm` and `md` and nothing else, because those are the two heights a site
19
+ * header and a settings row actually need. The underlying `Button` also has an
20
+ * icon size, which is refused here: an icon-only control with a label's
21
+ * proportions is what this is, and the icon size draws a square, which shows in
22
+ * the corner radius a reader sees.
23
+ */
24
+ size?: 'sm' | 'md';
25
+ /** Layout only, exactly as on every Component. */
26
+ className?: string;
27
+ }
28
+ /**
29
+ * The control that moves the reader between the light and the dark mode.
30
+ *
31
+ * **This is the one Component in the library that needs `PrismProvider` above it,
32
+ * and the reason is that it is the only one that writes the theme rather than
33
+ * reading it.** Every other Component reaches its colours through the cascade: the
34
+ * pack is an attribute on an ancestor and the mode is a class, and a Component
35
+ * that draws a `bg-primary` has drawn the right thing in every pack without
36
+ * knowing which pack it is in. This one cannot work that way, because moving
37
+ * between the modes means writing `.dark` on the document element, and the
38
+ * document element is not a thing a Component may reach for on its own. The
39
+ * provider is that permission, and it is optional everywhere else in Prism, which
40
+ * is why this is the only Component with a hard dependency on it. Mounted without
41
+ * one, `usePrismTheme` throws, and that is the intended behaviour rather than a
42
+ * silent no-op: a control that looks like it switches the mode and does nothing
43
+ * is worse than a page that says the provider is missing.
44
+ *
45
+ * **It renders one button and not a group, and a two-button group here is a
46
+ * segmented control doing a switch's job.** The obvious alternative is a pair of
47
+ * buttons, one per mode, with the current one marked selected. It is worse three
48
+ * separate ways. It takes two tab stops where the action needs one, so a reader
49
+ * tabbing along a header pays for a second stop to learn a thing the first stop
50
+ * already said. It announces a radio group, which changes what the arrow keys do
51
+ * inside it, so a reader who has learned the row they are in has to learn another
52
+ * model in the row above it. And it is the wrong role: two options where one is
53
+ * always selected and choosing either one leaves the page in the same state as
54
+ * choosing the other is a switch, and `toggle-group.tsx` is where a switch with
55
+ * two labelled members belongs, with the roving tab stop and the pressed set it
56
+ * already implements. A `Switch` is the other candidate and is refused for a
57
+ * different reason: a switch says "this setting is on" and a mode is not a
58
+ * setting, it is which of two renderings the page is using right now.
59
+ *
60
+ * **The icon is the destination and the name is the destination, so the two can
61
+ * never contradict each other.** A page in light mode shows a moon, because
62
+ * pressing it makes the page dark. The alternative, showing the current mode, puts
63
+ * a sun on a light page, which reads as a control that is already on, and a reader
64
+ * has to reconcile the picture with the state before they can use it. The icon is
65
+ * swapped, not animated between: the Motion law refuses a transition whose only
66
+ * purpose is decoration, and a sun morphing into a moon is decoration on a
67
+ * control that is about to be re-rendered with the other one anyway. So there is
68
+ * no transition here at all, and the swap is a repaint.
69
+ *
70
+ * **There is no `aria-pressed`, and that is a decision with a cost.** A pressed
71
+ * state describes the current mode, and the name describes the mode the press
72
+ * produces, so a pressed control named for its destination announces the opposite
73
+ * of what it is about: a screen reader reads "Switch to dark mode, pressed" on a
74
+ * page that is already dark. Since this Component takes one name rather than one
75
+ * per mode, the name cannot describe the current mode, and the honest reading of
76
+ * what is left is a button that performs an action. The cost is that a reader
77
+ * using a screen reader cannot ask the control what the page is in; they read the
78
+ * mode from the page, and a caller who would rather the control carried the state
79
+ * passes a name for the mode itself and mounts their own control, which is a real
80
+ * answer this Component is declining to give.
81
+ *
82
+ * **A reader who never mounts this is not left without the mode.** The mode on the
83
+ * page comes from the two document attributes, `data-pack` and `.dark`, and the
84
+ * blocking script in the head resolves them before first paint from a stored value
85
+ * or from what the server rendered. That is the declarative path, it is
86
+ * SSR-safe, and it is the one that works with no JavaScript at all. So this
87
+ * Component is a convenience layered on top of a mechanism that already works, not
88
+ * the mechanism, and a consumer who does not want a client Component in their
89
+ * layout can leave this one out: they put the attributes on their root element
90
+ * and write a plain button in their own code that calls `setMode` from the
91
+ * provider's hook. That is the reason the honest dependency is stated rather than
92
+ * hidden. A site that wants the mode switch with no JavaScript at all renders the
93
+ * attributes on the root and offers the choice inside a form, which is a real
94
+ * answer and a slightly worse one than a button.
95
+ *
96
+ * It is a client Component, and the provider it reads is a client module, so
97
+ * there is no way to make this one without `'use client'`. That is the cost of
98
+ * writing the theme rather than reading it, paid once, here.
99
+ */
100
+ declare function ModeToggle({ label, size, className, ...props }: ModeToggleProps): import("react").JSX.Element;
101
+ export { ModeToggle };
102
+ //# sourceMappingURL=mode-toggle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mode-toggle.d.ts","sourceRoot":"","sources":["../../../src/components/ui/mode-toggle.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAM3C,sCAAsC;AACtC,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC;IACjF;;;;;;;;;OASG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IAClB,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AACH,iBAAS,UAAU,CAAC,EAAE,KAAK,EAAE,IAAW,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,+BA+B/E;AAED,OAAO,EAAE,UAAU,EAAE,CAAA"}
@@ -0,0 +1,83 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { Moon, Sun } from 'lucide-react';
4
+ import { usePrismTheme } from '../../provider/index.js';
5
+ import { Button } from './button.js';
6
+ import { cn } from '../../lib/utils.js';
7
+ /**
8
+ * The control that moves the reader between the light and the dark mode.
9
+ *
10
+ * **This is the one Component in the library that needs `PrismProvider` above it,
11
+ * and the reason is that it is the only one that writes the theme rather than
12
+ * reading it.** Every other Component reaches its colours through the cascade: the
13
+ * pack is an attribute on an ancestor and the mode is a class, and a Component
14
+ * that draws a `bg-primary` has drawn the right thing in every pack without
15
+ * knowing which pack it is in. This one cannot work that way, because moving
16
+ * between the modes means writing `.dark` on the document element, and the
17
+ * document element is not a thing a Component may reach for on its own. The
18
+ * provider is that permission, and it is optional everywhere else in Prism, which
19
+ * is why this is the only Component with a hard dependency on it. Mounted without
20
+ * one, `usePrismTheme` throws, and that is the intended behaviour rather than a
21
+ * silent no-op: a control that looks like it switches the mode and does nothing
22
+ * is worse than a page that says the provider is missing.
23
+ *
24
+ * **It renders one button and not a group, and a two-button group here is a
25
+ * segmented control doing a switch's job.** The obvious alternative is a pair of
26
+ * buttons, one per mode, with the current one marked selected. It is worse three
27
+ * separate ways. It takes two tab stops where the action needs one, so a reader
28
+ * tabbing along a header pays for a second stop to learn a thing the first stop
29
+ * already said. It announces a radio group, which changes what the arrow keys do
30
+ * inside it, so a reader who has learned the row they are in has to learn another
31
+ * model in the row above it. And it is the wrong role: two options where one is
32
+ * always selected and choosing either one leaves the page in the same state as
33
+ * choosing the other is a switch, and `toggle-group.tsx` is where a switch with
34
+ * two labelled members belongs, with the roving tab stop and the pressed set it
35
+ * already implements. A `Switch` is the other candidate and is refused for a
36
+ * different reason: a switch says "this setting is on" and a mode is not a
37
+ * setting, it is which of two renderings the page is using right now.
38
+ *
39
+ * **The icon is the destination and the name is the destination, so the two can
40
+ * never contradict each other.** A page in light mode shows a moon, because
41
+ * pressing it makes the page dark. The alternative, showing the current mode, puts
42
+ * a sun on a light page, which reads as a control that is already on, and a reader
43
+ * has to reconcile the picture with the state before they can use it. The icon is
44
+ * swapped, not animated between: the Motion law refuses a transition whose only
45
+ * purpose is decoration, and a sun morphing into a moon is decoration on a
46
+ * control that is about to be re-rendered with the other one anyway. So there is
47
+ * no transition here at all, and the swap is a repaint.
48
+ *
49
+ * **There is no `aria-pressed`, and that is a decision with a cost.** A pressed
50
+ * state describes the current mode, and the name describes the mode the press
51
+ * produces, so a pressed control named for its destination announces the opposite
52
+ * of what it is about: a screen reader reads "Switch to dark mode, pressed" on a
53
+ * page that is already dark. Since this Component takes one name rather than one
54
+ * per mode, the name cannot describe the current mode, and the honest reading of
55
+ * what is left is a button that performs an action. The cost is that a reader
56
+ * using a screen reader cannot ask the control what the page is in; they read the
57
+ * mode from the page, and a caller who would rather the control carried the state
58
+ * passes a name for the mode itself and mounts their own control, which is a real
59
+ * answer this Component is declining to give.
60
+ *
61
+ * **A reader who never mounts this is not left without the mode.** The mode on the
62
+ * page comes from the two document attributes, `data-pack` and `.dark`, and the
63
+ * blocking script in the head resolves them before first paint from a stored value
64
+ * or from what the server rendered. That is the declarative path, it is
65
+ * SSR-safe, and it is the one that works with no JavaScript at all. So this
66
+ * Component is a convenience layered on top of a mechanism that already works, not
67
+ * the mechanism, and a consumer who does not want a client Component in their
68
+ * layout can leave this one out: they put the attributes on their root element
69
+ * and write a plain button in their own code that calls `setMode` from the
70
+ * provider's hook. That is the reason the honest dependency is stated rather than
71
+ * hidden. A site that wants the mode switch with no JavaScript at all renders the
72
+ * attributes on the root and offers the choice inside a form, which is a real
73
+ * answer and a slightly worse one than a button.
74
+ *
75
+ * It is a client Component, and the provider it reads is a client module, so
76
+ * there is no way to make this one without `'use client'`. That is the cost of
77
+ * writing the theme rather than reading it, paid once, here.
78
+ */
79
+ function ModeToggle({ label, size = 'md', className, ...props }) {
80
+ const { mode, toggleMode } = usePrismTheme();
81
+ return (_jsx(Button, { type: "button", "data-slot": "mode-toggle", variant: "ghost", size: size === 'sm' ? 'sm' : 'default', "aria-label": label, onClick: toggleMode, className: cn('shrink-0', className), ...props, children: mode === 'dark' ? (_jsx(Sun, { "aria-hidden": "true", className: "size-4" })) : (_jsx(Moon, { "aria-hidden": "true", className: "size-4" })) }));
82
+ }
83
+ export { ModeToggle };
@@ -0,0 +1,200 @@
1
+ import { type FocusEventHandler } from 'react';
2
+ /**
3
+ * The props the Money field accepts.
4
+ *
5
+ * A declared interface rather than a forwarded native one, and the reason is the
6
+ * gate on the surface rather than a preference: a forwarded `value` and
7
+ * `onChange` would be a second way to say what the field holds, and `value` here
8
+ * is a number while the DOM's is a string, so forwarding the native pair would
9
+ * make it possible to pass a string where a number belongs. The native attributes
10
+ * a money field genuinely needs are named individually below.
11
+ */
12
+ export interface MoneyFieldProps {
13
+ /**
14
+ * The amount, as a number.
15
+ *
16
+ * Required and controlled, and a number rather than a string for the whole
17
+ * reason this Component exists: the value the caller holds and the value the
18
+ * reader sees are different kinds of thing, and only one of them is arithmetic.
19
+ * `null` means the field is empty, which is a different fact from zero and is
20
+ * reported as `null` rather than as a number the reader never typed.
21
+ */
22
+ value: number | null;
23
+ /**
24
+ * Called with the amount the reader's text currently parses to.
25
+ *
26
+ * Required, and called on every keystroke rather than on blur, because a form
27
+ * that learns the amount only when the reader leaves the field has already lost
28
+ * the reason to keep the text at all. It is called with `null` when the text
29
+ * holds no amount yet, which includes a partially typed one: `12.`, `-` and `.5`
30
+ * are all legitimate states of a field somebody is typing into, and reporting
31
+ * them as a number would report a number the reader did not mean.
32
+ */
33
+ onValueChange: (value: number | null) => void;
34
+ /**
35
+ * The locale the amount is written in.
36
+ *
37
+ * Required, because a locale is a claim about the caller's market and this
38
+ * Component may not guess one. It decides the grouping separator, the decimal
39
+ * separator, and how many fraction digits the currency has: `1.234,56` in
40
+ * `de-DE` and `1,234.56` in `en-US` are the same amount typed two ways, and a
41
+ * Component that hardcoded either one would be wrong for every reader in the
42
+ * other half of the world.
43
+ */
44
+ locale: Intl.LocalesArgument;
45
+ /**
46
+ * The currency, as an ISO 4217 code.
47
+ *
48
+ * Required, and a code rather than a symbol for three reasons: the symbol is
49
+ * read back out of the platform so no two products can disagree about it, a code
50
+ * is the one currency name every product already holds, and a symbol as an input
51
+ * would be an input that cannot be validated. `Intl` throws on a code it does not
52
+ * recognise, which is the right place for that error.
53
+ */
54
+ currency: string;
55
+ /**
56
+ * The field's own id, so a `Label` elsewhere can point at it.
57
+ *
58
+ * A native attribute forwarded untouched, because an id is a fact about the
59
+ * caller's form rather than about this Component.
60
+ */
61
+ id?: string;
62
+ /**
63
+ * The field's accessible name, when no visible label is used.
64
+ *
65
+ * Optional and not defaulted, because the visible label is the ordinary answer
66
+ * and a defaulted name here would be the English Prism guessed in place of the
67
+ * caller's own word.
68
+ */
69
+ 'aria-label'?: string;
70
+ /**
71
+ * What the reader is expected to do with the amount.
72
+ *
73
+ * Forwarded rather than drawn, so a form can describe the field in one sentence
74
+ * a screen reader will reach. There is no `name`: a money field submits the text
75
+ * the reader typed, with this locale's punctuation in it, and a caller who needs
76
+ * a numeric submit owns a hidden input holding the number.
77
+ */
78
+ describedBy?: string;
79
+ /** Whether the reader may not change the amount. */
80
+ readOnly?: boolean;
81
+ /** Whether the field ignores interaction. */
82
+ disabled?: boolean;
83
+ /**
84
+ * Whether an amount must be entered.
85
+ *
86
+ * Announced on the field as `aria-required` rather than enforced by the browser's
87
+ * own `required`, for the same reason the JSDoc on `onBlur` matters: the browser
88
+ * refuses to submit with a message in English, and this Component may not choose
89
+ * a word for the reader. Enforce it in the caller's own submit handler, where it
90
+ * can be said in the caller's language.
91
+ */
92
+ required?: boolean;
93
+ /**
94
+ * The keyboard the field asks for. @defaultValue 'decimal'
95
+ *
96
+ * A `decimal` keyboard is the one with the separator a money field needs, and it
97
+ * is the default because a `numeric` keyboard on a phone has no decimal point at
98
+ * all. Override it for a market that types amounts some other way; the parser
99
+ * reads whatever the reader produced.
100
+ */
101
+ inputMode?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal';
102
+ /**
103
+ * Called when the reader leaves the field, after the text has been re-formatted.
104
+ *
105
+ * Forwarded rather than drawn, and last in the Component's own handler on
106
+ * purpose: a caller's handler runs against a field that has already settled,
107
+ * so a validation that reads the field at that moment reads what the reader is
108
+ * looking at and not the keystrokes they are leaving behind.
109
+ */
110
+ onBlur?: FocusEventHandler<HTMLInputElement>;
111
+ /** Layout only. Changing a Prism-owned visual property from here is prohibited. */
112
+ className?: string;
113
+ }
114
+ /**
115
+ * A field that holds a currency amount as a number and shows it as the reader's
116
+ * market writes it.
117
+ *
118
+ * **The number the caller holds and the string the reader sees are different
119
+ * kinds of thing, and the round trip between them is the Component.** Everything
120
+ * else here follows from that. The caller passes a `number` and gets a `number`
121
+ * back; the field draws the platform's own rendering of that number in the
122
+ * caller's locale and the caller's currency; and every character the reader adds
123
+ * is parsed back into one. A field that handed the caller a string would push the
124
+ * parsing into every consumer, and a field that printed a hardcoded `$1,234.56`
125
+ * would be making three claims about every product that installed it.
126
+ *
127
+ * **The currency symbol is an input and not an output, and the difference is the
128
+ * whole of the composition.** It sits in the field's own frame, drawn by
129
+ * `InputGroupAddon`, read out of `Intl.NumberFormat` rather than written here, and
130
+ * it is hidden from the accessibility tree: a screen reader reads the digits, and
131
+ * the currency belongs in the field's accessible name, which is the caller's
132
+ * word. It is also not part of the value. The number a caller holds is `1234.56`
133
+ * whatever the reader sees on screen, and a symbol that leaked into the parse would
134
+ * make the same amount parse two ways depending on whether the reader typed it.
135
+ *
136
+ * **Nothing about a currency may be a literal in this file.** The symbol, the
137
+ * grouping and the decimal separators, and the number of fraction digits all come
138
+ * out of the platform for the locale and the code the caller passed. `de-DE` with
139
+ * `EUR` and `en-US` with `USD` differ in all four, and a Component that hardcoded
140
+ * any of them would be right for one market and silently wrong for the rest.
141
+ *
142
+ * **A partially typed amount is a legitimate state and the parser must not reject
143
+ * it.** `12.`, `-` and `.5` are all things a person is in the middle of typing,
144
+ * and `12,` and `,5` are the same three in a locale that separates with a comma.
145
+ * So the parser is not asked whether the text is a valid amount, only whether it
146
+ * currently means one: it reports `12` for `12.`, it reports nothing for a lone sign
147
+ * and for a lone separator, and it reports `0.5` for `.5`. And the text is never
148
+ * rewritten while the field has focus, because a field that re-formats under the
149
+ * reader moves the caret and eats the character being typed. That is what makes the
150
+ * states survivable at all.
151
+ *
152
+ * **The two values disagree for the whole of a mid-edit, and the Component
153
+ * resolves it in one direction.** The caller's number is always the parse of the
154
+ * text, and the text is never rewritten until the reader leaves. So a consumer
155
+ * that also renders the amount somewhere else on the page sees the parsed value and
156
+ * not the keystrokes, and that is deliberate: a second rendering of an amount
157
+ * mid-edit is a second thing to keep in step with a third. The cost is that a
158
+ * consumer whose own validation depends on the exact characters cannot get them
159
+ * from here; it gets the number, which is the thing worth validating.
160
+ *
161
+ * **On blur the text is re-formatted, and text that is not an amount is refused.**
162
+ * The reader leaves and the field holds what the platform writes for the number it
163
+ * parsed: grouped where this locale groups, padded to this currency's fraction
164
+ * digits, and with the grouping the reader did not type replaced by the grouping
165
+ * the reader's market uses. If the text held nothing that means an amount at all,
166
+ * the field restores the canonical rendering of the caller's own value and reports
167
+ * `null`. **That refusal has a real cost, and it is the cost of a snapped-back
168
+ * keystroke**: a reader who typed something this locale cannot write loses what
169
+ * they typed rather than being told it was wrong. The alternative is to keep the
170
+ * text and mark the field invalid, which needs an error this Component cannot
171
+ * render and a `required` rule this Component cannot judge. Refusing it here means
172
+ * an amount field never holds something that is not an amount, which is the
173
+ * strongest claim available; a caller who would rather explain the problem says so
174
+ * in their own `FieldError` beside a `value` of `null`.
175
+ *
176
+ * **A pasted amount from another market is read with this market's punctuation,
177
+ * and there is no better answer available.** `1,234.56` pasted into a `de-DE`
178
+ * field is `1.23456` here, because `,` is this locale's decimal separator. A
179
+ * Component that guessed the other way round would be guessing about money from a
180
+ * string with no locale in it, so it does not: pass the number in, and let the
181
+ * field format it. Grouping characters survive nothing either way, because
182
+ * dropping one leaves the same digits.
183
+ *
184
+ * **A `name` is deliberately absent, and the omission is the honest one.** What a
185
+ * form would submit from here is the reader's text, with this locale's separators
186
+ * in it, and a server that parses it has to guess the same things this Component
187
+ * guessed. A caller who needs a numeric submit writes a hidden input holding
188
+ * `value`. That is two lines, and it is better than a Component that submits a
189
+ * string and calls it a number.
190
+ *
191
+ * **It is a client Component**, because it holds the text while the reader is
192
+ * typing and because it takes the callback that carries the parse. What that
193
+ * costs is the price of every form control, and it is worth naming because the
194
+ * Component looks like a text input: a server render draws the canonical rendering
195
+ * of the caller's number, which is right, and cannot report a keystroke, which is
196
+ * also right.
197
+ */
198
+ declare function MoneyField({ value, onValueChange, locale, currency, id, 'aria-label': ariaLabel, describedBy, readOnly, disabled, required, inputMode, onBlur: onBlurProp, className, }: MoneyFieldProps): import("react").JSX.Element;
199
+ export { MoneyField };
200
+ //# sourceMappingURL=money-field.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"money-field.d.ts","sourceRoot":"","sources":["../../../src/components/ui/money-field.tsx"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,iBAAiB,EAEvB,MAAM,OAAO,CAAA;AAKd;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;;;;OAQG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB;;;;;;;;;OASG;IACH,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IAC7C;;;;;;;;;OASG;IACH,MAAM,EAAE,IAAI,CAAC,eAAe,CAAA;IAC5B;;;;;;;;OAQG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB;;;;;OAKG;IACH,EAAE,CAAC,EAAE,MAAM,CAAA;IACX;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAA;IAC7E;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,CAAA;IAC5C,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAqGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmFG;AACH,iBAAS,UAAU,CAAC,EAClB,KAAK,EACL,aAAa,EACb,MAAM,EACN,QAAQ,EACR,EAAE,EACF,YAAY,EAAE,SAAS,EACvB,WAAW,EACX,QAAgB,EAChB,QAAgB,EAChB,QAAgB,EAChB,SAAqB,EACrB,MAAM,EAAE,UAAU,EAClB,SAAS,GACV,EAAE,eAAe,+BAiEjB;AAED,OAAO,EAAE,UAAU,EAAE,CAAA"}
@@ -0,0 +1,215 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useMemo, useState, } from 'react';
4
+ import { InputGroup, InputGroupAddon, InputGroupInput } from './input-group.js';
5
+ /**
6
+ * Everything one locale and one currency say about the shape of an amount.
7
+ *
8
+ * Memoised on the two props that decide it and not read per keystroke, because
9
+ * building three `Intl.NumberFormat` objects on every character typed is a cost
10
+ * with no reader attached, and the answer cannot change while the locale and the
11
+ * currency do not.
12
+ */
13
+ function readCurrency(locale, currency) {
14
+ // The currency formatter is the only thing that knows how this currency is
15
+ // written: where the symbol sits, how many fraction digits it has, and which
16
+ // characters are its own.
17
+ const money = new Intl.NumberFormat(locale, { style: 'currency', currency });
18
+ const symbol = money
19
+ .formatToParts(0)
20
+ .find((part) => part.type === 'currency')
21
+ ?.value ?? currency;
22
+ const { minimumFractionDigits, maximumFractionDigits } = money.resolvedOptions();
23
+ // The digits come from a decimal formatter carrying the currency's own fraction
24
+ // digits, so the amount is grouped and padded the way this currency is padded
25
+ // and carries no symbol, because the symbol is already in the field's frame.
26
+ const digits = new Intl.NumberFormat(locale, { minimumFractionDigits, maximumFractionDigits });
27
+ // The decimal separator, taken from a value that has one. `undefined` is a real
28
+ // answer and not a gap: a locale whose numbers are written without a fractional
29
+ // part has no decimal separator to accept and none is offered to the reader.
30
+ const marks = new Intl.NumberFormat(locale).formatToParts(1.5);
31
+ const separator = marks.find((part) => part.type === 'decimal')?.value;
32
+ /*
33
+ * The characters this locale's own formatter could have produced.
34
+ *
35
+ * Grouping is deliberately absent. A group separator is cosmetic, and dropping
36
+ * one leaves the same digits, which is exactly the amount the reader meant. So a
37
+ * reader typing `1,234.56` into `en-US` and a reader typing `1.234,56` into
38
+ * `de-DE` both end up with a field holding the number they wanted, and neither
39
+ * has to be told which characters their market uses to write it.
40
+ */
41
+ const allowed = new Set('0123456789-');
42
+ for (const character of separator ?? '')
43
+ allowed.add(character);
44
+ for (const character of symbol)
45
+ allowed.add(character);
46
+ return { symbol, digits, separator, allowed };
47
+ }
48
+ /** What is left after the allowed set has had its turn, which is what can be typed. */
49
+ function filterAmount(text, allowed) {
50
+ let out = '';
51
+ for (const character of text) {
52
+ if (allowed.has(character))
53
+ out += character;
54
+ }
55
+ return out;
56
+ }
57
+ const DIGITS_ONLY = /^[0-9]+$/;
58
+ /**
59
+ * The number the reader's text means, or nothing.
60
+ *
61
+ * `null` is the honest answer in four distinct cases and the Component does not
62
+ * distinguish them for the caller, because none of them is an amount: the field is
63
+ * empty, the field holds only a sign, the field holds only the separator, and the
64
+ * field holds something that is not an amount at all. The text is never rewritten
65
+ * in response, so all four are visible to the reader as states of a field they are
66
+ * in the middle of typing into.
67
+ */
68
+ function readAmount(text, separator, symbol) {
69
+ let body = '';
70
+ for (const character of text) {
71
+ // The currency symbol is dropped wherever it appears rather than only at the
72
+ // front, because a reader pasting a formatted amount gets whatever order their
73
+ // source wrote it in.
74
+ if (symbol !== '' && symbol.includes(character))
75
+ continue;
76
+ body += character;
77
+ }
78
+ const negative = body.startsWith('-');
79
+ if (negative)
80
+ body = body.slice(1);
81
+ if (body === '')
82
+ return null;
83
+ const halves = separator === undefined ? [body] : body.split(separator);
84
+ // More than one separator is not a partially typed amount, it is a different
85
+ // number, and guessing which separator was meant is a guess about money.
86
+ if (halves.length > 2)
87
+ return null;
88
+ let [whole, fraction = ''] = halves;
89
+ // A separator with no whole part is that many units. The reader who typed the
90
+ // separator first is at the beginning of an amount, not at the end of one.
91
+ if (whole === '' && fraction !== '')
92
+ whole = '0';
93
+ if (!DIGITS_ONLY.test(whole))
94
+ return null;
95
+ if (fraction !== '' && !DIGITS_ONLY.test(fraction))
96
+ return null;
97
+ const amount = Number(`${whole}.${fraction}`);
98
+ if (!Number.isFinite(amount))
99
+ return null;
100
+ return negative ? -amount : amount;
101
+ }
102
+ /**
103
+ * A field that holds a currency amount as a number and shows it as the reader's
104
+ * market writes it.
105
+ *
106
+ * **The number the caller holds and the string the reader sees are different
107
+ * kinds of thing, and the round trip between them is the Component.** Everything
108
+ * else here follows from that. The caller passes a `number` and gets a `number`
109
+ * back; the field draws the platform's own rendering of that number in the
110
+ * caller's locale and the caller's currency; and every character the reader adds
111
+ * is parsed back into one. A field that handed the caller a string would push the
112
+ * parsing into every consumer, and a field that printed a hardcoded `$1,234.56`
113
+ * would be making three claims about every product that installed it.
114
+ *
115
+ * **The currency symbol is an input and not an output, and the difference is the
116
+ * whole of the composition.** It sits in the field's own frame, drawn by
117
+ * `InputGroupAddon`, read out of `Intl.NumberFormat` rather than written here, and
118
+ * it is hidden from the accessibility tree: a screen reader reads the digits, and
119
+ * the currency belongs in the field's accessible name, which is the caller's
120
+ * word. It is also not part of the value. The number a caller holds is `1234.56`
121
+ * whatever the reader sees on screen, and a symbol that leaked into the parse would
122
+ * make the same amount parse two ways depending on whether the reader typed it.
123
+ *
124
+ * **Nothing about a currency may be a literal in this file.** The symbol, the
125
+ * grouping and the decimal separators, and the number of fraction digits all come
126
+ * out of the platform for the locale and the code the caller passed. `de-DE` with
127
+ * `EUR` and `en-US` with `USD` differ in all four, and a Component that hardcoded
128
+ * any of them would be right for one market and silently wrong for the rest.
129
+ *
130
+ * **A partially typed amount is a legitimate state and the parser must not reject
131
+ * it.** `12.`, `-` and `.5` are all things a person is in the middle of typing,
132
+ * and `12,` and `,5` are the same three in a locale that separates with a comma.
133
+ * So the parser is not asked whether the text is a valid amount, only whether it
134
+ * currently means one: it reports `12` for `12.`, it reports nothing for a lone sign
135
+ * and for a lone separator, and it reports `0.5` for `.5`. And the text is never
136
+ * rewritten while the field has focus, because a field that re-formats under the
137
+ * reader moves the caret and eats the character being typed. That is what makes the
138
+ * states survivable at all.
139
+ *
140
+ * **The two values disagree for the whole of a mid-edit, and the Component
141
+ * resolves it in one direction.** The caller's number is always the parse of the
142
+ * text, and the text is never rewritten until the reader leaves. So a consumer
143
+ * that also renders the amount somewhere else on the page sees the parsed value and
144
+ * not the keystrokes, and that is deliberate: a second rendering of an amount
145
+ * mid-edit is a second thing to keep in step with a third. The cost is that a
146
+ * consumer whose own validation depends on the exact characters cannot get them
147
+ * from here; it gets the number, which is the thing worth validating.
148
+ *
149
+ * **On blur the text is re-formatted, and text that is not an amount is refused.**
150
+ * The reader leaves and the field holds what the platform writes for the number it
151
+ * parsed: grouped where this locale groups, padded to this currency's fraction
152
+ * digits, and with the grouping the reader did not type replaced by the grouping
153
+ * the reader's market uses. If the text held nothing that means an amount at all,
154
+ * the field restores the canonical rendering of the caller's own value and reports
155
+ * `null`. **That refusal has a real cost, and it is the cost of a snapped-back
156
+ * keystroke**: a reader who typed something this locale cannot write loses what
157
+ * they typed rather than being told it was wrong. The alternative is to keep the
158
+ * text and mark the field invalid, which needs an error this Component cannot
159
+ * render and a `required` rule this Component cannot judge. Refusing it here means
160
+ * an amount field never holds something that is not an amount, which is the
161
+ * strongest claim available; a caller who would rather explain the problem says so
162
+ * in their own `FieldError` beside a `value` of `null`.
163
+ *
164
+ * **A pasted amount from another market is read with this market's punctuation,
165
+ * and there is no better answer available.** `1,234.56` pasted into a `de-DE`
166
+ * field is `1.23456` here, because `,` is this locale's decimal separator. A
167
+ * Component that guessed the other way round would be guessing about money from a
168
+ * string with no locale in it, so it does not: pass the number in, and let the
169
+ * field format it. Grouping characters survive nothing either way, because
170
+ * dropping one leaves the same digits.
171
+ *
172
+ * **A `name` is deliberately absent, and the omission is the honest one.** What a
173
+ * form would submit from here is the reader's text, with this locale's separators
174
+ * in it, and a server that parses it has to guess the same things this Component
175
+ * guessed. A caller who needs a numeric submit writes a hidden input holding
176
+ * `value`. That is two lines, and it is better than a Component that submits a
177
+ * string and calls it a number.
178
+ *
179
+ * **It is a client Component**, because it holds the text while the reader is
180
+ * typing and because it takes the callback that carries the parse. What that
181
+ * costs is the price of every form control, and it is worth naming because the
182
+ * Component looks like a text input: a server render draws the canonical rendering
183
+ * of the caller's number, which is right, and cannot report a keystroke, which is
184
+ * also right.
185
+ */
186
+ function MoneyField({ value, onValueChange, locale, currency, id, 'aria-label': ariaLabel, describedBy, readOnly = false, disabled = false, required = false, inputMode = 'decimal', onBlur: onBlurProp, className, }) {
187
+ const { symbol, digits, separator, allowed } = useMemo(() => readCurrency(locale, currency), [locale, currency]);
188
+ // The text while it is being typed, and `null` when it is not. A separate value
189
+ // from the caller's is the whole mechanism: a field whose displayed text is
190
+ // derived from a number on every render cannot hold `12.` without rewriting it.
191
+ const [draft, setDraft] = useState(null);
192
+ const canonical = value === null || !Number.isFinite(value) ? '' : digits.format(value);
193
+ const text = draft === null ? canonical : draft;
194
+ const handleChange = (event) => {
195
+ const next = filterAmount(event.target.value, allowed);
196
+ setDraft(next);
197
+ onValueChange(readAmount(next, separator, symbol));
198
+ };
199
+ const handleBlur = (event) => {
200
+ // A field nobody edited is not a field that resolved. Without this a reader who
201
+ // tabbed through a field holding an amount would have that amount reported as
202
+ // `null` on the way out, because an untouched field has no draft to re-formatted.
203
+ if (draft !== null) {
204
+ // The one place the text is rewritten, and the one place the parse is reported
205
+ // a second time: whatever parsed is what the reader is left looking at.
206
+ onValueChange(readAmount(draft, separator, symbol));
207
+ setDraft(null);
208
+ }
209
+ // Forwarded last, so a caller's own handler runs against a field that has
210
+ // already settled rather than one caught mid-transition.
211
+ onBlurProp?.(event);
212
+ };
213
+ return (_jsxs(InputGroup, { className: className, disabled: disabled, children: [_jsx(InputGroupAddon, { position: "prefix", children: _jsx("span", { "data-slot": "money-field-symbol", "aria-hidden": "true", children: symbol }) }), _jsx(InputGroupInput, { "data-slot": "money-field-input", id: id, type: "text", inputMode: inputMode, autoComplete: "off", spellCheck: false, "aria-label": ariaLabel, "aria-describedby": describedBy, "aria-required": required || undefined, readOnly: readOnly, disabled: disabled, value: text, onChange: handleChange, onBlur: handleBlur })] }));
214
+ }
215
+ export { MoneyField };