@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,95 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ import type { ChatRating } from "@openwarelabs/ui";
3
+ import type { BlockMenuItem } from "../../shared/shared.types.js";
4
+ /** One message in the thread. */
5
+ export interface Chat01Message {
6
+ /** Unique in the thread. */
7
+ id: string;
8
+ /** The person's own message, or the agent's reply. */
9
+ from: "user" | "assistant";
10
+ /** When it was sent, shown beside the name. */
11
+ time: Date | string;
12
+ /** The words as plain text: what Copy copies, what Edit puts back in the box, and what a reply shows while it streams in. */
13
+ text: string;
14
+ /** How a reply shows, when that's more than its text: code in blocks, a pull request. */
15
+ body?: ReactNode;
16
+ /** `streaming` while a reply is still arriving: the box shows Stop until it's done. */
17
+ status?: "streaming" | "done";
18
+ }
19
+ /** An idea to start from in an empty thread: choosing it puts its words in the box. */
20
+ export interface Chat01Suggestion {
21
+ /** The words it puts in the box. */
22
+ label: string;
23
+ /** A 16px icon before them, usually from lucide-react. */
24
+ icon?: ReactNode;
25
+ }
26
+ /** What an empty thread shows: a title, a line, and ideas to start from. */
27
+ export interface Chat01Empty {
28
+ /** A 20px icon over the title, usually from lucide-react. */
29
+ icon?: ReactNode;
30
+ /** "Ask the Acme agent". */
31
+ title: ReactNode;
32
+ /** What the agent can do. */
33
+ description?: ReactNode;
34
+ /** Ideas to start from. */
35
+ suggestions?: Chat01Suggestion[];
36
+ }
37
+ export interface Chat01Labels {
38
+ /** The new chat button's name. @default "New chat" */
39
+ newChat?: string;
40
+ /** The menu button's name. @default "More" */
41
+ more?: string;
42
+ /** The menu's name for screen readers. @default "Chat" */
43
+ menu?: string;
44
+ /** The box's placeholder. @default "Reply to the agent…" */
45
+ placeholder?: string;
46
+ /** Names the box for screen readers. @default "Reply to the agent" */
47
+ input?: string;
48
+ /** A muted line under the box. @default how to send and start a new line */
49
+ hint?: ReactNode;
50
+ /** What the agent is doing while the reply hasn't started. @default "Thinking…" */
51
+ thinking?: string;
52
+ /** Names the ideas for screen readers. @default "Ideas to start from" */
53
+ suggestions?: string;
54
+ }
55
+ export interface Chat01Props extends Omit<HTMLAttributes<HTMLDivElement>, "title" | "children"> {
56
+ /** The chat's name, as the page's h1. */
57
+ title: ReactNode;
58
+ /** A caption under it, after a green dot: the agent and what it's working in. */
59
+ context?: ReactNode;
60
+ /** The messages, oldest first. */
61
+ messages: Chat01Message[];
62
+ /** The person, beside their messages. */
63
+ user: {
64
+ name: string;
65
+ avatar?: string;
66
+ };
67
+ /** The agent's name, beside its replies and while it thinks. @default "Agent" */
68
+ agentName?: string;
69
+ /** A line above the first message, such as the day. */
70
+ day?: ReactNode;
71
+ /** Shows the agent thinking, before its reply starts. */
72
+ thinking?: boolean;
73
+ /** Called with the text when the person sends a message. The box clears itself. */
74
+ onSend?(text: string): void;
75
+ /** Called by Stop while the agent is thinking or replying. */
76
+ onStop?(): void;
77
+ /** Shows a new chat button in the header; called when it's pressed. The box clears and takes focus. */
78
+ onNewChat?(): void;
79
+ /** Called when the person rates a reply. */
80
+ onRate?(message: Chat01Message, rating: ChatRating | null): void;
81
+ /** More actions in a menu in the header: earlier chats, a link to what the chat made. */
82
+ menu?: BlockMenuItem[];
83
+ /** A small heading at the top of the menu: "Earlier chats". */
84
+ menuHeading?: ReactNode;
85
+ /** What an empty thread shows. */
86
+ empty?: Chat01Empty;
87
+ /** The text in the box, when you keep it yourself. */
88
+ draft?: string;
89
+ /** Called with the text in the box on every change. */
90
+ onDraftChange?(draft: string): void;
91
+ /** The locale for the messages' times, such as "en-GB". Defaults to the browser's. */
92
+ locale?: string;
93
+ /** Words that aren't content (names for screen readers, the box's placeholder), in English unless you pass your own. */
94
+ labels?: Chat01Labels;
95
+ }
@@ -0,0 +1,6 @@
1
+ import type { Chat02Props } from "./Chat02.types.cjs";
2
+ /**
3
+ * A new-task page: a question, a growing box to answer it in with attachments and pickers for the project and the
4
+ * model, and a few ideas to start from.
5
+ */
6
+ export declare function Chat02({ title, description, pickers, defaultAttachments, suggestions, onSend, labels, className, ...props }: Chat02Props): import("react").JSX.Element;
@@ -0,0 +1,6 @@
1
+ import type { Chat02Props } from "./Chat02.types.js";
2
+ /**
3
+ * A new-task page: a question, a growing box to answer it in with attachments and pickers for the project and the
4
+ * model, and a few ideas to start from.
5
+ */
6
+ export declare function Chat02({ title, description, pickers, defaultAttachments, suggestions, onSend, labels, className, ...props }: Chat02Props): import("react").JSX.Element;
@@ -0,0 +1,70 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ import type { PromptAttachment } from "@openwarelabs/ui";
3
+ /** One choice in a picker. */
4
+ export interface Chat02PickerOption {
5
+ /** What the picker's value becomes. */
6
+ value: string;
7
+ /** Its name, in the menu and on the picker's button once chosen. */
8
+ label: string;
9
+ /** A caption under the name in the menu: what it's for. */
10
+ description?: ReactNode;
11
+ }
12
+ /** A ghost button in the box's toolbar that opens a menu of choices, the chosen one ticked: a project, a model. */
13
+ export interface Chat02Picker {
14
+ /** Unique among the pickers; the key of its choice in the sent message's `choices`. */
15
+ id: string;
16
+ /** What's being chosen: the menu's heading and the button's name for screen readers. */
17
+ label: string;
18
+ /** A 14px icon before the chosen value, usually from lucide-react. Hidden on phones. */
19
+ icon?: ReactNode;
20
+ /** Its choices. */
21
+ options: Chat02PickerOption[];
22
+ /** The chosen value, when you keep it yourself. */
23
+ value?: string;
24
+ /** The value chosen to start with. @default the first option's */
25
+ defaultValue?: string;
26
+ /** Called with the new value when it's chosen. */
27
+ onChange?(value: string): void;
28
+ }
29
+ /** An idea to start from, under the box: choosing it puts its words in the box. */
30
+ export interface Chat02Suggestion {
31
+ /** The words it puts in the box. */
32
+ label: string;
33
+ /** A 16px icon before them, usually from lucide-react. */
34
+ icon?: ReactNode;
35
+ }
36
+ /** What's sent: the words, the files attached and what each picker is set to. */
37
+ export interface Chat02Message {
38
+ /** The task, trimmed. */
39
+ text: string;
40
+ /** The files attached to it. */
41
+ attachments: PromptAttachment[];
42
+ /** Each picker's value, by its id. */
43
+ choices: Record<string, string>;
44
+ }
45
+ export interface Chat02Labels {
46
+ /** The box's placeholder. @default "Describe the task…" */
47
+ placeholder?: string;
48
+ /** Names the box for screen readers. @default "Task for the agent" */
49
+ input?: string;
50
+ /** A muted line under the box. @default how to send, start a new line and attach files */
51
+ hint?: ReactNode;
52
+ /** Names the ideas for screen readers. @default "Ideas to start from" */
53
+ suggestions?: string;
54
+ }
55
+ export interface Chat02Props extends Omit<HTMLAttributes<HTMLElement>, "title" | "children"> {
56
+ /** The question over the box, as the section's heading. */
57
+ title: ReactNode;
58
+ /** A line under it. */
59
+ description?: ReactNode;
60
+ /** Pickers in the box's toolbar, after the paperclip. */
61
+ pickers?: Chat02Picker[];
62
+ /** Files attached to start with. The person can attach more with the paperclip, or by dropping or pasting them. */
63
+ defaultAttachments?: PromptAttachment[];
64
+ /** Ideas to start from, under the box. */
65
+ suggestions?: Chat02Suggestion[];
66
+ /** Called with the message when the person sends it. The box then clears, and its attachments with it. */
67
+ onSend?(message: Chat02Message): void;
68
+ /** Words that aren't content (the box's placeholder, names for screen readers), in English unless you pass your own. */
69
+ labels?: Chat02Labels;
70
+ }
@@ -0,0 +1,70 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ import type { PromptAttachment } from "@openwarelabs/ui";
3
+ /** One choice in a picker. */
4
+ export interface Chat02PickerOption {
5
+ /** What the picker's value becomes. */
6
+ value: string;
7
+ /** Its name, in the menu and on the picker's button once chosen. */
8
+ label: string;
9
+ /** A caption under the name in the menu: what it's for. */
10
+ description?: ReactNode;
11
+ }
12
+ /** A ghost button in the box's toolbar that opens a menu of choices, the chosen one ticked: a project, a model. */
13
+ export interface Chat02Picker {
14
+ /** Unique among the pickers; the key of its choice in the sent message's `choices`. */
15
+ id: string;
16
+ /** What's being chosen: the menu's heading and the button's name for screen readers. */
17
+ label: string;
18
+ /** A 14px icon before the chosen value, usually from lucide-react. Hidden on phones. */
19
+ icon?: ReactNode;
20
+ /** Its choices. */
21
+ options: Chat02PickerOption[];
22
+ /** The chosen value, when you keep it yourself. */
23
+ value?: string;
24
+ /** The value chosen to start with. @default the first option's */
25
+ defaultValue?: string;
26
+ /** Called with the new value when it's chosen. */
27
+ onChange?(value: string): void;
28
+ }
29
+ /** An idea to start from, under the box: choosing it puts its words in the box. */
30
+ export interface Chat02Suggestion {
31
+ /** The words it puts in the box. */
32
+ label: string;
33
+ /** A 16px icon before them, usually from lucide-react. */
34
+ icon?: ReactNode;
35
+ }
36
+ /** What's sent: the words, the files attached and what each picker is set to. */
37
+ export interface Chat02Message {
38
+ /** The task, trimmed. */
39
+ text: string;
40
+ /** The files attached to it. */
41
+ attachments: PromptAttachment[];
42
+ /** Each picker's value, by its id. */
43
+ choices: Record<string, string>;
44
+ }
45
+ export interface Chat02Labels {
46
+ /** The box's placeholder. @default "Describe the task…" */
47
+ placeholder?: string;
48
+ /** Names the box for screen readers. @default "Task for the agent" */
49
+ input?: string;
50
+ /** A muted line under the box. @default how to send, start a new line and attach files */
51
+ hint?: ReactNode;
52
+ /** Names the ideas for screen readers. @default "Ideas to start from" */
53
+ suggestions?: string;
54
+ }
55
+ export interface Chat02Props extends Omit<HTMLAttributes<HTMLElement>, "title" | "children"> {
56
+ /** The question over the box, as the section's heading. */
57
+ title: ReactNode;
58
+ /** A line under it. */
59
+ description?: ReactNode;
60
+ /** Pickers in the box's toolbar, after the paperclip. */
61
+ pickers?: Chat02Picker[];
62
+ /** Files attached to start with. The person can attach more with the paperclip, or by dropping or pasting them. */
63
+ defaultAttachments?: PromptAttachment[];
64
+ /** Ideas to start from, under the box. */
65
+ suggestions?: Chat02Suggestion[];
66
+ /** Called with the message when the person sends it. The box then clears, and its attachments with it. */
67
+ onSend?(message: Chat02Message): void;
68
+ /** Words that aren't content (the box's placeholder, names for screen readers), in English unless you pass your own. */
69
+ labels?: Chat02Labels;
70
+ }
@@ -0,0 +1,6 @@
1
+ import type { Chat03Props } from "./Chat03.types.cjs";
2
+ /**
3
+ * One agent run: what it's working on at the top, with its status, a clock and Stop; its reasoning, sources and
4
+ * tool calls below as they happen, each call opening to its input, output and the diffs of the files it changed.
5
+ */
6
+ export declare function Chat03({ title, project, branch, byline, status, elapsed, onStop, onRestart, reasoning, sources, steps, summary, labels, className, ...props }: Chat03Props): import("react").JSX.Element;
@@ -0,0 +1,6 @@
1
+ import type { Chat03Props } from "./Chat03.types.js";
2
+ /**
3
+ * One agent run: what it's working on at the top, with its status, a clock and Stop; its reasoning, sources and
4
+ * tool calls below as they happen, each call opening to its input, output and the diffs of the files it changed.
5
+ */
6
+ export declare function Chat03({ title, project, branch, byline, status, elapsed, onStop, onRestart, reasoning, sources, steps, summary, labels, className, ...props }: Chat03Props): import("react").JSX.Element;
@@ -0,0 +1,96 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ import type { ChainOfThoughtStep, ChatSourceItem, ChatToolProps } from "@openwarelabs/ui";
3
+ /** A file a tool call changed, opening to its diff. */
4
+ export interface Chat03File {
5
+ /** Its path: "src/invoices/format.ts". */
6
+ path: string;
7
+ /** Lines added. */
8
+ added: number;
9
+ /** Lines removed. */
10
+ removed: number;
11
+ /** The diff's lines, each starting with "+", "-", " " (context) or "@@" (a hunk's header). */
12
+ diff: string[];
13
+ /** Whether its diff starts open. @default false */
14
+ defaultOpen?: boolean;
15
+ }
16
+ /** A tool call the agent makes: what it's doing, the tool, its status and result, and what it changed. */
17
+ export interface Chat03Tool extends Pick<ChatToolProps, "title" | "name" | "icon" | "status" | "summary" | "duration" | "input" | "output" | "error" | "defaultExpanded" | "approvalMessage" | "approveLabel" | "denyLabel" | "onApprove" | "onDeny"> {
18
+ /** The files it changed, as its output, each opening to its diff. Without a summary, the lines added and removed sum up. */
19
+ files?: Chat03File[];
20
+ }
21
+ /** One step of the run: a tool call, or the agent's own words between calls. */
22
+ export interface Chat03Step {
23
+ /** Unique in the run. */
24
+ id: string;
25
+ /** The tool call. */
26
+ tool?: Chat03Tool;
27
+ /** The agent's words, level with the calls' titles, when the step isn't a call. */
28
+ note?: ReactNode;
29
+ }
30
+ /** The agent's reasoning before it starts: what it thought and the plan it made. */
31
+ export interface Chat03Reasoning {
32
+ /** The reasoning itself, as text. */
33
+ text?: ReactNode;
34
+ /** The plan, in order, each with its status. */
35
+ steps?: ChainOfThoughtStep[];
36
+ /** How long it thought, in milliseconds. */
37
+ duration?: number;
38
+ /** Whether it starts open. @default true */
39
+ defaultExpanded?: boolean;
40
+ }
41
+ /** Where the run has got to: working, waiting for the person to approve a call, stopped, or finished. */
42
+ export type Chat03Status = "running" | "waiting" | "stopped" | "done";
43
+ export interface Chat03Labels {
44
+ /** The badge while it works. @default "Running" */
45
+ running?: string;
46
+ /** The badge while it waits for an approval. @default "Needs approval" */
47
+ waiting?: string;
48
+ /** @default "Stopped" */
49
+ stopped?: string;
50
+ /** @default "Done" */
51
+ done?: string;
52
+ /** @default "Stop" */
53
+ stop?: string;
54
+ /** @default "Run again" */
55
+ runAgain?: string;
56
+ /** Read out before the clock. @default "Time taken: " */
57
+ elapsed?: string;
58
+ /** Names the list of steps. @default "Steps" */
59
+ steps?: string;
60
+ /** Names a call's list of files. @default "Files changed" */
61
+ files?: string;
62
+ /** Names a file's diff. @default "Changes to src/invoices/format.ts" */
63
+ diff?(path: string): string;
64
+ /** Read out after lines added. @default "8 lines added," */
65
+ linesAdded?(count: number): string;
66
+ /** Read out after lines removed. @default "2 removed" */
67
+ linesRemoved?(count: number): string;
68
+ }
69
+ export interface Chat03Props extends Omit<HTMLAttributes<HTMLElement>, "title" | "children"> {
70
+ /** The task the agent is working on, as the section's heading. */
71
+ title: ReactNode;
72
+ /** Where it's working, first in the line under the title: the project. */
73
+ project?: ReactNode;
74
+ /** The branch it works on, in mono after the project. */
75
+ branch?: ReactNode;
76
+ /** The end of that line: who started it. Hidden behind its dot on phones. */
77
+ byline?: ReactNode;
78
+ /** Where the run has got to: sets the badge and whether Stop or Run again shows. */
79
+ status: Chat03Status;
80
+ /** How long it has taken so far, in seconds, as a clock. */
81
+ elapsed?: number;
82
+ /** Called by Stop, while it's running or waiting. */
83
+ onStop?(): void;
84
+ /** Called by Run again, once it's stopped or done. */
85
+ onRestart?(): void;
86
+ /** Its reasoning before it starts. */
87
+ reasoning?: Chat03Reasoning;
88
+ /** What it read, cited in its reasoning and summary. */
89
+ sources?: ChatSourceItem[];
90
+ /** Its steps, as they happen. */
91
+ steps: Chat03Step[];
92
+ /** What happened, under a hairline at the end: shown once it's stopped or done. */
93
+ summary?: ReactNode;
94
+ /** Words that aren't content (the badge, the buttons, names for screen readers), in English unless you pass your own. */
95
+ labels?: Chat03Labels;
96
+ }
@@ -0,0 +1,96 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ import type { ChainOfThoughtStep, ChatSourceItem, ChatToolProps } from "@openwarelabs/ui";
3
+ /** A file a tool call changed, opening to its diff. */
4
+ export interface Chat03File {
5
+ /** Its path: "src/invoices/format.ts". */
6
+ path: string;
7
+ /** Lines added. */
8
+ added: number;
9
+ /** Lines removed. */
10
+ removed: number;
11
+ /** The diff's lines, each starting with "+", "-", " " (context) or "@@" (a hunk's header). */
12
+ diff: string[];
13
+ /** Whether its diff starts open. @default false */
14
+ defaultOpen?: boolean;
15
+ }
16
+ /** A tool call the agent makes: what it's doing, the tool, its status and result, and what it changed. */
17
+ export interface Chat03Tool extends Pick<ChatToolProps, "title" | "name" | "icon" | "status" | "summary" | "duration" | "input" | "output" | "error" | "defaultExpanded" | "approvalMessage" | "approveLabel" | "denyLabel" | "onApprove" | "onDeny"> {
18
+ /** The files it changed, as its output, each opening to its diff. Without a summary, the lines added and removed sum up. */
19
+ files?: Chat03File[];
20
+ }
21
+ /** One step of the run: a tool call, or the agent's own words between calls. */
22
+ export interface Chat03Step {
23
+ /** Unique in the run. */
24
+ id: string;
25
+ /** The tool call. */
26
+ tool?: Chat03Tool;
27
+ /** The agent's words, level with the calls' titles, when the step isn't a call. */
28
+ note?: ReactNode;
29
+ }
30
+ /** The agent's reasoning before it starts: what it thought and the plan it made. */
31
+ export interface Chat03Reasoning {
32
+ /** The reasoning itself, as text. */
33
+ text?: ReactNode;
34
+ /** The plan, in order, each with its status. */
35
+ steps?: ChainOfThoughtStep[];
36
+ /** How long it thought, in milliseconds. */
37
+ duration?: number;
38
+ /** Whether it starts open. @default true */
39
+ defaultExpanded?: boolean;
40
+ }
41
+ /** Where the run has got to: working, waiting for the person to approve a call, stopped, or finished. */
42
+ export type Chat03Status = "running" | "waiting" | "stopped" | "done";
43
+ export interface Chat03Labels {
44
+ /** The badge while it works. @default "Running" */
45
+ running?: string;
46
+ /** The badge while it waits for an approval. @default "Needs approval" */
47
+ waiting?: string;
48
+ /** @default "Stopped" */
49
+ stopped?: string;
50
+ /** @default "Done" */
51
+ done?: string;
52
+ /** @default "Stop" */
53
+ stop?: string;
54
+ /** @default "Run again" */
55
+ runAgain?: string;
56
+ /** Read out before the clock. @default "Time taken: " */
57
+ elapsed?: string;
58
+ /** Names the list of steps. @default "Steps" */
59
+ steps?: string;
60
+ /** Names a call's list of files. @default "Files changed" */
61
+ files?: string;
62
+ /** Names a file's diff. @default "Changes to src/invoices/format.ts" */
63
+ diff?(path: string): string;
64
+ /** Read out after lines added. @default "8 lines added," */
65
+ linesAdded?(count: number): string;
66
+ /** Read out after lines removed. @default "2 removed" */
67
+ linesRemoved?(count: number): string;
68
+ }
69
+ export interface Chat03Props extends Omit<HTMLAttributes<HTMLElement>, "title" | "children"> {
70
+ /** The task the agent is working on, as the section's heading. */
71
+ title: ReactNode;
72
+ /** Where it's working, first in the line under the title: the project. */
73
+ project?: ReactNode;
74
+ /** The branch it works on, in mono after the project. */
75
+ branch?: ReactNode;
76
+ /** The end of that line: who started it. Hidden behind its dot on phones. */
77
+ byline?: ReactNode;
78
+ /** Where the run has got to: sets the badge and whether Stop or Run again shows. */
79
+ status: Chat03Status;
80
+ /** How long it has taken so far, in seconds, as a clock. */
81
+ elapsed?: number;
82
+ /** Called by Stop, while it's running or waiting. */
83
+ onStop?(): void;
84
+ /** Called by Run again, once it's stopped or done. */
85
+ onRestart?(): void;
86
+ /** Its reasoning before it starts. */
87
+ reasoning?: Chat03Reasoning;
88
+ /** What it read, cited in its reasoning and summary. */
89
+ sources?: ChatSourceItem[];
90
+ /** Its steps, as they happen. */
91
+ steps: Chat03Step[];
92
+ /** What happened, under a hairline at the end: shown once it's stopped or done. */
93
+ summary?: ReactNode;
94
+ /** Words that aren't content (the badge, the buttons, names for screen readers), in English unless you pass your own. */
95
+ labels?: Chat03Labels;
96
+ }
@@ -0,0 +1,3 @@
1
+ import type { Contact01Props } from "./Contact01.types.cjs";
2
+ /** A short contact form in a card, beside the heading and a list of ways to reach you, with a thank-you in place of the form once it's sent. */
3
+ export declare function Contact01({ eyebrow, title, description, details, topics, defaultTopic, sizes, minMessageLength, onSubmit, note, successTitle, successDescription, labels, className, ...props }: Contact01Props): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import type { Contact01Props } from "./Contact01.types.js";
2
+ /** A short contact form in a card, beside the heading and a list of ways to reach you, with a thank-you in place of the form once it's sent. */
3
+ export declare function Contact01({ eyebrow, title, description, details, topics, defaultTopic, sizes, minMessageLength, onSubmit, note, successTitle, successDescription, labels, className, ...props }: Contact01Props): import("react").JSX.Element;
@@ -0,0 +1,103 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ import type { SelectItem } from "@openwarelabs/ui";
3
+ /** What someone filled in. Fields the form doesn't show stay empty. */
4
+ export interface Contact01Values {
5
+ /** Their name. */
6
+ name: string;
7
+ /** Their email address, as typed. */
8
+ email: string;
9
+ /** Their company, or empty. */
10
+ company: string;
11
+ /** The chosen team size's value, or empty. */
12
+ size: string;
13
+ /** The chosen topic's value. */
14
+ topic: string;
15
+ /** What they wrote. */
16
+ message: string;
17
+ }
18
+ /** The messages under the fields that need fixing. */
19
+ export type Contact01Errors = Partial<Record<"name" | "email" | "message", string>>;
20
+ /** A way to reach you, in the list beside the form. */
21
+ export interface Contact01Detail {
22
+ /** A 16px icon in a tile before it. */
23
+ icon?: ReactNode;
24
+ /** What it is: "Sales". */
25
+ label: ReactNode;
26
+ /** The address or the fact: "sales@example.com", "Within one working day". */
27
+ value: ReactNode;
28
+ /** Makes the value a link, such as "mailto:sales@example.com". */
29
+ href?: string;
30
+ /** A line under it: "Plans, invoices and security reviews". */
31
+ note?: ReactNode;
32
+ }
33
+ /** The form's words, its validation messages included, in English unless you pass your own. */
34
+ export interface Contact01Labels {
35
+ /** @default "Name" */
36
+ name?: string;
37
+ /** @default "Work email" */
38
+ email?: string;
39
+ /** @default "you@example.com" */
40
+ emailPlaceholder?: string;
41
+ /** @default "Company" */
42
+ company?: string;
43
+ /** @default "Team size" */
44
+ size?: string;
45
+ /** @default "Choose a size" */
46
+ sizePlaceholder?: string;
47
+ /** After the labels of the fields that can be left empty. @default "(optional)" */
48
+ optional?: string;
49
+ /** @default "What's it about?" */
50
+ topic?: string;
51
+ /** @default "Message" */
52
+ message?: string;
53
+ /** Under the message until there's an error. @default "A few lines about your team and what you need." */
54
+ messageHint?: string;
55
+ /** The submit button. @default "Send message" */
56
+ submit?: string;
57
+ /** The button that brings the form back. @default "Send another message" */
58
+ again?: string;
59
+ /** @default "Enter your name." */
60
+ nameEmpty?: string;
61
+ /** @default "Enter your work email." */
62
+ emailEmpty?: string;
63
+ /** @default "Enter an email address like name@example.com." */
64
+ emailInvalid?: string;
65
+ /** @default "Tell us a little about what you need." */
66
+ messageEmpty?: string;
67
+ /** For a message under `minMessageLength`. @default "Add a few more words, so it reaches the right person." */
68
+ messageShort?: string;
69
+ /** Shown when `onSubmit` fails without a message of its own. @default "That didn't go through. Try again in a moment." */
70
+ failed?: string;
71
+ }
72
+ export interface Contact01Props extends Omit<HTMLAttributes<HTMLElement>, "title" | "children" | "onSubmit"> {
73
+ /** A short line in a Chip above the title, such as "Contact". */
74
+ eyebrow?: ReactNode;
75
+ /** The section's heading. */
76
+ title: ReactNode;
77
+ /** A sentence or two under the title. */
78
+ description?: ReactNode;
79
+ /** Ways to reach you and when you reply, listed under the heading. */
80
+ details?: Contact01Detail[];
81
+ /** The choices for "What's it about?". Leave out for no such field. */
82
+ topics?: SelectItem[];
83
+ /** The topic chosen at first. @default the first topic */
84
+ defaultTopic?: string;
85
+ /** The choices for an optional team size. Leave out for no such field. */
86
+ sizes?: SelectItem[];
87
+ /** The fewest characters a message can have.
88
+ * @default 20 */
89
+ minMessageLength?: number;
90
+ /**
91
+ * Sends the message. While its promise is pending the button shows a spinner; if it throws, the error's message
92
+ * shows beside the button, and once it resolves the form gives way to `successTitle`.
93
+ */
94
+ onSubmit(values: Contact01Values): void | Promise<void>;
95
+ /** A small line beside the button: "We use your details only to reply to you." */
96
+ note?: ReactNode;
97
+ /** What replaces the form once it's sent, given what they sent: "Thanks, Maya". */
98
+ successTitle(values: Contact01Values): ReactNode;
99
+ /** A line under it, given what they sent. */
100
+ successDescription?(values: Contact01Values): ReactNode;
101
+ /** Words that aren't content (field labels, names for screen readers, messages), in English unless you pass your own. */
102
+ labels?: Contact01Labels;
103
+ }