@nanisoft/prism-ui 0.13.0 → 0.15.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 (943) 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 +12 -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 +8 -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 +124 -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 +25 -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 +3 -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 +18 -1
  538. package/dist/blocks/site-footer/site-footer.d.ts.map +1 -1
  539. package/dist/blocks/site-footer/site-footer.js +8 -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/story-01/index.d.ts +3 -0
  551. package/dist/blocks/story-01/index.d.ts.map +1 -0
  552. package/dist/blocks/story-01/index.js +1 -0
  553. package/dist/blocks/story-01/story.d.ts +153 -0
  554. package/dist/blocks/story-01/story.d.ts.map +1 -0
  555. package/dist/blocks/story-01/story.js +103 -0
  556. package/dist/blocks/summary-01/index.d.ts +3 -0
  557. package/dist/blocks/summary-01/index.d.ts.map +1 -0
  558. package/dist/blocks/summary-01/index.js +1 -0
  559. package/dist/blocks/summary-01/summary.d.ts +300 -0
  560. package/dist/blocks/summary-01/summary.d.ts.map +1 -0
  561. package/dist/blocks/summary-01/summary.js +174 -0
  562. package/dist/blocks/team-01/index.d.ts +3 -0
  563. package/dist/blocks/team-01/index.d.ts.map +1 -0
  564. package/dist/blocks/team-01/index.js +1 -0
  565. package/dist/blocks/team-01/team.d.ts +176 -0
  566. package/dist/blocks/team-01/team.d.ts.map +1 -0
  567. package/dist/blocks/team-01/team.js +117 -0
  568. package/dist/blocks/testimonial-01/index.d.ts +3 -0
  569. package/dist/blocks/testimonial-01/index.d.ts.map +1 -0
  570. package/dist/blocks/testimonial-01/index.js +1 -0
  571. package/dist/blocks/testimonial-01/testimonial.d.ts +173 -0
  572. package/dist/blocks/testimonial-01/testimonial.d.ts.map +1 -0
  573. package/dist/blocks/testimonial-01/testimonial.js +87 -0
  574. package/dist/blocks/todo-01/index.d.ts +3 -0
  575. package/dist/blocks/todo-01/index.d.ts.map +1 -0
  576. package/dist/blocks/todo-01/index.js +1 -0
  577. package/dist/blocks/todo-01/todo.d.ts +286 -0
  578. package/dist/blocks/todo-01/todo.d.ts.map +1 -0
  579. package/dist/blocks/todo-01/todo.js +149 -0
  580. package/dist/blocks/trend-01/index.d.ts +3 -0
  581. package/dist/blocks/trend-01/index.d.ts.map +1 -0
  582. package/dist/blocks/trend-01/index.js +1 -0
  583. package/dist/blocks/trend-01/trend.d.ts +184 -0
  584. package/dist/blocks/trend-01/trend.d.ts.map +1 -0
  585. package/dist/blocks/trend-01/trend.js +99 -0
  586. package/dist/blocks/trust-strip-01/index.d.ts +3 -0
  587. package/dist/blocks/trust-strip-01/index.d.ts.map +1 -0
  588. package/dist/blocks/trust-strip-01/index.js +1 -0
  589. package/dist/blocks/trust-strip-01/trust-strip-01.d.ts +139 -0
  590. package/dist/blocks/trust-strip-01/trust-strip-01.d.ts.map +1 -0
  591. package/dist/blocks/trust-strip-01/trust-strip-01.js +58 -0
  592. package/dist/blocks/two-factor-01/index.d.ts +3 -0
  593. package/dist/blocks/two-factor-01/index.d.ts.map +1 -0
  594. package/dist/blocks/two-factor-01/index.js +1 -0
  595. package/dist/blocks/two-factor-01/two-factor-01.d.ts +440 -0
  596. package/dist/blocks/two-factor-01/two-factor-01.d.ts.map +1 -0
  597. package/dist/blocks/two-factor-01/two-factor-01.js +273 -0
  598. package/dist/blocks/user-profile-01/index.d.ts +3 -0
  599. package/dist/blocks/user-profile-01/index.d.ts.map +1 -0
  600. package/dist/blocks/user-profile-01/index.js +1 -0
  601. package/dist/blocks/user-profile-01/user-profile-01.d.ts +258 -0
  602. package/dist/blocks/user-profile-01/user-profile-01.d.ts.map +1 -0
  603. package/dist/blocks/user-profile-01/user-profile-01.js +158 -0
  604. package/dist/blocks/verify-email-01/index.d.ts +3 -0
  605. package/dist/blocks/verify-email-01/index.d.ts.map +1 -0
  606. package/dist/blocks/verify-email-01/index.js +1 -0
  607. package/dist/blocks/verify-email-01/verify-email.d.ts +262 -0
  608. package/dist/blocks/verify-email-01/verify-email.d.ts.map +1 -0
  609. package/dist/blocks/verify-email-01/verify-email.js +190 -0
  610. package/dist/blocks/waitlist-01/index.d.ts +3 -0
  611. package/dist/blocks/waitlist-01/index.d.ts.map +1 -0
  612. package/dist/blocks/waitlist-01/index.js +1 -0
  613. package/dist/blocks/waitlist-01/waitlist.d.ts +254 -0
  614. package/dist/blocks/waitlist-01/waitlist.d.ts.map +1 -0
  615. package/dist/blocks/waitlist-01/waitlist.js +75 -0
  616. package/dist/catalog.d.ts.map +1 -1
  617. package/dist/catalog.js +1641 -1
  618. package/dist/components/index.d.ts +114 -0
  619. package/dist/components/index.d.ts.map +1 -1
  620. package/dist/components/index.js +134 -0
  621. package/dist/components/ui/accordion.d.ts.map +1 -1
  622. package/dist/components/ui/accordion.js +9 -2
  623. package/dist/components/ui/alert-dialog.d.ts.map +1 -1
  624. package/dist/components/ui/alert-dialog.js +22 -4
  625. package/dist/components/ui/announcement.d.ts +169 -0
  626. package/dist/components/ui/announcement.d.ts.map +1 -0
  627. package/dist/components/ui/announcement.js +123 -0
  628. package/dist/components/ui/avatar-group.d.ts +176 -0
  629. package/dist/components/ui/avatar-group.d.ts.map +1 -0
  630. package/dist/components/ui/avatar-group.js +135 -0
  631. package/dist/components/ui/billing-source.d.ts +293 -0
  632. package/dist/components/ui/billing-source.d.ts.map +1 -0
  633. package/dist/components/ui/billing-source.js +136 -0
  634. package/dist/components/ui/button.d.ts +16 -1
  635. package/dist/components/ui/button.d.ts.map +1 -1
  636. package/dist/components/ui/button.js +17 -2
  637. package/dist/components/ui/calendar.d.ts +9 -0
  638. package/dist/components/ui/calendar.d.ts.map +1 -1
  639. package/dist/components/ui/calendar.js +30 -2
  640. package/dist/components/ui/carousel.d.ts +7 -0
  641. package/dist/components/ui/carousel.d.ts.map +1 -1
  642. package/dist/components/ui/carousel.js +58 -1
  643. package/dist/components/ui/chart.d.ts +334 -0
  644. package/dist/components/ui/chart.d.ts.map +1 -0
  645. package/dist/components/ui/chart.js +369 -0
  646. package/dist/components/ui/checkbox.d.ts +10 -0
  647. package/dist/components/ui/checkbox.d.ts.map +1 -1
  648. package/dist/components/ui/checkbox.js +19 -1
  649. package/dist/components/ui/checklist.d.ts +262 -0
  650. package/dist/components/ui/checklist.d.ts.map +1 -0
  651. package/dist/components/ui/checklist.js +135 -0
  652. package/dist/components/ui/choice-card.d.ts +273 -0
  653. package/dist/components/ui/choice-card.d.ts.map +1 -0
  654. package/dist/components/ui/choice-card.js +138 -0
  655. package/dist/components/ui/code-block.d.ts +182 -0
  656. package/dist/components/ui/code-block.d.ts.map +1 -0
  657. package/dist/components/ui/code-block.js +108 -0
  658. package/dist/components/ui/cohort-grid.d.ts +210 -0
  659. package/dist/components/ui/cohort-grid.d.ts.map +1 -0
  660. package/dist/components/ui/cohort-grid.js +202 -0
  661. package/dist/components/ui/collapsible.d.ts +11 -0
  662. package/dist/components/ui/collapsible.d.ts.map +1 -1
  663. package/dist/components/ui/collapsible.js +13 -2
  664. package/dist/components/ui/combobox.d.ts +4 -1
  665. package/dist/components/ui/combobox.d.ts.map +1 -1
  666. package/dist/components/ui/combobox.js +20 -4
  667. package/dist/components/ui/command-palette.d.ts +11 -0
  668. package/dist/components/ui/command-palette.d.ts.map +1 -1
  669. package/dist/components/ui/command-palette.js +49 -3
  670. package/dist/components/ui/contribution-graph.d.ts +156 -0
  671. package/dist/components/ui/contribution-graph.d.ts.map +1 -0
  672. package/dist/components/ui/contribution-graph.js +170 -0
  673. package/dist/components/ui/creatable-combobox.d.ts +153 -0
  674. package/dist/components/ui/creatable-combobox.d.ts.map +1 -0
  675. package/dist/components/ui/creatable-combobox.js +285 -0
  676. package/dist/components/ui/data-toolbar.d.ts +133 -0
  677. package/dist/components/ui/data-toolbar.d.ts.map +1 -0
  678. package/dist/components/ui/data-toolbar.js +67 -0
  679. package/dist/components/ui/date-picker.d.ts.map +1 -1
  680. package/dist/components/ui/date-picker.js +9 -1
  681. package/dist/components/ui/dialog.d.ts +31 -2
  682. package/dist/components/ui/dialog.d.ts.map +1 -1
  683. package/dist/components/ui/dialog.js +40 -6
  684. package/dist/components/ui/drawer.d.ts +270 -0
  685. package/dist/components/ui/drawer.d.ts.map +1 -0
  686. package/dist/components/ui/drawer.js +241 -0
  687. package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
  688. package/dist/components/ui/dropdown-menu.js +6 -1
  689. package/dist/components/ui/dropzone.d.ts +147 -0
  690. package/dist/components/ui/dropzone.d.ts.map +1 -0
  691. package/dist/components/ui/dropzone.js +141 -0
  692. package/dist/components/ui/emoji-picker.d.ts +328 -0
  693. package/dist/components/ui/emoji-picker.d.ts.map +1 -0
  694. package/dist/components/ui/emoji-picker.js +278 -0
  695. package/dist/components/ui/file-upload.d.ts +152 -0
  696. package/dist/components/ui/file-upload.d.ts.map +1 -0
  697. package/dist/components/ui/file-upload.js +101 -0
  698. package/dist/components/ui/filter-panel.d.ts +164 -0
  699. package/dist/components/ui/filter-panel.d.ts.map +1 -0
  700. package/dist/components/ui/filter-panel.js +91 -0
  701. package/dist/components/ui/form-dialog.d.ts +257 -0
  702. package/dist/components/ui/form-dialog.d.ts.map +1 -0
  703. package/dist/components/ui/form-dialog.js +176 -0
  704. package/dist/components/ui/form-wizard.d.ts +251 -0
  705. package/dist/components/ui/form-wizard.d.ts.map +1 -0
  706. package/dist/components/ui/form-wizard.js +151 -0
  707. package/dist/components/ui/image-list-field.d.ts +232 -0
  708. package/dist/components/ui/image-list-field.d.ts.map +1 -0
  709. package/dist/components/ui/image-list-field.js +168 -0
  710. package/dist/components/ui/image-zoom.d.ts +164 -0
  711. package/dist/components/ui/image-zoom.d.ts.map +1 -0
  712. package/dist/components/ui/image-zoom.js +169 -0
  713. package/dist/components/ui/intensity-grid.d.ts +270 -0
  714. package/dist/components/ui/intensity-grid.d.ts.map +1 -0
  715. package/dist/components/ui/intensity-grid.js +211 -0
  716. package/dist/components/ui/lifecycle-button.d.ts +276 -0
  717. package/dist/components/ui/lifecycle-button.d.ts.map +1 -0
  718. package/dist/components/ui/lifecycle-button.js +144 -0
  719. package/dist/components/ui/lightbox.d.ts +165 -0
  720. package/dist/components/ui/lightbox.d.ts.map +1 -0
  721. package/dist/components/ui/lightbox.js +130 -0
  722. package/dist/components/ui/list-panel.d.ts +288 -0
  723. package/dist/components/ui/list-panel.d.ts.map +1 -0
  724. package/dist/components/ui/list-panel.js +139 -0
  725. package/dist/components/ui/mega-menu.d.ts +244 -0
  726. package/dist/components/ui/mega-menu.d.ts.map +1 -0
  727. package/dist/components/ui/mega-menu.js +97 -0
  728. package/dist/components/ui/menubar.d.ts +9 -0
  729. package/dist/components/ui/menubar.d.ts.map +1 -1
  730. package/dist/components/ui/menubar.js +10 -1
  731. package/dist/components/ui/metric.d.ts +123 -0
  732. package/dist/components/ui/metric.d.ts.map +1 -0
  733. package/dist/components/ui/metric.js +68 -0
  734. package/dist/components/ui/mini-calendar.d.ts +143 -0
  735. package/dist/components/ui/mini-calendar.d.ts.map +1 -0
  736. package/dist/components/ui/mini-calendar.js +261 -0
  737. package/dist/components/ui/mode-toggle.d.ts +102 -0
  738. package/dist/components/ui/mode-toggle.d.ts.map +1 -0
  739. package/dist/components/ui/mode-toggle.js +83 -0
  740. package/dist/components/ui/money-field.d.ts +200 -0
  741. package/dist/components/ui/money-field.d.ts.map +1 -0
  742. package/dist/components/ui/money-field.js +215 -0
  743. package/dist/components/ui/multi-combobox.d.ts +181 -0
  744. package/dist/components/ui/multi-combobox.d.ts.map +1 -0
  745. package/dist/components/ui/multi-combobox.js +297 -0
  746. package/dist/components/ui/native-select.d.ts.map +1 -1
  747. package/dist/components/ui/native-select.js +8 -1
  748. package/dist/components/ui/navigation-menu.d.ts +7 -0
  749. package/dist/components/ui/navigation-menu.d.ts.map +1 -1
  750. package/dist/components/ui/navigation-menu.js +8 -1
  751. package/dist/components/ui/nested-tabs.d.ts +188 -0
  752. package/dist/components/ui/nested-tabs.d.ts.map +1 -0
  753. package/dist/components/ui/nested-tabs.js +75 -0
  754. package/dist/components/ui/number-field.d.ts +40 -7
  755. package/dist/components/ui/number-field.d.ts.map +1 -1
  756. package/dist/components/ui/number-field.js +37 -7
  757. package/dist/components/ui/overflow-actions.d.ts +169 -0
  758. package/dist/components/ui/overflow-actions.d.ts.map +1 -0
  759. package/dist/components/ui/overflow-actions.js +266 -0
  760. package/dist/components/ui/pack-swatch.d.ts +177 -0
  761. package/dist/components/ui/pack-swatch.d.ts.map +1 -0
  762. package/dist/components/ui/pack-swatch.js +117 -0
  763. package/dist/components/ui/pack-switcher.d.ts +221 -0
  764. package/dist/components/ui/pack-switcher.d.ts.map +1 -0
  765. package/dist/components/ui/pack-switcher.js +94 -0
  766. package/dist/components/ui/pagination.d.ts +22 -0
  767. package/dist/components/ui/pagination.d.ts.map +1 -1
  768. package/dist/components/ui/pagination.js +23 -1
  769. package/dist/components/ui/password-field.d.ts +122 -0
  770. package/dist/components/ui/password-field.d.ts.map +1 -0
  771. package/dist/components/ui/password-field.js +69 -0
  772. package/dist/components/ui/pill.d.ts +172 -0
  773. package/dist/components/ui/pill.d.ts.map +1 -0
  774. package/dist/components/ui/pill.js +102 -0
  775. package/dist/components/ui/platform-modifier-key.d.ts +129 -0
  776. package/dist/components/ui/platform-modifier-key.d.ts.map +1 -0
  777. package/dist/components/ui/platform-modifier-key.js +125 -0
  778. package/dist/components/ui/popover.d.ts.map +1 -1
  779. package/dist/components/ui/popover.js +8 -1
  780. package/dist/components/ui/price.d.ts +144 -0
  781. package/dist/components/ui/price.d.ts.map +1 -0
  782. package/dist/components/ui/price.js +107 -0
  783. package/dist/components/ui/progress.d.ts +55 -1
  784. package/dist/components/ui/progress.d.ts.map +1 -1
  785. package/dist/components/ui/progress.js +110 -2
  786. package/dist/components/ui/prompt-composer.d.ts +302 -0
  787. package/dist/components/ui/prompt-composer.d.ts.map +1 -0
  788. package/dist/components/ui/prompt-composer.js +145 -0
  789. package/dist/components/ui/proportion-list.d.ts +188 -0
  790. package/dist/components/ui/proportion-list.d.ts.map +1 -0
  791. package/dist/components/ui/proportion-list.js +134 -0
  792. package/dist/components/ui/prose.d.ts +23 -0
  793. package/dist/components/ui/prose.d.ts.map +1 -1
  794. package/dist/components/ui/prose.js +30 -1
  795. package/dist/components/ui/radio-group.d.ts +7 -0
  796. package/dist/components/ui/radio-group.d.ts.map +1 -1
  797. package/dist/components/ui/radio-group.js +8 -1
  798. package/dist/components/ui/range-field.d.ts +158 -0
  799. package/dist/components/ui/range-field.d.ts.map +1 -0
  800. package/dist/components/ui/range-field.js +208 -0
  801. package/dist/components/ui/relative-time.d.ts +116 -0
  802. package/dist/components/ui/relative-time.d.ts.map +1 -0
  803. package/dist/components/ui/relative-time.js +67 -0
  804. package/dist/components/ui/reorderable-list.d.ts +262 -0
  805. package/dist/components/ui/reorderable-list.d.ts.map +1 -0
  806. package/dist/components/ui/reorderable-list.js +325 -0
  807. package/dist/components/ui/repeatable-rows.d.ts +241 -0
  808. package/dist/components/ui/repeatable-rows.d.ts.map +1 -0
  809. package/dist/components/ui/repeatable-rows.js +221 -0
  810. package/dist/components/ui/repo-stars.d.ts +165 -0
  811. package/dist/components/ui/repo-stars.d.ts.map +1 -0
  812. package/dist/components/ui/repo-stars.js +92 -0
  813. package/dist/components/ui/resizable.d.ts +24 -0
  814. package/dist/components/ui/resizable.d.ts.map +1 -1
  815. package/dist/components/ui/resizable.js +96 -4
  816. package/dist/components/ui/search-dialog.d.ts +40 -5
  817. package/dist/components/ui/search-dialog.d.ts.map +1 -1
  818. package/dist/components/ui/search-dialog.js +94 -16
  819. package/dist/components/ui/search-field.d.ts +159 -0
  820. package/dist/components/ui/search-field.d.ts.map +1 -0
  821. package/dist/components/ui/search-field.js +98 -0
  822. package/dist/components/ui/section.d.ts +108 -1
  823. package/dist/components/ui/section.d.ts.map +1 -1
  824. package/dist/components/ui/section.js +109 -3
  825. package/dist/components/ui/select.d.ts.map +1 -1
  826. package/dist/components/ui/select.js +9 -1
  827. package/dist/components/ui/selection-toolbar.d.ts +166 -0
  828. package/dist/components/ui/selection-toolbar.d.ts.map +1 -0
  829. package/dist/components/ui/selection-toolbar.js +139 -0
  830. package/dist/components/ui/sidebar.d.ts +29 -0
  831. package/dist/components/ui/sidebar.d.ts.map +1 -1
  832. package/dist/components/ui/sidebar.js +35 -2
  833. package/dist/components/ui/signal-field.d.ts.map +1 -1
  834. package/dist/components/ui/signal-field.js +1 -1
  835. package/dist/components/ui/slider.d.ts +7 -0
  836. package/dist/components/ui/slider.d.ts.map +1 -1
  837. package/dist/components/ui/slider.js +32 -1
  838. package/dist/components/ui/sparkline.d.ts +117 -0
  839. package/dist/components/ui/sparkline.d.ts.map +1 -0
  840. package/dist/components/ui/sparkline.js +113 -0
  841. package/dist/components/ui/spinner.d.ts.map +1 -1
  842. package/dist/components/ui/spinner.js +13 -0
  843. package/dist/components/ui/split-button.d.ts +207 -0
  844. package/dist/components/ui/split-button.d.ts.map +1 -0
  845. package/dist/components/ui/split-button.js +75 -0
  846. package/dist/components/ui/stateful-table.d.ts +345 -0
  847. package/dist/components/ui/stateful-table.d.ts.map +1 -0
  848. package/dist/components/ui/stateful-table.js +169 -0
  849. package/dist/components/ui/status.d.ts +99 -0
  850. package/dist/components/ui/status.d.ts.map +1 -0
  851. package/dist/components/ui/status.js +63 -0
  852. package/dist/components/ui/stepper.d.ts +155 -0
  853. package/dist/components/ui/stepper.d.ts.map +1 -0
  854. package/dist/components/ui/stepper.js +83 -0
  855. package/dist/components/ui/steps.d.ts +141 -0
  856. package/dist/components/ui/steps.d.ts.map +1 -0
  857. package/dist/components/ui/steps.js +128 -0
  858. package/dist/components/ui/switch.d.ts +8 -0
  859. package/dist/components/ui/switch.d.ts.map +1 -1
  860. package/dist/components/ui/switch.js +12 -1
  861. package/dist/components/ui/tabs.d.ts +21 -2
  862. package/dist/components/ui/tabs.d.ts.map +1 -1
  863. package/dist/components/ui/tabs.js +23 -4
  864. package/dist/components/ui/tag-group.d.ts +154 -0
  865. package/dist/components/ui/tag-group.d.ts.map +1 -0
  866. package/dist/components/ui/tag-group.js +111 -0
  867. package/dist/components/ui/task-progress.d.ts +149 -0
  868. package/dist/components/ui/task-progress.d.ts.map +1 -0
  869. package/dist/components/ui/task-progress.js +110 -0
  870. package/dist/components/ui/text-format-toolbar.d.ts +211 -0
  871. package/dist/components/ui/text-format-toolbar.d.ts.map +1 -0
  872. package/dist/components/ui/text-format-toolbar.js +186 -0
  873. package/dist/components/ui/timeline.d.ts.map +1 -1
  874. package/dist/components/ui/timeline.js +10 -1
  875. package/dist/components/ui/toast.d.ts +32 -10
  876. package/dist/components/ui/toast.d.ts.map +1 -1
  877. package/dist/components/ui/toast.js +150 -47
  878. package/dist/components/ui/toggle-group.d.ts +14 -5
  879. package/dist/components/ui/toggle-group.d.ts.map +1 -1
  880. package/dist/components/ui/toggle-group.js +15 -1
  881. package/dist/components/ui/toggle.d.ts.map +1 -1
  882. package/dist/components/ui/toggle.js +9 -1
  883. package/dist/components/ui/tree.d.ts +8 -0
  884. package/dist/components/ui/tree.d.ts.map +1 -1
  885. package/dist/components/ui/tree.js +92 -13
  886. package/dist/components/ui/video-player.d.ts +236 -0
  887. package/dist/components/ui/video-player.d.ts.map +1 -0
  888. package/dist/components/ui/video-player.js +72 -0
  889. package/dist/fonts/inter-latin-400-italic.woff2 +0 -0
  890. package/dist/index.d.ts +112 -0
  891. package/dist/index.d.ts.map +1 -1
  892. package/dist/index.js +72 -0
  893. package/dist/lib/utils.d.ts +29 -0
  894. package/dist/lib/utils.d.ts.map +1 -1
  895. package/dist/lib/utils.js +35 -0
  896. package/dist/live/index.d.ts +10 -3
  897. package/dist/live/index.d.ts.map +1 -1
  898. package/dist/live/index.js +12 -3
  899. package/dist/live/run-stream-01/run-stream.js +4 -4
  900. package/dist/live/tool-ledger-01/index.d.ts +3 -0
  901. package/dist/live/tool-ledger-01/index.d.ts.map +1 -0
  902. package/dist/live/tool-ledger-01/index.js +1 -0
  903. package/dist/live/tool-ledger-01/tool-ledger.d.ts +348 -0
  904. package/dist/live/tool-ledger-01/tool-ledger.d.ts.map +1 -0
  905. package/dist/live/tool-ledger-01/tool-ledger.js +245 -0
  906. package/dist/pages/about-page/index.d.ts +306 -0
  907. package/dist/pages/about-page/index.d.ts.map +1 -0
  908. package/dist/pages/about-page/index.js +161 -0
  909. package/dist/pages/careers-page/index.d.ts +288 -0
  910. package/dist/pages/careers-page/index.d.ts.map +1 -0
  911. package/dist/pages/careers-page/index.js +182 -0
  912. package/dist/pages/changelog-page/index.d.ts +255 -0
  913. package/dist/pages/changelog-page/index.d.ts.map +1 -0
  914. package/dist/pages/changelog-page/index.js +86 -0
  915. package/dist/pages/contact-page/index.d.ts +261 -0
  916. package/dist/pages/contact-page/index.d.ts.map +1 -0
  917. package/dist/pages/contact-page/index.js +136 -0
  918. package/dist/pages/docs-shell/docs-shell.d.ts +8 -0
  919. package/dist/pages/docs-shell/docs-shell.d.ts.map +1 -1
  920. package/dist/pages/docs-shell/docs-shell.js +24 -7
  921. package/dist/pages/error-page/index.d.ts +188 -0
  922. package/dist/pages/error-page/index.d.ts.map +1 -0
  923. package/dist/pages/error-page/index.js +98 -0
  924. package/dist/pages/index.d.ts +10 -0
  925. package/dist/pages/index.d.ts.map +1 -1
  926. package/dist/pages/index.js +14 -0
  927. package/dist/pages/legal-page/index.d.ts +194 -0
  928. package/dist/pages/legal-page/index.d.ts.map +1 -0
  929. package/dist/pages/legal-page/index.js +99 -0
  930. package/dist/pages/onboarding-page/index.d.ts +199 -0
  931. package/dist/pages/onboarding-page/index.d.ts.map +1 -0
  932. package/dist/pages/onboarding-page/index.js +71 -0
  933. package/dist/pages/pricing-page/index.d.ts +286 -0
  934. package/dist/pages/pricing-page/index.d.ts.map +1 -0
  935. package/dist/pages/pricing-page/index.js +139 -0
  936. package/dist/pages/search-page/index.d.ts +305 -0
  937. package/dist/pages/search-page/index.d.ts.map +1 -0
  938. package/dist/pages/search-page/index.js +142 -0
  939. package/dist/pages/status-page/index.d.ts +366 -0
  940. package/dist/pages/status-page/index.d.ts.map +1 -0
  941. package/dist/pages/status-page/index.js +136 -0
  942. package/dist/styles.css +1003 -55
  943. package/package.json +9 -3
@@ -35,7 +35,10 @@ import { cn } from '../../lib/utils.js';
35
35
  * open and explains that the query found nothing, because a combobox that closed
36
36
  * itself on a non-match tells the reader their keystroke broke the control. The
37
37
  * explanation is a prop, since the sentence is the caller's and the query is put
38
- * into it.
38
+ * into it. The message is a sibling of the listbox and not inside it, because a
39
+ * listbox owns `option` and `group` and nothing else, and the field's
40
+ * `aria-controls` points at the popup rather than at the listbox, because there is
41
+ * no listbox in that state and `aria-controls` is required on an expanded combobox.
39
42
  *
40
43
  * **The field keeps the caret for the whole interaction.** The arrows move a
41
44
  * highlight through the list and leave focus where it is, so a reader can keep
@@ -67,6 +70,10 @@ function Combobox({ label, items, value, defaultValue = null, onValueChange, emp
67
70
  const generated = useId();
68
71
  const inputId = id ?? generated;
69
72
  const listId = `${generated}-list`;
73
+ // The popup the field controls. Separate from the listbox id because the listbox is
74
+ // not rendered at all when nothing matched, and `aria-controls` is a required
75
+ // attribute on an expanded combobox.
76
+ const popupId = `${generated}-popup`;
70
77
  const chosen = value === undefined ? ownValue : value;
71
78
  /** The chosen option, resolved against the option set the caller passed. */
72
79
  const chosenItem = useMemo(() => items.find((item) => item.value === chosen) ?? null, [items, chosen]);
@@ -208,7 +215,7 @@ function Combobox({ label, items, value, defaultValue = null, onValueChange, emp
208
215
  list.querySelector('[data-active="true"]')?.scrollIntoView({ block: 'nearest' });
209
216
  }, [activeIndex, isOpen]);
210
217
  const activeRow = isOpen ? ranked[activeIndex] : undefined;
211
- return (_jsxs("div", { "data-slot": "combobox", className: cn('relative w-full', className), children: [_jsx("input", { "data-slot": "combobox-input", id: inputId, type: "text", role: "combobox", autoComplete: "off", "aria-expanded": isOpen && ranked.length > 0, "aria-controls": listId, "aria-haspopup": "listbox", "aria-autocomplete": "list", "aria-label": label, "aria-required": required || undefined, "aria-activedescendant": activeRow === undefined ? undefined : `${listId}-option-${activeIndex}`, ...(describedBy === undefined ? null : { 'aria-describedby': describedBy }), ...(placeholder === undefined ? null : { placeholder }), value: query, disabled: disabled, onChange: (event) => {
218
+ return (_jsxs("div", { "data-slot": "combobox", className: cn('relative w-full', className), children: [_jsx("input", { "data-slot": "combobox-input", id: inputId, type: "text", role: "combobox", autoComplete: "off", "aria-expanded": isOpen, "aria-controls": isOpen ? popupId : undefined, "aria-haspopup": "listbox", "aria-autocomplete": "list", "aria-label": label, "aria-required": required || undefined, "aria-activedescendant": activeRow === undefined ? undefined : `${listId}-option-${activeIndex}`, ...(describedBy === undefined ? null : { 'aria-describedby': describedBy }), ...(placeholder === undefined ? null : { placeholder }), value: query, disabled: disabled, onChange: (event) => {
212
219
  const next = event.target.value;
213
220
  setQuery(next);
214
221
  setActive(0);
@@ -227,7 +234,16 @@ function Combobox({ label, items, value, defaultValue = null, onValueChange, emp
227
234
  }, onBlur: () => {
228
235
  setOpen(false);
229
236
  restore();
230
- }, onKeyDown: onKeyDown, className: cn('border-input bg-background text-foreground placeholder:text-muted-foreground flex h-9 w-full min-w-0 rounded-md border px-3 py-1 text-base shadow-xs transition-[color,box-shadow] duration-fast ease-out outline-none md:text-sm', 'focus-visible:border-ring focus-visible:ring-ring focus-visible:ring-[3px]', 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50') }), name === undefined ? null : (_jsx("input", { type: "hidden", name: name, ...(form === undefined ? null : { form }), value: chosen ?? '', readOnly: true })), isOpen ? (ranked.length === 0 ? (_jsx("div", { "data-slot": "combobox-popup", className: "bg-popover text-popover-foreground absolute z-50 mt-1 w-full min-w-(--anchor-width) rounded-md border p-1 shadow-md", children: _jsxs("p", { "data-slot": "combobox-empty", role: "status", className: "text-muted-foreground px-3 py-6 text-center text-sm", children: [empty.message(trimmed), empty.hint === undefined ? null : (_jsx("span", { className: "mt-1 block text-xs", children: empty.hint }))] }) })) : (_jsx("div", { "data-slot": "combobox-popup", className: "bg-popover text-popover-foreground absolute z-50 mt-1 w-full min-w-(--anchor-width) rounded-md border p-1 shadow-md", children: _jsx("div", { "data-slot": "combobox-list", id: listId, ref: listRef, role: "listbox", "aria-label": label, className: "max-h-72 overflow-y-auto", children: ranked.map((hit, index) => {
237
+ }, onKeyDown: onKeyDown, className: cn('border-input bg-background text-foreground placeholder:text-muted-foreground flex h-9 w-full min-w-0 rounded-md border px-3 py-1 text-base shadow-xs transition-[color,box-shadow] duration-fast ease-out outline-none md:text-sm', 'focus-visible:border-ring focus-visible:ring-ring focus-visible:ring-[3px]', 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50') }), name === undefined ? null : (_jsx("input", { type: "hidden", name: name, ...(form === undefined ? null : { form }), value: chosen ?? '', readOnly: true })), isOpen ? (
238
+ /*
239
+ * One popup with two children rather than two popups, because the empty
240
+ * message is a sibling of the listbox and not inside it: a listbox owns
241
+ * `option` and `group` and nothing else, so a `<p>` in the empty branch was a
242
+ * phantom row the index counted and no reader could choose. The id on the
243
+ * panel is what the field's `aria-controls` points at, so that reference
244
+ * resolves whether or not there is a listbox to point at.
245
+ */
246
+ _jsx("div", { id: popupId, "data-slot": "combobox-popup", className: "bg-popover text-popover-foreground absolute z-50 mt-1 w-full min-w-(--anchor-width) rounded-md border p-1 shadow-md", children: ranked.length === 0 ? (_jsxs("p", { "data-slot": "combobox-empty", role: "status", className: "text-muted-foreground px-3 py-6 text-center text-sm", children: [empty.message(trimmed), empty.hint === undefined ? null : (_jsx("span", { className: "mt-1 block text-xs", children: empty.hint }))] })) : (_jsx("div", { "data-slot": "combobox-list", id: listId, ref: listRef, role: "listbox", "aria-label": label, className: "max-h-72 overflow-y-auto", children: ranked.map((hit, index) => {
231
247
  const isActive = index === activeIndex;
232
248
  return (_jsxs("div", { id: `${listId}-option-${index}`, "data-slot": "combobox-option", "data-active": isActive, role: "option", "aria-selected": hit.item.value === chosen, "aria-disabled": hit.item.disabled || undefined, onMouseEnter: () => {
233
249
  if (!hit.item.disabled)
@@ -238,6 +254,6 @@ function Combobox({ label, items, value, defaultValue = null, onValueChange, emp
238
254
  // pointer choice is a blur, and the blur is the path that puts
239
255
  // the old answer back into the field.
240
256
  onMouseDown: (event) => event.preventDefault(), onClick: () => run(hit.item), className: cn('flex cursor-pointer items-baseline justify-between gap-3 rounded-sm px-3 py-2 text-sm outline-none', 'focus-visible:ring-ring focus-visible:ring-[3px]', hit.item.disabled && 'text-muted-foreground cursor-not-allowed opacity-50', !hit.item.disabled && isActive && 'bg-accent text-accent-foreground', !hit.item.disabled && !isActive && 'text-muted-foreground hover:text-foreground'), children: [_jsx("span", { className: "min-w-0 truncate", children: hit.range === undefined ? (hit.item.label) : (_jsxs(_Fragment, { children: [hit.item.label.slice(0, hit.range[0]), _jsx("strong", { className: "font-semibold", children: hit.item.label.slice(hit.range[0], hit.range[1]) }), hit.item.label.slice(hit.range[1])] })) }), hit.item.hint === undefined ? null : (_jsx("span", { className: "shrink-0 text-xs", children: hit.item.hint }))] }, hit.item.value));
241
- }) }) }))) : null] }));
257
+ }) })) })) : null] }));
242
258
  }
243
259
  export { Combobox };
@@ -100,6 +100,17 @@ export interface CommandPaletteProps {
100
100
  * highlight through the list rather than moving focus into it, so a reader can keep
101
101
  * typing while they choose, and the highlighted row carries the state. That is the
102
102
  * combobox pattern and it is the reason the arrows do not steal the caret.
103
+ *
104
+ * **A query that matched nothing is a popup that is still open.** The panel stays,
105
+ * it says so in the caller's sentence, and the field announces itself expanded,
106
+ * because a palette that closed itself on a non-match tells the reader their
107
+ * keystroke broke it. The message is a sibling of the listbox rather than a child of
108
+ * it, because a listbox owns `option` and `group` and nothing else, and
109
+ * `aria-controls` points at the palette rather than at the listbox, because the
110
+ * listbox is not on the page in that state and `aria-controls` is required on an
111
+ * expanded combobox. `Combobox`, `MultiCombobox` and `CreatableCombobox` make the
112
+ * same choices, and they make them here rather than each answering the question
113
+ * again.
103
114
  */
104
115
  declare function CommandPalette({ open, onOpenChange, label, inputLabel, placeholder, groups, suggest, empty, className, }: CommandPaletteProps): import("react").JSX.Element;
105
116
  export { CommandPalette };
@@ -1 +1 @@
1
- {"version":3,"file":"command-palette.d.ts","sourceRoot":"","sources":["../../../src/components/ui/command-palette.tsx"],"names":[],"mappings":"AAQA;;;;;;;;;GASG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,oBAAoB;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,gDAAgD;IAChD,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC5B,sCAAsC;IACtC,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AAED,0DAA0D;AAC1D,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,SAAS,WAAW,EAAE,CAAA;CAC9B,CAAA;AAED,6CAA6C;AAC7C,MAAM,WAAW,mBAAmB;IAClC,mCAAmC;IACnC,IAAI,EAAE,OAAO,CAAA;IACb,2CAA2C;IAC3C,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAA;IACb,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAA;IAClB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,6BAA6B;IAC7B,MAAM,EAAE,SAAS,YAAY,EAAE,CAAA;IAC/B;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAA;KAAE,CAAA;IAC1D;;;;;;OAMG;IACH,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC5D,mBAAmB;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAeD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,iBAAS,cAAc,CAAC,EACtB,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,UAAU,EACV,WAAW,EACX,MAAM,EACN,OAAO,EACP,KAAK,EACL,SAAS,GACV,EAAE,mBAAmB,+BAqPrB;AAED,OAAO,EAAE,cAAc,EAAE,CAAA"}
1
+ {"version":3,"file":"command-palette.d.ts","sourceRoot":"","sources":["../../../src/components/ui/command-palette.tsx"],"names":[],"mappings":"AAQA;;;;;;;;;GASG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,oBAAoB;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,gDAAgD;IAChD,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC5B,sCAAsC;IACtC,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AAED,0DAA0D;AAC1D,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,SAAS,WAAW,EAAE,CAAA;CAC9B,CAAA;AAED,6CAA6C;AAC7C,MAAM,WAAW,mBAAmB;IAClC,mCAAmC;IACnC,IAAI,EAAE,OAAO,CAAA;IACb,2CAA2C;IAC3C,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAA;IACb,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAA;IAClB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,6BAA6B;IAC7B,MAAM,EAAE,SAAS,YAAY,EAAE,CAAA;IAC/B;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAA;KAAE,CAAA;IAC1D;;;;;;OAMG;IACH,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC5D,mBAAmB;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAeD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,iBAAS,cAAc,CAAC,EACtB,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,UAAU,EACV,WAAW,EACX,MAAM,EACN,OAAO,EACP,KAAK,EACL,SAAS,GACV,EAAE,mBAAmB,+BAiUrB;AAED,OAAO,EAAE,cAAc,EAAE,CAAA"}
@@ -32,12 +32,27 @@ import { cn } from '../../lib/utils.js';
32
32
  * highlight through the list rather than moving focus into it, so a reader can keep
33
33
  * typing while they choose, and the highlighted row carries the state. That is the
34
34
  * combobox pattern and it is the reason the arrows do not steal the caret.
35
+ *
36
+ * **A query that matched nothing is a popup that is still open.** The panel stays,
37
+ * it says so in the caller's sentence, and the field announces itself expanded,
38
+ * because a palette that closed itself on a non-match tells the reader their
39
+ * keystroke broke it. The message is a sibling of the listbox rather than a child of
40
+ * it, because a listbox owns `option` and `group` and nothing else, and
41
+ * `aria-controls` points at the palette rather than at the listbox, because the
42
+ * listbox is not on the page in that state and `aria-controls` is required on an
43
+ * expanded combobox. `Combobox`, `MultiCombobox` and `CreatableCombobox` make the
44
+ * same choices, and they make them here rather than each answering the question
45
+ * again.
35
46
  */
36
47
  function CommandPalette({ open, onOpenChange, label, inputLabel, placeholder, groups, suggest, empty, className, }) {
37
48
  const [query, setQuery] = useState('');
38
49
  const [active, setActive] = useState(0);
39
50
  const listRef = useRef(null);
40
51
  const titleId = useId();
52
+ // The surface the field controls, which is the palette itself. Separate from the
53
+ // listbox id because the listbox is not rendered at all when nothing matched, and
54
+ // `aria-controls` is a required attribute on an expanded combobox.
55
+ const popupId = `${titleId}-popup`;
41
56
  const trimmed = query.trim();
42
57
  /**
43
58
  * The ranked result: groups in their declared order, items within a group by
@@ -153,6 +168,10 @@ function CommandPalette({ open, onOpenChange, label, inputLabel, placeholder, gr
153
168
  // reader is already in. The DialogTitle is still rendered and still names
154
169
  // the dialog for assistive technology, which is the whole reason it
155
170
  // exists separately from anything visible.
171
+ //
172
+ // The id is the field's `aria-controls`. It is on the surface rather than on
173
+ // the listbox because the listbox is not rendered when nothing matched, and
174
+ // the field is expanded whenever the palette is open.
156
175
  , {
157
176
  // The palette is a wide, top-anchored surface rather than a centred card,
158
177
  // and it carries no visible heading: the search field is what a reader
@@ -160,17 +179,44 @@ function CommandPalette({ open, onOpenChange, label, inputLabel, placeholder, gr
160
179
  // reader is already in. The DialogTitle is still rendered and still names
161
180
  // the dialog for assistive technology, which is the whole reason it
162
181
  // exists separately from anything visible.
163
- side: "top", showCloseButton: false, className: cn('max-w-xl gap-0 p-0', className), children: [_jsx(DialogTitle, { className: "sr-only", children: label }), _jsx("div", { className: "border-border flex items-center border-b px-3", children: _jsx("input", { "data-slot": "command-palette-input", type: "text", role: "combobox", "aria-expanded": flat.length > 0, "aria-controls": `${titleId}-list`, "aria-activedescendant": flat[activeIndex] === undefined ? undefined : `${titleId}-item-${flat[activeIndex]?.id}`, "aria-label": inputLabel, ...(placeholder === undefined ? null : { placeholder }), value: query, onChange: (event) => {
182
+ //
183
+ // The id is the field's `aria-controls`. It is on the surface rather than on
184
+ // the listbox because the listbox is not rendered when nothing matched, and
185
+ // the field is expanded whenever the palette is open.
186
+ id: popupId, side: "top", showCloseButton: false, className: cn('max-w-overlay-palette gap-0 p-0', className), children: [_jsx(DialogTitle, { className: "sr-only", children: label }), _jsx("div", { className: "border-border flex items-center border-b px-3", children: _jsx("input", { "data-slot": "command-palette-input", type: "text", role: "combobox", "aria-expanded": open, "aria-controls": open ? popupId : undefined, "aria-activedescendant": flat[activeIndex] === undefined ? undefined : `${titleId}-item-${flat[activeIndex]?.id}`, "aria-label": inputLabel, ...(placeholder === undefined ? null : { placeholder }), value: query, onChange: (event) => {
164
187
  setQuery(event.target.value);
165
188
  setActive(0);
166
189
  }, onKeyDown: onKeyDown,
167
190
  // The field is focused when the palette opens, so a reader can type
168
191
  // immediately. Nothing else in the surface is focusable, which is what
169
192
  // makes this a combobox rather than a list of buttons.
170
- autoFocus: true, className: "placeholder:text-muted-foreground h-12 w-full bg-transparent text-sm outline-none" }) }), _jsx("div", { "data-slot": "command-palette-list", id: `${titleId}-list`, ref: listRef, role: "listbox", "aria-label": label, className: "max-h-80 overflow-y-auto p-1", children: results.length === 0 ? (_jsxs("p", { "data-slot": "command-palette-empty", className: "text-muted-foreground px-3 py-6 text-center text-sm", children: [empty.message(trimmed), empty.hint === undefined ? null : (_jsx("span", { className: "mt-1 block text-xs", children: empty.hint }))] })) : (results.map((group) => (_jsxs("div", { "data-slot": "command-palette-group", className: "mb-1 last:mb-0", children: [_jsx("div", { "data-slot": "command-palette-group-label", className: "text-muted-foreground bg-popover text-xs font-medium tracking-wide uppercase sticky top-0 px-3 py-1.5", children: group.label }), group.hits.map((hit) => {
193
+ autoFocus: true,
194
+ // The ring is at full strength, and it is drawn at all because this is
195
+ // the control focus lands in and `outline-none` is what removed the
196
+ // browser's indicator from it. A field with no visible focus is a field
197
+ // a keyboard reader cannot say they are inside. The ring and not the
198
+ // border, as `Command` draws it: this field has no border to colour.
199
+ //
200
+ // `text-base` then `md:text-sm`, which is the pair `Input`, `Textarea`,
201
+ // `Combobox`, `Form` and `NumberField` all carry and which this field
202
+ // was the one exception to. The reason is iOS Safari and not a visual
203
+ // one: it zooms the viewport on a focused input under 16 pixels and does
204
+ // not zoom back out, so a palette opened on a phone was a page the reader
205
+ // could not get out of.
206
+ className: "placeholder:text-muted-foreground h-12 w-full bg-transparent text-base outline-none focus-visible:ring-ring focus-visible:ring-[3px] md:text-sm" }) }), results.length === 0 ? (_jsx("div", { "data-slot": "command-palette-empty-state", className: "max-h-80 overflow-y-auto p-1", children: _jsxs("p", { "data-slot": "command-palette-empty", role: "status", className: "text-muted-foreground px-3 py-6 text-center text-sm", children: [empty.message(trimmed), empty.hint === undefined ? null : (_jsx("span", { className: "mt-1 block text-xs", children: empty.hint }))] }) })) : (_jsx("div", { "data-slot": "command-palette-list", id: `${titleId}-list`, ref: listRef, role: "listbox", "aria-label": label, className: "max-h-80 overflow-y-auto p-1", children: results.map((group) => (
207
+ /*
208
+ * `role="group"` and not a bare `<div>`. A listbox owns `option` and
209
+ * `group` and nothing else, so a wrapper with no role puts its options
210
+ * straight into the listbox and the heading beside them becomes an
211
+ * unowned loose text node: a reader hears the heading as another row
212
+ * and has no way to ask what the rows under it belong to. The name is
213
+ * `aria-labelledby` on the heading that is already drawn rather than a
214
+ * second copy of the words in an attribute that could drift from it.
215
+ */
216
+ _jsxs("div", { role: "group", "aria-labelledby": `${titleId}-group-${group.id}`, "data-slot": "command-palette-group", className: "mb-1 last:mb-0", children: [_jsx("div", { id: `${titleId}-group-${group.id}`, "data-slot": "command-palette-group-label", className: "text-muted-foreground bg-popover text-xs font-medium tracking-wide uppercase sticky top-0 px-3 py-1.5", children: group.label }), group.hits.map((hit) => {
171
217
  const index = flat.indexOf(hit.item);
172
218
  const isActive = index === activeIndex;
173
219
  return (_jsxs("div", { id: `${titleId}-item-${hit.item.id}`, "data-slot": "command-palette-item", "data-active": isActive, role: "option", "aria-selected": isActive, onMouseEnter: () => setActive(index), onClick: () => run(hit.item), className: cn('flex cursor-pointer items-baseline justify-between gap-3 rounded-sm px-3 py-2 text-sm', isActive && 'bg-accent text-accent-foreground', !isActive && 'text-muted-foreground hover:text-foreground'), children: [_jsx("span", { className: "min-w-0 truncate", children: hit.range === undefined ? (hit.item.label) : (_jsxs(_Fragment, { children: [hit.item.label.slice(0, hit.range[0]), _jsx("strong", { className: "text-foreground font-semibold", children: hit.item.label.slice(hit.range[0], hit.range[1]) }), hit.item.label.slice(hit.range[1])] })) }), hit.item.hint === undefined ? null : (_jsx("span", { className: "shrink-0 text-xs", children: hit.item.hint }))] }, hit.item.id));
174
- })] }, group.id)))) })] }) }));
220
+ })] }, group.id))) }))] }) }));
175
221
  }
176
222
  export { CommandPalette };
@@ -0,0 +1,156 @@
1
+ import type { ComponentProps } from 'react';
2
+ /**
3
+ * The five steps of the intensity scale, from an absent day to a full one.
4
+ *
5
+ * A five-step scale and not a continuous ramp, and the reason is that a reader
6
+ * has to compare two squares at a glance. A continuous scale is smoother and
7
+ * unreadable: the difference between a Tuesday and the Wednesday beside it is a
8
+ * few percent of opacity, which is nothing to see, while the difference between
9
+ * step two and step three is a band the eye can sort without being told what the
10
+ * bands mean. Five is also the number the eye can rank in a column without
11
+ * counting, and a heat grid is read by scanning columns.
12
+ */
13
+ export type ContributionLevel = 0 | 1 | 2 | 3 | 4;
14
+ /** The props the ContributionGraph accepts. */
15
+ export interface ContributionGraphProps extends Omit<ComponentProps<'div'>, 'children'> {
16
+ /**
17
+ * One entry per day, keyed by its own date.
18
+ *
19
+ * `date` is a `YYYY-MM-DD` key because that is the key a collector stores and
20
+ * the one a database index is on, so the caller passes what it already has
21
+ * rather than a second shape this Component would have to convert. The array
22
+ * is in any order: each day is placed by its own key, so a collector that
23
+ * returns newest first draws the same grid as one that returns oldest first.
24
+ *
25
+ * A day with a count of zero is a day the caller looked and found nothing. A
26
+ * day that is not in the array at all is a day nobody reported, and the two are
27
+ * drawn the same way and must be, because there is no third state to draw.
28
+ */
29
+ days: readonly {
30
+ date: string;
31
+ count: number;
32
+ }[];
33
+ /**
34
+ * The name of the figure, read before the grid and captioned on the table.
35
+ *
36
+ * Required rather than defaulted, for the two reasons `ChartFrame` states: two
37
+ * heat grids on a page are two figures a reader cannot tell apart, and a
38
+ * picture with no name is neither announced nor linkable. A figure named
39
+ * "Chart" is a Component shipping a sentence about a product it knows nothing
40
+ * about.
41
+ */
42
+ label: string;
43
+ /**
44
+ * The accessible name of one day's square, given the day.
45
+ *
46
+ * Required, and it is the one prop here that is a function rather than data,
47
+ * because it is the one thing Prism cannot compose. "4 contributions on 1
48
+ * March 2026" is a sentence in a language and a calendar, and a design system
49
+ * that wrote it would put English and a Gregorian month name into every
50
+ * consumer's product, in a figure that is otherwise entirely the caller's. The
51
+ * day is passed whole so the caller can say as much or as little as its own
52
+ * words need, and can reach for a translated month or a relative phrase.
53
+ *
54
+ * A day the caller did not report is never named, because there is nothing to
55
+ * name: an absence is not a zero and not a row.
56
+ */
57
+ dayLabel: (day: {
58
+ date: string;
59
+ count: number;
60
+ }) => string;
61
+ /**
62
+ * How many week columns to draw. @defaultValue 26
63
+ *
64
+ * Half a year, which is the range a contribution graph is read at when the
65
+ * question is "do I keep going" rather than "what did last Tuesday look like".
66
+ * The window is the most recent `weeks` weeks ending with the latest day given,
67
+ * so a day older than the window is not drawn rather than pushing everything
68
+ * else out of view. A grid whose window slid to fit every day would move under
69
+ * the reader every time a collector caught up.
70
+ */
71
+ weeks?: number;
72
+ /**
73
+ * Which day each row starts on. @defaultValue 1
74
+ *
75
+ * Zero for Sunday and one for Monday, and it is a prop because the caller's
76
+ * week is not the design system's: a grid that started on Monday when the
77
+ * product's week starts on Sunday puts a Saturday in the row above a Monday
78
+ * and the reader has to work that out before they can read anything. The
79
+ * default is Monday because that is the first day ISO 8601 names, and it is
80
+ * overridable for exactly the reason it is right most of the time.
81
+ */
82
+ weekStartsOn?: 0 | 1;
83
+ /**
84
+ * How a count becomes a level, given the count and the largest count drawn.
85
+ *
86
+ * The default is quartiles of the maximum, and the reason is stated in full on
87
+ * the helper above: a caller that pre-normalises has two chances to get the
88
+ * scale wrong. A caller with a real reason to bucket differently, a log
89
+ * distribution where the top day is a hundred times the median, a set where
90
+ * zero means something other than nothing, passes one function and gets a
91
+ * scale nobody else has to explain.
92
+ */
93
+ levelFor?: (count: number, max: number) => ContributionLevel;
94
+ }
95
+ /**
96
+ * A calendar of days, one square each, filled by how much happened on it.
97
+ *
98
+ * **The scale is the caller's counts and this Component's arithmetic.** The
99
+ * caller passes counts and the Component works out the largest count in the
100
+ * window and buckets against it, because a caller that pre-normalises has two
101
+ * chances to get the scale wrong and a mislabelled scale is a lie with a
102
+ * typeface on it. That is the reasoning `PulseSeries` states for its columns and
103
+ * the reason this Item is not a prop called `max` the caller had to divide by.
104
+ * The cost is named rather than hidden: quartiles of the maximum put most squares
105
+ * at level one or two when one day is an outlier, because that is what quartiles
106
+ * of an outlier are. A caller with a distribution like that passes `levelFor` and
107
+ * the cost goes away.
108
+ *
109
+ * **The maximum is taken from the days that are drawn, not from every day given.**
110
+ * A day that falls outside the window is neither drawn nor tabulated, and letting
111
+ * one into the maximum would stretch the scale around a square that is not in the
112
+ * picture, which is the quietest way a chart can be wrong. That is the rule
113
+ * `ChartFrame` states for a value past the end of its categories.
114
+ *
115
+ * **The four filled levels are one token at four strengths, never five
116
+ * colours.** `primary` at a quarter, a half, three quarters and full, over a
117
+ * `muted` empty cell. A ramp of five authored colour tokens would have been a
118
+ * second set of colour roles for a scale the alpha modifier already expresses, and
119
+ * it would not have moved with a scoped pack boundary the way an alpha step on one
120
+ * semantic role does. The cost is that the five steps are the same hue, so the
121
+ * grid reads as intensity rather than as categories, which is what a calendar of
122
+ * activity should read as.
123
+ *
124
+ * **A day the caller did not report is an absence, not a zero, and the two look
125
+ * the same on purpose.** Both are the empty cell, because there is no third
126
+ * drawing available: a hole in the grid would imply something happened, and a
127
+ * zero-filled cell for an unreported day would claim a measurement nobody made.
128
+ * The difference survives where it matters, in the table, where an unreported day
129
+ * has no row at all and a reported zero has a row reading zero. A short `days`
130
+ * array therefore leaves the leading weeks of the window empty rather than
131
+ * compressing the days it has, because a compressed grid is a grid whose cells no
132
+ * longer mean days.
133
+ *
134
+ * **Each square is named by the caller and the numbers are also in a table.** The
135
+ * squares carry `dayLabel` rather than a name this Component composed, because a
136
+ * composed name is a sentence in English and a Gregorian month. The counts are
137
+ * additionally rendered as a visually hidden table from the same array, so a
138
+ * screen reader's table navigation can reach a number directly and a crawler
139
+ * indexing the page finds the figures. The table has one row per reported day, its
140
+ * row head is the caller's own date key and its caption is the caller's own label;
141
+ * it has no column heading, because this Item has no word for "count" that is true
142
+ * in the caller's domain and inventing one would be a claim.
143
+ *
144
+ * The cost of naming every square is that a screen reader meets one stop per day
145
+ * before it reaches the table, which is a lot of stops for a hundred and eighty-two
146
+ * squares. That is the trade this design makes, and it is the same trade
147
+ * `ContributionGraph`'s table makes in the other direction: the grid answers "which
148
+ * days", the table answers "how many".
149
+ *
150
+ * It is a server Component. The window is arithmetic over props, there is no
151
+ * clock to read and no state to hold, so a contribution graph on a static page
152
+ * costs no client code.
153
+ */
154
+ declare function ContributionGraph({ className, days, label, dayLabel, weeks, weekStartsOn, levelFor, ...props }: ContributionGraphProps): import("react").JSX.Element;
155
+ export { ContributionGraph };
156
+ //# sourceMappingURL=contribution-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contribution-graph.d.ts","sourceRoot":"","sources":["../../../src/components/ui/contribution-graph.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAK3C;;;;;;;;;;GAUG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAyEjD,+CAA+C;AAC/C,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IACrF;;;;;;;;;;;;OAYG;IACH,IAAI,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAChD;;;;;;;;OAQG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;;;;;;;;;;;;OAaG;IACH,QAAQ,EAAE,CAAC,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAA;IAC1D;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IACpB;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,iBAAiB,CAAA;CAC7D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,KAAU,EACV,YAAgB,EAChB,QAAoB,EACpB,GAAG,KAAK,EACT,EAAE,sBAAsB,+BAkGxB;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAA"}
@@ -0,0 +1,170 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Table, TableBody, TableCaption, TableCell, TableHead, TableRow } from './table.js';
3
+ import { cn } from '../../lib/utils.js';
4
+ /**
5
+ * The fill each level is drawn in.
6
+ *
7
+ * Level zero is the empty cell, and it is the `muted` surface rather than a pale
8
+ * primary, so "nothing here" is visibly a different thing from "a little here".
9
+ * The other four are the same `primary` role at four alpha steps, so the scale
10
+ * is one token at four strengths and moves as a unit when the pack does. The
11
+ * alternative was a ramp of five authored colours, and that would have been a
12
+ * second set of colour tokens for a scale the alpha modifier already expresses.
13
+ */
14
+ const LEVEL_FILL = {
15
+ 0: 'bg-muted',
16
+ 1: 'bg-primary/25',
17
+ 2: 'bg-primary/50',
18
+ 3: 'bg-primary/75',
19
+ 4: 'bg-primary',
20
+ };
21
+ /** Milliseconds in a day, which is the unit a calendar is counted in. */
22
+ const DAY = 86_400_000;
23
+ /** The shape of a caller's day key, checked rather than assumed. */
24
+ const DAY_KEY = /^(\d{4})-(\d{2})-(\d{2})$/;
25
+ /**
26
+ * The default bucketing: quartiles of the largest count in the window.
27
+ *
28
+ * A caller that pre-normalises has two chances to get the scale wrong, and a
29
+ * mislabelled axis is a lie with a typeface on it, which is the reason
30
+ * `PulseSeries` gives for taking raw magnitudes and scaling them against the
31
+ * tallest column. So this takes a count and the maximum the Component worked out
32
+ * from the days it drew, and the caller never divides anything. A count of zero
33
+ * or less is level zero whatever the maximum is, because a negative count is not
34
+ * a quiet day, it is data that is wrong, and this Component has no level to put
35
+ * that in.
36
+ */
37
+ function quartiles(count, max) {
38
+ if (!(count > 0))
39
+ return 0;
40
+ if (!(max > 0))
41
+ return 4;
42
+ const share = count / max;
43
+ if (share <= 0.25)
44
+ return 1;
45
+ if (share <= 0.5)
46
+ return 2;
47
+ if (share <= 0.75)
48
+ return 3;
49
+ return 4;
50
+ }
51
+ /**
52
+ * A caller's day key as a count of days from the epoch, or `null` for a key the
53
+ * calendar does not have.
54
+ *
55
+ * The round trip is checked rather than trusted, because `Date.UTC` accepts a
56
+ * 31st of February and hands back the 3rd of March, so a key that names a day
57
+ * that does not exist would be drawn on the wrong cell and the graph would be
58
+ * quietly wrong in a way no reader could see. Returning `null` lets the caller
59
+ * refuse the whole set rather than move one square onto a day it was not
60
+ * reported for.
61
+ */
62
+ function epochDayOf(key) {
63
+ const parts = DAY_KEY.exec(key);
64
+ if (parts === null)
65
+ return null;
66
+ const at = Date.UTC(Number(parts[1]), Number(parts[2]) - 1, Number(parts[3]));
67
+ return new Date(at).toISOString().slice(0, 10) === key ? Math.floor(at / DAY) : null;
68
+ }
69
+ /** Which day of the week a day count names, with Sunday as zero. */
70
+ function weekdayOf(day) {
71
+ // The epoch was a Thursday, which is four days past Sunday, so adding four and
72
+ // taking the remainder counts from Sunday without a lookup table.
73
+ return (((day + 4) % 7) + 7) % 7;
74
+ }
75
+ /**
76
+ * A calendar of days, one square each, filled by how much happened on it.
77
+ *
78
+ * **The scale is the caller's counts and this Component's arithmetic.** The
79
+ * caller passes counts and the Component works out the largest count in the
80
+ * window and buckets against it, because a caller that pre-normalises has two
81
+ * chances to get the scale wrong and a mislabelled scale is a lie with a
82
+ * typeface on it. That is the reasoning `PulseSeries` states for its columns and
83
+ * the reason this Item is not a prop called `max` the caller had to divide by.
84
+ * The cost is named rather than hidden: quartiles of the maximum put most squares
85
+ * at level one or two when one day is an outlier, because that is what quartiles
86
+ * of an outlier are. A caller with a distribution like that passes `levelFor` and
87
+ * the cost goes away.
88
+ *
89
+ * **The maximum is taken from the days that are drawn, not from every day given.**
90
+ * A day that falls outside the window is neither drawn nor tabulated, and letting
91
+ * one into the maximum would stretch the scale around a square that is not in the
92
+ * picture, which is the quietest way a chart can be wrong. That is the rule
93
+ * `ChartFrame` states for a value past the end of its categories.
94
+ *
95
+ * **The four filled levels are one token at four strengths, never five
96
+ * colours.** `primary` at a quarter, a half, three quarters and full, over a
97
+ * `muted` empty cell. A ramp of five authored colour tokens would have been a
98
+ * second set of colour roles for a scale the alpha modifier already expresses, and
99
+ * it would not have moved with a scoped pack boundary the way an alpha step on one
100
+ * semantic role does. The cost is that the five steps are the same hue, so the
101
+ * grid reads as intensity rather than as categories, which is what a calendar of
102
+ * activity should read as.
103
+ *
104
+ * **A day the caller did not report is an absence, not a zero, and the two look
105
+ * the same on purpose.** Both are the empty cell, because there is no third
106
+ * drawing available: a hole in the grid would imply something happened, and a
107
+ * zero-filled cell for an unreported day would claim a measurement nobody made.
108
+ * The difference survives where it matters, in the table, where an unreported day
109
+ * has no row at all and a reported zero has a row reading zero. A short `days`
110
+ * array therefore leaves the leading weeks of the window empty rather than
111
+ * compressing the days it has, because a compressed grid is a grid whose cells no
112
+ * longer mean days.
113
+ *
114
+ * **Each square is named by the caller and the numbers are also in a table.** The
115
+ * squares carry `dayLabel` rather than a name this Component composed, because a
116
+ * composed name is a sentence in English and a Gregorian month. The counts are
117
+ * additionally rendered as a visually hidden table from the same array, so a
118
+ * screen reader's table navigation can reach a number directly and a crawler
119
+ * indexing the page finds the figures. The table has one row per reported day, its
120
+ * row head is the caller's own date key and its caption is the caller's own label;
121
+ * it has no column heading, because this Item has no word for "count" that is true
122
+ * in the caller's domain and inventing one would be a claim.
123
+ *
124
+ * The cost of naming every square is that a screen reader meets one stop per day
125
+ * before it reaches the table, which is a lot of stops for a hundred and eighty-two
126
+ * squares. That is the trade this design makes, and it is the same trade
127
+ * `ContributionGraph`'s table makes in the other direction: the grid answers "which
128
+ * days", the table answers "how many".
129
+ *
130
+ * It is a server Component. The window is arithmetic over props, there is no
131
+ * clock to read and no state to hold, so a contribution graph on a static page
132
+ * costs no client code.
133
+ */
134
+ function ContributionGraph({ className, days, label, dayLabel, weeks = 26, weekStartsOn = 1, levelFor = quartiles, ...props }) {
135
+ const given = days.map((day) => {
136
+ const at = epochDayOf(day.date);
137
+ if (at === null) {
138
+ throw new Error(`ContributionGraph: a day is keyed '${day.date}', which is not a YYYY-MM-DD date the ` +
139
+ 'calendar has, so there is no cell to draw it in. Pass the key your collector stores, and ' +
140
+ 'a day the calendar does not have is a bug in the collector rather than a square to move.');
141
+ }
142
+ return { day, at };
143
+ });
144
+ // A nonsense `weeks` gets a floor of one rather than an empty grid, because an
145
+ // empty grid is a figure with nothing in it and this Component already refuses
146
+ // to draw one of those on the Sparkline.
147
+ const columns = Math.max(1, Math.floor(weeks));
148
+ // The window is the most recent `columns` weeks ending with the latest day
149
+ // given, so the caller's data fills the right-hand edge rather than the left.
150
+ // With no days at all the anchor is the epoch, which draws `columns` empty weeks
151
+ // rather than a special case, because an empty window and a window with nothing
152
+ // in it are the same picture.
153
+ const latest = given.length === 0 ? 0 : Math.max(...given.map((entry) => entry.at));
154
+ const first = latest - (((weekdayOf(latest) - weekStartsOn + 7) % 7) + (columns - 1) * 7);
155
+ const byDay = new Map(given.map((entry) => [entry.at, entry.day]));
156
+ const drawn = given.filter((entry) => entry.at >= first);
157
+ const max = drawn.length === 0 ? 0 : Math.max(...drawn.map((entry) => entry.day.count));
158
+ const cells = Array.from({ length: columns * 7 }, (_, index) => {
159
+ const at = first + index;
160
+ const day = byDay.get(at);
161
+ return { at, day, level: day === undefined ? 0 : levelFor(day.count, max) };
162
+ });
163
+ return (_jsxs("div", { "data-slot": "contribution-graph", role: "group", "aria-label": label, className: cn('flex w-full flex-col gap-2', className), ...props, children: [_jsx("div", { "data-slot": "contribution-weeks", className: "w-full overflow-x-auto pb-1", children: _jsx("div", { "data-slot": "contribution-grid", className: "flex gap-1", children: Array.from({ length: columns }, (_, column) => (_jsx("div", { "data-slot": "contribution-week", className: "flex flex-col gap-1", children: cells.slice(column * 7, column * 7 + 7).map((cell) => (_jsx("span", { "data-slot": "contribution-day", "data-date": cell.day?.date, "data-level": cell.level,
164
+ // A square is a picture of a day rather than text, so it takes
165
+ // the image role and the caller's own name for that day. An
166
+ // unreported day is hidden instead, because there is nothing
167
+ // to name and an absence has no row in the table either.
168
+ role: "img", "aria-label": cell.day === undefined ? undefined : dayLabel(cell.day), "aria-hidden": cell.day === undefined ? true : undefined, className: cn('size-3 shrink-0 rounded-sm', LEVEL_FILL[cell.level]) }, cell.at))) }, column))) }) }), _jsx("div", { "data-slot": "contribution-table", className: "sr-only", children: _jsxs(Table, { children: [_jsx(TableCaption, { children: label }), _jsx(TableBody, { children: drawn.map((entry) => (_jsxs(TableRow, { children: [_jsx(TableHead, { scope: "row", className: "font-mono font-normal", children: entry.day.date }), _jsx(TableCell, { className: "tabular-nums", children: entry.day.count })] }, entry.day.date))) })] }) })] }));
169
+ }
170
+ export { ContributionGraph };