@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,278 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useMemo, useRef, useState } from 'react';
4
+ import { ScrollArea } from './scroll-area.js';
5
+ import { SearchField } from './search-field.js';
6
+ import { cn } from '../../lib/utils.js';
7
+ /**
8
+ * The three cell steps, and the column count that goes with each one.
9
+ *
10
+ * The columns and the cell are one fact in one table rather than two, because
11
+ * the keyboard model reads the column count and the layout reads the class, and
12
+ * two tables would be two numbers that could disagree. A reader who presses the
13
+ * down arrow and lands two rows further down has been told the grid is wider
14
+ * than it is, and nothing about a Component can make that recoverable except
15
+ * keeping one number.
16
+ *
17
+ * `min-h` and not `size` on the cell: the columns are fractions of the caller's
18
+ * container, so a fixed square would overflow a narrow picker and leave a gap in
19
+ * a wide one. The floor is what carries the step, and it is raised to 44 pixels
20
+ * on a coarse pointer because an emoji cell is a target a finger has to hit.
21
+ */
22
+ const EMOJI_SIZE = {
23
+ sm: { columns: 10, grid: 'grid-cols-10', cell: 'min-h-8', glyph: 'text-base' },
24
+ md: { columns: 8, grid: 'grid-cols-8', cell: 'min-h-10', glyph: 'text-xl' },
25
+ lg: { columns: 7, grid: 'grid-cols-7', cell: 'min-h-12', glyph: 'text-2xl' },
26
+ };
27
+ /**
28
+ * The words a query is matched against, folded to lower case once per change.
29
+ *
30
+ * The name and the keywords are one haystack rather than two fields, so a query
31
+ * word matches a keyword and a keyword matches a name with no rule to learn: the
32
+ * reader types words and the words are found. Folding happens here rather than
33
+ * at each comparison so a filter over a bounded set is one pass, not one fold
34
+ * per term per entry.
35
+ */
36
+ function haystack(item) {
37
+ return `${item.name} ${item.keywords?.join(' ') ?? ''}`.toLowerCase();
38
+ }
39
+ /**
40
+ * A grid of emoji the reader chooses one of, with a search field and a rail of
41
+ * categories.
42
+ *
43
+ * **The emoji set is a prop and this module ships no table, and the cost of that
44
+ * is a real one.** A data set is a licensed asset or a derived one, it changes
45
+ * every Unicode release, and what a product's rail contains is that product's
46
+ * claim about itself. Shipping a table here would be a second source of truth
47
+ * for the picker, and it would be wrong in a way no gate could see: a consumer
48
+ * who wanted 40 workflow glyphs would have to delete three thousand rows, and a
49
+ * consumer who wanted the full set would have to wait for this package to
50
+ * refresh. So the picker takes the rows, and what the consumer gets back is a
51
+ * control rather than a data set. The honest cost: a consumer who wants a picker
52
+ * in an afternoon has to source the set first.
53
+ *
54
+ * **The caller's duty is to pass a bounded set, and this Component will not
55
+ * virtualise for them.** Every entry is a real button in the document, which is
56
+ * what makes the roving tab stop a button, what makes the browser's own
57
+ * find-in-page reach a glyph, and what makes the accessibility tree tell the
58
+ * truth about how many entries there are. Virtualising would take all three away
59
+ * and would make this a different control wearing this name: the tab stop would
60
+ * be a placeholder, find-in-page would stop finding glyphs, and the entry count a
61
+ * screen reader reports would be a number the Component asserted rather than one
62
+ * it could see. It would also need the row height and the scroll offset, which
63
+ * are layout measurements, which is a measurement a server render cannot make
64
+ * and a caller who has already said how wide the picker is would have to
65
+ * override. So a set of three thousand emoji in an eight column grid is a slow
66
+ * grid, and the honest answer to that is a different surface, a search first
67
+ * field with a result list, rather than a virtualised one under this name. Pass
68
+ * what a reader would actually scroll through: a few hundred entries at most,
69
+ * which is several screens and not several minutes.
70
+ *
71
+ * **The grid is a radio group of buttons with a roving tab stop, and the two
72
+ * halves of that sentence are both deliberate.** The single selection is a real
73
+ * fact, and `role="radiogroup"` with `role="radio"` and `aria-checked` on each
74
+ * cell is the only description of it that is true, for the reason
75
+ * `ToggleGroup` argues in full: pressed buttons say each cell is independent,
76
+ * which is the claim one selection is denying. The roving tab stop is ours
77
+ * because the platform's version of it belongs to a native radio group, and
78
+ * these are buttons in a grid whose column count the caller chose. The cost of
79
+ * owning it is that it has to be maintained: a grid where every cell is a tab
80
+ * stop is a grid a keyboard reader has to Tab through three hundred times, and a
81
+ * grid where no cell is one cannot be entered at all.
82
+ *
83
+ * **The keyboard model, in full, because a reader cannot discover it.** The
84
+ * whole grid is one Tab stop and the stop sits on the chosen entry, or on the
85
+ * first cell when nothing is chosen. The arrow keys move focus and do not
86
+ * choose: left and right by one cell, up and down by one column, each clamped at
87
+ * the edge rather than wrapped, because a grid that wraps surprises a reader
88
+ * who is reading a row as a row. Home and End go to the first and the last
89
+ * visible cell. Arrow Down from the search field moves into the grid on the
90
+ * current stop, which is what makes the field and the grid one control to a
91
+ * reader rather than two stops to learn. Enter and Space choose, because the
92
+ * cells are buttons. Escape empties the query and calls `onDismiss` when one was
93
+ * passed.
94
+ *
95
+ * **The rail is a row of ordinary tab stops and is not a composite widget.**
96
+ * `role="tablist"` is the role that describes it, and a tablist is a
97
+ * required-name role, so using it would need a seventh string prop for a control
98
+ * whose members are already named by the category names. The rail instead draws
99
+ * plain buttons with `aria-current` on the one showing, which says "this is the
100
+ * current item in this set" without claiming the grid is a tab panel. The cost is
101
+ * that a reader Tabs through each category rather than arrowing them, and with a
102
+ * handful of categories that is the better trade; a picker with forty categories
103
+ * is a picker with the wrong rail.
104
+ *
105
+ * **The rail is drawn only while the query is empty, and that is a decision
106
+ * rather than an omission.** A search that filtered only the showing category
107
+ * would mean a reader who has landed on Reactions and typed "cat" is told there
108
+ * is no cat, which is a false statement about the product's own set. So a query
109
+ * searches every category at once, the grid flattens them in the order the
110
+ * categories were passed, and the rail is not drawn while it does, because a
111
+ * category button that does nothing is a control that lies. The cost is a layout
112
+ * change when the reader types the first character, and the alternative, keeping
113
+ * the rail, is a worse failure than a shift.
114
+ *
115
+ * **The arrow step follows the declared column count and not the measured one,
116
+ * and the gap is named rather than hidden.** A grid that renders fewer columns
117
+ * than `size` says, because the caller put it in a narrow container, moves down
118
+ * by a row the reader cannot see. Prism could measure the rendered column count
119
+ * and it does not, for the reason it does not virtualise: a measurement is a
120
+ * layout read, it is not available in a server render, and it would put the
121
+ * keyboard model at the mercy of whatever the caller did to the width. Passing a
122
+ * smaller `size` is the fix and it is one prop.
123
+ *
124
+ * **Motion is state feedback on two tokens and there is no keyframe.** The cell
125
+ * and the rail change ink with `duration-fast ease-out`, which is the same
126
+ * feedback the rest of the package gives, and the press scales by a token-free
127
+ * factor on `transition-[color,background-color,scale]`. Neither carries a
128
+ * `motion-safe:`: `packages/ui/src/styles.css` ends with one unlayered
129
+ * `prefers-reduced-motion` rule that stops every transition in the package, so a
130
+ * reader who has asked for less motion gets the colour change at full strength
131
+ * and the press with no movement at all, and the two decisions live in one place
132
+ * rather than one per cell. Nothing here waits for a script, a scroll position or
133
+ * a timer, so the picker is complete and legible at first paint whatever the
134
+ * reader's settings are.
135
+ *
136
+ * **It is a client Component, and the directive is unconditional.** The picker
137
+ * holds the query, the showing category, the roving stop and the announcement,
138
+ * and all four are the control rather than a decoration of it. The cost is named
139
+ * rather than hidden: a consumer who renders a read-only list of the set they
140
+ * already hold ships a client runtime for it, and the honest answer for that case
141
+ * is their own list, because a picker with no search and no selection is a grid
142
+ * of glyphs and the grid is three lines of their own markup.
143
+ */
144
+ function EmojiPicker({ groups, value, onValueChange, searchLabel, searchPlaceholder, clearLabel, emptyLabel, selectLabel, onDismiss, size = 'md', className, }) {
145
+ const gridRef = useRef(null);
146
+ const [query, setQuery] = useState('');
147
+ const [category, setCategory] = useState(null);
148
+ const [stop, setStop] = useState(null);
149
+ const [announced, setAnnounced] = useState('');
150
+ const drawn = EMOJI_SIZE[size];
151
+ // Every entry with its search words folded once, so a filter over the set is a
152
+ // comparison per term rather than a fold per term per entry. The id is the
153
+ // consumer's own key, so the flat list is also where the chosen entry is found.
154
+ const flat = useMemo(() => groups.flatMap((group) => group.items.map((item) => ({ item, hay: haystack(item) }))), [groups]);
155
+ // The showing category, falling back to the first when the state names one the
156
+ // consumer has since removed, so a picker survives its data changing under it
157
+ // rather than drawing an empty grid beside a rail whose buttons do nothing.
158
+ const shown = groups.find((group) => group.id === category) ?? groups[0];
159
+ const searching = query.trim() !== '';
160
+ const visible = useMemo(() => {
161
+ if (!searching)
162
+ return shown?.items ?? [];
163
+ // Every term has to match somewhere, so a two word query narrows rather than
164
+ // widens. That is the rule a reader expects from a search field and it is
165
+ // the one a consumer cannot change without losing the set.
166
+ const terms = query.trim().toLowerCase().split(/\s+/).filter(Boolean);
167
+ return flat
168
+ .filter((entry) => terms.every((term) => entry.hay.includes(term)))
169
+ .map((entry) => entry.item);
170
+ }, [flat, query, shown]);
171
+ const chosen = flat.find((entry) => entry.item.id === value)?.item;
172
+ // The stop is a derivation with a piece of state over it, and the derivation
173
+ // is what makes it self healing: a stop naming an entry the current query has
174
+ // filtered out falls back to the chosen entry and then to the first cell, so
175
+ // the grid always has exactly one Tab stop and never has none.
176
+ const current = visible.find((item) => item.id === stop) ??
177
+ visible.find((item) => item.id === chosen?.id) ??
178
+ visible[0];
179
+ const currentAt = current === undefined ? -1 : visible.indexOf(current);
180
+ // The grid is named by the category while the reader browses and by the search
181
+ // field's own label while a query is present, because those are the two sets
182
+ // on screen and each has a name the consumer already wrote. The scroll region
183
+ // takes the same one for the reason `ListPanel` gives: the region and the grid
184
+ // hold the same entries, and a reader who tabs into one and hears a different
185
+ // name from the other has been told two things about the same content.
186
+ //
187
+ // `aria-label` rather than a generated id pointing at the field's own label
188
+ // element, and the reason is a duplicate rather than a convenience: an
189
+ // `sr-only` copy of a label that is already on screen is a second copy of the
190
+ // same words in the accessibility tree, and a reader walking the page hears it
191
+ // twice. The name is a string here because the words are the same words the
192
+ // field shows, so there is nothing for a node to carry.
193
+ const regionName = searching || shown === undefined ? searchLabel : shown.name;
194
+ const cells = () => [
195
+ ...(gridRef.current?.querySelectorAll('[data-slot="emoji-picker-cell"]') ??
196
+ []),
197
+ ];
198
+ const move = (to) => {
199
+ const all = cells();
200
+ if (all.length === 0)
201
+ return;
202
+ const target = all[Math.min(Math.max(to, 0), all.length - 1)];
203
+ if (target === undefined)
204
+ return;
205
+ // Focus is what records the stop, through the cell's own onFocus, so there
206
+ // is one place that writes it and the arrow handler cannot move the stop to
207
+ // a cell the reader did not reach.
208
+ target.focus();
209
+ };
210
+ const onKeyDown = (event) => {
211
+ if (event.key === 'Escape') {
212
+ setQuery('');
213
+ onDismiss?.();
214
+ return;
215
+ }
216
+ const target = event.target;
217
+ if (target instanceof HTMLInputElement) {
218
+ // The one key a single line text field has no use for, and the one a
219
+ // reader expects to move from a search field into the results. Without it
220
+ // the field and the grid are two stops and the reader has to guess that
221
+ // Tab crosses between them.
222
+ if (event.key === 'ArrowDown' && currentAt !== -1) {
223
+ event.preventDefault();
224
+ move(currentAt);
225
+ }
226
+ return;
227
+ }
228
+ if (!(target instanceof HTMLButtonElement))
229
+ return;
230
+ if (target.dataset.slot !== 'emoji-picker-cell')
231
+ return;
232
+ const from = cells().indexOf(target);
233
+ if (from === -1)
234
+ return;
235
+ const steps = {
236
+ ArrowLeft: -1,
237
+ ArrowRight: 1,
238
+ ArrowUp: -drawn.columns,
239
+ ArrowDown: drawn.columns,
240
+ };
241
+ const step = steps[event.key];
242
+ if (step !== undefined) {
243
+ event.preventDefault();
244
+ move(from + step);
245
+ return;
246
+ }
247
+ if (event.key === 'Home' || event.key === 'End') {
248
+ event.preventDefault();
249
+ move(event.key === 'Home' ? 0 : cells().length - 1);
250
+ }
251
+ };
252
+ return (_jsxs("div", { "data-slot": "emoji-picker", onKeyDown: onKeyDown, className: cn('flex w-full items-start gap-3', className), children: [searching || groups.length === 0 ? null : (_jsx("div", { "data-slot": "emoji-picker-rail", className: "flex shrink-0 flex-col gap-0.5", children: groups.map((group) => {
253
+ const currentCategory = group.id === shown?.id;
254
+ return (_jsx("button", { type: "button", "data-slot": "emoji-picker-rail-item", "data-category": group.id, "aria-current": currentCategory ? true : undefined, onClick: () => {
255
+ setCategory(group.id);
256
+ setStop(null);
257
+ }, className: cn('rounded-md px-2 py-1 text-left text-sm whitespace-nowrap outline-none', 'transition-colors duration-fast ease-out', 'focus-visible:ring-ring focus-visible:ring-[3px]', 'pointer-coarse:min-h-11', currentCategory
258
+ ? 'bg-accent text-accent-foreground font-medium'
259
+ : 'text-muted-foreground hover:text-foreground'), children: group.name }, group.id));
260
+ }) })), _jsxs("div", { "data-slot": "emoji-picker-panel", className: "flex min-w-0 flex-1 flex-col gap-2", children: [_jsx(SearchField, { value: query, onValueChange: setQuery, label: searchLabel, placeholder: searchPlaceholder, clearLabel: clearLabel }), _jsx(ScrollArea, { label: regionName, orientation: "vertical", className: "min-h-0 flex-1", children: visible.length === 0 ? (_jsx("p", { "data-slot": "emoji-picker-empty", className: "text-muted-foreground p-3 text-sm", children: emptyLabel })) : (_jsx("div", { ref: gridRef, "data-slot": "emoji-picker-grid", role: "radiogroup", "aria-label": regionName, className: cn('grid gap-1 p-0.5', drawn.grid), children: visible.map((item) => {
261
+ const checked = item.id === value;
262
+ return (_jsx("button", { type: "button", "data-slot": "emoji-picker-cell", "data-item": item.id, role: "radio", "aria-checked": checked,
263
+ // The roving tab stop. Exactly one cell is in the tab order,
264
+ // and `current` is a derivation that always resolves to one,
265
+ // so the grid can always be entered and never entered twice.
266
+ tabIndex: item.id === current?.id ? 0 : -1, onFocus: () => setStop(item.id), onClick: () => {
267
+ onValueChange(item.id);
268
+ setAnnounced(selectLabel(item));
269
+ }, className: cn('text-muted-foreground hover:bg-accent hover:text-accent-foreground flex aspect-square w-full min-w-0 items-center justify-center rounded-md outline-none',
270
+ // The scale is the one spatial change in this Component, and
271
+ // it is guarded so a reader who asked for less movement gets
272
+ // the ink change at full strength and no movement. The colour
273
+ // changes are feedback and are not guarded, which is the
274
+ // position DESIGN.md takes on reduced motion.
275
+ 'transition-[color,background-color,scale] duration-fast ease-out', 'active:scale-95', 'focus-visible:ring-ring focus-visible:ring-[3px]', drawn.cell, 'pointer-coarse:min-h-11', checked && 'bg-accent text-accent-foreground'), children: _jsx("span", { "data-slot": "emoji-picker-glyph", "aria-hidden": "true", className: cn('leading-none select-none', drawn.glyph), children: item.glyph }) }, item.id));
276
+ }) })) }), _jsx("p", { "data-slot": "emoji-picker-announcement", "aria-live": "polite", className: "sr-only", children: announced })] })] }));
277
+ }
278
+ export { EmojiPicker };
@@ -75,6 +75,23 @@ export type FactListProps = ComponentProps<'dl'> & {
75
75
  * wraps and a value that does not are both common and centring one of them reads
76
76
  * as an error.
77
77
  *
78
+ * **The value is set flush left, and the reason is the values rather than the
79
+ * rows.** A right-aligned value is the right answer in a column of figures, where
80
+ * the digits are the same width and the comparison a reader makes is between the
81
+ * ends of them. This Component has no numeric mode, no `tabular-nums` and no
82
+ * monospaced arm, so nothing here is a figure and nothing lines up on its last
83
+ * digit: what lines up is the first letter of each answer, and right alignment
84
+ * moves that edge to a different place on every row. A value long enough to wrap
85
+ * is the case that shows it, because the second line starts wherever the first
86
+ * one ended and the column reads as a mistake rather than as a decision. `text-
87
+ * balance` stays, because it is the same reason it was there: a two-line answer
88
+ * should break where it breaks well, not where the measure runs out.
89
+ *
90
+ * A fact whose value *is* a figure is not the case this loses. A caller that wants
91
+ * a right-aligned figure column composes it: the value is a `ReactNode`, so a
92
+ * caller can pass the span it wants, and Prism holds no opinion about a value it
93
+ * did not lay out.
94
+ *
78
95
  * The hairline between rows is `border-border`, so a list of facts reads as a
79
96
  * table without becoming one: no header row, because a fact has no column
80
97
  * header, and no `Table` semantics, because these are terms and their answers
@@ -1 +1 @@
1
- {"version":3,"file":"fact-list.d.ts","sourceRoot":"","sources":["../../../src/components/ui/fact-list.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAItD;;;;;;;GAOG;AACH,MAAM,MAAM,IAAI,GAAG;IACjB;;;;OAIG;IACH,KAAK,EAAE,SAAS,CAAA;IAChB,6DAA6D;IAC7D,KAAK,EAAE,SAAS,CAAA;IAChB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG;IACjD;;;;OAIG;IACH,KAAK,EAAE,SAAS,IAAI,EAAE,CAAA;IACtB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,iBAAS,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,sCAuCrE;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
1
+ {"version":3,"file":"fact-list.d.ts","sourceRoot":"","sources":["../../../src/components/ui/fact-list.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAItD;;;;;;;GAOG;AACH,MAAM,MAAM,IAAI,GAAG;IACjB;;;;OAIG;IACH,KAAK,EAAE,SAAS,CAAA;IAChB,6DAA6D;IAC7D,KAAK,EAAE,SAAS,CAAA;IAChB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG;IACjD;;;;OAIG;IACH,KAAK,EAAE,SAAS,IAAI,EAAE,CAAA;IACtB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,iBAAS,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,sCAuCrE;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
@@ -20,6 +20,23 @@ import { cn } from '../../lib/utils.js';
20
20
  * wraps and a value that does not are both common and centring one of them reads
21
21
  * as an error.
22
22
  *
23
+ * **The value is set flush left, and the reason is the values rather than the
24
+ * rows.** A right-aligned value is the right answer in a column of figures, where
25
+ * the digits are the same width and the comparison a reader makes is between the
26
+ * ends of them. This Component has no numeric mode, no `tabular-nums` and no
27
+ * monospaced arm, so nothing here is a figure and nothing lines up on its last
28
+ * digit: what lines up is the first letter of each answer, and right alignment
29
+ * moves that edge to a different place on every row. A value long enough to wrap
30
+ * is the case that shows it, because the second line starts wherever the first
31
+ * one ended and the column reads as a mistake rather than as a decision. `text-
32
+ * balance` stays, because it is the same reason it was there: a two-line answer
33
+ * should break where it breaks well, not where the measure runs out.
34
+ *
35
+ * A fact whose value *is* a figure is not the case this loses. A caller that wants
36
+ * a right-aligned figure column composes it: the value is a `ReactNode`, so a
37
+ * caller can pass the span it wants, and Prism holds no opinion about a value it
38
+ * did not lay out.
39
+ *
23
40
  * The hairline between rows is `border-border`, so a list of facts reads as a
24
41
  * table without becoming one: no header row, because a fact has no column
25
42
  * header, and no `Table` semantics, because these are terms and their answers
@@ -33,6 +50,6 @@ import { cn } from '../../lib/utils.js';
33
50
  function FactList({ facts, label, className, ...props }) {
34
51
  if (facts.length === 0)
35
52
  return null;
36
- return (_jsxs("dl", { "data-slot": "fact-list", className: cn('flex w-full flex-col text-sm', className), ...props, children: [label ? (_jsx("dt", { className: "text-muted-foreground mb-2 text-xs font-medium tracking-wide uppercase", children: label })) : null, facts.map((fact, index) => (_jsxs("div", { "data-slot": "fact-list-row", className: "border-border flex items-start justify-between gap-6 border-b py-2 last:border-b-0", children: [_jsx("dt", { className: "text-muted-foreground shrink-0 font-medium", children: fact.label }), _jsx("dd", { className: "text-right text-balance", children: fact.href ? (_jsx("a", { href: fact.href, rel: fact.newTab ? 'noopener noreferrer' : undefined, target: fact.newTab ? '_blank' : undefined, className: "underline underline-offset-4 hover:underline", children: fact.value })) : (fact.value) })] }, index)))] }));
53
+ return (_jsxs("dl", { "data-slot": "fact-list", className: cn('flex w-full flex-col text-sm', className), ...props, children: [label ? (_jsx("dt", { className: "text-muted-foreground mb-2 text-xs font-medium tracking-wide uppercase", children: label })) : null, facts.map((fact, index) => (_jsxs("div", { "data-slot": "fact-list-row", className: "border-border flex items-start justify-between gap-6 border-b py-2 last:border-b-0", children: [_jsx("dt", { className: "text-muted-foreground shrink-0 font-medium", children: fact.label }), _jsx("dd", { className: "text-left text-balance", children: fact.href ? (_jsx("a", { href: fact.href, rel: fact.newTab ? 'noopener noreferrer' : undefined, target: fact.newTab ? '_blank' : undefined, className: "underline underline-offset-4 hover:underline", children: fact.value })) : (fact.value) })] }, index)))] }));
37
54
  }
38
55
  export { FactList };
@@ -0,0 +1,152 @@
1
+ import { type ReactNode } from 'react';
2
+ /** One file the reader has chosen, and everything the list knows about it. */
3
+ export type FileUploadFile = {
4
+ /**
5
+ * The caller's own identity for the file, and what the remove control reports.
6
+ *
7
+ * Required, and required as a string rather than as the name: a reader who adds
8
+ * the same file twice has two rows with the same name, and a remove control
9
+ * named by the file would announce two identical buttons.
10
+ */
11
+ id: string;
12
+ /** The file's name as the platform reported it. A word, so it is not truncated. */
13
+ name: string;
14
+ /**
15
+ * The file's size, in bytes.
16
+ *
17
+ * A number and not a formatted string, and the difference is the whole
18
+ * interface. A caller that hands over "1.2 MB" has done the division, picked a
19
+ * unit, decided the rounding and written a separator, and has to do all four
20
+ * again in every locale the product ships in, and again in every language. The
21
+ * number is a fact about the file and the sentence is Prism's to write.
22
+ */
23
+ size: number;
24
+ /**
25
+ * How far this file has got, out of a hundred.
26
+ *
27
+ * Omit it and the row shows no meter, which is right for a file that has
28
+ * finished and for a file that was never going to be uploaded. A value of zero
29
+ * is drawn as an empty meter rather than as nothing, because a transfer that
30
+ * has not started and a transfer that does not exist are different facts.
31
+ */
32
+ progress?: number;
33
+ /**
34
+ * What went wrong with this file, drawn under it in the destructive token and
35
+ * announced as it appears.
36
+ *
37
+ * A node, and a sentence about the caller's own limits: "Larger than 10 MB",
38
+ * "That file type is not accepted here". Prism does not decide what may be
39
+ * uploaded and does not write the sentence when it goes wrong.
40
+ */
41
+ error?: ReactNode;
42
+ };
43
+ /** The props the File upload accepts. */
44
+ export interface FileUploadProps {
45
+ /**
46
+ * The files, in the order they were chosen.
47
+ *
48
+ * Required, and order is the caller's because it is a claim about importance.
49
+ * A reader who chose three files expects to see three rows in the order they
50
+ * arrived, not sorted by size.
51
+ */
52
+ files: FileUploadFile[];
53
+ /**
54
+ * Called with a file's `id` when the reader removes it.
55
+ *
56
+ * Omit it and the list is read-only, which is a legitimate state: a receipt
57
+ * names the files that were sent, and offering to take one off a receipt is a
58
+ * promise the caller cannot keep. A caller whose files are still uploading
59
+ * should omit it too, because this Component cannot see the transfer and will
60
+ * not try to stop one.
61
+ */
62
+ onRemove?: (id: string) => void;
63
+ /**
64
+ * The accessible name of one row's remove control, given that row's file name.
65
+ *
66
+ * Required whenever `onRemove` is given, and a function because the name has to
67
+ * name the file and the file's name is the caller's string, not this package's
68
+ * sentence. The Component throws without it rather than drawing a button it
69
+ * cannot name, because a nameless button is announced as "button" and the
70
+ * reader is left to work out which of the rows it belongs to.
71
+ */
72
+ removeLabel?: (name: string) => string;
73
+ /**
74
+ * The list's own name, drawn above it and used as its accessible name.
75
+ *
76
+ * A node and not a string, so the element a sighted reader reads is the one a
77
+ * screen reader names the list by. Without it the list is announced as an
78
+ * unlabelled list and the reader is told nothing about what the files are.
79
+ */
80
+ label?: ReactNode;
81
+ /**
82
+ * What to draw when no file has been chosen.
83
+ *
84
+ * An empty list with no `empty` renders nothing at all, which is the choice
85
+ * `FactList` makes and the reason is the same: a bordered box with a heading
86
+ * above it and nothing in it reads as a rendering failure rather than as an
87
+ * absence. Never a placeholder row. A row with no file in it is a row a reader
88
+ * tries to remove, and a row whose progress meter is at zero is a transfer that
89
+ * is happening.
90
+ */
91
+ empty?: ReactNode;
92
+ /**
93
+ * Renders a size in bytes as the sentence a reader sees.
94
+ *
95
+ * The default divides by 1024, steps up to kilobytes and then to megabytes,
96
+ * and asks `Intl` for the number and its unit in the runtime's own locale, so
97
+ * the grouping separators and the unit spelling are the reader's. A caller that
98
+ * needs a fixed locale, a different base or a fourth rung passes a function
99
+ * that closes over the locale it wants.
100
+ */
101
+ formatSize?: (bytes: number) => string;
102
+ /** Layout only. */
103
+ className?: string;
104
+ }
105
+ /**
106
+ * The list of files a reader has chosen, one row each.
107
+ *
108
+ * **A size is a number of bytes and never a formatted string.** That is the
109
+ * decision the whole interface rests on. A caller that formats the size itself
110
+ * has to reimplement the division, the unit ladder, the rounding at each rung and
111
+ * the grouping separator, and has to do it again for every locale the product
112
+ * ships in, and again the first time somebody asks for gigabytes. Prism owns one
113
+ * ladder and asks `Intl` for the sentence, so a locale change is a locale change
114
+ * and not an audit. The cost is that a caller who genuinely wants a different
115
+ * ladder writes a function, which is the right place for that decision.
116
+ *
117
+ * **The meter is `Progress` and the failure is `FieldError`, and they were not
118
+ * chosen together.** A bar that reports a position is a bar: `Progress` already
119
+ * exposes the value, the minimum and the maximum through ARIA, already draws at
120
+ * the authored heights and already animates the fill on the base duration, and a
121
+ * second meter written here would be a second answer to how far along a task is.
122
+ * The failure is the opposite case and deliberately is not an `Alert`. An Alert
123
+ * is a callout with its own border, its own padding and its own role, and one
124
+ * inside a bordered row is a card inside a card: it changes the height of the row
125
+ * that failed, it moves the remove control, and it announces a page-level problem
126
+ * for a problem with one file. `FieldError` is one line of destructive text with
127
+ * `role="alert"`, which is what a per-file failure is. The trade is that a reader
128
+ * gets no recovery beside the error, and the remedy for that is on the Dropzone
129
+ * beside the field, where the caller's own limits are stated.
130
+ *
131
+ * **The name is a word and the size is a number, and they are laid out that way
132
+ * on purpose.** The name takes what it needs and the size keeps its own width at
133
+ * the far edge, so a column of files reads as a column of names with a column of
134
+ * weights rather than as a ragged paragraph. The name truncates in the middle
135
+ * rather than at the end because a file extension is the part a reader recognises
136
+ * last, and a name cut before its extension is a name that could be anything.
137
+ *
138
+ * **An empty list renders `empty` or nothing, and never a placeholder row.** A
139
+ * row with no file in it is a row a reader will try to remove, and a row whose
140
+ * meter sits at zero is a transfer that is under way. The absence is either the
141
+ * caller's own sentence or no rows at all, which is what `FactList` does and for
142
+ * the same reason.
143
+ *
144
+ * It carries no directive. It holds no state: which files exist, how far each has
145
+ * got and which one is being removed are the caller's, and the meter it draws is
146
+ * a client Component that takes a number. A caller rendering a receipt from a
147
+ * server component gets a static list of what was sent, which is the right
148
+ * rendering of a receipt.
149
+ */
150
+ declare function FileUpload({ files, onRemove, removeLabel, label, empty, formatSize, className, }: FileUploadProps): import("react").JSX.Element | null;
151
+ export { FileUpload };
152
+ //# sourceMappingURL=file-upload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-upload.d.ts","sourceRoot":"","sources":["../../../src/components/ui/file-upload.tsx"],"names":[],"mappings":"AACA,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAM7C,8EAA8E;AAC9E,MAAM,MAAM,cAAc,GAAG;IAC3B;;;;;;OAMG;IACH,EAAE,EAAE,MAAM,CAAA;IACV,mFAAmF;IACnF,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;;;;OAQG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB,CAAA;AAED,yCAAyC;AACzC,MAAM,WAAW,eAAe;IAC9B;;;;;;OAMG;IACH,KAAK,EAAE,cAAc,EAAE,CAAA;IACvB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IACtC;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IACtC,mBAAmB;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAyCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,iBAAS,UAAU,CAAC,EAClB,KAAK,EACL,QAAQ,EACR,WAAW,EACX,KAAK,EACL,KAAK,EACL,UAA8B,EAC9B,SAAS,GACV,EAAE,eAAe,sCAoFjB;AAED,OAAO,EAAE,UAAU,EAAE,CAAA"}
@@ -0,0 +1,101 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { XIcon } from 'lucide-react';
3
+ import { useId } from 'react';
4
+ import { FieldError } from './field.js';
5
+ import { Progress } from './progress.js';
6
+ import { cn } from '../../lib/utils.js';
7
+ const KILOBYTE = 1024;
8
+ const MEGABYTE = KILOBYTE * 1024;
9
+ /**
10
+ * The default size sentence, in the runtime's locale.
11
+ *
12
+ * `Intl` is asked for the unit rather than for the abbreviation, because a unit
13
+ * has a localized spelling and an abbreviation does not: "kB" in one language is
14
+ * "Ko" in another and "KB" in a third, and hard-coding any of them ships one
15
+ * locale's abbreviation into every consumer's file list. The byte rung is first
16
+ * so that a four hundred byte file reads as four hundred bytes rather than as
17
+ * 0.4 of something, which is a number that looks like a measurement and is not
18
+ * one.
19
+ */
20
+ const defaultFormatSize = (bytes) => {
21
+ const format = (unit, divisor) => new Intl.NumberFormat(undefined, {
22
+ style: 'unit',
23
+ unit,
24
+ maximumFractionDigits: divisor === 1 ? 0 : 1,
25
+ }).format(bytes / divisor);
26
+ if (bytes < KILOBYTE)
27
+ return format('byte', 1);
28
+ if (bytes < MEGABYTE)
29
+ return format('kilobyte', KILOBYTE);
30
+ return format('megabyte', MEGABYTE);
31
+ };
32
+ /**
33
+ * The remove control, drawn once and used by every row.
34
+ *
35
+ * The ink is the muted one and it is not themed per row, because every row is
36
+ * the same surface and a control that changed colour with the file's state would
37
+ * be a second thing to read. The target takes the 44px floor on a coarse pointer
38
+ * and the row grows to hold it, so a list of files on a phone is a list of rows
39
+ * a thumb can hit.
40
+ */
41
+ const REMOVE_CONTROL = 'text-muted-foreground hover:text-foreground inline-flex size-5 shrink-0 items-center justify-center rounded-sm outline-none transition-colors duration-fast ease-out pointer-coarse:size-11 focus-visible:ring-ring focus-visible:ring-[3px]';
42
+ /**
43
+ * The list of files a reader has chosen, one row each.
44
+ *
45
+ * **A size is a number of bytes and never a formatted string.** That is the
46
+ * decision the whole interface rests on. A caller that formats the size itself
47
+ * has to reimplement the division, the unit ladder, the rounding at each rung and
48
+ * the grouping separator, and has to do it again for every locale the product
49
+ * ships in, and again the first time somebody asks for gigabytes. Prism owns one
50
+ * ladder and asks `Intl` for the sentence, so a locale change is a locale change
51
+ * and not an audit. The cost is that a caller who genuinely wants a different
52
+ * ladder writes a function, which is the right place for that decision.
53
+ *
54
+ * **The meter is `Progress` and the failure is `FieldError`, and they were not
55
+ * chosen together.** A bar that reports a position is a bar: `Progress` already
56
+ * exposes the value, the minimum and the maximum through ARIA, already draws at
57
+ * the authored heights and already animates the fill on the base duration, and a
58
+ * second meter written here would be a second answer to how far along a task is.
59
+ * The failure is the opposite case and deliberately is not an `Alert`. An Alert
60
+ * is a callout with its own border, its own padding and its own role, and one
61
+ * inside a bordered row is a card inside a card: it changes the height of the row
62
+ * that failed, it moves the remove control, and it announces a page-level problem
63
+ * for a problem with one file. `FieldError` is one line of destructive text with
64
+ * `role="alert"`, which is what a per-file failure is. The trade is that a reader
65
+ * gets no recovery beside the error, and the remedy for that is on the Dropzone
66
+ * beside the field, where the caller's own limits are stated.
67
+ *
68
+ * **The name is a word and the size is a number, and they are laid out that way
69
+ * on purpose.** The name takes what it needs and the size keeps its own width at
70
+ * the far edge, so a column of files reads as a column of names with a column of
71
+ * weights rather than as a ragged paragraph. The name truncates in the middle
72
+ * rather than at the end because a file extension is the part a reader recognises
73
+ * last, and a name cut before its extension is a name that could be anything.
74
+ *
75
+ * **An empty list renders `empty` or nothing, and never a placeholder row.** A
76
+ * row with no file in it is a row a reader will try to remove, and a row whose
77
+ * meter sits at zero is a transfer that is under way. The absence is either the
78
+ * caller's own sentence or no rows at all, which is what `FactList` does and for
79
+ * the same reason.
80
+ *
81
+ * It carries no directive. It holds no state: which files exist, how far each has
82
+ * got and which one is being removed are the caller's, and the meter it draws is
83
+ * a client Component that takes a number. A caller rendering a receipt from a
84
+ * server component gets a static list of what was sent, which is the right
85
+ * rendering of a receipt.
86
+ */
87
+ function FileUpload({ files, onRemove, removeLabel, label, empty, formatSize = defaultFormatSize, className, }) {
88
+ const generated = useId();
89
+ const labelId = `${generated}-label`;
90
+ if (onRemove !== undefined && removeLabel === undefined) {
91
+ throw new Error('FileUpload: a removable list needs removeLabel, because the accessible name of a remove control has ' +
92
+ 'to name the file it removes and this Component cannot write that sentence. Pass a function of ' +
93
+ 'the file name, or drop onRemove for a list the reader cannot change.');
94
+ }
95
+ if (files.length === 0 && empty === undefined)
96
+ return null;
97
+ return (_jsxs("div", { "data-slot": "file-upload", className: cn('flex w-full flex-col gap-1', className), children: [label === undefined ? null : (_jsx("span", { id: labelId, "data-slot": "file-upload-label", className: "text-muted-foreground text-xs font-medium tracking-wide uppercase", children: label })), files.length === 0 ? (_jsx("p", { "data-slot": "file-upload-empty", className: "text-muted-foreground text-sm", children: empty })) : (_jsx("ul", { "data-slot": "file-upload-list", "aria-labelledby": label === undefined ? undefined : labelId, className: "flex w-full flex-col", children: files.map((file) => (_jsxs("li", { "data-slot": "file-upload-file", "data-incomplete": (file.error !== undefined ||
98
+ (file.progress !== undefined && file.progress < 100)) ||
99
+ undefined, className: "border-border flex items-start gap-3 border-b py-2 last:border-b-0", children: [_jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1.5", children: [_jsxs("div", { className: "flex items-baseline justify-between gap-3", children: [_jsx("span", { "data-slot": "file-upload-name", className: "min-w-0 truncate text-sm font-medium", children: file.name }), _jsx("span", { "data-slot": "file-upload-size", className: "text-muted-foreground shrink-0 text-xs tabular-nums", children: formatSize(file.size) })] }), file.progress === undefined ? null : (_jsx(Progress, { value: file.progress, max: 100 })), file.error === undefined ? null : _jsx(FieldError, { children: file.error })] }), onRemove === undefined ? null : (_jsx("button", { type: "button", "data-slot": "file-upload-remove", "aria-label": removeLabel?.(file.name), onClick: () => onRemove(file.id), className: REMOVE_CONTROL, children: _jsx(XIcon, { className: "size-4", "aria-hidden": "true" }) }))] }, file.id))) }))] }));
100
+ }
101
+ export { FileUpload };