@openwarelabs/blocks 0.9.0 → 0.10.1

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 (291) hide show
  1. package/README.md +36 -10
  2. package/dist/app-shells/Shell01/Shell01.d.cts +6 -0
  3. package/dist/app-shells/Shell01/Shell01.d.ts +6 -0
  4. package/dist/app-shells/Shell01/Shell01.types.d.cts +48 -0
  5. package/dist/app-shells/Shell01/Shell01.types.d.ts +48 -0
  6. package/dist/app-shells/Shell02/Shell02.d.cts +7 -0
  7. package/dist/app-shells/Shell02/Shell02.d.ts +7 -0
  8. package/dist/app-shells/Shell02/Shell02.types.d.cts +50 -0
  9. package/dist/app-shells/Shell02/Shell02.types.d.ts +50 -0
  10. package/dist/app-shells/Shell03/Shell03.d.cts +6 -0
  11. package/dist/app-shells/Shell03/Shell03.d.ts +6 -0
  12. package/dist/app-shells/Shell03/Shell03.types.d.cts +73 -0
  13. package/dist/app-shells/Shell03/Shell03.types.d.ts +73 -0
  14. package/dist/app-shells/Shell04/Shell04.d.cts +6 -0
  15. package/dist/app-shells/Shell04/Shell04.d.ts +6 -0
  16. package/dist/app-shells/Shell04/Shell04.types.d.cts +68 -0
  17. package/dist/app-shells/Shell04/Shell04.types.d.ts +68 -0
  18. package/dist/blog/Blog01/Blog01.d.cts +3 -0
  19. package/dist/blog/Blog01/Blog01.d.ts +3 -0
  20. package/dist/blog/Blog01/Blog01.types.d.cts +55 -0
  21. package/dist/blog/Blog01/Blog01.types.d.ts +55 -0
  22. package/dist/blog/Blog02/Blog02.d.cts +3 -0
  23. package/dist/blog/Blog02/Blog02.d.ts +3 -0
  24. package/dist/blog/Blog02/Blog02.types.d.cts +51 -0
  25. package/dist/blog/Blog02/Blog02.types.d.ts +51 -0
  26. package/dist/blog/Blog03/Blog03.d.cts +3 -0
  27. package/dist/blog/Blog03/Blog03.d.ts +3 -0
  28. package/dist/blog/Blog03/Blog03.types.d.cts +66 -0
  29. package/dist/blog/Blog03/Blog03.types.d.ts +66 -0
  30. package/dist/blog/Blog04/Blog04.d.cts +3 -0
  31. package/dist/blog/Blog04/Blog04.d.ts +3 -0
  32. package/dist/blog/Blog04/Blog04.types.d.cts +64 -0
  33. package/dist/blog/Blog04/Blog04.types.d.ts +64 -0
  34. package/dist/chat/Chat01/Chat01.d.cts +6 -0
  35. package/dist/chat/Chat01/Chat01.d.ts +6 -0
  36. package/dist/chat/Chat01/Chat01.types.d.cts +95 -0
  37. package/dist/chat/Chat01/Chat01.types.d.ts +95 -0
  38. package/dist/chat/Chat02/Chat02.d.cts +6 -0
  39. package/dist/chat/Chat02/Chat02.d.ts +6 -0
  40. package/dist/chat/Chat02/Chat02.types.d.cts +70 -0
  41. package/dist/chat/Chat02/Chat02.types.d.ts +70 -0
  42. package/dist/chat/Chat03/Chat03.d.cts +6 -0
  43. package/dist/chat/Chat03/Chat03.d.ts +6 -0
  44. package/dist/chat/Chat03/Chat03.types.d.cts +96 -0
  45. package/dist/chat/Chat03/Chat03.types.d.ts +96 -0
  46. package/dist/contact/Contact01/Contact01.d.cts +3 -0
  47. package/dist/contact/Contact01/Contact01.d.ts +3 -0
  48. package/dist/contact/Contact01/Contact01.types.d.cts +103 -0
  49. package/dist/contact/Contact01/Contact01.types.d.ts +103 -0
  50. package/dist/contact/Contact02/Contact02.d.cts +3 -0
  51. package/dist/contact/Contact02/Contact02.d.ts +3 -0
  52. package/dist/contact/Contact02/Contact02.types.d.cts +56 -0
  53. package/dist/contact/Contact02/Contact02.types.d.ts +56 -0
  54. package/dist/dashboards/Dashboard01/Dashboard01.d.cts +3 -0
  55. package/dist/dashboards/Dashboard01/Dashboard01.d.ts +3 -0
  56. package/dist/dashboards/Dashboard01/Dashboard01.types.d.cts +53 -0
  57. package/dist/dashboards/Dashboard01/Dashboard01.types.d.ts +53 -0
  58. package/dist/dashboards/Dashboard02/Dashboard02.d.cts +3 -0
  59. package/dist/dashboards/Dashboard02/Dashboard02.d.ts +3 -0
  60. package/dist/dashboards/Dashboard02/Dashboard02.types.d.cts +74 -0
  61. package/dist/dashboards/Dashboard02/Dashboard02.types.d.ts +74 -0
  62. package/dist/dashboards/Dashboard03/Dashboard03.d.cts +6 -0
  63. package/dist/dashboards/Dashboard03/Dashboard03.d.ts +6 -0
  64. package/dist/dashboards/Dashboard03/Dashboard03.types.d.cts +131 -0
  65. package/dist/dashboards/Dashboard03/Dashboard03.types.d.ts +131 -0
  66. package/dist/empty-states/Empty01/Empty01.d.cts +3 -0
  67. package/dist/empty-states/Empty01/Empty01.d.ts +3 -0
  68. package/dist/empty-states/Empty01/Empty01.types.d.cts +94 -0
  69. package/dist/empty-states/Empty01/Empty01.types.d.ts +94 -0
  70. package/dist/empty-states/Empty02/Empty02.d.cts +3 -0
  71. package/dist/empty-states/Empty02/Empty02.d.ts +3 -0
  72. package/dist/empty-states/Empty02/Empty02.types.d.cts +72 -0
  73. package/dist/empty-states/Empty02/Empty02.types.d.ts +72 -0
  74. package/dist/empty-states/Empty03/Empty03.d.cts +3 -0
  75. package/dist/empty-states/Empty03/Empty03.d.ts +3 -0
  76. package/dist/empty-states/Empty03/Empty03.types.d.cts +72 -0
  77. package/dist/empty-states/Empty03/Empty03.types.d.ts +72 -0
  78. package/dist/error-pages/ErrorPage01/ErrorPage01.d.cts +3 -0
  79. package/dist/error-pages/ErrorPage01/ErrorPage01.d.ts +3 -0
  80. package/dist/error-pages/ErrorPage01/ErrorPage01.types.d.cts +48 -0
  81. package/dist/error-pages/ErrorPage01/ErrorPage01.types.d.ts +48 -0
  82. package/dist/error-pages/ErrorPage02/ErrorPage02.d.cts +3 -0
  83. package/dist/error-pages/ErrorPage02/ErrorPage02.d.ts +3 -0
  84. package/dist/error-pages/ErrorPage02/ErrorPage02.types.d.cts +45 -0
  85. package/dist/error-pages/ErrorPage02/ErrorPage02.types.d.ts +45 -0
  86. package/dist/error-pages/ErrorPage03/ErrorPage03.d.cts +3 -0
  87. package/dist/error-pages/ErrorPage03/ErrorPage03.d.ts +3 -0
  88. package/dist/error-pages/ErrorPage03/ErrorPage03.types.d.cts +45 -0
  89. package/dist/error-pages/ErrorPage03/ErrorPage03.types.d.ts +45 -0
  90. package/dist/faq/Faq01/Faq01.d.cts +3 -0
  91. package/dist/faq/Faq01/Faq01.d.ts +3 -0
  92. package/dist/faq/Faq01/Faq01.types.d.cts +23 -0
  93. package/dist/faq/Faq01/Faq01.types.d.ts +23 -0
  94. package/dist/faq/Faq02/Faq02.d.cts +3 -0
  95. package/dist/faq/Faq02/Faq02.d.ts +3 -0
  96. package/dist/faq/Faq02/Faq02.types.d.cts +24 -0
  97. package/dist/faq/Faq02/Faq02.types.d.ts +24 -0
  98. package/dist/faq/Faq03/Faq03.d.cts +3 -0
  99. package/dist/faq/Faq03/Faq03.d.ts +3 -0
  100. package/dist/faq/Faq03/Faq03.types.d.cts +42 -0
  101. package/dist/faq/Faq03/Faq03.types.d.ts +42 -0
  102. package/dist/forms/Form01/Form01.d.cts +3 -0
  103. package/dist/forms/Form01/Form01.d.ts +3 -0
  104. package/dist/forms/Form01/Form01.types.d.cts +20 -0
  105. package/dist/forms/Form01/Form01.types.d.ts +20 -0
  106. package/dist/forms/Form02/Form02.d.cts +3 -0
  107. package/dist/forms/Form02/Form02.d.ts +3 -0
  108. package/dist/forms/Form02/Form02.types.d.cts +38 -0
  109. package/dist/forms/Form02/Form02.types.d.ts +38 -0
  110. package/dist/forms/Form03/Form03.d.cts +3 -0
  111. package/dist/forms/Form03/Form03.d.ts +3 -0
  112. package/dist/forms/Form03/Form03.types.d.cts +55 -0
  113. package/dist/forms/Form03/Form03.types.d.ts +55 -0
  114. package/dist/index.cjs +6190 -22
  115. package/dist/index.cjs.map +4 -4
  116. package/dist/index.d.cts +135 -1
  117. package/dist/index.d.ts +135 -1
  118. package/dist/index.js +6220 -19
  119. package/dist/index.js.map +4 -4
  120. package/dist/lists-and-tables/List01/List01.d.cts +6 -0
  121. package/dist/lists-and-tables/List01/List01.d.ts +6 -0
  122. package/dist/lists-and-tables/List01/List01.types.d.cts +60 -0
  123. package/dist/lists-and-tables/List01/List01.types.d.ts +60 -0
  124. package/dist/lists-and-tables/List02/List02.d.cts +3 -0
  125. package/dist/lists-and-tables/List02/List02.d.ts +3 -0
  126. package/dist/lists-and-tables/List02/List02.types.d.cts +54 -0
  127. package/dist/lists-and-tables/List02/List02.types.d.ts +54 -0
  128. package/dist/lists-and-tables/List03/List03.d.cts +3 -0
  129. package/dist/lists-and-tables/List03/List03.d.ts +3 -0
  130. package/dist/lists-and-tables/List03/List03.types.d.cts +41 -0
  131. package/dist/lists-and-tables/List03/List03.types.d.ts +41 -0
  132. package/dist/lists-and-tables/List04/List04.d.cts +3 -0
  133. package/dist/lists-and-tables/List04/List04.d.ts +3 -0
  134. package/dist/lists-and-tables/List04/List04.types.d.cts +67 -0
  135. package/dist/lists-and-tables/List04/List04.types.d.ts +67 -0
  136. package/dist/logo-clouds/Logos01/Logos01.d.cts +3 -0
  137. package/dist/logo-clouds/Logos01/Logos01.d.ts +3 -0
  138. package/dist/logo-clouds/Logos01/Logos01.types.d.cts +13 -0
  139. package/dist/logo-clouds/Logos01/Logos01.types.d.ts +13 -0
  140. package/dist/logo-clouds/Logos02/Logos02.d.cts +3 -0
  141. package/dist/logo-clouds/Logos02/Logos02.d.ts +3 -0
  142. package/dist/logo-clouds/Logos02/Logos02.types.d.cts +28 -0
  143. package/dist/logo-clouds/Logos02/Logos02.types.d.ts +28 -0
  144. package/dist/logo-clouds/Logos03/Logos03.d.cts +3 -0
  145. package/dist/logo-clouds/Logos03/Logos03.d.ts +3 -0
  146. package/dist/logo-clouds/Logos03/Logos03.types.d.cts +23 -0
  147. package/dist/logo-clouds/Logos03/Logos03.types.d.ts +23 -0
  148. package/dist/newsletter/Newsletter01/Newsletter01.d.cts +3 -0
  149. package/dist/newsletter/Newsletter01/Newsletter01.d.ts +3 -0
  150. package/dist/newsletter/Newsletter01/Newsletter01.types.d.cts +39 -0
  151. package/dist/newsletter/Newsletter01/Newsletter01.types.d.ts +39 -0
  152. package/dist/newsletter/Newsletter02/Newsletter02.d.cts +3 -0
  153. package/dist/newsletter/Newsletter02/Newsletter02.d.ts +3 -0
  154. package/dist/newsletter/Newsletter02/Newsletter02.types.d.cts +42 -0
  155. package/dist/newsletter/Newsletter02/Newsletter02.types.d.ts +42 -0
  156. package/dist/notifications/Notifications01/Notifications01.d.cts +3 -0
  157. package/dist/notifications/Notifications01/Notifications01.d.ts +3 -0
  158. package/dist/notifications/Notifications01/Notifications01.types.d.cts +74 -0
  159. package/dist/notifications/Notifications01/Notifications01.types.d.ts +74 -0
  160. package/dist/notifications/Notifications02/Notifications02.d.cts +3 -0
  161. package/dist/notifications/Notifications02/Notifications02.d.ts +3 -0
  162. package/dist/notifications/Notifications02/Notifications02.types.d.cts +65 -0
  163. package/dist/notifications/Notifications02/Notifications02.types.d.ts +65 -0
  164. package/dist/notifications/Notifications03/Notifications03.d.cts +3 -0
  165. package/dist/notifications/Notifications03/Notifications03.d.ts +3 -0
  166. package/dist/notifications/Notifications03/Notifications03.types.d.cts +87 -0
  167. package/dist/notifications/Notifications03/Notifications03.types.d.ts +87 -0
  168. package/dist/onboarding/Onboarding01/Onboarding01.d.cts +3 -0
  169. package/dist/onboarding/Onboarding01/Onboarding01.d.ts +3 -0
  170. package/dist/onboarding/Onboarding01/Onboarding01.types.d.cts +46 -0
  171. package/dist/onboarding/Onboarding01/Onboarding01.types.d.ts +46 -0
  172. package/dist/onboarding/Onboarding02/Onboarding02.d.cts +3 -0
  173. package/dist/onboarding/Onboarding02/Onboarding02.d.ts +3 -0
  174. package/dist/onboarding/Onboarding02/Onboarding02.types.d.cts +68 -0
  175. package/dist/onboarding/Onboarding02/Onboarding02.types.d.ts +68 -0
  176. package/dist/onboarding/Onboarding03/Onboarding03.d.cts +3 -0
  177. package/dist/onboarding/Onboarding03/Onboarding03.d.ts +3 -0
  178. package/dist/onboarding/Onboarding03/Onboarding03.types.d.cts +38 -0
  179. package/dist/onboarding/Onboarding03/Onboarding03.types.d.ts +38 -0
  180. package/dist/page-headings/PageHeading01/PageHeading01.d.cts +6 -0
  181. package/dist/page-headings/PageHeading01/PageHeading01.d.ts +6 -0
  182. package/dist/page-headings/PageHeading01/PageHeading01.types.d.cts +35 -0
  183. package/dist/page-headings/PageHeading01/PageHeading01.types.d.ts +35 -0
  184. package/dist/page-headings/PageHeading02/PageHeading02.d.cts +3 -0
  185. package/dist/page-headings/PageHeading02/PageHeading02.d.ts +3 -0
  186. package/dist/page-headings/PageHeading02/PageHeading02.types.d.cts +49 -0
  187. package/dist/page-headings/PageHeading02/PageHeading02.types.d.ts +49 -0
  188. package/dist/page-headings/PageHeading03/PageHeading03.d.cts +6 -0
  189. package/dist/page-headings/PageHeading03/PageHeading03.d.ts +6 -0
  190. package/dist/page-headings/PageHeading03/PageHeading03.types.d.cts +83 -0
  191. package/dist/page-headings/PageHeading03/PageHeading03.types.d.ts +83 -0
  192. package/dist/section-headings/SectionHeading01/SectionHeading01.d.cts +3 -0
  193. package/dist/section-headings/SectionHeading01/SectionHeading01.d.ts +3 -0
  194. package/dist/section-headings/SectionHeading01/SectionHeading01.types.d.cts +9 -0
  195. package/dist/section-headings/SectionHeading01/SectionHeading01.types.d.ts +9 -0
  196. package/dist/section-headings/SectionHeading02/SectionHeading02.d.cts +3 -0
  197. package/dist/section-headings/SectionHeading02/SectionHeading02.d.ts +3 -0
  198. package/dist/section-headings/SectionHeading02/SectionHeading02.types.d.cts +12 -0
  199. package/dist/section-headings/SectionHeading02/SectionHeading02.types.d.ts +12 -0
  200. package/dist/section-headings/SectionHeading03/SectionHeading03.d.cts +3 -0
  201. package/dist/section-headings/SectionHeading03/SectionHeading03.d.ts +3 -0
  202. package/dist/section-headings/SectionHeading03/SectionHeading03.types.d.cts +12 -0
  203. package/dist/section-headings/SectionHeading03/SectionHeading03.types.d.ts +12 -0
  204. package/dist/settings/Settings01/Settings01.d.cts +3 -0
  205. package/dist/settings/Settings01/Settings01.d.ts +3 -0
  206. package/dist/settings/Settings01/Settings01.types.d.cts +46 -0
  207. package/dist/settings/Settings01/Settings01.types.d.ts +46 -0
  208. package/dist/settings/Settings02/Settings02.d.cts +3 -0
  209. package/dist/settings/Settings02/Settings02.d.ts +3 -0
  210. package/dist/settings/Settings02/Settings02.types.d.cts +45 -0
  211. package/dist/settings/Settings02/Settings02.types.d.ts +45 -0
  212. package/dist/settings/Settings03/Settings03.d.cts +3 -0
  213. package/dist/settings/Settings03/Settings03.d.ts +3 -0
  214. package/dist/settings/Settings03/Settings03.types.d.cts +132 -0
  215. package/dist/settings/Settings03/Settings03.types.d.ts +132 -0
  216. package/dist/settings/Settings04/Settings04.d.cts +3 -0
  217. package/dist/settings/Settings04/Settings04.d.ts +3 -0
  218. package/dist/settings/Settings04/Settings04.types.d.cts +124 -0
  219. package/dist/settings/Settings04/Settings04.types.d.ts +124 -0
  220. package/dist/settings/Settings05/Settings05.d.cts +3 -0
  221. package/dist/settings/Settings05/Settings05.d.ts +3 -0
  222. package/dist/settings/Settings05/Settings05.types.d.cts +94 -0
  223. package/dist/settings/Settings05/Settings05.types.d.ts +94 -0
  224. package/dist/shared/AppWorkspaceItems.d.cts +3 -0
  225. package/dist/shared/AppWorkspaceItems.d.ts +3 -0
  226. package/dist/shared/BlockActions.d.cts +1 -1
  227. package/dist/shared/BlockActions.d.ts +1 -1
  228. package/dist/shared/BlockMenuItems.d.cts +3 -0
  229. package/dist/shared/BlockMenuItems.d.ts +3 -0
  230. package/dist/shared/appShell.d.cts +19 -0
  231. package/dist/shared/appShell.d.ts +19 -0
  232. package/dist/shared/icons.d.cts +59 -13
  233. package/dist/shared/icons.d.ts +59 -13
  234. package/dist/shared/shared.types.d.cts +128 -0
  235. package/dist/shared/shared.types.d.ts +128 -0
  236. package/dist/shared/tableColumns.d.cts +10 -0
  237. package/dist/shared/tableColumns.d.ts +10 -0
  238. package/dist/sign-in/SignIn01/SignIn01.d.cts +3 -0
  239. package/dist/sign-in/SignIn01/SignIn01.d.ts +3 -0
  240. package/dist/sign-in/SignIn01/SignIn01.types.d.cts +52 -0
  241. package/dist/sign-in/SignIn01/SignIn01.types.d.ts +52 -0
  242. package/dist/sign-in/SignIn02/SignIn02.d.cts +3 -0
  243. package/dist/sign-in/SignIn02/SignIn02.d.ts +3 -0
  244. package/dist/sign-in/SignIn02/SignIn02.types.d.cts +79 -0
  245. package/dist/sign-in/SignIn02/SignIn02.types.d.ts +79 -0
  246. package/dist/sign-in/SignIn03/SignIn03.d.cts +3 -0
  247. package/dist/sign-in/SignIn03/SignIn03.d.ts +3 -0
  248. package/dist/sign-in/SignIn03/SignIn03.types.d.cts +51 -0
  249. package/dist/sign-in/SignIn03/SignIn03.types.d.ts +51 -0
  250. package/dist/sign-in/SignIn04/SignIn04.d.cts +3 -0
  251. package/dist/sign-in/SignIn04/SignIn04.d.ts +3 -0
  252. package/dist/sign-in/SignIn04/SignIn04.types.d.cts +56 -0
  253. package/dist/sign-in/SignIn04/SignIn04.types.d.ts +56 -0
  254. package/dist/sign-in/SignIn05/SignIn05.d.cts +3 -0
  255. package/dist/sign-in/SignIn05/SignIn05.d.ts +3 -0
  256. package/dist/sign-in/SignIn05/SignIn05.types.d.cts +86 -0
  257. package/dist/sign-in/SignIn05/SignIn05.types.d.ts +86 -0
  258. package/dist/stats/Stats01/Stats01.d.cts +3 -0
  259. package/dist/stats/Stats01/Stats01.d.ts +3 -0
  260. package/dist/stats/Stats01/Stats01.types.d.cts +19 -0
  261. package/dist/stats/Stats01/Stats01.types.d.ts +19 -0
  262. package/dist/stats/Stats02/Stats02.d.cts +3 -0
  263. package/dist/stats/Stats02/Stats02.d.ts +3 -0
  264. package/dist/stats/Stats02/Stats02.types.d.cts +30 -0
  265. package/dist/stats/Stats02/Stats02.types.d.ts +30 -0
  266. package/dist/stats/Stats03/Stats03.d.cts +3 -0
  267. package/dist/stats/Stats03/Stats03.d.ts +3 -0
  268. package/dist/stats/Stats03/Stats03.types.d.cts +24 -0
  269. package/dist/stats/Stats03/Stats03.types.d.ts +24 -0
  270. package/dist/styles.css +11992 -2727
  271. package/dist/team/Team01/Team01.d.cts +3 -0
  272. package/dist/team/Team01/Team01.d.ts +3 -0
  273. package/dist/team/Team01/Team01.types.d.cts +25 -0
  274. package/dist/team/Team01/Team01.types.d.ts +25 -0
  275. package/dist/team/Team02/Team02.d.cts +3 -0
  276. package/dist/team/Team02/Team02.d.ts +3 -0
  277. package/dist/team/Team02/Team02.types.d.cts +37 -0
  278. package/dist/team/Team02/Team02.types.d.ts +37 -0
  279. package/dist/testimonials/Testimonial01/Testimonial01.d.cts +3 -0
  280. package/dist/testimonials/Testimonial01/Testimonial01.d.ts +3 -0
  281. package/dist/testimonials/Testimonial01/Testimonial01.types.d.cts +21 -0
  282. package/dist/testimonials/Testimonial01/Testimonial01.types.d.ts +21 -0
  283. package/dist/testimonials/Testimonial02/Testimonial02.d.cts +3 -0
  284. package/dist/testimonials/Testimonial02/Testimonial02.d.ts +3 -0
  285. package/dist/testimonials/Testimonial02/Testimonial02.types.d.cts +25 -0
  286. package/dist/testimonials/Testimonial02/Testimonial02.types.d.ts +25 -0
  287. package/dist/testimonials/Testimonial03/Testimonial03.d.cts +3 -0
  288. package/dist/testimonials/Testimonial03/Testimonial03.d.ts +3 -0
  289. package/dist/testimonials/Testimonial03/Testimonial03.types.d.cts +45 -0
  290. package/dist/testimonials/Testimonial03/Testimonial03.types.d.ts +45 -0
  291. package/package.json +3 -3
@@ -0,0 +1,83 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ import type { BlockButton, BlockStatus } from "../../shared/shared.types.cjs";
3
+ /** A filter menu: a name and the choices in it. Choices in one menu widen the list; different menus narrow it. */
4
+ export interface PageHeading03Facet {
5
+ /** Unique among the menus; the key of the item's `facets` it filters on. */
6
+ id: string;
7
+ /** The menu's name, on its button and in its tags: "Status", "Project". */
8
+ label: string;
9
+ /** The choices, each a value an item's `facets[id]` can have. */
10
+ options: string[];
11
+ }
12
+ /** A filter in use: one choice in one menu. */
13
+ export interface PageHeading03Filter {
14
+ /** The menu's id. */
15
+ facet: string;
16
+ /** The choice. */
17
+ value: string;
18
+ }
19
+ /** One row in the list under the heading. */
20
+ export interface PageHeading03Item {
21
+ /** Unique in the list. */
22
+ id: string;
23
+ /** What it is, on the first line. */
24
+ title: ReactNode;
25
+ /** A reference in mono before the details: "#482". */
26
+ reference?: ReactNode;
27
+ /** The rest of the second line: the project, who, when. */
28
+ meta?: ReactNode;
29
+ /** The person it's from, as an avatar at the start of the row. */
30
+ person?: string;
31
+ /** A 15px icon in a round tile at the start of the row, in place of the avatar: an agent's, say. */
32
+ icon?: ReactNode;
33
+ /** Its state, as a badge. */
34
+ status?: BlockStatus;
35
+ /** How many comments it has, after the badge. None shows nothing. */
36
+ comments?: number;
37
+ /** Its value for each filter menu, by the menu's id: `{ status: "Approved", project: "docs" }`. */
38
+ facets: Record<string, string>;
39
+ /** The words a search matches. @default the title, when it's text */
40
+ searchText?: string[];
41
+ }
42
+ export interface PageHeading03Labels {
43
+ /** The search field's placeholder. @default "Search" */
44
+ searchPlaceholder?: string;
45
+ /** The search field's name for screen readers. @default "Search" */
46
+ search?: string;
47
+ /** Names the list for screen readers. @default "Results" */
48
+ list?: string;
49
+ /** The count beside the tags. @default "3 of 10 shown" */
50
+ count?(shown: number, total: number): ReactNode;
51
+ /** The button that takes every filter off. @default "Clear filters" */
52
+ clearFilters?: string;
53
+ /** Names a filter tag's remove button. @default "Status filter: Approved" */
54
+ removeFilter?(facet: string, value: string): string;
55
+ /** After a comment count, for screen readers. @default " comments" */
56
+ comments?: string;
57
+ /** The title when nothing matches. @default "Nothing matches" */
58
+ emptyTitle?: string;
59
+ /** The line under it. @default "Try a different search, or take a filter off to see more." */
60
+ emptyDescription?: string;
61
+ /** The button that clears the search and the filters. @default "Clear search and filters" */
62
+ clearAll?: string;
63
+ }
64
+ export interface PageHeading03Props extends Omit<HTMLAttributes<HTMLDivElement>, "title" | "children"> {
65
+ /** The page's name, as its h1. */
66
+ title: ReactNode;
67
+ /** A line under the title. */
68
+ description?: ReactNode;
69
+ /** The one primary action, on the right: "Request review". */
70
+ primaryAction?: BlockButton;
71
+ /** The filter menus, after the search field. */
72
+ facets: PageHeading03Facet[];
73
+ /** The list the search and the filters narrow. */
74
+ items: PageHeading03Item[];
75
+ /** The filters in use to start with. */
76
+ defaultFilters?: PageHeading03Filter[];
77
+ /** Called with the filters in use whenever they change. */
78
+ onFiltersChange?(filters: PageHeading03Filter[]): void;
79
+ /** A 20px icon for the empty state, usually from lucide-react. @default a search glass with a cross */
80
+ emptyIcon?: ReactNode;
81
+ /** Words that aren't content (names for screen readers, button labels, the empty state), in English unless you pass your own. */
82
+ labels?: PageHeading03Labels;
83
+ }
@@ -0,0 +1,83 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ import type { BlockButton, BlockStatus } from "../../shared/shared.types.js";
3
+ /** A filter menu: a name and the choices in it. Choices in one menu widen the list; different menus narrow it. */
4
+ export interface PageHeading03Facet {
5
+ /** Unique among the menus; the key of the item's `facets` it filters on. */
6
+ id: string;
7
+ /** The menu's name, on its button and in its tags: "Status", "Project". */
8
+ label: string;
9
+ /** The choices, each a value an item's `facets[id]` can have. */
10
+ options: string[];
11
+ }
12
+ /** A filter in use: one choice in one menu. */
13
+ export interface PageHeading03Filter {
14
+ /** The menu's id. */
15
+ facet: string;
16
+ /** The choice. */
17
+ value: string;
18
+ }
19
+ /** One row in the list under the heading. */
20
+ export interface PageHeading03Item {
21
+ /** Unique in the list. */
22
+ id: string;
23
+ /** What it is, on the first line. */
24
+ title: ReactNode;
25
+ /** A reference in mono before the details: "#482". */
26
+ reference?: ReactNode;
27
+ /** The rest of the second line: the project, who, when. */
28
+ meta?: ReactNode;
29
+ /** The person it's from, as an avatar at the start of the row. */
30
+ person?: string;
31
+ /** A 15px icon in a round tile at the start of the row, in place of the avatar: an agent's, say. */
32
+ icon?: ReactNode;
33
+ /** Its state, as a badge. */
34
+ status?: BlockStatus;
35
+ /** How many comments it has, after the badge. None shows nothing. */
36
+ comments?: number;
37
+ /** Its value for each filter menu, by the menu's id: `{ status: "Approved", project: "docs" }`. */
38
+ facets: Record<string, string>;
39
+ /** The words a search matches. @default the title, when it's text */
40
+ searchText?: string[];
41
+ }
42
+ export interface PageHeading03Labels {
43
+ /** The search field's placeholder. @default "Search" */
44
+ searchPlaceholder?: string;
45
+ /** The search field's name for screen readers. @default "Search" */
46
+ search?: string;
47
+ /** Names the list for screen readers. @default "Results" */
48
+ list?: string;
49
+ /** The count beside the tags. @default "3 of 10 shown" */
50
+ count?(shown: number, total: number): ReactNode;
51
+ /** The button that takes every filter off. @default "Clear filters" */
52
+ clearFilters?: string;
53
+ /** Names a filter tag's remove button. @default "Status filter: Approved" */
54
+ removeFilter?(facet: string, value: string): string;
55
+ /** After a comment count, for screen readers. @default " comments" */
56
+ comments?: string;
57
+ /** The title when nothing matches. @default "Nothing matches" */
58
+ emptyTitle?: string;
59
+ /** The line under it. @default "Try a different search, or take a filter off to see more." */
60
+ emptyDescription?: string;
61
+ /** The button that clears the search and the filters. @default "Clear search and filters" */
62
+ clearAll?: string;
63
+ }
64
+ export interface PageHeading03Props extends Omit<HTMLAttributes<HTMLDivElement>, "title" | "children"> {
65
+ /** The page's name, as its h1. */
66
+ title: ReactNode;
67
+ /** A line under the title. */
68
+ description?: ReactNode;
69
+ /** The one primary action, on the right: "Request review". */
70
+ primaryAction?: BlockButton;
71
+ /** The filter menus, after the search field. */
72
+ facets: PageHeading03Facet[];
73
+ /** The list the search and the filters narrow. */
74
+ items: PageHeading03Item[];
75
+ /** The filters in use to start with. */
76
+ defaultFilters?: PageHeading03Filter[];
77
+ /** Called with the filters in use whenever they change. */
78
+ onFiltersChange?(filters: PageHeading03Filter[]): void;
79
+ /** A 20px icon for the empty state, usually from lucide-react. @default a search glass with a cross */
80
+ emptyIcon?: ReactNode;
81
+ /** Words that aren't content (names for screen readers, button labels, the empty state), in English unless you pass your own. */
82
+ labels?: PageHeading03Labels;
83
+ }
@@ -0,0 +1,3 @@
1
+ import type { SectionHeading01Props } from "./SectionHeading01.types.cjs";
2
+ /** The label, the title and the intro centred over the section. */
3
+ export declare function SectionHeading01({ eyebrow, title, description, className, ...props }: SectionHeading01Props): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import type { SectionHeading01Props } from "./SectionHeading01.types.js";
2
+ /** The label, the title and the intro centred over the section. */
3
+ export declare function SectionHeading01({ eyebrow, title, description, className, ...props }: SectionHeading01Props): import("react").JSX.Element;
@@ -0,0 +1,9 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ export interface SectionHeading01Props extends Omit<HTMLAttributes<HTMLElement>, "title" | "children"> {
3
+ /** A small line in a Chip above the title, such as the section's name. */
4
+ eyebrow?: ReactNode;
5
+ /** The section's heading. */
6
+ title: ReactNode;
7
+ /** A sentence or two under the title, centred at a readable width. */
8
+ description?: ReactNode;
9
+ }
@@ -0,0 +1,9 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ export interface SectionHeading01Props extends Omit<HTMLAttributes<HTMLElement>, "title" | "children"> {
3
+ /** A small line in a Chip above the title, such as the section's name. */
4
+ eyebrow?: ReactNode;
5
+ /** The section's heading. */
6
+ title: ReactNode;
7
+ /** A sentence or two under the title, centred at a readable width. */
8
+ description?: ReactNode;
9
+ }
@@ -0,0 +1,3 @@
1
+ import type { SectionHeading02Props } from "./SectionHeading02.types.cjs";
2
+ /** The heading on the left and a link to the rest on the right. */
3
+ export declare function SectionHeading02({ eyebrow, title, description, link, className, ...props }: SectionHeading02Props): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import type { SectionHeading02Props } from "./SectionHeading02.types.js";
2
+ /** The heading on the left and a link to the rest on the right. */
3
+ export declare function SectionHeading02({ eyebrow, title, description, link, className, ...props }: SectionHeading02Props): import("react").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ import type { BlockLink } from "../../shared/shared.types.cjs";
3
+ export interface SectionHeading02Props extends Omit<HTMLAttributes<HTMLElement>, "title" | "children"> {
4
+ /** A small line in a Chip above the title, such as the section's name. */
5
+ eyebrow?: ReactNode;
6
+ /** The section's heading. */
7
+ title: ReactNode;
8
+ /** A sentence or two under the title. */
9
+ description?: ReactNode;
10
+ /** A link to the rest, on the right with an arrow (under the heading on phones): "All releases". */
11
+ link: BlockLink;
12
+ }
@@ -0,0 +1,12 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ import type { BlockLink } from "../../shared/shared.types.js";
3
+ export interface SectionHeading02Props extends Omit<HTMLAttributes<HTMLElement>, "title" | "children"> {
4
+ /** A small line in a Chip above the title, such as the section's name. */
5
+ eyebrow?: ReactNode;
6
+ /** The section's heading. */
7
+ title: ReactNode;
8
+ /** A sentence or two under the title. */
9
+ description?: ReactNode;
10
+ /** A link to the rest, on the right with an arrow (under the heading on phones): "All releases". */
11
+ link: BlockLink;
12
+ }
@@ -0,0 +1,3 @@
1
+ import type { SectionHeading03Props } from "./SectionHeading03.types.cjs";
2
+ /** The title on the left; the intro and a button on the right. */
3
+ export declare function SectionHeading03({ eyebrow, title, description, action, className, ...props }: SectionHeading03Props): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import type { SectionHeading03Props } from "./SectionHeading03.types.js";
2
+ /** The title on the left; the intro and a button on the right. */
3
+ export declare function SectionHeading03({ eyebrow, title, description, action, className, ...props }: SectionHeading03Props): import("react").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ import type { BlockAction } from "../../shared/shared.types.cjs";
3
+ export interface SectionHeading03Props extends Omit<HTMLAttributes<HTMLElement>, "title" | "children"> {
4
+ /** A small line in a Chip above the title, such as the section's name. */
5
+ eyebrow?: ReactNode;
6
+ /** The section's heading, on the left. */
7
+ title: ReactNode;
8
+ /** A sentence or two, on the right beside the title (under it on smaller screens). */
9
+ description?: ReactNode;
10
+ /** A button under the description, as a secondary pill: "How agents work". */
11
+ action?: BlockAction;
12
+ }
@@ -0,0 +1,12 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ import type { BlockAction } from "../../shared/shared.types.js";
3
+ export interface SectionHeading03Props extends Omit<HTMLAttributes<HTMLElement>, "title" | "children"> {
4
+ /** A small line in a Chip above the title, such as the section's name. */
5
+ eyebrow?: ReactNode;
6
+ /** The section's heading, on the left. */
7
+ title: ReactNode;
8
+ /** A sentence or two, on the right beside the title (under it on smaller screens). */
9
+ description?: ReactNode;
10
+ /** A button under the description, as a secondary pill: "How agents work". */
11
+ action?: BlockAction;
12
+ }
@@ -0,0 +1,3 @@
1
+ import type { Settings01Props } from "./Settings01.types.cjs";
2
+ /** Commandr's settings dialog: the sections down the left on the canvas, the chosen one's rows on an inset panel. */
3
+ export declare function Settings01({ sections, open: openProp, defaultOpen, onOpenChange, shortcut, section: sectionProp, defaultSection, onSectionChange, labels, className, ...props }: Settings01Props): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import type { Settings01Props } from "./Settings01.types.js";
2
+ /** Commandr's settings dialog: the sections down the left on the canvas, the chosen one's rows on an inset panel. */
3
+ export declare function Settings01({ sections, open: openProp, defaultOpen, onOpenChange, shortcut, section: sectionProp, defaultSection, onSectionChange, labels, className, ...props }: Settings01Props): import("react").JSX.Element;
@@ -0,0 +1,46 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ export interface Settings01Labels {
3
+ /** The dialog's title. @default "Settings" */
4
+ title?: string;
5
+ /** The close button's name. @default "Close settings" */
6
+ close?: string;
7
+ /** The list of sections' name for screen readers. @default "Settings sections" */
8
+ sections?: string;
9
+ /** The line under the sections. @default "Changes save as you go." */
10
+ saved?: string;
11
+ }
12
+ /** One section of settings, with its place in the list down the left. */
13
+ export interface Settings01Section {
14
+ /** Names the section for `section` and `onSectionChange`. */
15
+ id: string;
16
+ /** Its name, in the list and as its heading. */
17
+ label: string;
18
+ /** A 15px icon before the name in the list. */
19
+ icon?: ReactNode;
20
+ /** A line under the heading. */
21
+ description?: ReactNode;
22
+ /** Its rows: SettingsRow components with the controls in them. Save each change as it happens. */
23
+ content: ReactNode;
24
+ }
25
+ export interface Settings01Props extends Omit<HTMLAttributes<HTMLDivElement>, "title" | "children"> {
26
+ /** The sections, in the order they're listed. */
27
+ sections: Settings01Section[];
28
+ /** Whether the dialog is open, to control it from outside (from a Settings button, say). */
29
+ open?: boolean;
30
+ /** Whether it starts open, when `open` isn't given.
31
+ * @default false */
32
+ defaultOpen?: boolean;
33
+ /** Called when it opens (with ⌘, or Ctrl+,) or closes (with Escape, the backdrop or the close button). */
34
+ onOpenChange?(open: boolean): void;
35
+ /** ⌘, on a Mac and Ctrl+, elsewhere open it, as in most desktop apps.
36
+ * @default true */
37
+ shortcut?: boolean;
38
+ /** The id of the section that's showing, to control it from outside. */
39
+ section?: string;
40
+ /** The section it starts on, when `section` isn't given. @default the first */
41
+ defaultSection?: string;
42
+ /** Called when someone picks another section. */
43
+ onSectionChange?(id: string): void;
44
+ /** Words that aren't content (the title, names for screen readers), in English unless you pass your own. */
45
+ labels?: Settings01Labels;
46
+ }
@@ -0,0 +1,46 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ export interface Settings01Labels {
3
+ /** The dialog's title. @default "Settings" */
4
+ title?: string;
5
+ /** The close button's name. @default "Close settings" */
6
+ close?: string;
7
+ /** The list of sections' name for screen readers. @default "Settings sections" */
8
+ sections?: string;
9
+ /** The line under the sections. @default "Changes save as you go." */
10
+ saved?: string;
11
+ }
12
+ /** One section of settings, with its place in the list down the left. */
13
+ export interface Settings01Section {
14
+ /** Names the section for `section` and `onSectionChange`. */
15
+ id: string;
16
+ /** Its name, in the list and as its heading. */
17
+ label: string;
18
+ /** A 15px icon before the name in the list. */
19
+ icon?: ReactNode;
20
+ /** A line under the heading. */
21
+ description?: ReactNode;
22
+ /** Its rows: SettingsRow components with the controls in them. Save each change as it happens. */
23
+ content: ReactNode;
24
+ }
25
+ export interface Settings01Props extends Omit<HTMLAttributes<HTMLDivElement>, "title" | "children"> {
26
+ /** The sections, in the order they're listed. */
27
+ sections: Settings01Section[];
28
+ /** Whether the dialog is open, to control it from outside (from a Settings button, say). */
29
+ open?: boolean;
30
+ /** Whether it starts open, when `open` isn't given.
31
+ * @default false */
32
+ defaultOpen?: boolean;
33
+ /** Called when it opens (with ⌘, or Ctrl+,) or closes (with Escape, the backdrop or the close button). */
34
+ onOpenChange?(open: boolean): void;
35
+ /** ⌘, on a Mac and Ctrl+, elsewhere open it, as in most desktop apps.
36
+ * @default true */
37
+ shortcut?: boolean;
38
+ /** The id of the section that's showing, to control it from outside. */
39
+ section?: string;
40
+ /** The section it starts on, when `section` isn't given. @default the first */
41
+ defaultSection?: string;
42
+ /** Called when someone picks another section. */
43
+ onSectionChange?(id: string): void;
44
+ /** Words that aren't content (the title, names for screen readers), in English unless you pass your own. */
45
+ labels?: Settings01Labels;
46
+ }
@@ -0,0 +1,3 @@
1
+ import type { Settings02Props } from "./Settings02.types.cjs";
2
+ /** The settings dialog's sections as a page: the list of sections on the left, the chosen one's cards of rows beside it. */
3
+ export declare function Settings02({ title, description, sections, section: sectionProp, defaultSection, onSectionChange, savedAt, labels, className, ...props }: Settings02Props): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import type { Settings02Props } from "./Settings02.types.js";
2
+ /** The settings dialog's sections as a page: the list of sections on the left, the chosen one's cards of rows beside it. */
3
+ export declare function Settings02({ title, description, sections, section: sectionProp, defaultSection, onSectionChange, savedAt, labels, className, ...props }: Settings02Props): import("react").JSX.Element;
@@ -0,0 +1,45 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ export interface Settings02Labels {
3
+ /** The list of sections' name for screen readers. @default "Settings sections" */
4
+ sections?: string;
5
+ /** Beside the section's heading for a moment after `savedAt` changes. @default "Saved" */
6
+ saved?: string;
7
+ }
8
+ /** A card of rows within a section, under an optional heading. */
9
+ export interface Settings02Group {
10
+ /** A small heading over the card: "Starting up". */
11
+ title?: ReactNode;
12
+ /** Its rows: SettingsRow components with the controls in them. */
13
+ content: ReactNode;
14
+ }
15
+ /** One section of settings, with its place in the list down the left. */
16
+ export interface Settings02Section {
17
+ /** Names the section for `section` and `onSectionChange`. */
18
+ id: string;
19
+ /** Its name, in the list and as its heading. */
20
+ label: string;
21
+ /** A 15px icon before the name in the list. */
22
+ icon?: ReactNode;
23
+ /** A line under the heading. */
24
+ description?: ReactNode;
25
+ /** Its cards of rows. */
26
+ groups: Settings02Group[];
27
+ }
28
+ export interface Settings02Props extends Omit<HTMLAttributes<HTMLDivElement>, "title" | "children"> {
29
+ /** The page's heading: "Settings". */
30
+ title: ReactNode;
31
+ /** A line under it. */
32
+ description?: ReactNode;
33
+ /** The sections, in the order they're listed. */
34
+ sections: Settings02Section[];
35
+ /** The id of the section that's showing, to control it from outside. */
36
+ section?: string;
37
+ /** The section it starts on, when `section` isn't given. @default the first */
38
+ defaultSection?: string;
39
+ /** Called when someone picks another section. */
40
+ onSectionChange?(id: string): void;
41
+ /** When a change was last saved, such as Date.now(). Each new value shows "Saved" beside the heading for two seconds. */
42
+ savedAt?: number;
43
+ /** Words that aren't content (names for screen readers, "Saved"), in English unless you pass your own. */
44
+ labels?: Settings02Labels;
45
+ }
@@ -0,0 +1,45 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ export interface Settings02Labels {
3
+ /** The list of sections' name for screen readers. @default "Settings sections" */
4
+ sections?: string;
5
+ /** Beside the section's heading for a moment after `savedAt` changes. @default "Saved" */
6
+ saved?: string;
7
+ }
8
+ /** A card of rows within a section, under an optional heading. */
9
+ export interface Settings02Group {
10
+ /** A small heading over the card: "Starting up". */
11
+ title?: ReactNode;
12
+ /** Its rows: SettingsRow components with the controls in them. */
13
+ content: ReactNode;
14
+ }
15
+ /** One section of settings, with its place in the list down the left. */
16
+ export interface Settings02Section {
17
+ /** Names the section for `section` and `onSectionChange`. */
18
+ id: string;
19
+ /** Its name, in the list and as its heading. */
20
+ label: string;
21
+ /** A 15px icon before the name in the list. */
22
+ icon?: ReactNode;
23
+ /** A line under the heading. */
24
+ description?: ReactNode;
25
+ /** Its cards of rows. */
26
+ groups: Settings02Group[];
27
+ }
28
+ export interface Settings02Props extends Omit<HTMLAttributes<HTMLDivElement>, "title" | "children"> {
29
+ /** The page's heading: "Settings". */
30
+ title: ReactNode;
31
+ /** A line under it. */
32
+ description?: ReactNode;
33
+ /** The sections, in the order they're listed. */
34
+ sections: Settings02Section[];
35
+ /** The id of the section that's showing, to control it from outside. */
36
+ section?: string;
37
+ /** The section it starts on, when `section` isn't given. @default the first */
38
+ defaultSection?: string;
39
+ /** Called when someone picks another section. */
40
+ onSectionChange?(id: string): void;
41
+ /** When a change was last saved, such as Date.now(). Each new value shows "Saved" beside the heading for two seconds. */
42
+ savedAt?: number;
43
+ /** Words that aren't content (names for screen readers, "Saved"), in English unless you pass your own. */
44
+ labels?: Settings02Labels;
45
+ }
@@ -0,0 +1,3 @@
1
+ import type { Settings03Props } from "./Settings03.types.cjs";
2
+ /** API keys in a table, each with its public part to copy, when it was last used and a way to revoke it; and a dialog that makes one and shows it once. */
3
+ export declare function Settings03({ title, description, keys: initialKeys, accessOptions, defaultAccess, expiryOptions, defaultExpiry, onCreateKey, onRevokeKey, note, labels, className, ...props }: Settings03Props): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import type { Settings03Props } from "./Settings03.types.js";
2
+ /** API keys in a table, each with its public part to copy, when it was last used and a way to revoke it; and a dialog that makes one and shows it once. */
3
+ export declare function Settings03({ title, description, keys: initialKeys, accessOptions, defaultAccess, expiryOptions, defaultExpiry, onCreateKey, onRevokeKey, note, labels, className, ...props }: Settings03Props): import("react").JSX.Element;
@@ -0,0 +1,132 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ /** An API key, as the table lists it. The secret itself is never kept: only the public part that identifies it. */
3
+ export interface Settings03Key {
4
+ /** Names it for `onRevokeKey`. */
5
+ id: string;
6
+ /** Where it's used: "CI deploys". */
7
+ name: string;
8
+ /** The public part at the front of the key, shown with the secret masked after it, and copied by its button. */
9
+ prefix: string;
10
+ /** What it can do: "Read only". */
11
+ access?: string;
12
+ /** Who made it. */
13
+ createdBy?: string;
14
+ /** When it was made: "12 Mar 2026". */
15
+ created: string;
16
+ /** When it was last used: "2 hours ago". Leave it out for a key that's never been used. */
17
+ lastUsed?: string;
18
+ }
19
+ /** A choice in the create dialog's menus. */
20
+ export interface Settings03Option {
21
+ value: string;
22
+ label: string;
23
+ /** Under the menu while it's chosen. */
24
+ description?: string;
25
+ }
26
+ /** What the create dialog asks for. */
27
+ export interface Settings03NewKey {
28
+ /** The name, trimmed. */
29
+ name: string;
30
+ /** The chosen access option's value. */
31
+ access?: string;
32
+ /** The chosen expiry option's value. */
33
+ expiry?: string;
34
+ }
35
+ /** A key just made: its row, and the whole key to show once. */
36
+ export interface Settings03CreatedKey {
37
+ key: Settings03Key;
38
+ /** The full key, secret and all. It's shown in the dialog to copy, then never again. */
39
+ secret: string;
40
+ }
41
+ export interface Settings03Labels {
42
+ /** The button in the header and the create dialog's. @default "Create key" */
43
+ create?: string;
44
+ /** The create dialog's title. @default "Create an API key" */
45
+ createTitle?: string;
46
+ /** The line under it. @default "You'll see the key once, straight after you create it." */
47
+ createDescription?: string;
48
+ /** @default "Name" */
49
+ name?: string;
50
+ /** @default "Where it's used, so you know which one to revoke." */
51
+ nameHint?: string;
52
+ /** @default "Nightly backups" */
53
+ namePlaceholder?: string;
54
+ /** @default "Name the key after where it's used, like the service or script." */
55
+ nameEmpty?: string;
56
+ /** When another key has the name. @default `There's already a key called ${name}.` */
57
+ nameTaken?(name: string): string;
58
+ /** Shown when `onCreateKey` fails without a message of its own. @default "That didn't go through. Try again in a moment." */
59
+ failed?: string;
60
+ /** @default "Access" */
61
+ access?: string;
62
+ /** @default "Expires" */
63
+ expiry?: string;
64
+ /** @default "Cancel" */
65
+ cancel?: string;
66
+ /** The dialog's title once the key is made. @default "Copy your new key" */
67
+ createdTitle?: string;
68
+ /** The line under it. @default "This is the only time you'll see it. Put it somewhere safe, like your CI's secrets, before you close this." */
69
+ createdDescription?: string;
70
+ /** @default "Done" */
71
+ done?: string;
72
+ /** The table's caption, for screen readers. @default "API keys" */
73
+ table?: string;
74
+ /** Column headings. @default "Name", "Key", "Created", "Last used", "Actions" */
75
+ columns?: {
76
+ name?: string;
77
+ key?: string;
78
+ created?: string;
79
+ lastUsed?: string;
80
+ actions?: string;
81
+ };
82
+ /** Read out after the key's public part. @default ", then the secret, hidden" */
83
+ secretHidden?: string;
84
+ /** The copy button's name. @default `Copy the ID of ${name}` */
85
+ copy?(name: string): string;
86
+ /** For a key that's never been used. @default "Never" */
87
+ never?: string;
88
+ /** Under the name on phones. @default `used ${lastUsed.toLowerCase()}`, or "never used" */
89
+ used?(lastUsed: string | undefined): string;
90
+ /** @default "Revoke" */
91
+ revoke?: string;
92
+ /** The revoke button's name. @default `Revoke ${name}` */
93
+ revokeKey?(name: string): string;
94
+ /** The confirmation's title. @default `Revoke ${name}?` */
95
+ revokeTitle?(name: string): string;
96
+ /** The confirmation's line, given the key's public part in code. @default (prefix) => <>Anything still using {prefix} stops working straight away. You can't undo this.</> */
97
+ revokeDescription?(prefix: ReactNode): ReactNode;
98
+ /** The confirmation's button. @default "Revoke key" */
99
+ revokeConfirm?: string;
100
+ /** With no keys. @default "No API keys" */
101
+ emptyTitle?: string;
102
+ /** @default "Create one to use the API from a script or your CI." */
103
+ emptyDescription?: string;
104
+ /** Who made a key made here, when `onCreateKey` doesn't say. @default "You" */
105
+ you?: string;
106
+ /** When a key made here was made, when `onCreateKey` doesn't say. @default "Today" */
107
+ today?: string;
108
+ }
109
+ export interface Settings03Props extends Omit<HTMLAttributes<HTMLElement>, "title" | "children"> {
110
+ /** The section's heading: "API keys". */
111
+ title: ReactNode;
112
+ /** A line under it. */
113
+ description?: ReactNode;
114
+ /** The keys there are, newest first. The block keeps its own list from here, adding and removing keys as people do. */
115
+ keys: Settings03Key[];
116
+ /** The create dialog's access menu. Leave it out to not ask. */
117
+ accessOptions?: Settings03Option[];
118
+ /** The access chosen to start with. @default the first option */
119
+ defaultAccess?: string;
120
+ /** The create dialog's expiry menu. Leave it out to not ask. */
121
+ expiryOptions?: Settings03Option[];
122
+ /** The expiry chosen to start with. @default the first option */
123
+ defaultExpiry?: string;
124
+ /** Makes the key on your server and returns it, with the full secret to show once. If it throws, its message shows under the name. Without it a sample key is made here. */
125
+ onCreateKey?(values: Settings03NewKey): Settings03CreatedKey | Promise<Settings03CreatedKey>;
126
+ /** Revokes the key on your server, once it's confirmed. The confirmation waits for its promise and shows its error if it throws. */
127
+ onRevokeKey?(key: Settings03Key): void | Promise<void>;
128
+ /** Small print under the table, such as a link to the API guide. */
129
+ note?: ReactNode;
130
+ /** Words that aren't content (buttons, headings, messages), in English unless you pass your own. */
131
+ labels?: Settings03Labels;
132
+ }