@upstart.gg/sdk 0.0.130 → 0.0.132

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 (533) hide show
  1. package/dist/shared/ai/schemas.d.ts +13 -0
  2. package/dist/shared/ai/schemas.d.ts.map +1 -0
  3. package/dist/shared/ai/schemas.js +3 -0
  4. package/dist/shared/ai/types.d.ts +170 -0
  5. package/dist/shared/ai/types.d.ts.map +1 -0
  6. package/dist/shared/{chunk-EJGNYD4V.js → ai/types.js} +0 -1
  7. package/dist/shared/ajv.d.ts +2 -1
  8. package/dist/shared/ajv.d.ts.map +1 -1
  9. package/dist/shared/ajv.js +1 -1
  10. package/dist/shared/attributes.d.ts +300 -12
  11. package/dist/shared/attributes.d.ts.map +1 -1
  12. package/dist/shared/attributes.js +1 -1
  13. package/dist/shared/brick-manifest.d.ts +3 -1
  14. package/dist/shared/brick-manifest.d.ts.map +1 -1
  15. package/dist/shared/brick-manifest.js +1 -1
  16. package/dist/shared/bricks/manifests/accordion.manifest.d.ts +4 -3
  17. package/dist/shared/bricks/manifests/accordion.manifest.d.ts.map +1 -1
  18. package/dist/shared/bricks/manifests/accordion.manifest.js +1 -1
  19. package/dist/shared/bricks/manifests/all-manifests.d.ts +4 -1
  20. package/dist/shared/bricks/manifests/all-manifests.d.ts.map +1 -1
  21. package/dist/shared/bricks/manifests/all-manifests.js +1 -1
  22. package/dist/shared/bricks/manifests/box.manifest.d.ts +6 -4
  23. package/dist/shared/bricks/manifests/box.manifest.d.ts.map +1 -1
  24. package/dist/shared/bricks/manifests/box.manifest.js +1 -1
  25. package/dist/shared/bricks/manifests/button.manifest.d.ts +4 -3
  26. package/dist/shared/bricks/manifests/button.manifest.d.ts.map +1 -1
  27. package/dist/shared/bricks/manifests/button.manifest.js +1 -1
  28. package/dist/shared/bricks/manifests/card.manifest.d.ts +6 -5
  29. package/dist/shared/bricks/manifests/card.manifest.d.ts.map +1 -1
  30. package/dist/shared/bricks/manifests/card.manifest.js +1 -1
  31. package/dist/shared/bricks/manifests/carousel.manifest.d.ts +6 -5
  32. package/dist/shared/bricks/manifests/carousel.manifest.d.ts.map +1 -1
  33. package/dist/shared/bricks/manifests/carousel.manifest.js +1 -1
  34. package/dist/shared/bricks/manifests/footer.manifest.d.ts +40 -5
  35. package/dist/shared/bricks/manifests/footer.manifest.d.ts.map +1 -1
  36. package/dist/shared/bricks/manifests/footer.manifest.js +1 -1
  37. package/dist/shared/bricks/manifests/form.manifest.d.ts +6 -5
  38. package/dist/shared/bricks/manifests/form.manifest.d.ts.map +1 -1
  39. package/dist/shared/bricks/manifests/form.manifest.js +1 -1
  40. package/dist/shared/bricks/manifests/hero.manifest.d.ts +4 -3
  41. package/dist/shared/bricks/manifests/hero.manifest.d.ts.map +1 -1
  42. package/dist/shared/bricks/manifests/hero.manifest.js +1 -1
  43. package/dist/shared/bricks/manifests/html.manifest.d.ts +3 -2
  44. package/dist/shared/bricks/manifests/html.manifest.d.ts.map +1 -1
  45. package/dist/shared/bricks/manifests/html.manifest.js +1 -1
  46. package/dist/shared/bricks/manifests/icon.manifest.d.ts +3 -2
  47. package/dist/shared/bricks/manifests/icon.manifest.d.ts.map +1 -1
  48. package/dist/shared/bricks/manifests/icon.manifest.js +1 -1
  49. package/dist/shared/bricks/manifests/image.manifest.d.ts +10 -6
  50. package/dist/shared/bricks/manifests/image.manifest.d.ts.map +1 -1
  51. package/dist/shared/bricks/manifests/image.manifest.js +1 -1
  52. package/dist/shared/bricks/manifests/images-gallery.manifest.d.ts +7 -6
  53. package/dist/shared/bricks/manifests/images-gallery.manifest.d.ts.map +1 -1
  54. package/dist/shared/bricks/manifests/images-gallery.manifest.js +1 -1
  55. package/dist/shared/bricks/manifests/map.manifest.d.ts +5 -4
  56. package/dist/shared/bricks/manifests/map.manifest.d.ts.map +1 -1
  57. package/dist/shared/bricks/manifests/map.manifest.js +1 -1
  58. package/dist/shared/bricks/manifests/navbar.manifest.d.ts +42 -8
  59. package/dist/shared/bricks/manifests/navbar.manifest.d.ts.map +1 -1
  60. package/dist/shared/bricks/manifests/navbar.manifest.js +1 -1
  61. package/dist/shared/bricks/manifests/sidebar.manifest.d.ts +4 -3
  62. package/dist/shared/bricks/manifests/sidebar.manifest.d.ts.map +1 -1
  63. package/dist/shared/bricks/manifests/sidebar.manifest.js +1 -1
  64. package/dist/shared/bricks/manifests/social-links.manifest.d.ts +5 -4
  65. package/dist/shared/bricks/manifests/social-links.manifest.d.ts.map +1 -1
  66. package/dist/shared/bricks/manifests/social-links.manifest.js +1 -1
  67. package/dist/shared/bricks/manifests/spacer.manifest.d.ts +3 -2
  68. package/dist/shared/bricks/manifests/spacer.manifest.d.ts.map +1 -1
  69. package/dist/shared/bricks/manifests/spacer.manifest.js +1 -1
  70. package/dist/shared/bricks/manifests/testimonials.manifest.d.ts +6 -5
  71. package/dist/shared/bricks/manifests/testimonials.manifest.d.ts.map +1 -1
  72. package/dist/shared/bricks/manifests/testimonials.manifest.js +1 -1
  73. package/dist/shared/bricks/manifests/text.manifest.d.ts +4 -3
  74. package/dist/shared/bricks/manifests/text.manifest.d.ts.map +1 -1
  75. package/dist/shared/bricks/manifests/text.manifest.js +1 -1
  76. package/dist/shared/bricks/manifests/video.manifest.d.ts +4 -3
  77. package/dist/shared/bricks/manifests/video.manifest.d.ts.map +1 -1
  78. package/dist/shared/bricks/manifests/video.manifest.js +1 -1
  79. package/dist/shared/bricks/props/align.d.ts.map +1 -1
  80. package/dist/shared/bricks/props/align.js +1 -1
  81. package/dist/shared/bricks/props/background.d.ts +6 -9
  82. package/dist/shared/bricks/props/background.d.ts.map +1 -1
  83. package/dist/shared/bricks/props/background.js +1 -1
  84. package/dist/shared/bricks/props/border.d.ts.map +1 -1
  85. package/dist/shared/bricks/props/border.js +1 -1
  86. package/dist/shared/bricks/props/color-preset.d.ts +3 -4
  87. package/dist/shared/bricks/props/color-preset.d.ts.map +1 -1
  88. package/dist/shared/bricks/props/color-preset.js +1 -1
  89. package/dist/shared/bricks/props/color.js +1 -1
  90. package/dist/shared/bricks/props/common.d.ts +6 -6
  91. package/dist/shared/bricks/props/common.d.ts.map +1 -1
  92. package/dist/shared/bricks/props/common.js +1 -1
  93. package/dist/shared/bricks/props/css-length.d.ts.map +1 -1
  94. package/dist/shared/bricks/props/css-length.js +1 -1
  95. package/dist/shared/bricks/props/datasource.d.ts +1 -1
  96. package/dist/shared/bricks/props/datasource.js +1 -1
  97. package/dist/shared/bricks/props/date.d.ts.map +1 -1
  98. package/dist/shared/bricks/props/date.js +1 -1
  99. package/dist/shared/bricks/props/direction.d.ts.map +1 -1
  100. package/dist/shared/bricks/props/direction.js +1 -1
  101. package/dist/shared/bricks/props/dynamic.d.ts.map +1 -1
  102. package/dist/shared/bricks/props/dynamic.js +1 -1
  103. package/dist/shared/bricks/props/effects.d.ts +0 -1
  104. package/dist/shared/bricks/props/effects.d.ts.map +1 -1
  105. package/dist/shared/bricks/props/effects.js +1 -1
  106. package/dist/shared/bricks/props/file.d.ts.map +1 -1
  107. package/dist/shared/bricks/props/file.js +1 -1
  108. package/dist/shared/bricks/props/geolocation.js +1 -1
  109. package/dist/shared/bricks/props/helpers.d.ts +2 -2
  110. package/dist/shared/bricks/props/helpers.js +1 -1
  111. package/dist/shared/bricks/props/image.d.ts +4 -4
  112. package/dist/shared/bricks/props/image.d.ts.map +1 -1
  113. package/dist/shared/bricks/props/image.js +1 -1
  114. package/dist/shared/bricks/props/position.d.ts +0 -2
  115. package/dist/shared/bricks/props/position.d.ts.map +1 -1
  116. package/dist/shared/bricks/props/position.js +1 -1
  117. package/dist/shared/bricks/props/string.js +1 -1
  118. package/dist/shared/bricks/props/tags.d.ts.map +1 -1
  119. package/dist/shared/bricks/props/tags.js +1 -1
  120. package/dist/shared/bricks/props/text.js +1 -1
  121. package/dist/shared/bricks/props/types.d.ts +1 -2
  122. package/dist/shared/bricks/props/types.d.ts.map +1 -1
  123. package/dist/shared/bricks.d.ts +189 -18
  124. package/dist/shared/bricks.d.ts.map +1 -1
  125. package/dist/shared/bricks.js +1 -1
  126. package/dist/shared/chunk-2CYAFF56.js +3 -0
  127. package/dist/shared/chunk-2NLDX5FG.js +3 -0
  128. package/dist/shared/chunk-3FPFR5RA.js +3 -0
  129. package/dist/shared/chunk-3P36LG6T.js +3 -0
  130. package/dist/shared/chunk-3QOAHMV4.js +5 -0
  131. package/dist/shared/chunk-46YDGGFF.js +3 -0
  132. package/dist/shared/chunk-4GIZ6WSG.js +3 -0
  133. package/dist/shared/chunk-5DZIQGY2.js +3 -0
  134. package/dist/shared/chunk-5WY7LYXK.js +3 -0
  135. package/dist/shared/chunk-5X5SX5N7.js +4 -0
  136. package/dist/shared/chunk-6L3Z5SZQ.js +3 -0
  137. package/dist/shared/{chunk-UU2MSQXY.js → chunk-6PGAWO4H.js} +1 -1
  138. package/dist/shared/chunk-6R76KIHZ.js +3 -0
  139. package/dist/shared/chunk-7UBMXMNJ.js +3 -0
  140. package/dist/shared/chunk-AB3IMRXZ.js +3 -0
  141. package/dist/shared/chunk-AMQAGDFH.js +3 -0
  142. package/dist/shared/chunk-ARMM6B47.js +3 -0
  143. package/dist/shared/chunk-ARYG4XMX.js +3 -0
  144. package/dist/shared/chunk-AZHH3XJJ.js +3 -0
  145. package/dist/shared/chunk-DHSWVVMI.js +3 -0
  146. package/dist/shared/chunk-DKNOZLA6.js +3 -0
  147. package/dist/shared/chunk-EVDZ2KND.js +6 -0
  148. package/dist/shared/chunk-F4JNKU7J.js +3 -0
  149. package/dist/shared/chunk-GC5OWY2Z.js +3 -0
  150. package/dist/shared/chunk-HP7CZB2F.js +3 -0
  151. package/dist/shared/chunk-HSRXUIVM.js +3 -0
  152. package/dist/shared/chunk-ILIWVWHC.js +8 -0
  153. package/dist/shared/chunk-JRCVYDCD.js +3 -0
  154. package/dist/shared/chunk-K5ADUHF4.js +3 -0
  155. package/dist/shared/chunk-L2HOZVBC.js +3 -0
  156. package/dist/shared/chunk-LEWKHCRI.js +3 -0
  157. package/dist/shared/chunk-LT4CW2F7.js +3 -0
  158. package/dist/shared/chunk-ML4JSDQM.js +34 -0
  159. package/dist/shared/chunk-MVCVVKBY.js +3 -0
  160. package/dist/shared/chunk-NKIEDT7V.js +3 -0
  161. package/dist/shared/chunk-NQKXDMQ5.js +3 -0
  162. package/dist/shared/chunk-PO6UODZ5.js +8 -0
  163. package/dist/shared/chunk-PW5HRVMD.js +3 -0
  164. package/dist/shared/chunk-PZYX3ACO.js +3 -0
  165. package/dist/shared/chunk-QGFQA7OZ.js +4 -0
  166. package/dist/shared/chunk-RJZZWCBD.js +3 -0
  167. package/dist/shared/chunk-SAJY7H6N.js +3 -0
  168. package/dist/shared/chunk-SFDRAHYP.js +3 -0
  169. package/dist/shared/chunk-STDCM2KD.js +3 -0
  170. package/dist/shared/chunk-TH5SONR6.js +3 -0
  171. package/dist/shared/chunk-UCR2UZOY.js +3 -0
  172. package/dist/shared/chunk-UDQWYGSO.js +3 -0
  173. package/dist/shared/{chunk-LSPN22SI.js → chunk-URRCKLAS.js} +3 -3
  174. package/dist/shared/{chunk-OIOYMECS.js → chunk-US53TNMK.js} +1 -1
  175. package/dist/shared/chunk-VDX2J22H.js +3 -0
  176. package/dist/shared/chunk-VK26ZZFR.js +3 -0
  177. package/dist/shared/chunk-VLXZMESE.js +3 -0
  178. package/dist/shared/chunk-WAML3IGZ.js +3 -0
  179. package/dist/shared/chunk-WXKRIUTA.js +3 -0
  180. package/dist/shared/chunk-X62OEAE6.js +3 -0
  181. package/dist/shared/chunk-XED6ARVN.js +3 -0
  182. package/dist/shared/chunk-XZLBM4AX.js +3 -0
  183. package/dist/shared/chunk-Y3X4F4YJ.js +3 -0
  184. package/dist/shared/chunk-Z4YKRLOX.js +3 -0
  185. package/dist/shared/context.d.ts +4 -12
  186. package/dist/shared/context.d.ts.map +1 -1
  187. package/dist/shared/datarecords/external/airtable/handler.d.ts +22 -5
  188. package/dist/shared/datarecords/external/airtable/handler.d.ts.map +1 -1
  189. package/dist/shared/datarecords/external/airtable/handler.js +1 -1
  190. package/dist/shared/datarecords/external/airtable/oauth/config.js +3 -0
  191. package/dist/shared/datarecords/external/airtable/types.d.ts +25 -0
  192. package/dist/shared/datarecords/external/airtable/types.d.ts.map +1 -1
  193. package/dist/shared/datarecords/external/airtable/types.js +3 -0
  194. package/dist/shared/datarecords/external/generic-webhook/handler.js +3 -0
  195. package/dist/shared/datarecords/external/generic-webhook/options.js +3 -0
  196. package/dist/shared/datarecords/external/google/sheets/client.js +3 -0
  197. package/dist/shared/datarecords/external/google/sheets/handler.d.ts +29 -5
  198. package/dist/shared/datarecords/external/google/sheets/handler.d.ts.map +1 -1
  199. package/dist/shared/datarecords/external/google/sheets/handler.js +5 -4
  200. package/dist/shared/datarecords/external/google/sheets/{options.d.ts → types.d.ts} +1 -1
  201. package/dist/shared/datarecords/external/google/sheets/types.d.ts.map +1 -0
  202. package/dist/shared/datarecords/external/google/sheets/types.js +3 -0
  203. package/dist/shared/datarecords/external/notion/handler.d.ts +29 -7
  204. package/dist/shared/datarecords/external/notion/handler.d.ts.map +1 -1
  205. package/dist/shared/datarecords/external/notion/handler.js +1 -1
  206. package/dist/shared/datarecords/external/notion/oauth/config.js +3 -0
  207. package/dist/shared/datarecords/external/notion/{options.d.ts → types.d.ts} +11 -1
  208. package/dist/shared/datarecords/external/notion/types.d.ts.map +1 -0
  209. package/dist/shared/datarecords/external/notion/types.js +3 -0
  210. package/dist/shared/datarecords/types.d.ts +17 -165
  211. package/dist/shared/datarecords/types.d.ts.map +1 -1
  212. package/dist/shared/datarecords/types.js +1 -1
  213. package/dist/shared/datarecords.d.ts +2 -2
  214. package/dist/shared/datarecords.d.ts.map +1 -1
  215. package/dist/shared/datarecords.js +1 -1
  216. package/dist/shared/datasources/external/facebook/posts/fetcher.js +3 -0
  217. package/dist/shared/datasources/external/facebook/posts/schema.js +3 -0
  218. package/dist/shared/datasources/external/http-json/fetcher.js +3 -0
  219. package/dist/shared/datasources/external/http-json/options.js +3 -0
  220. package/dist/shared/datasources/external/http-json/schema.js +3 -0
  221. package/dist/shared/datasources/external/instagram/feed/fetcher.js +3 -0
  222. package/dist/shared/datasources/external/instagram/feed/schema.js +3 -0
  223. package/dist/shared/datasources/external/mastodon/account/fetcher.js +3 -0
  224. package/dist/shared/datasources/external/mastodon/account/schema.js +3 -0
  225. package/dist/shared/datasources/external/mastodon/options.js +3 -0
  226. package/dist/shared/datasources/external/mastodon/status/fetcher.js +3 -0
  227. package/dist/shared/datasources/external/mastodon/status/sample.array.js +3 -0
  228. package/dist/shared/datasources/external/mastodon/status/sample.single.js +3 -0
  229. package/dist/shared/datasources/external/mastodon/status/schema.d.ts.map +1 -1
  230. package/dist/shared/datasources/external/mastodon/status/schema.js +3 -0
  231. package/dist/shared/datasources/external/meta/options.js +3 -0
  232. package/dist/shared/datasources/external/rss/fetcher.js +3 -0
  233. package/dist/shared/datasources/external/rss/options.js +3 -0
  234. package/dist/shared/datasources/external/rss/schema.js +3 -0
  235. package/dist/shared/datasources/external/threads/media/fetcher.js +3 -0
  236. package/dist/shared/datasources/external/threads/media/schema.js +3 -0
  237. package/dist/shared/datasources/external/tiktok/video/fetcher.js +3 -0
  238. package/dist/shared/datasources/external/tiktok/video/options.js +3 -0
  239. package/dist/shared/datasources/external/tiktok/video/schema.js +3 -0
  240. package/dist/shared/datasources/external/youtube/list/fetcher.js +3 -0
  241. package/dist/shared/datasources/external/youtube/list/options.js +3 -0
  242. package/dist/shared/datasources/external/youtube/list/schema.js +3 -0
  243. package/dist/shared/datasources/fetcher.js +2 -0
  244. package/dist/shared/datasources/internal/blog/schema.js +3 -0
  245. package/dist/shared/datasources/internal/changelog/schema.js +3 -0
  246. package/dist/shared/datasources/internal/contact-info/schema.js +3 -0
  247. package/dist/shared/datasources/internal/cv/schema.js +3 -0
  248. package/dist/shared/datasources/internal/faq/schema.js +3 -0
  249. package/dist/shared/datasources/internal/job-board/schema.js +3 -0
  250. package/dist/shared/datasources/internal/links/schema.js +3 -0
  251. package/dist/shared/datasources/internal/recipes/schema.js +3 -0
  252. package/dist/shared/datasources/internal/restaurant/schema.js +3 -0
  253. package/dist/shared/datasources/samples.js +3 -0
  254. package/dist/shared/datasources/schemas.d.ts +0 -49
  255. package/dist/shared/datasources/schemas.d.ts.map +1 -1
  256. package/dist/shared/datasources/schemas.js +1 -1
  257. package/dist/shared/datasources/types.d.ts +53 -130
  258. package/dist/shared/datasources/types.d.ts.map +1 -1
  259. package/dist/shared/datasources/types.js +1 -1
  260. package/dist/shared/datasources/utils.js +3 -0
  261. package/dist/shared/datasources.d.ts +7 -4
  262. package/dist/shared/datasources.d.ts.map +1 -1
  263. package/dist/shared/datasources.js +1 -1
  264. package/dist/shared/errors.js +1 -1
  265. package/dist/shared/images.d.ts +1 -12
  266. package/dist/shared/images.d.ts.map +1 -1
  267. package/dist/shared/images.js +1 -1
  268. package/dist/shared/index.js +3 -0
  269. package/dist/shared/manifest.js +3 -0
  270. package/dist/shared/page.d.ts +143 -12
  271. package/dist/shared/page.d.ts.map +1 -1
  272. package/dist/shared/page.js +1 -1
  273. package/dist/shared/site.d.ts +224 -114
  274. package/dist/shared/site.d.ts.map +1 -1
  275. package/dist/shared/site.js +1 -1
  276. package/dist/shared/sitemap.d.ts +167 -23
  277. package/dist/shared/sitemap.d.ts.map +1 -1
  278. package/dist/shared/sitemap.js +1 -1
  279. package/dist/shared/social-icons.js +3 -0
  280. package/dist/shared/theme.d.ts +41 -4
  281. package/dist/shared/theme.d.ts.map +1 -1
  282. package/dist/shared/theme.js +1 -1
  283. package/dist/shared/utils/invariant.js +1 -1
  284. package/dist/shared/utils/llm.d.ts +19 -0
  285. package/dist/shared/utils/llm.d.ts.map +1 -0
  286. package/dist/shared/utils/llm.js +3 -0
  287. package/dist/shared/utils/schema.d.ts +6 -1
  288. package/dist/shared/utils/schema.d.ts.map +1 -1
  289. package/dist/shared/utils/schema.js +1 -1
  290. package/dist/shared/utils/tests/schema.test.d.ts +2 -0
  291. package/dist/shared/utils/tests/schema.test.d.ts.map +1 -0
  292. package/dist/shared/utils/typed-ref.d.ts +1 -6
  293. package/dist/shared/utils/typed-ref.d.ts.map +1 -1
  294. package/dist/shared/utils/typed-ref.js +1 -1
  295. package/package.json +18 -19
  296. package/src/shared/ai/schemas.ts +33 -0
  297. package/src/shared/ai/types.ts +155 -0
  298. package/src/shared/ajv.ts +123 -0
  299. package/src/shared/analytics/init.ts +14 -0
  300. package/src/shared/analytics/track.ts +21 -0
  301. package/src/shared/analytics/types.ts +13 -0
  302. package/src/shared/attributes.ts +396 -0
  303. package/src/shared/brick-manifest.ts +119 -0
  304. package/src/shared/bricks/manifests/accordion.manifest.ts +482 -0
  305. package/src/shared/bricks/manifests/all-manifests.ts +121 -0
  306. package/src/shared/bricks/manifests/box.manifest.ts +551 -0
  307. package/src/shared/bricks/manifests/button.manifest.ts +208 -0
  308. package/src/shared/bricks/manifests/card.manifest.ts +320 -0
  309. package/src/shared/bricks/manifests/carousel.manifest.ts +708 -0
  310. package/src/shared/bricks/manifests/footer.manifest.ts +509 -0
  311. package/src/shared/bricks/manifests/form.manifest.ts +226 -0
  312. package/src/shared/bricks/manifests/hero.manifest.ts +365 -0
  313. package/src/shared/bricks/manifests/html.manifest.ts +127 -0
  314. package/src/shared/bricks/manifests/icon.manifest.ts +164 -0
  315. package/src/shared/bricks/manifests/image.manifest.ts +378 -0
  316. package/src/shared/bricks/manifests/images-gallery.manifest.ts +822 -0
  317. package/src/shared/bricks/manifests/map.manifest.ts +215 -0
  318. package/src/shared/bricks/manifests/navbar.manifest.ts +361 -0
  319. package/src/shared/bricks/manifests/sidebar.manifest.ts +88 -0
  320. package/src/shared/bricks/manifests/social-links.manifest.ts +497 -0
  321. package/src/shared/bricks/manifests/spacer.manifest.ts +54 -0
  322. package/src/shared/bricks/manifests/testimonials.manifest.ts +480 -0
  323. package/src/shared/bricks/manifests/tests/header.manifest.test.ts +10 -0
  324. package/src/shared/bricks/manifests/text.manifest.ts +245 -0
  325. package/src/shared/bricks/manifests/video.manifest.ts +115 -0
  326. package/src/shared/bricks/props/align.ts +63 -0
  327. package/src/shared/bricks/props/background.ts +79 -0
  328. package/src/shared/bricks/props/boolean.ts +7 -0
  329. package/src/shared/bricks/props/border.ts +86 -0
  330. package/src/shared/bricks/props/color-preset.ts +390 -0
  331. package/src/shared/bricks/props/color.ts +40 -0
  332. package/src/shared/bricks/props/common.ts +64 -0
  333. package/src/shared/bricks/props/css-length.ts +32 -0
  334. package/src/shared/bricks/props/datarecord.ts +11 -0
  335. package/src/shared/bricks/props/datasource.ts +82 -0
  336. package/src/shared/bricks/props/date.ts +21 -0
  337. package/src/shared/bricks/props/direction.ts +21 -0
  338. package/src/shared/bricks/props/dynamic.ts +112 -0
  339. package/src/shared/bricks/props/effects.ts +71 -0
  340. package/src/shared/bricks/props/enum.ts +38 -0
  341. package/src/shared/bricks/props/file.ts +10 -0
  342. package/src/shared/bricks/props/geolocation.ts +36 -0
  343. package/src/shared/bricks/props/helpers.ts +73 -0
  344. package/src/shared/bricks/props/image.ts +96 -0
  345. package/src/shared/bricks/props/number.ts +8 -0
  346. package/src/shared/bricks/props/position.ts +11 -0
  347. package/src/shared/bricks/props/string.ts +72 -0
  348. package/src/shared/bricks/props/tags.ts +26 -0
  349. package/src/shared/bricks/props/tests/background.test.ts +90 -0
  350. package/src/shared/bricks/props/tests/border.test.ts +12 -0
  351. package/src/shared/bricks/props/tests/effects.test.ts +37 -0
  352. package/src/shared/bricks/props/tests/helpers.test.ts +98 -0
  353. package/src/shared/bricks/props/tests/image.test.ts +71 -0
  354. package/src/shared/bricks/props/tests/string.test.ts +80 -0
  355. package/src/shared/bricks/props/text.ts +107 -0
  356. package/src/shared/bricks/props/types.ts +72 -0
  357. package/src/shared/bricks.ts +1237 -0
  358. package/src/shared/context.ts +32 -0
  359. package/src/shared/datarecords/external/airtable/handler.ts +501 -0
  360. package/src/shared/datarecords/external/airtable/oauth/config.ts +11 -0
  361. package/src/shared/datarecords/external/airtable/types.ts +63 -0
  362. package/src/shared/datarecords/external/generic-webhook/handler.ts +10 -0
  363. package/src/shared/datarecords/external/generic-webhook/options.ts +13 -0
  364. package/src/shared/datarecords/external/google/oauth/config.ts +30 -0
  365. package/src/shared/datarecords/external/google/sheets/client.ts +112 -0
  366. package/src/shared/datarecords/external/google/sheets/handler.ts +253 -0
  367. package/src/shared/datarecords/external/google/sheets/types.ts +10 -0
  368. package/src/shared/datarecords/external/notion/handler.ts +469 -0
  369. package/src/shared/datarecords/external/notion/oauth/config.ts +7 -0
  370. package/src/shared/datarecords/external/notion/types.ts +28 -0
  371. package/src/shared/datarecords/types.ts +165 -0
  372. package/src/shared/datarecords.ts +5 -0
  373. package/src/shared/datasources/README.md +3 -0
  374. package/src/shared/datasources/external/facebook/posts/fetcher.ts +52 -0
  375. package/src/shared/datasources/external/facebook/posts/sample.ts +35 -0
  376. package/src/shared/datasources/external/facebook/posts/schema.ts +33 -0
  377. package/src/shared/datasources/external/facebook/posts/tests/fetcher.test.ts +73 -0
  378. package/src/shared/datasources/external/http-json/fetcher.ts +31 -0
  379. package/src/shared/datasources/external/http-json/options.ts +8 -0
  380. package/src/shared/datasources/external/http-json/schema.ts +6 -0
  381. package/src/shared/datasources/external/http-json/tests/fetcher.test.ts +70 -0
  382. package/src/shared/datasources/external/instagram/feed/fetcher.ts +33 -0
  383. package/src/shared/datasources/external/instagram/feed/sample.ts +22 -0
  384. package/src/shared/datasources/external/instagram/feed/schema.ts +23 -0
  385. package/src/shared/datasources/external/instagram/feed/tests/fetcher.test.ts +64 -0
  386. package/src/shared/datasources/external/mastodon/account/fetcher.ts +24 -0
  387. package/src/shared/datasources/external/mastodon/account/sample.ts +33 -0
  388. package/src/shared/datasources/external/mastodon/account/schema.ts +45 -0
  389. package/src/shared/datasources/external/mastodon/account/tests/fetcher.test.ts +47 -0
  390. package/src/shared/datasources/external/mastodon/options.ts +6 -0
  391. package/src/shared/datasources/external/mastodon/status/fetcher.ts +35 -0
  392. package/src/shared/datasources/external/mastodon/status/sample.array.ts +59 -0
  393. package/src/shared/datasources/external/mastodon/status/sample.single.ts +55 -0
  394. package/src/shared/datasources/external/mastodon/status/schema.ts +125 -0
  395. package/src/shared/datasources/external/mastodon/status/tests/fetcher.test.ts +74 -0
  396. package/src/shared/datasources/external/meta/oauth/config.ts +16 -0
  397. package/src/shared/datasources/external/meta/options.ts +7 -0
  398. package/src/shared/datasources/external/rss/fetcher.ts +31 -0
  399. package/src/shared/datasources/external/rss/options.ts +7 -0
  400. package/src/shared/datasources/external/rss/sample.ts +22 -0
  401. package/src/shared/datasources/external/rss/schema.ts +42 -0
  402. package/src/shared/datasources/external/threads/media/fetcher.ts +53 -0
  403. package/src/shared/datasources/external/threads/media/sample.ts +44 -0
  404. package/src/shared/datasources/external/threads/media/schema.ts +37 -0
  405. package/src/shared/datasources/external/tiktok/oauth/config.ts +17 -0
  406. package/src/shared/datasources/external/tiktok/video/fetcher.ts +39 -0
  407. package/src/shared/datasources/external/tiktok/video/options.ts +8 -0
  408. package/src/shared/datasources/external/tiktok/video/sample.ts +26 -0
  409. package/src/shared/datasources/external/tiktok/video/schema.ts +27 -0
  410. package/src/shared/datasources/external/youtube/list/fetcher.ts +37 -0
  411. package/src/shared/datasources/external/youtube/list/options.ts +11 -0
  412. package/src/shared/datasources/external/youtube/list/sample.ts +33 -0
  413. package/src/shared/datasources/external/youtube/list/schema.ts +38 -0
  414. package/src/shared/datasources/external/youtube/oauth/config.ts +15 -0
  415. package/src/shared/datasources/fetcher.ts +16 -0
  416. package/src/shared/datasources/internal/blog/schema.ts +69 -0
  417. package/src/shared/datasources/internal/changelog/schema.ts +48 -0
  418. package/src/shared/datasources/internal/contact-info/schema.ts +20 -0
  419. package/src/shared/datasources/internal/cv/schema.ts +217 -0
  420. package/src/shared/datasources/internal/faq/schema.ts +27 -0
  421. package/src/shared/datasources/internal/job-board/schema.ts +228 -0
  422. package/src/shared/datasources/internal/links/schema.ts +15 -0
  423. package/src/shared/datasources/internal/recipes/schema.ts +42 -0
  424. package/src/shared/datasources/internal/restaurant/schema.ts +225 -0
  425. package/src/shared/datasources/samples.ts +26 -0
  426. package/src/shared/datasources/schemas.ts +48 -0
  427. package/src/shared/datasources/types.ts +490 -0
  428. package/src/shared/datasources/utils.ts +17 -0
  429. package/src/shared/datasources.ts +57 -0
  430. package/src/shared/env.ts +23 -0
  431. package/src/shared/errors.ts +1 -0
  432. package/src/shared/images.ts +44 -0
  433. package/src/shared/index.ts +3 -0
  434. package/src/shared/layout-constants.ts +19 -0
  435. package/src/shared/manifest.ts +50 -0
  436. package/src/shared/oauth.ts +16 -0
  437. package/src/shared/page.ts +36 -0
  438. package/src/shared/prompt.ts +9 -0
  439. package/src/shared/responsive.ts +5 -0
  440. package/src/shared/site.ts +59 -0
  441. package/src/shared/sitemap.ts +98 -0
  442. package/src/shared/social-icons.ts +307 -0
  443. package/src/shared/tests/attributes.test.ts +31 -0
  444. package/src/shared/theme.ts +244 -0
  445. package/src/shared/themes/README.md +34 -0
  446. package/src/shared/themes/color-system.ts +146 -0
  447. package/src/shared/themes/tests/color-system.test.ts +170 -0
  448. package/src/shared/utils/canvas-data-uri.ts +2 -0
  449. package/src/shared/utils/invariant.ts +25 -0
  450. package/src/shared/utils/json-date.ts +8 -0
  451. package/src/shared/utils/llm.ts +282 -0
  452. package/src/shared/utils/merge.ts +12 -0
  453. package/src/shared/utils/object-hash.ts +7 -0
  454. package/src/shared/utils/schema.ts +359 -0
  455. package/src/shared/utils/string-enum.ts +12 -0
  456. package/src/shared/utils/tests/schema.test.ts +724 -0
  457. package/src/shared/utils/try-catch.ts +12 -0
  458. package/src/shared/utils/typed-ref.ts +53 -0
  459. package/dist/shared/bricks/props/container.d.ts +0 -11
  460. package/dist/shared/bricks/props/container.d.ts.map +0 -1
  461. package/dist/shared/bricks/props/container.js +0 -3
  462. package/dist/shared/bricks/props/gap.d.ts +0 -9
  463. package/dist/shared/bricks/props/gap.d.ts.map +0 -1
  464. package/dist/shared/bricks/props/gap.js +0 -3
  465. package/dist/shared/bricks/props/padding.d.ts +0 -5
  466. package/dist/shared/bricks/props/padding.d.ts.map +0 -1
  467. package/dist/shared/bricks/props/padding.js +0 -3
  468. package/dist/shared/bricks/props/tests/padding.d.ts +0 -2
  469. package/dist/shared/bricks/props/tests/padding.d.ts.map +0 -1
  470. package/dist/shared/chunk-2IYSJYNE.js +0 -3
  471. package/dist/shared/chunk-3EM3B4DX.js +0 -3
  472. package/dist/shared/chunk-4TH3C76A.js +0 -3
  473. package/dist/shared/chunk-5N6MBJJ4.js +0 -3
  474. package/dist/shared/chunk-6FITVVZX.js +0 -3
  475. package/dist/shared/chunk-6WCGUAQN.js +0 -3
  476. package/dist/shared/chunk-7DMUDZ4H.js +0 -3
  477. package/dist/shared/chunk-ACVLF55Q.js +0 -3
  478. package/dist/shared/chunk-AQPN5SE2.js +0 -3
  479. package/dist/shared/chunk-BZGNY7LB.js +0 -3
  480. package/dist/shared/chunk-C3VGP4CA.js +0 -3
  481. package/dist/shared/chunk-CT3EI7YN.js +0 -3
  482. package/dist/shared/chunk-DQXDGV67.js +0 -3
  483. package/dist/shared/chunk-E22E4XWE.js +0 -3
  484. package/dist/shared/chunk-ETYYRWLK.js +0 -3
  485. package/dist/shared/chunk-EYPREFMH.js +0 -3
  486. package/dist/shared/chunk-FKNNTHWX.js +0 -5
  487. package/dist/shared/chunk-HHO3ONTQ.js +0 -3
  488. package/dist/shared/chunk-I46VBMLF.js +0 -3
  489. package/dist/shared/chunk-IIFTGWFZ.js +0 -3
  490. package/dist/shared/chunk-JS4K5JRM.js +0 -5
  491. package/dist/shared/chunk-KHFNN4P3.js +0 -3
  492. package/dist/shared/chunk-L6WHBSRZ.js +0 -8
  493. package/dist/shared/chunk-LFQZRGHS.js +0 -3
  494. package/dist/shared/chunk-LGP6GWIY.js +0 -3
  495. package/dist/shared/chunk-NLEWXPVM.js +0 -3
  496. package/dist/shared/chunk-NNI225RG.js +0 -3
  497. package/dist/shared/chunk-QISTDGPP.js +0 -3
  498. package/dist/shared/chunk-QSZWDE3D.js +0 -3
  499. package/dist/shared/chunk-RGLVKILY.js +0 -3
  500. package/dist/shared/chunk-SLRU4CT6.js +0 -4
  501. package/dist/shared/chunk-T3LIA4YB.js +0 -3
  502. package/dist/shared/chunk-T4LMBG2G.js +0 -3
  503. package/dist/shared/chunk-TATG6SFZ.js +0 -3
  504. package/dist/shared/chunk-TF3JVVRU.js +0 -3
  505. package/dist/shared/chunk-TTTXV7TJ.js +0 -6
  506. package/dist/shared/chunk-TWBY2GOR.js +0 -3
  507. package/dist/shared/chunk-UAQHU6L6.js +0 -3
  508. package/dist/shared/chunk-UHF6IEKV.js +0 -3
  509. package/dist/shared/chunk-UMHXXXVP.js +0 -3
  510. package/dist/shared/chunk-VGRYSAXA.js +0 -3
  511. package/dist/shared/chunk-VPFCY4DH.js +0 -3
  512. package/dist/shared/chunk-VZPXXFVX.js +0 -3
  513. package/dist/shared/chunk-WU6Q4WYD.js +0 -3
  514. package/dist/shared/chunk-X43MB5WD.js +0 -3
  515. package/dist/shared/chunk-YBGPPF7T.js +0 -3
  516. package/dist/shared/chunk-YFFTZ5T6.js +0 -3
  517. package/dist/shared/chunk-ZQGNYK5I.js +0 -8
  518. package/dist/shared/chunk-ZTDUXSWH.js +0 -3
  519. package/dist/shared/datarecords/external/airtable/client.d.ts +0 -8
  520. package/dist/shared/datarecords/external/airtable/client.d.ts.map +0 -1
  521. package/dist/shared/datarecords/external/airtable/elements.d.ts +0 -21
  522. package/dist/shared/datarecords/external/airtable/elements.d.ts.map +0 -1
  523. package/dist/shared/datarecords/external/airtable/options.d.ts +0 -10
  524. package/dist/shared/datarecords/external/airtable/options.d.ts.map +0 -1
  525. package/dist/shared/datarecords/external/google/sheets/options.d.ts.map +0 -1
  526. package/dist/shared/datarecords/external/notion/client.d.ts +0 -8
  527. package/dist/shared/datarecords/external/notion/client.d.ts.map +0 -1
  528. package/dist/shared/datarecords/external/notion/options.d.ts.map +0 -1
  529. package/dist/shared/datarecords/external/notion/utils.d.ts +0 -5
  530. package/dist/shared/datarecords/external/notion/utils.d.ts.map +0 -1
  531. package/dist/shared/utils/schema-resolver.d.ts +0 -3
  532. package/dist/shared/utils/schema-resolver.d.ts.map +0 -1
  533. package/dist/shared/utils/schema-resolver.js +0 -3
@@ -0,0 +1,245 @@
1
+ import { defineBrickManifest } from "~/shared/brick-manifest";
2
+ import { textContentRef } from "../props/text";
3
+ import { defineProps } from "../props/helpers";
4
+ import { borderRef, roundingRef } from "../props/border";
5
+ import { RxTextAlignLeft } from "react-icons/rx";
6
+ import type { BrickProps } from "../props/types";
7
+ import { Type } from "@sinclair/typebox";
8
+ import { alignItemsRef } from "../props/align";
9
+ import { shadowRef } from "../props/effects";
10
+ import { colorPresetRef } from "../props/color-preset";
11
+ import { loopRef } from "../props/dynamic";
12
+ import { cssLengthRef } from "../props/css-length";
13
+
14
+ export const manifest = defineBrickManifest({
15
+ type: "text",
16
+ category: "basic",
17
+ name: "Text",
18
+ description: "Text with formatting options",
19
+ aiInstructions: `Text "content" can contain minimal HTML tags like <strong>, <em>, <br> and <a> as well as <h1>, <h2>, <h3>, <h4>, <p> and <span> and lists.
20
+ Only 'align' is supported as an inline style, so don't use other inline styles like 'font-size' or 'color' in the content prop.
21
+ You may simply omit the "colorPreset" property so that the brick will inherit the default color from its parent container.
22
+ `,
23
+ defaultWidth: {
24
+ mobile: "100%",
25
+ },
26
+ defaultHeight: {
27
+ desktop: "auto",
28
+ mobile: "auto",
29
+ },
30
+ staticClasses: "prose lg:prose-lg",
31
+ icon: RxTextAlignLeft,
32
+ props: defineProps({
33
+ colorPreset: Type.Optional(
34
+ colorPresetRef({
35
+ title: "Color",
36
+ }),
37
+ ),
38
+ content: textContentRef({
39
+ title: "Content",
40
+ // metadata: {
41
+ // category: "content",
42
+ // },
43
+ }),
44
+ verticalAlign: Type.Optional(
45
+ alignItemsRef({
46
+ default: "items-center",
47
+ title: "Align",
48
+ }),
49
+ ),
50
+ padding: Type.Optional(
51
+ cssLengthRef({
52
+ default: "2rem",
53
+ description: "Padding inside the text.",
54
+ "ai:instructions": "Use only a single value like '1rem' or '10px'",
55
+ title: "Padding",
56
+ "ui:responsive": true,
57
+ "ui:placeholder": "Not specified",
58
+ "ui:styleId": "styles:padding",
59
+ }),
60
+ ),
61
+ rounding: Type.Optional(
62
+ roundingRef({
63
+ default: "rounded-md",
64
+ }),
65
+ ),
66
+ border: Type.Optional(borderRef()),
67
+ shadow: Type.Optional(shadowRef()),
68
+ loop: Type.Optional(loopRef()),
69
+ }),
70
+ });
71
+
72
+ export type Manifest = typeof manifest;
73
+
74
+ export const examples: {
75
+ description: string;
76
+ type: string;
77
+ props: BrickProps<Manifest>["brick"]["props"];
78
+ }[] = [
79
+ {
80
+ description: "Welcome paragraph with emphasis and padding",
81
+ type: "text",
82
+ props: {
83
+ content:
84
+ "Welcome to our platform! We're <strong>excited</strong> to have you here. Our mission is to <em>transform</em> the way you work with cutting-edge technology and <a href='/features'>innovative features</a>.",
85
+ padding: "2rem",
86
+ },
87
+ },
88
+ {
89
+ description: "Feature list with HTML formatting and smaller padding",
90
+ type: "text",
91
+ props: {
92
+ content:
93
+ "<h3>Key Features</h3><ul><li><strong>Advanced Analytics</strong> - Real-time data insights</li><li><strong>Cloud Integration</strong> - Seamless connectivity</li><li><strong>24/7 Support</strong> - Always here to help</li></ul>",
94
+ padding: "1rem",
95
+ },
96
+ },
97
+ {
98
+ description: "Quote block with text styling but no background",
99
+ type: "text",
100
+ props: {
101
+ content:
102
+ "<p style='text-align: center'><em>\"Innovation distinguishes between a leader and a follower.\"</em><br><strong>- Steve Jobs</strong></p>",
103
+ padding: "3rem",
104
+ },
105
+ },
106
+ {
107
+ description: "Simple heading with subtle background",
108
+ type: "text",
109
+ props: {
110
+ content:
111
+ "<h2>About Our Company</h2><p>We've been serving customers since 2010, building trust through quality products and exceptional service.</p>",
112
+ colorPreset: {
113
+ color: "primary-100",
114
+ },
115
+ },
116
+ },
117
+ {
118
+ description: "Team introduction with formatting, no background color",
119
+ type: "text",
120
+ props: {
121
+ content:
122
+ "<p style='text-align: center'><strong>Meet Our Team</strong></p><p>Our diverse team of experts brings together decades of experience in technology, design, and business strategy. We're passionate about <em>creating solutions</em> that make a real difference.</p><p><a href='/team'>Learn more about our team</a> and the values that drive us forward.</p>",
123
+ padding: "2rem",
124
+ },
125
+ },
126
+ {
127
+ description: "Maintenance notice with neutral background and border",
128
+ type: "text",
129
+ props: {
130
+ content:
131
+ "<p>Scheduled maintenance will occur on <em>Sunday, March 15th</em> from 2:00 AM to 6:00 AM UTC.</p><p>During this time, some features may be temporarily unavailable. We apologize for any inconvenience.</p>",
132
+ padding: "1rem",
133
+ colorPreset: {
134
+ color: "neutral-700",
135
+ },
136
+ border: {
137
+ width: "border",
138
+ color: "border-neutral-400",
139
+ },
140
+ rounding: "rounded-lg",
141
+ },
142
+ },
143
+ {
144
+ description: "Minimal text with no padding or background",
145
+ type: "text",
146
+ props: {
147
+ content: "This is some minimal text.",
148
+ padding: "0rem",
149
+ },
150
+ },
151
+ {
152
+ description: "Call-to-action text with secondary background and shadow",
153
+ type: "text",
154
+ props: {
155
+ content:
156
+ "<h3 style='text-align: center'>Ready to Get Started?</h3><p style='text-align: center'>Join thousands of satisfied customers who trust our platform. <strong>Sign up today</strong> and experience the difference!</p><p style='text-align: center'><a href='/signup'>Create Your Free Account</a></p>",
157
+ colorPreset: {
158
+ color: "secondary-200",
159
+ },
160
+ padding: "2.5rem",
161
+ rounding: "rounded-xl",
162
+ shadow: "shadow-md",
163
+ verticalAlign: "items-center",
164
+ },
165
+ },
166
+ {
167
+ description: "Technical documentation with accent colors and code-like formatting",
168
+ type: "text",
169
+ props: {
170
+ content:
171
+ "<h4>API Authentication</h4><p>To authenticate your requests, include your API key in the header:</p><p><strong>Authorization: Bearer YOUR_API_KEY</strong></p><p>All API endpoints require authentication. You can find your API key in the <a href='/dashboard'>dashboard settings</a>.</p>",
172
+ colorPreset: {
173
+ color: "accent-100",
174
+ },
175
+ padding: "1.5rem",
176
+ rounding: "rounded-md",
177
+ border: {
178
+ width: "border-4",
179
+ color: "border-accent-500",
180
+ },
181
+ },
182
+ },
183
+ {
184
+ description: "Success message with primary background and top alignment",
185
+ type: "text",
186
+ props: {
187
+ content:
188
+ "<h3>✅ Payment Successful!</h3><p>Thank you for your purchase. Your order <strong>#12345</strong> has been confirmed.</p><p>You will receive an email confirmation shortly at your registered email address.</p>",
189
+ colorPreset: {
190
+ color: "primary-200",
191
+ },
192
+ padding: "2rem",
193
+ rounding: "rounded-lg",
194
+ shadow: "shadow-sm",
195
+ verticalAlign: "items-start",
196
+ },
197
+ },
198
+ {
199
+ description: "Footer information with neutral dark theme and multiple links",
200
+ type: "text",
201
+ props: {
202
+ content:
203
+ "<p style='text-align: center'>© 2024 Company Name. All rights reserved.</p><p style='text-align: center'><a href='/privacy'>Privacy Policy</a> | <a href='/terms'>Terms of Service</a> | <a href='/contact'>Contact Us</a></p><p style='text-align: center'><em>Follow us on social media for the latest updates</em></p>",
204
+ colorPreset: {
205
+ color: "neutral-800",
206
+ },
207
+ padding: "1.5rem",
208
+ verticalAlign: "items-end",
209
+ },
210
+ },
211
+ {
212
+ description: "Product description with large padding and rounded corners",
213
+ type: "text",
214
+ props: {
215
+ content:
216
+ "<h2>Premium Wireless Headphones</h2><p>Experience <strong>crystal-clear audio</strong> with our latest wireless headphones featuring:</p><ul><li>Active noise cancellation</li><li>30-hour battery life</li><li>Premium leather comfort</li><li>Hi-res audio certification</li></ul><p>Perfect for <em>music lovers</em> and <em>professionals</em> alike.</p>",
217
+ padding: "3rem",
218
+ rounding: "rounded-2xl",
219
+ shadow: "shadow-lg",
220
+ border: {
221
+ width: "border",
222
+ color: "border-neutral-300",
223
+ },
224
+ },
225
+ },
226
+ {
227
+ description: "Emergency alert with accent background and extra bold formatting",
228
+ type: "text",
229
+ props: {
230
+ content:
231
+ "<h3 style='text-align: center'>⚠️ URGENT NOTICE</h3><p style='text-align: center'><strong>System maintenance is currently in progress.</strong></p><p style='text-align: center'>Some services may be <em>temporarily unavailable</em>. We expect full restoration by 4:00 PM EST.</p><p style='text-align: center'>For urgent support, please <a href='/emergency-contact'>contact our emergency line</a>.</p>",
232
+ colorPreset: {
233
+ color: "accent-400",
234
+ },
235
+ padding: "2rem",
236
+ rounding: "rounded-md",
237
+ border: {
238
+ width: "border-2",
239
+ color: "border-accent-600",
240
+ },
241
+ shadow: "shadow-xl",
242
+ verticalAlign: "items-center",
243
+ },
244
+ },
245
+ ];
@@ -0,0 +1,115 @@
1
+ import { defineBrickManifest } from "~/shared/brick-manifest";
2
+ import { defineProps } from "../props/helpers";
3
+ import { RxVideo } from "react-icons/rx";
4
+ import { string } from "../props/string";
5
+ import type { BrickProps } from "../props/types";
6
+ import { borderRef, roundingRef } from "../props/border";
7
+ import { shadowRef } from "../props/effects";
8
+ import { Type } from "@sinclair/typebox";
9
+ import { cssLengthRef } from "../props/css-length";
10
+
11
+ export const manifest = defineBrickManifest({
12
+ type: "video",
13
+ name: "Video",
14
+ category: "media",
15
+ description: "An embedded video player for YouTube / Vimeo / Wistia links",
16
+ icon: RxVideo,
17
+ defaultWidth: {
18
+ mobile: "auto",
19
+ desktop: `${(360 * 16) / 9}px`, // 16:9 aspect ratio
20
+ },
21
+ defaultHeight: {
22
+ mobile: "168px",
23
+ desktop: "360px", // 16:9 aspect ratio
24
+ },
25
+ minWidth: {
26
+ mobile: 300,
27
+ desktop: (360 * 16) / 9,
28
+ },
29
+ minHeight: {
30
+ mobile: 168,
31
+ desktop: 360, // 16:9 aspect ratio
32
+ },
33
+ props: defineProps({
34
+ url: string("Video URL", {
35
+ description:
36
+ "URL of the video to embed. It can be a YouTube link or an embed link. It also supports Vimeo and Wistia links.",
37
+ default: "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
38
+ metadata: {
39
+ category: "content",
40
+ "ui:responsive": "desktop",
41
+ },
42
+ }),
43
+ padding: Type.Optional(
44
+ cssLengthRef({
45
+ description: "Padding inside the video player.",
46
+ "ai:instructions": "Use only a single value like '1rem' or '10px'",
47
+ title: "Padding",
48
+ "ui:responsive": true,
49
+ "ui:placeholder": "Not specified",
50
+ "ui:styleId": "styles:padding",
51
+ }),
52
+ ),
53
+ rounding: Type.Optional(
54
+ roundingRef({
55
+ default: "rounded-md",
56
+ }),
57
+ ),
58
+ border: Type.Optional(borderRef()),
59
+ shadow: Type.Optional(shadowRef()),
60
+ }),
61
+ });
62
+
63
+ export type Manifest = typeof manifest;
64
+
65
+ export const examples: {
66
+ description: string;
67
+ type: string;
68
+ props: BrickProps<Manifest>["brick"]["props"];
69
+ }[] = [
70
+ {
71
+ description: "A YouTube video",
72
+ type: "video",
73
+ props: {
74
+ url: "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
75
+ },
76
+ },
77
+ {
78
+ description: "An embedded YouTube video",
79
+ type: "video",
80
+ props: {
81
+ url: "https://www.youtube.com/embed/dQw4w9WgXcQ",
82
+ },
83
+ },
84
+ {
85
+ description: "A Vimeo video",
86
+ type: "video",
87
+ props: {
88
+ url: "https://vimeo.com/123456789",
89
+ },
90
+ },
91
+ {
92
+ description: "Dynamic course video using course query",
93
+ type: "video",
94
+ props: {
95
+ url: "{{course.videoUrl}}",
96
+ padding: "1rem",
97
+ rounding: "rounded-lg",
98
+ shadow: "shadow-md",
99
+ },
100
+ },
101
+ {
102
+ description: "Dynamic product demo video using product query",
103
+ type: "video",
104
+ props: {
105
+ url: "{{product.demoVideoUrl}}",
106
+ padding: "0.5rem",
107
+ rounding: "rounded-xl",
108
+ shadow: "shadow-lg",
109
+ border: {
110
+ width: "border-2",
111
+ color: "border-primary-300",
112
+ },
113
+ },
114
+ },
115
+ ];
@@ -0,0 +1,63 @@
1
+ import type { Static, StringOptions } from "@sinclair/typebox";
2
+ import { StringEnum } from "~/shared/utils/string-enum";
3
+ import { typedRef } from "~/shared/utils/typed-ref";
4
+
5
+ export function justifyContent(options: StringOptions = {}) {
6
+ return StringEnum(
7
+ ["justify-start", "justify-center", "justify-end", "justify-between", "justify-around", "justify-evenly"],
8
+ {
9
+ enumNames: ["Start", "Center", "End", "Between", "Around", "Evenly"],
10
+ // $id: "styles:justifyContent",
11
+ title: "Justify bricks",
12
+ "ui:field": "justify-content",
13
+ "ui:responsive": true,
14
+ "ui:styleId": "styles:justifyContent",
15
+ examples: ["justify-center", "justify-evenly"],
16
+ ...options,
17
+ },
18
+ );
19
+ }
20
+
21
+ export type JustifyContentSettings = Static<ReturnType<typeof justifyContent>>;
22
+
23
+ export function justifyContentRef(options: StringOptions = {}) {
24
+ return typedRef("styles:justifyContent", options);
25
+ }
26
+
27
+ export function alignItems(options: StringOptions = {}) {
28
+ return StringEnum(["items-start", "items-center", "items-end", "items-stretch"], {
29
+ enumNames: ["Start", "Center", "End", "Stretch"],
30
+ // $id: "styles:alignItems",
31
+ title: "Align bricks",
32
+ "ui:field": "align-items",
33
+ "ui:responsive": true,
34
+ "ui:styleId": "styles:alignItems",
35
+ examples: ["items-center", "items-stretch"],
36
+ ...options,
37
+ });
38
+ }
39
+
40
+ export type AlignItemsSettings = Static<ReturnType<typeof alignItems>>;
41
+
42
+ export function alignItemsRef(options: StringOptions = {}) {
43
+ return typedRef("styles:alignItems", options);
44
+ }
45
+
46
+ export function alignSelf(options: StringOptions = {}) {
47
+ return StringEnum(["self-auto", "self-start", "self-center", "self-end", "self-stretch"], {
48
+ enumNames: ["Auto", "Start", "Center", "End", "Stretch"],
49
+ default: "self-auto",
50
+ // $id: "styles:alignSelf",
51
+ title: "Align self",
52
+ "ui:field": "align-self",
53
+ "ui:responsive": true,
54
+ "ui:styleId": "styles:alignSelf",
55
+ ...options,
56
+ });
57
+ }
58
+
59
+ export type AlignSelfSettings = Static<ReturnType<typeof alignSelf>>;
60
+
61
+ export function alignSelfRef(options: StringOptions = {}) {
62
+ return typedRef("styles:alignSelf", options);
63
+ }
@@ -0,0 +1,79 @@
1
+ import { type SchemaOptions, Type, type Static } from "@sinclair/typebox";
2
+ import type { ElementColorType } from "~/shared/themes/color-system";
3
+ import { StringEnum } from "~/shared/utils/string-enum";
4
+ import { typedRef } from "~/shared/utils/typed-ref";
5
+
6
+ type BackgroundOptions = {
7
+ title?: string;
8
+ default?: {
9
+ image?: string;
10
+ size?: string;
11
+ repeat?: string;
12
+ };
13
+ colorType?: ElementColorType;
14
+ };
15
+
16
+ export function background(opts: BackgroundOptions = {}) {
17
+ const { default: defValue, ...restOpts } = opts;
18
+ return Type.Object(
19
+ {
20
+ image: Type.String({
21
+ title: "Image",
22
+ description: "The background image. Can be a URL or a data URI",
23
+ format: "image",
24
+ examples: ["https://example.com/image.png"],
25
+ }),
26
+ size: Type.Optional(
27
+ StringEnum(["auto", "cover", "contain"], {
28
+ enumNames: ["Auto", "Cover", "Contain"],
29
+ default: defValue?.size ?? "auto",
30
+ "ai:instructions": "Only use this when the image is set.",
31
+ }),
32
+ ),
33
+ repeat: Type.Optional(
34
+ StringEnum(["no-repeat", "repeat", "repeat-x", "repeat-y", "space", "round"], {
35
+ enumNames: ["No repeat", "Repeat", "Repeat horizontally", "Repeat vertically", "Space", "Round"],
36
+ default: defValue?.repeat ?? "no-repeat",
37
+ "ai:instructions": "Only use this when the image is set.",
38
+ }),
39
+ ),
40
+ },
41
+ {
42
+ // $id: "styles:background",
43
+ "ui:styleId": "styles:background",
44
+ "ui:field": "background",
45
+ title: "Background image",
46
+ // disable for now
47
+ // "ui:show-img-search": true,
48
+ default: defValue,
49
+ ...restOpts,
50
+ },
51
+ );
52
+ }
53
+
54
+ export type BackgroundSettings = Static<ReturnType<typeof background>>;
55
+
56
+ export function backgroundRef(options: SchemaOptions = {}) {
57
+ return typedRef("styles:background", options);
58
+ }
59
+
60
+ export function backgroundColor(options: SchemaOptions = {}) {
61
+ return Type.String({
62
+ title: "Background color",
63
+ // $id: "styles:backgroundColor",
64
+ "ai:instructions":
65
+ "Can be set to transparent, hex/rgb/rgba color, or classes like `bg-<variant>-<shade>`, variants being primary, secondary, accent and neutral, and shades between 100 and 900. Use bg-<variant>-<shade> classes as much as possible.",
66
+ "ui:field": "color",
67
+ "ui:color-type": "background",
68
+ // "ui:advanced": true,
69
+ "ui:styleId": "styles:backgroundColor",
70
+ "ui:responsive": "desktop",
71
+ ...options,
72
+ });
73
+ }
74
+
75
+ export type BackgroundColorSettings = Static<ReturnType<typeof backgroundColor>>;
76
+
77
+ export function backgroundColorRef(options: SchemaOptions = {}) {
78
+ return typedRef("styles:backgroundColor", options);
79
+ }
@@ -0,0 +1,7 @@
1
+ import { Type } from "@sinclair/typebox";
2
+
3
+ type BooleanOptions = Record<string, unknown>;
4
+
5
+ export function boolean(title: string, defaultValue?: boolean, options: BooleanOptions = {}) {
6
+ return Type.Boolean({ title, default: defaultValue ?? false, ...options });
7
+ }
@@ -0,0 +1,86 @@
1
+ import { type ObjectOptions, Type, type Static, type StringOptions } from "@sinclair/typebox";
2
+ import { typedRef } from "~/shared/utils/typed-ref";
3
+ import { StringEnum } from "~/shared/utils/string-enum";
4
+ import { borderColorRef } from "./color";
5
+
6
+ export function border(opts: ObjectOptions = {}) {
7
+ return Type.Object(
8
+ {
9
+ width: StringEnum(["border-0", "border", "border-2", "border-4", "border-8"], {
10
+ title: "Width",
11
+ enumNames: ["None", "Small", "Medium", "Large", "Extra large"],
12
+ "ai:instructions": "Don't specify width if you want no border.",
13
+ "ui:field": "enum",
14
+ "ui:display": "select",
15
+ "ui:placeholder": "None",
16
+ default: "border-0",
17
+ }),
18
+ color: borderColorRef({
19
+ title: "Color",
20
+ description: "The color of the border.",
21
+ default: "border-current",
22
+ }),
23
+ },
24
+ {
25
+ title: "Border",
26
+ "ui:styleId": "styles:border",
27
+ description: "Set the border width and color.",
28
+ "ui:field": "border",
29
+ "ui:responsive": true,
30
+ examples: [
31
+ {
32
+ width: "border-2",
33
+ color: "border-primary-200",
34
+ },
35
+ {
36
+ width: "border-4",
37
+ color: "border-accent-400",
38
+ },
39
+ {
40
+ width: "border",
41
+ color: "border-neutral-100",
42
+ },
43
+ ],
44
+ ...opts,
45
+ },
46
+ );
47
+ }
48
+
49
+ export type BorderSettings = Static<ReturnType<typeof border>>;
50
+
51
+ export function borderRef(
52
+ options: Omit<ObjectOptions, "default"> & { default?: Partial<BorderSettings> } = {},
53
+ ) {
54
+ return typedRef("styles:border", options);
55
+ }
56
+
57
+ export function rounding(opts: StringOptions = {}) {
58
+ return Type.Optional(
59
+ StringEnum(
60
+ [
61
+ "rounded-auto",
62
+ "rounded-none",
63
+ "rounded-sm",
64
+ "rounded-md",
65
+ "rounded-lg",
66
+ "rounded-xl",
67
+ "rounded-2xl",
68
+ "rounded-full",
69
+ ],
70
+ {
71
+ title: "Corner rounding",
72
+ enumNames: ["Auto", "None", "Small", "Medium", "Large", "Extra large", "2xl", "Full"],
73
+ // $id: "styles:rounding",
74
+ "ui:styleId": "styles:rounding",
75
+ "ui:responsive": "desktop",
76
+ ...opts,
77
+ },
78
+ ),
79
+ );
80
+ }
81
+
82
+ export type RoundingSettings = Static<ReturnType<typeof rounding>>;
83
+
84
+ export function roundingRef(options: StringOptions = {}) {
85
+ return typedRef("styles:rounding", options);
86
+ }