@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,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
+ }
@@ -0,0 +1,3 @@
1
+ import type { Settings04Props } from "./Settings04.types.cjs";
2
+ /** People with their role and a menu to change it or remove them, an invite at the top, and the invites still waiting. */
3
+ export declare function Settings04({ title, description, members: initialMembers, invites: initialInvites, roles, defaultInviteRole, currentUserEmail, onInvite, onRoleChange, onRemove, onResendInvite, onRevokeInvite, onCopyEmail, labels, className, ...props }: Settings04Props): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import type { Settings04Props } from "./Settings04.types.js";
2
+ /** People with their role and a menu to change it or remove them, an invite at the top, and the invites still waiting. */
3
+ export declare function Settings04({ title, description, members: initialMembers, invites: initialInvites, roles, defaultInviteRole, currentUserEmail, onInvite, onRoleChange, onRemove, onResendInvite, onRevokeInvite, onCopyEmail, labels, className, ...props }: Settings04Props): import("react").JSX.Element;
@@ -0,0 +1,124 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ /** A role someone can have. */
3
+ export interface Settings04Role {
4
+ /** Kept on members and invites: "admin". */
5
+ value: string;
6
+ /** Its name: "Admin". */
7
+ label: string;
8
+ /** What it can do, under its name in the menus. */
9
+ description?: string;
10
+ }
11
+ /** Someone in the workspace. */
12
+ export interface Settings04Member {
13
+ name: string;
14
+ /** Their address. It also tells members apart, so it must be unique. */
15
+ email: string;
16
+ /** One of the roles' values. Ignored for the owner. */
17
+ role: string;
18
+ /** The owner's role can't be changed and they can't be removed, so their row has neither. */
19
+ owner?: boolean;
20
+ }
21
+ /** An invite that hasn't been accepted yet. */
22
+ export interface Settings04Invite {
23
+ email: string;
24
+ /** The role they'll join with: one of the roles' values. */
25
+ role: string;
26
+ /** When it was sent: "2 days ago". */
27
+ sent: string;
28
+ /** Who sent it. */
29
+ invitedBy?: string;
30
+ }
31
+ export interface Settings04Labels {
32
+ /** @default "Invite by email" */
33
+ inviteEmail?: string;
34
+ /** @default "The link in the invite works for 7 days." */
35
+ inviteHint?: string;
36
+ /** @default "name@example.com" */
37
+ invitePlaceholder?: string;
38
+ /** The invite's role menu, for screen readers. @default "Role for the invite" */
39
+ inviteRole?: string;
40
+ /** @default "Send invite" */
41
+ send?: string;
42
+ /** @default "Enter the email address to send the invite to." */
43
+ emailEmpty?: string;
44
+ /** @default "That doesn't look like an email address." */
45
+ emailInvalid?: string;
46
+ /** When the address belongs to a member. @default `${name} is already a member.` */
47
+ alreadyMember?(name: string): string;
48
+ /** When they're already invited. @default "They're already invited. Resend it from the list below." */
49
+ alreadyInvited?: string;
50
+ /** Shown when `onInvite` fails without a message of its own. @default "That didn't go through. Try again in a moment." */
51
+ failed?: string;
52
+ /** @default "Members" */
53
+ members?: string;
54
+ /** @default "Pending invites" */
55
+ invites?: string;
56
+ /** The badge beside your own name. @default "You" */
57
+ you?: string;
58
+ /** In place of the owner's role menu. @default "Owner" */
59
+ owner?: string;
60
+ /** A member's role menu, for screen readers. @default `Role for ${name}` */
61
+ roleFor?(name: string): string;
62
+ /** A row's menu button, for screen readers. @default `More for ${name}` */
63
+ moreFor?(name: string): string;
64
+ /** A member's menu, for screen readers. @default `Actions for ${name}` */
65
+ actionsFor?(name: string): string;
66
+ /** An invite's menu, for screen readers. @default `Actions for the invite to ${email}` */
67
+ inviteActionsFor?(email: string): string;
68
+ /** @default "Copy email address" */
69
+ copyEmail?: string;
70
+ /** @default "Remove" */
71
+ remove?: string;
72
+ /** @default "Resend invite" */
73
+ resend?: string;
74
+ /** @default "Revoke invite" */
75
+ revokeInvite?: string;
76
+ /** The badge on an invite, given its role's name. @default `${role} · pending` */
77
+ pending?(role: string): ReactNode;
78
+ /** The line under an invite's address. @default `Invited ${sent.toLowerCase()} by ${invitedBy}` */
79
+ invited?(invite: Settings04Invite): ReactNode;
80
+ /** When an invite sent here was sent. @default "Just now" */
81
+ justNow?: string;
82
+ /** The removal's title. @default `Remove ${name}?` */
83
+ removeTitle?(name: string): string;
84
+ /** The removal's line. @default "They lose access straight away." */
85
+ removeDescription?: string;
86
+ /** The removal's button. @default "Remove member" */
87
+ removeConfirm?: string;
88
+ }
89
+ export interface Settings04Props extends Omit<HTMLAttributes<HTMLElement>, "title" | "children"> {
90
+ /** The section's heading: "Members". */
91
+ title: ReactNode;
92
+ /** A line under it, given how many members and invites there are now. */
93
+ description?: ReactNode | ((counts: {
94
+ members: number;
95
+ invites: number;
96
+ }) => ReactNode);
97
+ /** The people in it, in order. The block keeps its own list from here, changing it as people do. */
98
+ members: Settings04Member[];
99
+ /** The invites still waiting. */
100
+ invites?: Settings04Invite[];
101
+ /** The roles, for the menus. */
102
+ roles: Settings04Role[];
103
+ /** The role an invite starts with. @default the first role */
104
+ defaultInviteRole?: string;
105
+ /** The address of the person looking, so their row says "You" and their invites say who sent them. */
106
+ currentUserEmail?: string;
107
+ /** Sends an invite, once the address is valid and new. While its promise is pending the button shows a spinner; if it throws, its message shows under the field. */
108
+ onInvite?(invite: {
109
+ email: string;
110
+ role: string;
111
+ }): void | Promise<void>;
112
+ /** Saves a member's new role. */
113
+ onRoleChange?(member: Settings04Member, role: string): void;
114
+ /** Removes a member, once it's confirmed. The confirmation waits for its promise and shows its error if it throws. */
115
+ onRemove?(member: Settings04Member): void | Promise<void>;
116
+ /** Sends an invite again. */
117
+ onResendInvite?(invite: Settings04Invite): void;
118
+ /** Revokes an invite. It goes from the list straight away, as it can be undone: call `undo` (from a toast's Undo, say) to put it back. */
119
+ onRevokeInvite?(invite: Settings04Invite, undo: () => void): void;
120
+ /** Called once a member's address is on the clipboard, to say so. */
121
+ onCopyEmail?(member: Settings04Member): void;
122
+ /** Words that aren't content (labels, buttons, menus, messages), in English unless you pass your own. */
123
+ labels?: Settings04Labels;
124
+ }
@@ -0,0 +1,124 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ /** A role someone can have. */
3
+ export interface Settings04Role {
4
+ /** Kept on members and invites: "admin". */
5
+ value: string;
6
+ /** Its name: "Admin". */
7
+ label: string;
8
+ /** What it can do, under its name in the menus. */
9
+ description?: string;
10
+ }
11
+ /** Someone in the workspace. */
12
+ export interface Settings04Member {
13
+ name: string;
14
+ /** Their address. It also tells members apart, so it must be unique. */
15
+ email: string;
16
+ /** One of the roles' values. Ignored for the owner. */
17
+ role: string;
18
+ /** The owner's role can't be changed and they can't be removed, so their row has neither. */
19
+ owner?: boolean;
20
+ }
21
+ /** An invite that hasn't been accepted yet. */
22
+ export interface Settings04Invite {
23
+ email: string;
24
+ /** The role they'll join with: one of the roles' values. */
25
+ role: string;
26
+ /** When it was sent: "2 days ago". */
27
+ sent: string;
28
+ /** Who sent it. */
29
+ invitedBy?: string;
30
+ }
31
+ export interface Settings04Labels {
32
+ /** @default "Invite by email" */
33
+ inviteEmail?: string;
34
+ /** @default "The link in the invite works for 7 days." */
35
+ inviteHint?: string;
36
+ /** @default "name@example.com" */
37
+ invitePlaceholder?: string;
38
+ /** The invite's role menu, for screen readers. @default "Role for the invite" */
39
+ inviteRole?: string;
40
+ /** @default "Send invite" */
41
+ send?: string;
42
+ /** @default "Enter the email address to send the invite to." */
43
+ emailEmpty?: string;
44
+ /** @default "That doesn't look like an email address." */
45
+ emailInvalid?: string;
46
+ /** When the address belongs to a member. @default `${name} is already a member.` */
47
+ alreadyMember?(name: string): string;
48
+ /** When they're already invited. @default "They're already invited. Resend it from the list below." */
49
+ alreadyInvited?: string;
50
+ /** Shown when `onInvite` fails without a message of its own. @default "That didn't go through. Try again in a moment." */
51
+ failed?: string;
52
+ /** @default "Members" */
53
+ members?: string;
54
+ /** @default "Pending invites" */
55
+ invites?: string;
56
+ /** The badge beside your own name. @default "You" */
57
+ you?: string;
58
+ /** In place of the owner's role menu. @default "Owner" */
59
+ owner?: string;
60
+ /** A member's role menu, for screen readers. @default `Role for ${name}` */
61
+ roleFor?(name: string): string;
62
+ /** A row's menu button, for screen readers. @default `More for ${name}` */
63
+ moreFor?(name: string): string;
64
+ /** A member's menu, for screen readers. @default `Actions for ${name}` */
65
+ actionsFor?(name: string): string;
66
+ /** An invite's menu, for screen readers. @default `Actions for the invite to ${email}` */
67
+ inviteActionsFor?(email: string): string;
68
+ /** @default "Copy email address" */
69
+ copyEmail?: string;
70
+ /** @default "Remove" */
71
+ remove?: string;
72
+ /** @default "Resend invite" */
73
+ resend?: string;
74
+ /** @default "Revoke invite" */
75
+ revokeInvite?: string;
76
+ /** The badge on an invite, given its role's name. @default `${role} · pending` */
77
+ pending?(role: string): ReactNode;
78
+ /** The line under an invite's address. @default `Invited ${sent.toLowerCase()} by ${invitedBy}` */
79
+ invited?(invite: Settings04Invite): ReactNode;
80
+ /** When an invite sent here was sent. @default "Just now" */
81
+ justNow?: string;
82
+ /** The removal's title. @default `Remove ${name}?` */
83
+ removeTitle?(name: string): string;
84
+ /** The removal's line. @default "They lose access straight away." */
85
+ removeDescription?: string;
86
+ /** The removal's button. @default "Remove member" */
87
+ removeConfirm?: string;
88
+ }
89
+ export interface Settings04Props extends Omit<HTMLAttributes<HTMLElement>, "title" | "children"> {
90
+ /** The section's heading: "Members". */
91
+ title: ReactNode;
92
+ /** A line under it, given how many members and invites there are now. */
93
+ description?: ReactNode | ((counts: {
94
+ members: number;
95
+ invites: number;
96
+ }) => ReactNode);
97
+ /** The people in it, in order. The block keeps its own list from here, changing it as people do. */
98
+ members: Settings04Member[];
99
+ /** The invites still waiting. */
100
+ invites?: Settings04Invite[];
101
+ /** The roles, for the menus. */
102
+ roles: Settings04Role[];
103
+ /** The role an invite starts with. @default the first role */
104
+ defaultInviteRole?: string;
105
+ /** The address of the person looking, so their row says "You" and their invites say who sent them. */
106
+ currentUserEmail?: string;
107
+ /** Sends an invite, once the address is valid and new. While its promise is pending the button shows a spinner; if it throws, its message shows under the field. */
108
+ onInvite?(invite: {
109
+ email: string;
110
+ role: string;
111
+ }): void | Promise<void>;
112
+ /** Saves a member's new role. */
113
+ onRoleChange?(member: Settings04Member, role: string): void;
114
+ /** Removes a member, once it's confirmed. The confirmation waits for its promise and shows its error if it throws. */
115
+ onRemove?(member: Settings04Member): void | Promise<void>;
116
+ /** Sends an invite again. */
117
+ onResendInvite?(invite: Settings04Invite): void;
118
+ /** Revokes an invite. It goes from the list straight away, as it can be undone: call `undo` (from a toast's Undo, say) to put it back. */
119
+ onRevokeInvite?(invite: Settings04Invite, undo: () => void): void;
120
+ /** Called once a member's address is on the clipboard, to say so. */
121
+ onCopyEmail?(member: Settings04Member): void;
122
+ /** Words that aren't content (labels, buttons, menus, messages), in English unless you pass your own. */
123
+ labels?: Settings04Labels;
124
+ }
@@ -0,0 +1,3 @@
1
+ import type { Settings05Props } from "./Settings05.types.cjs";
2
+ /** A project's danger zone on a card edged in red: transfer it, archive it, or delete it after typing its name. */
3
+ export declare function Settings05({ title, description, project, owner: initialOwner, currentUserName, admins, contents, defaultArchived, onTransfer, onArchiveChange, onDelete, onBack, labels, className, ...props }: Settings05Props): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import type { Settings05Props } from "./Settings05.types.js";
2
+ /** A project's danger zone on a card edged in red: transfer it, archive it, or delete it after typing its name. */
3
+ export declare function Settings05({ title, description, project, owner: initialOwner, currentUserName, admins, contents, defaultArchived, onTransfer, onArchiveChange, onDelete, onBack, labels, className, ...props }: Settings05Props): import("react").JSX.Element;
@@ -0,0 +1,94 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ /** Someone the project can be handed to. */
3
+ export interface Settings05Admin {
4
+ /** Passed to `onTransfer`, and shown as the owner afterwards: their name. */
5
+ value: string;
6
+ label: string;
7
+ /** Under the name in the menu: "Admin · tomas@example.com". */
8
+ description?: string;
9
+ }
10
+ /** Something that's deleted with the project, listed in the confirmation. */
11
+ export interface Settings05Content {
12
+ /** How many: "214". */
13
+ count: ReactNode;
14
+ /** Of what: "deploys, with their logs and preview URLs". */
15
+ what: ReactNode;
16
+ }
17
+ export interface Settings05Labels {
18
+ /** @default "Transfer ownership" */
19
+ transferTitle?: string;
20
+ /** Under it, while you own it. @default "You own it now. Hand it to another admin and stay on as a member." */
21
+ transferYou?: string;
22
+ /** Under it, once someone else does. @default `${owner} owns it now. They can hand it back at any time.` */
23
+ transferOther?(owner: string): string;
24
+ /** @default "Transfer" */
25
+ transfer?: string;
26
+ /** The confirmation's title. @default `Transfer ${project}?` */
27
+ transferConfirmTitle?(project: string): string;
28
+ /** @default "The new owner can rename, transfer or delete it. You'll stay on as a member." */
29
+ transferConfirmDescription?: string;
30
+ /** @default "Transfer ownership" */
31
+ transferConfirm?: string;
32
+ /** @default "New owner" */
33
+ newOwner?: string;
34
+ /** @default "Choose an admin" */
35
+ newOwnerPlaceholder?: string;
36
+ /** @default "Archive project" */
37
+ archiveTitle?: string;
38
+ /** @default "Pauses the project and hides it from the sidebar. You can restore it at any time." */
39
+ archiveDescription?: string;
40
+ /** @default "Archive" */
41
+ archive?: string;
42
+ /** @default "Restore project" */
43
+ restoreTitle?: string;
44
+ /** @default "It's archived: it's paused and hidden from the sidebar." */
45
+ archivedDescription?: string;
46
+ /** @default "Restore" */
47
+ restore?: string;
48
+ /** The last row's title, and its button. @default "Delete project" */
49
+ deleteTitle?: string;
50
+ /** @default "Deletes it for good, with everything in it. This can't be undone." */
51
+ deleteDescription?: string;
52
+ /** The confirmation's title. @default `Delete ${project}?` */
53
+ deleteConfirmTitle?(project: string): string;
54
+ /** The confirmation's line, before the list of what goes. @default "This deletes the project for everyone. Along with it go:" */
55
+ deleteConfirmDescription?: string;
56
+ /** The field's label, given the name to type in code. @default (project) => <>Type {project} to confirm</> */
57
+ typeToConfirm?(project: ReactNode): ReactNode;
58
+ /** The confirmation's button. @default "Delete project" */
59
+ deleteConfirm?: string;
60
+ /** What shows once it's gone. @default `${project} was deleted` */
61
+ deletedTitle?(project: string): string;
62
+ /** @default "Its data and settings are gone." */
63
+ deletedDescription?: string;
64
+ /** The button under it. @default "Back to projects" */
65
+ back?: string;
66
+ }
67
+ export interface Settings05Props extends Omit<HTMLAttributes<HTMLElement>, "title" | "children"> {
68
+ /** The section's heading: "Danger zone". */
69
+ title: ReactNode;
70
+ /** A line under it: what these change, and who can use them. */
71
+ description?: ReactNode;
72
+ /** The project's name: in the confirmations, and what has to be typed to delete it. */
73
+ project: string;
74
+ /** Who owns it now, by name. */
75
+ owner: string;
76
+ /** The name of the person looking, so the transfer row can say "You own it now". */
77
+ currentUserName?: string;
78
+ /** Who it can be handed to. */
79
+ admins: Settings05Admin[];
80
+ /** What goes with it, listed in the delete confirmation. */
81
+ contents?: Settings05Content[];
82
+ /** Whether it starts archived. */
83
+ defaultArchived?: boolean;
84
+ /** Hands it to someone, once it's confirmed. The confirmation waits for its promise and shows its error if it throws. */
85
+ onTransfer?(owner: string): void | Promise<void>;
86
+ /** Archives or restores it. It happens straight away, as it can be undone: call `undo` (from a toast's Undo, say) to switch it back. */
87
+ onArchiveChange?(archived: boolean, undo: () => void): void;
88
+ /** Deletes it, once the name is typed and it's confirmed. The confirmation waits for its promise and shows its error if it throws. */
89
+ onDelete?(): void | Promise<void>;
90
+ /** The button once it's gone, which usually goes to the project list. Without it the button brings the section back. */
91
+ onBack?(): void;
92
+ /** Words that aren't content (row titles, buttons, confirmations), in English unless you pass your own. */
93
+ labels?: Settings05Labels;
94
+ }
@@ -0,0 +1,94 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ /** Someone the project can be handed to. */
3
+ export interface Settings05Admin {
4
+ /** Passed to `onTransfer`, and shown as the owner afterwards: their name. */
5
+ value: string;
6
+ label: string;
7
+ /** Under the name in the menu: "Admin · tomas@example.com". */
8
+ description?: string;
9
+ }
10
+ /** Something that's deleted with the project, listed in the confirmation. */
11
+ export interface Settings05Content {
12
+ /** How many: "214". */
13
+ count: ReactNode;
14
+ /** Of what: "deploys, with their logs and preview URLs". */
15
+ what: ReactNode;
16
+ }
17
+ export interface Settings05Labels {
18
+ /** @default "Transfer ownership" */
19
+ transferTitle?: string;
20
+ /** Under it, while you own it. @default "You own it now. Hand it to another admin and stay on as a member." */
21
+ transferYou?: string;
22
+ /** Under it, once someone else does. @default `${owner} owns it now. They can hand it back at any time.` */
23
+ transferOther?(owner: string): string;
24
+ /** @default "Transfer" */
25
+ transfer?: string;
26
+ /** The confirmation's title. @default `Transfer ${project}?` */
27
+ transferConfirmTitle?(project: string): string;
28
+ /** @default "The new owner can rename, transfer or delete it. You'll stay on as a member." */
29
+ transferConfirmDescription?: string;
30
+ /** @default "Transfer ownership" */
31
+ transferConfirm?: string;
32
+ /** @default "New owner" */
33
+ newOwner?: string;
34
+ /** @default "Choose an admin" */
35
+ newOwnerPlaceholder?: string;
36
+ /** @default "Archive project" */
37
+ archiveTitle?: string;
38
+ /** @default "Pauses the project and hides it from the sidebar. You can restore it at any time." */
39
+ archiveDescription?: string;
40
+ /** @default "Archive" */
41
+ archive?: string;
42
+ /** @default "Restore project" */
43
+ restoreTitle?: string;
44
+ /** @default "It's archived: it's paused and hidden from the sidebar." */
45
+ archivedDescription?: string;
46
+ /** @default "Restore" */
47
+ restore?: string;
48
+ /** The last row's title, and its button. @default "Delete project" */
49
+ deleteTitle?: string;
50
+ /** @default "Deletes it for good, with everything in it. This can't be undone." */
51
+ deleteDescription?: string;
52
+ /** The confirmation's title. @default `Delete ${project}?` */
53
+ deleteConfirmTitle?(project: string): string;
54
+ /** The confirmation's line, before the list of what goes. @default "This deletes the project for everyone. Along with it go:" */
55
+ deleteConfirmDescription?: string;
56
+ /** The field's label, given the name to type in code. @default (project) => <>Type {project} to confirm</> */
57
+ typeToConfirm?(project: ReactNode): ReactNode;
58
+ /** The confirmation's button. @default "Delete project" */
59
+ deleteConfirm?: string;
60
+ /** What shows once it's gone. @default `${project} was deleted` */
61
+ deletedTitle?(project: string): string;
62
+ /** @default "Its data and settings are gone." */
63
+ deletedDescription?: string;
64
+ /** The button under it. @default "Back to projects" */
65
+ back?: string;
66
+ }
67
+ export interface Settings05Props extends Omit<HTMLAttributes<HTMLElement>, "title" | "children"> {
68
+ /** The section's heading: "Danger zone". */
69
+ title: ReactNode;
70
+ /** A line under it: what these change, and who can use them. */
71
+ description?: ReactNode;
72
+ /** The project's name: in the confirmations, and what has to be typed to delete it. */
73
+ project: string;
74
+ /** Who owns it now, by name. */
75
+ owner: string;
76
+ /** The name of the person looking, so the transfer row can say "You own it now". */
77
+ currentUserName?: string;
78
+ /** Who it can be handed to. */
79
+ admins: Settings05Admin[];
80
+ /** What goes with it, listed in the delete confirmation. */
81
+ contents?: Settings05Content[];
82
+ /** Whether it starts archived. */
83
+ defaultArchived?: boolean;
84
+ /** Hands it to someone, once it's confirmed. The confirmation waits for its promise and shows its error if it throws. */
85
+ onTransfer?(owner: string): void | Promise<void>;
86
+ /** Archives or restores it. It happens straight away, as it can be undone: call `undo` (from a toast's Undo, say) to switch it back. */
87
+ onArchiveChange?(archived: boolean, undo: () => void): void;
88
+ /** Deletes it, once the name is typed and it's confirmed. The confirmation waits for its promise and shows its error if it throws. */
89
+ onDelete?(): void | Promise<void>;
90
+ /** The button once it's gone, which usually goes to the project list. Without it the button brings the section back. */
91
+ onBack?(): void;
92
+ /** Words that aren't content (row titles, buttons, confirmations), in English unless you pass your own. */
93
+ labels?: Settings05Labels;
94
+ }
@@ -0,0 +1,3 @@
1
+ import type { AppWorkspaceItemsProps } from "./shared.types.cjs";
2
+ /** The workspace menu's items: its heading, each workspace with the current one ticked, then a new one. */
3
+ export declare function AppWorkspaceItems({ workspaces, onNewWorkspace, heading, newWorkspace, spacerClassName }: AppWorkspaceItemsProps): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import type { AppWorkspaceItemsProps } from "./shared.types.js";
2
+ /** The workspace menu's items: its heading, each workspace with the current one ticked, then a new one. */
3
+ export declare function AppWorkspaceItems({ workspaces, onNewWorkspace, heading, newWorkspace, spacerClassName }: AppWorkspaceItemsProps): import("react").JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import type { BlockActionButtonProps, BlockActionsProps } from "./shared.types.cjs";
2
2
  /** One action as a large pill: a link styled as a button when it has an href, a button otherwise. */
3
- export declare function BlockActionButton({ action, variant, size, className, onAfterClick, fullWidth }: BlockActionButtonProps): import("react").JSX.Element;
3
+ export declare function BlockActionButton({ action, variant, size, shape, className, onAfterClick, fullWidth }: BlockActionButtonProps): import("react").JSX.Element;
4
4
  /** The primary action and an optional secondary one, side by side. */
5
5
  export declare function BlockActions({ primary, secondary, className }: BlockActionsProps): import("react").JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import type { BlockActionButtonProps, BlockActionsProps } from "./shared.types.js";
2
2
  /** One action as a large pill: a link styled as a button when it has an href, a button otherwise. */
3
- export declare function BlockActionButton({ action, variant, size, className, onAfterClick, fullWidth }: BlockActionButtonProps): import("react").JSX.Element;
3
+ export declare function BlockActionButton({ action, variant, size, shape, className, onAfterClick, fullWidth }: BlockActionButtonProps): import("react").JSX.Element;
4
4
  /** The primary action and an optional secondary one, side by side. */
5
5
  export declare function BlockActions({ primary, secondary, className }: BlockActionsProps): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import type { BlockMenuItemsProps } from "./shared.types.cjs";
2
+ /** A menu's items, each a MenuItem, with a separator before those that start a new group. */
3
+ export declare function BlockMenuItems({ items, onAfterSelect }: BlockMenuItemsProps): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import type { BlockMenuItemsProps } from "./shared.types.js";
2
+ /** A menu's items, each a MenuItem, with a separator before those that start a new group. */
3
+ export declare function BlockMenuItems({ items, onAfterSelect }: BlockMenuItemsProps): import("react").JSX.Element;
@@ -0,0 +1,19 @@
1
+ import type { Command } from "@openwarelabs/ui";
2
+ import type { AppShellStateOptions, BlockMenuItem } from "./shared.types.cjs";
3
+ /**
4
+ * What every app shell keeps: the current place (its own, unless `current` is given), the phone drawer, and the
5
+ * search, which ⌘K or Ctrl+K opens from anywhere when there are commands. Choosing a place closes the drawer.
6
+ */
7
+ export declare function useAppShell({ current, defaultCurrent, onNavigate, commands }: AppShellStateOptions): {
8
+ active: string | undefined;
9
+ navigate: (id: string) => void;
10
+ navOpen: boolean;
11
+ setNavOpen: import("react").Dispatch<import("react").SetStateAction<boolean>>;
12
+ searchOpen: boolean;
13
+ setSearchOpen: import("react").Dispatch<import("react").SetStateAction<boolean>>;
14
+ hasSearch: boolean;
15
+ paletteCommands: Command[];
16
+ afterMenuSelect: (item: BlockMenuItem & {
17
+ page?: string;
18
+ }) => void;
19
+ };