zudoku 0.64.1 → 0.65.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (402) hide show
  1. package/dist/app/main.d.ts +91 -1
  2. package/dist/app/main.js +5 -1
  3. package/dist/app/main.js.map +1 -1
  4. package/dist/config/config.d.ts +15 -46
  5. package/dist/config/validators/InputNavigationSchema.d.ts +61 -61
  6. package/dist/config/validators/NavigationSchema.js +2 -4
  7. package/dist/config/validators/NavigationSchema.js.map +1 -1
  8. package/dist/config/validators/ProtectedRoutesSchema.d.ts +1 -1
  9. package/dist/config/validators/validate.d.ts +158 -2
  10. package/dist/config/validators/validate.js +37 -0
  11. package/dist/config/validators/validate.js.map +1 -1
  12. package/dist/config/validators/validate.test.js +43 -0
  13. package/dist/config/validators/validate.test.js.map +1 -1
  14. package/dist/flat-config.d.ts +22 -0
  15. package/dist/lib/auth/issuer.js +3 -0
  16. package/dist/lib/auth/issuer.js.map +1 -1
  17. package/dist/lib/authentication/authentication.d.ts +1 -1
  18. package/dist/lib/authentication/providers/auth0.js +6 -1
  19. package/dist/lib/authentication/providers/auth0.js.map +1 -1
  20. package/dist/lib/authentication/providers/firebase.d.ts +4 -0
  21. package/dist/lib/authentication/providers/firebase.js +215 -0
  22. package/dist/lib/authentication/providers/firebase.js.map +1 -0
  23. package/dist/lib/authentication/providers/supabase.js +1 -6
  24. package/dist/lib/authentication/providers/supabase.js.map +1 -1
  25. package/dist/lib/authentication/ui/ZudokuAuthUi.d.ts +24 -0
  26. package/dist/lib/authentication/ui/ZudokuAuthUi.js +124 -0
  27. package/dist/lib/authentication/ui/ZudokuAuthUi.js.map +1 -0
  28. package/dist/lib/authentication/ui/icons/Apple.d.ts +3 -0
  29. package/dist/lib/authentication/ui/icons/Apple.js +4 -0
  30. package/dist/lib/authentication/ui/icons/Apple.js.map +1 -0
  31. package/dist/lib/authentication/ui/icons/Facebook.d.ts +3 -0
  32. package/dist/lib/authentication/ui/icons/Facebook.js +4 -0
  33. package/dist/lib/authentication/ui/icons/Facebook.js.map +1 -0
  34. package/dist/lib/authentication/ui/icons/Github.d.ts +3 -0
  35. package/dist/lib/authentication/ui/icons/Github.js +4 -0
  36. package/dist/lib/authentication/ui/icons/Github.js.map +1 -0
  37. package/dist/lib/authentication/ui/icons/Google.d.ts +3 -0
  38. package/dist/lib/authentication/ui/icons/Google.js +4 -0
  39. package/dist/lib/authentication/ui/icons/Google.js.map +1 -0
  40. package/dist/lib/authentication/ui/icons/Microsoft.d.ts +3 -0
  41. package/dist/lib/authentication/ui/icons/Microsoft.js +4 -0
  42. package/dist/lib/authentication/ui/icons/Microsoft.js.map +1 -0
  43. package/dist/lib/authentication/ui/icons/X.d.ts +3 -0
  44. package/dist/lib/authentication/ui/icons/X.js +4 -0
  45. package/dist/lib/authentication/ui/icons/X.js.map +1 -0
  46. package/dist/lib/components/Autocomplete.d.ts +3 -1
  47. package/dist/lib/components/Autocomplete.js +6 -2
  48. package/dist/lib/components/Autocomplete.js.map +1 -1
  49. package/dist/lib/components/Heading.d.ts +1 -1
  50. package/dist/lib/components/Layout.js +3 -2
  51. package/dist/lib/components/Layout.js.map +1 -1
  52. package/dist/lib/components/navigation/NavigationItem.js +2 -2
  53. package/dist/lib/components/navigation/NavigationItem.js.map +1 -1
  54. package/dist/lib/core/RouteGuard.js +6 -6
  55. package/dist/lib/core/RouteGuard.js.map +1 -1
  56. package/dist/lib/errors/ErrorAlert.js +1 -1
  57. package/dist/lib/errors/RouterError.d.ts +3 -1
  58. package/dist/lib/errors/RouterError.js +3 -2
  59. package/dist/lib/errors/RouterError.js.map +1 -1
  60. package/dist/lib/oas/parser/index.js +7 -3
  61. package/dist/lib/oas/parser/index.js.map +1 -1
  62. package/dist/lib/plugins/api-keys/ProtectedRoute.js +4 -1
  63. package/dist/lib/plugins/api-keys/ProtectedRoute.js.map +1 -1
  64. package/dist/lib/plugins/openapi/CollapsibleCode.d.ts +1 -0
  65. package/dist/lib/plugins/openapi/CollapsibleCode.js +2 -1
  66. package/dist/lib/plugins/openapi/CollapsibleCode.js.map +1 -1
  67. package/dist/lib/plugins/openapi/GeneratedExampleSidecarBox.d.ts +5 -0
  68. package/dist/lib/plugins/openapi/GeneratedExampleSidecarBox.js +10 -0
  69. package/dist/lib/plugins/openapi/GeneratedExampleSidecarBox.js.map +1 -0
  70. package/dist/lib/plugins/openapi/OperationList.js +5 -1
  71. package/dist/lib/plugins/openapi/OperationList.js.map +1 -1
  72. package/dist/lib/plugins/openapi/OperationListItem.d.ts +2 -1
  73. package/dist/lib/plugins/openapi/OperationListItem.js +3 -2
  74. package/dist/lib/plugins/openapi/OperationListItem.js.map +1 -1
  75. package/dist/lib/plugins/openapi/ParameterList.js +7 -4
  76. package/dist/lib/plugins/openapi/ParameterList.js.map +1 -1
  77. package/dist/lib/plugins/openapi/ParameterListItem.js +17 -6
  78. package/dist/lib/plugins/openapi/ParameterListItem.js.map +1 -1
  79. package/dist/lib/plugins/openapi/RequestBodySidecarBox.d.ts +9 -2
  80. package/dist/lib/plugins/openapi/RequestBodySidecarBox.js +5 -2
  81. package/dist/lib/plugins/openapi/RequestBodySidecarBox.js.map +1 -1
  82. package/dist/lib/plugins/openapi/ResponsesSidecarBox.d.ts +3 -2
  83. package/dist/lib/plugins/openapi/ResponsesSidecarBox.js +25 -4
  84. package/dist/lib/plugins/openapi/ResponsesSidecarBox.js.map +1 -1
  85. package/dist/lib/plugins/openapi/Sidecar.d.ts +2 -2
  86. package/dist/lib/plugins/openapi/Sidecar.js +53 -26
  87. package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
  88. package/dist/lib/plugins/openapi/SidecarBox.js +4 -4
  89. package/dist/lib/plugins/openapi/SidecarBox.js.map +1 -1
  90. package/dist/lib/plugins/openapi/SidecarExamples.d.ts +9 -2
  91. package/dist/lib/plugins/openapi/SidecarExamples.js +24 -43
  92. package/dist/lib/plugins/openapi/SidecarExamples.js.map +1 -1
  93. package/dist/lib/plugins/openapi/components/ConstValue.js +1 -1
  94. package/dist/lib/plugins/openapi/components/ConstValue.js.map +1 -1
  95. package/dist/lib/plugins/openapi/components/EnumValues.js +1 -1
  96. package/dist/lib/plugins/openapi/components/EnumValues.js.map +1 -1
  97. package/dist/lib/plugins/openapi/components/NonHighlightedCode.d.ts +4 -0
  98. package/dist/lib/plugins/openapi/components/NonHighlightedCode.js +5 -0
  99. package/dist/lib/plugins/openapi/components/NonHighlightedCode.js.map +1 -0
  100. package/dist/lib/plugins/openapi/components/ResponseContent.js +5 -6
  101. package/dist/lib/plugins/openapi/components/ResponseContent.js.map +1 -1
  102. package/dist/lib/plugins/openapi/interfaces.d.ts +13 -0
  103. package/dist/lib/plugins/openapi/playground/BodyPanel.js +67 -15
  104. package/dist/lib/plugins/openapi/playground/BodyPanel.js.map +1 -1
  105. package/dist/lib/plugins/openapi/playground/CollapsibleHeader.js +2 -2
  106. package/dist/lib/plugins/openapi/playground/CollapsibleHeader.js.map +1 -1
  107. package/dist/lib/plugins/openapi/playground/ExamplesDropdown.js +1 -1
  108. package/dist/lib/plugins/openapi/playground/ExamplesDropdown.js.map +1 -1
  109. package/dist/lib/plugins/openapi/playground/Headers.js +23 -83
  110. package/dist/lib/plugins/openapi/playground/Headers.js.map +1 -1
  111. package/dist/lib/plugins/openapi/playground/ParamsGrid.d.ts +10 -2
  112. package/dist/lib/plugins/openapi/playground/ParamsGrid.js +8 -1
  113. package/dist/lib/plugins/openapi/playground/ParamsGrid.js.map +1 -1
  114. package/dist/lib/plugins/openapi/playground/PathParams.js +2 -3
  115. package/dist/lib/plugins/openapi/playground/PathParams.js.map +1 -1
  116. package/dist/lib/plugins/openapi/playground/Playground.d.ts +7 -0
  117. package/dist/lib/plugins/openapi/playground/Playground.js +56 -28
  118. package/dist/lib/plugins/openapi/playground/Playground.js.map +1 -1
  119. package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js +3 -2
  120. package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js.map +1 -1
  121. package/dist/lib/plugins/openapi/playground/QueryParams.js +16 -40
  122. package/dist/lib/plugins/openapi/playground/QueryParams.js.map +1 -1
  123. package/dist/lib/plugins/openapi/playground/request-panel/MultipartField.d.ts +8 -0
  124. package/dist/lib/plugins/openapi/playground/request-panel/MultipartField.js +19 -0
  125. package/dist/lib/plugins/openapi/playground/request-panel/MultipartField.js.map +1 -0
  126. package/dist/lib/plugins/openapi/playground/request-panel/UrlQueryParams.js +1 -1
  127. package/dist/lib/plugins/openapi/playground/request-panel/UrlQueryParams.js.map +1 -1
  128. package/dist/lib/plugins/openapi/playground/request-panel/fieldManager/useKeyValueFieldManager.test.d.ts +1 -0
  129. package/dist/lib/plugins/openapi/playground/request-panel/fieldManager/useKeyValueFieldManager.test.js +540 -0
  130. package/dist/lib/plugins/openapi/playground/request-panel/fieldManager/useKeyValueFieldManager.test.js.map +1 -0
  131. package/dist/lib/plugins/openapi/playground/request-panel/useKeyValueFieldManager.d.ts +40 -0
  132. package/dist/lib/plugins/openapi/playground/request-panel/useKeyValueFieldManager.js +205 -0
  133. package/dist/lib/plugins/openapi/playground/request-panel/useKeyValueFieldManager.js.map +1 -0
  134. package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js +2 -2
  135. package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js.map +1 -1
  136. package/dist/lib/plugins/openapi/schema/SchemaExampleAndDefault.js +1 -1
  137. package/dist/lib/plugins/openapi/schema/SchemaExampleAndDefault.js.map +1 -1
  138. package/dist/lib/plugins/openapi/schema/SchemaPropertyItem.js +17 -8
  139. package/dist/lib/plugins/openapi/schema/SchemaPropertyItem.js.map +1 -1
  140. package/dist/lib/plugins/openapi/schema/SchemaView.d.ts +1 -1
  141. package/dist/lib/plugins/openapi/schema/SchemaView.js +20 -13
  142. package/dist/lib/plugins/openapi/schema/SchemaView.js.map +1 -1
  143. package/dist/lib/plugins/openapi/schema/UnionView.js +2 -5
  144. package/dist/lib/plugins/openapi/schema/UnionView.js.map +1 -1
  145. package/dist/lib/plugins/openapi/schema/union-helpers.js +0 -1
  146. package/dist/lib/plugins/openapi/schema/union-helpers.js.map +1 -1
  147. package/dist/lib/plugins/openapi/util/generateSchemaExample.js +5 -14
  148. package/dist/lib/plugins/openapi/util/generateSchemaExample.js.map +1 -1
  149. package/dist/lib/ui/Badge.d.ts +3 -3
  150. package/dist/lib/ui/Badge.js +9 -7
  151. package/dist/lib/ui/Badge.js.map +1 -1
  152. package/dist/lib/ui/Button.d.ts +1 -1
  153. package/dist/lib/ui/Button.js +1 -0
  154. package/dist/lib/ui/Button.js.map +1 -1
  155. package/dist/lib/ui/Checkbox.d.ts +2 -2
  156. package/dist/lib/ui/Checkbox.js +4 -4
  157. package/dist/lib/ui/Checkbox.js.map +1 -1
  158. package/dist/lib/ui/CodeBlock.d.ts +0 -1
  159. package/dist/lib/ui/CodeBlock.js +1 -1
  160. package/dist/lib/ui/CodeBlock.js.map +1 -1
  161. package/dist/lib/ui/Collapsible.d.ts +4 -4
  162. package/dist/lib/ui/Collapsible.js +11 -4
  163. package/dist/lib/ui/Collapsible.js.map +1 -1
  164. package/dist/lib/ui/Command.d.ts +3 -3
  165. package/dist/lib/ui/EmbeddedCodeBlock.d.ts +0 -1
  166. package/dist/lib/ui/EmbeddedCodeBlock.js +3 -2
  167. package/dist/lib/ui/EmbeddedCodeBlock.js.map +1 -1
  168. package/dist/lib/ui/Frame.d.ts +8 -0
  169. package/dist/lib/ui/Frame.js +22 -0
  170. package/dist/lib/ui/Frame.js.map +1 -0
  171. package/dist/lib/ui/Item.d.ts +23 -0
  172. package/dist/lib/ui/Item.js +67 -0
  173. package/dist/lib/ui/Item.js.map +1 -0
  174. package/dist/lib/ui/NativeSelect.d.ts +5 -0
  175. package/dist/lib/ui/NativeSelect.js +14 -0
  176. package/dist/lib/ui/NativeSelect.js.map +1 -0
  177. package/dist/lib/ui/Select.d.ts +13 -11
  178. package/dist/lib/ui/Select.js +34 -23
  179. package/dist/lib/ui/Select.js.map +1 -1
  180. package/dist/lib/ui/Separator.d.ts +4 -0
  181. package/dist/lib/ui/Separator.js +8 -0
  182. package/dist/lib/ui/Separator.js.map +1 -0
  183. package/dist/lib/ui/Tooltip.d.ts +7 -7
  184. package/dist/lib/ui/Tooltip.js +16 -10
  185. package/dist/lib/ui/Tooltip.js.map +1 -1
  186. package/dist/lib/util/createVariantComponent.d.ts +5 -2
  187. package/dist/lib/util/createVariantComponent.js +5 -2
  188. package/dist/lib/util/createVariantComponent.js.map +1 -1
  189. package/dist/lib/util/flattenAllOf.d.ts +4 -0
  190. package/dist/lib/util/flattenAllOf.js +65 -0
  191. package/dist/lib/util/flattenAllOf.js.map +1 -0
  192. package/dist/lib/util/flattenAllOf.test.d.ts +1 -0
  193. package/dist/lib/util/flattenAllOf.test.js +532 -0
  194. package/dist/lib/util/flattenAllOf.test.js.map +1 -0
  195. package/dist/lib/util/readFrontmatter.d.ts +6 -0
  196. package/dist/lib/util/readFrontmatter.js +12 -0
  197. package/dist/lib/util/readFrontmatter.js.map +1 -0
  198. package/dist/vite/api/SchemaManager.js +6 -18
  199. package/dist/vite/api/SchemaManager.js.map +1 -1
  200. package/dist/vite/mdx/remark-last-modified.js +57 -3
  201. package/dist/vite/mdx/remark-last-modified.js.map +1 -1
  202. package/dist/vite/plugin-api.js +2 -2
  203. package/dist/vite/plugin-api.js.map +1 -1
  204. package/dist/vite/plugin-frontmatter.js +3 -5
  205. package/dist/vite/plugin-frontmatter.js.map +1 -1
  206. package/dist/vite/plugin-markdown-export.js +3 -4
  207. package/dist/vite/plugin-markdown-export.js.map +1 -1
  208. package/dist/vite/plugin-theme.js +10 -1
  209. package/dist/vite/plugin-theme.js.map +1 -1
  210. package/lib/{Button-DmS4u8Lj.js → Button-B3ucvvQw.js} +7 -6
  211. package/lib/Button-B3ucvvQw.js.map +1 -0
  212. package/lib/{ErrorAlert-DE3Sf66a.js → ErrorAlert-BOVgwTRP.js} +2832 -2857
  213. package/lib/ErrorAlert-BOVgwTRP.js.map +1 -0
  214. package/lib/{MdxPage-DZfeC0QY.js → MdxPage-CBYFyqUs.js} +6 -6
  215. package/lib/{MdxPage-DZfeC0QY.js.map → MdxPage-CBYFyqUs.js.map} +1 -1
  216. package/lib/{OAuthErrorPage-BycMozgn.js → OAuthErrorPage-DlTYnbLO.js} +4 -4
  217. package/lib/{OAuthErrorPage-BycMozgn.js.map → OAuthErrorPage-DlTYnbLO.js.map} +1 -1
  218. package/lib/{OasProvider-1XEOsIiW.js → OasProvider-DIPAQ79S.js} +2 -2
  219. package/lib/{OasProvider-1XEOsIiW.js.map → OasProvider-DIPAQ79S.js.map} +1 -1
  220. package/lib/OperationList-BOTFIfda.js +5688 -0
  221. package/lib/OperationList-BOTFIfda.js.map +1 -0
  222. package/lib/{Pagination-CJszmeSA.js → Pagination-BOZ9Pxcw.js} +2 -2
  223. package/lib/{Pagination-CJszmeSA.js.map → Pagination-BOZ9Pxcw.js.map} +1 -1
  224. package/lib/RouteGuard-Brz95MSt.js +77 -0
  225. package/lib/RouteGuard-Brz95MSt.js.map +1 -0
  226. package/lib/RouterError-DQS_bMwf.js +42 -0
  227. package/lib/RouterError-DQS_bMwf.js.map +1 -0
  228. package/lib/{SchemaList-qOHkDzSz.js → SchemaList-Bu95q_q2.js} +7 -7
  229. package/lib/{SchemaList-qOHkDzSz.js.map → SchemaList-Bu95q_q2.js.map} +1 -1
  230. package/lib/SchemaView-CaxK_HV4.js +586 -0
  231. package/lib/SchemaView-CaxK_HV4.js.map +1 -0
  232. package/lib/Select-DFRCS31-.js +399 -0
  233. package/lib/Select-DFRCS31-.js.map +1 -0
  234. package/lib/{SignUp-6SGx9Yyq.js → SignUp-CfB278ao.js} +2 -2
  235. package/lib/{SignUp-6SGx9Yyq.js.map → SignUp-CfB278ao.js.map} +1 -1
  236. package/lib/{SyntaxHighlight-zvlnSnHB.js → SyntaxHighlight-C19vH0V_.js} +525 -509
  237. package/lib/SyntaxHighlight-C19vH0V_.js.map +1 -0
  238. package/lib/{Toc-Da9yp7lo.js → Toc-DQIqdghO.js} +2 -2
  239. package/lib/{Toc-Da9yp7lo.js.map → Toc-DQIqdghO.js.map} +1 -1
  240. package/lib/{circular-CSSuz-LS.js → circular-B-_VyILZ.js} +6360 -5953
  241. package/lib/circular-B-_VyILZ.js.map +1 -0
  242. package/lib/{createServer-CLbcVLbK.js → createServer-C5lXk4ba.js} +4732 -4273
  243. package/lib/createServer-C5lXk4ba.js.map +1 -0
  244. package/lib/{errors-CuGgh3hf.js → errors-DqoyOKev.js} +2 -2
  245. package/lib/{errors-CuGgh3hf.js.map → errors-DqoyOKev.js.map} +1 -1
  246. package/lib/index-B7yD7ZUk.js +3680 -0
  247. package/lib/index-B7yD7ZUk.js.map +1 -0
  248. package/lib/{index-rYHsvtTo.js → index-BG79m3lF.js} +2 -2
  249. package/lib/{index-rYHsvtTo.js.map → index-BG79m3lF.js.map} +1 -1
  250. package/lib/{index-B1rmok4X.js → index-DHDtI9H5.js} +3 -3
  251. package/lib/{index-B1rmok4X.js.map → index-DHDtI9H5.js.map} +1 -1
  252. package/lib/ui/ActionButton.js +1 -1
  253. package/lib/ui/Badge.js +27 -13
  254. package/lib/ui/Badge.js.map +1 -1
  255. package/lib/ui/Button.js +6 -5
  256. package/lib/ui/Button.js.map +1 -1
  257. package/lib/ui/Checkbox.js +29 -26
  258. package/lib/ui/Checkbox.js.map +1 -1
  259. package/lib/ui/CodeBlock.js +7 -7
  260. package/lib/ui/CodeBlock.js.map +1 -1
  261. package/lib/ui/Collapsible.js +32 -5
  262. package/lib/ui/Collapsible.js.map +1 -1
  263. package/lib/ui/EmbeddedCodeBlock.js +26 -25
  264. package/lib/ui/EmbeddedCodeBlock.js.map +1 -1
  265. package/lib/ui/Frame.js +81 -0
  266. package/lib/ui/Frame.js.map +1 -0
  267. package/lib/ui/Item.js +188 -0
  268. package/lib/ui/Item.js.map +1 -0
  269. package/lib/ui/NativeSelect.js +57 -0
  270. package/lib/ui/NativeSelect.js.map +1 -0
  271. package/lib/ui/Select.js +166 -116
  272. package/lib/ui/Select.js.map +1 -1
  273. package/lib/ui/Separator.js +27 -0
  274. package/lib/ui/Separator.js.map +1 -0
  275. package/lib/ui/SyntaxHighlight.js +1 -1
  276. package/lib/ui/Tabs.js +10 -10
  277. package/lib/ui/Tooltip.js +55 -28
  278. package/lib/ui/Tooltip.js.map +1 -1
  279. package/lib/zudoku.__internal.js +345 -345
  280. package/lib/zudoku.__internal.js.map +1 -1
  281. package/lib/zudoku.auth-auth0.js +7 -7
  282. package/lib/zudoku.auth-auth0.js.map +1 -1
  283. package/lib/zudoku.auth-azureb2c.js +3 -3
  284. package/lib/zudoku.auth-clerk.js +1 -1
  285. package/lib/zudoku.auth-openid.js +3 -3
  286. package/lib/zudoku.auth-supabase.js +30 -33
  287. package/lib/zudoku.auth-supabase.js.map +1 -1
  288. package/lib/zudoku.components.js +2 -2
  289. package/lib/zudoku.plugin-api-catalog.js +3 -3
  290. package/lib/zudoku.plugin-api-keys.js +5 -5
  291. package/lib/zudoku.plugin-api-keys.js.map +1 -1
  292. package/lib/zudoku.plugin-markdown.js +1 -1
  293. package/lib/zudoku.plugin-openapi.js +1 -1
  294. package/lib/zudoku.plugin-search-pagefind.js +2 -2
  295. package/package.json +18 -13
  296. package/src/app/main.css +1 -1
  297. package/src/app/main.tsx +5 -1
  298. package/src/lib/auth/issuer.ts +3 -0
  299. package/src/lib/authentication/authentication.ts +1 -1
  300. package/src/lib/authentication/providers/auth0.tsx +6 -1
  301. package/src/lib/authentication/providers/firebase.tsx +284 -0
  302. package/src/lib/authentication/providers/supabase.tsx +2 -7
  303. package/src/lib/authentication/ui/ZudokuAuthUi.tsx +335 -0
  304. package/src/lib/authentication/ui/icons/Apple.tsx +10 -0
  305. package/src/lib/authentication/ui/icons/Facebook.tsx +15 -0
  306. package/src/lib/authentication/ui/icons/Github.tsx +16 -0
  307. package/src/lib/authentication/ui/icons/Google.tsx +16 -0
  308. package/src/lib/authentication/ui/icons/Microsoft.tsx +12 -0
  309. package/src/lib/authentication/ui/icons/X.tsx +10 -0
  310. package/src/lib/components/Autocomplete.tsx +11 -2
  311. package/src/lib/components/Layout.tsx +3 -2
  312. package/src/lib/components/navigation/NavigationItem.tsx +7 -20
  313. package/src/lib/core/RouteGuard.tsx +8 -8
  314. package/src/lib/errors/ErrorAlert.tsx +1 -1
  315. package/src/lib/errors/RouterError.tsx +7 -2
  316. package/src/lib/oas/parser/index.ts +8 -3
  317. package/src/lib/plugins/api-keys/ProtectedRoute.tsx +11 -7
  318. package/src/lib/plugins/openapi/CollapsibleCode.tsx +5 -3
  319. package/src/lib/plugins/openapi/GeneratedExampleSidecarBox.tsx +52 -0
  320. package/src/lib/plugins/openapi/OperationList.tsx +7 -0
  321. package/src/lib/plugins/openapi/OperationListItem.tsx +10 -7
  322. package/src/lib/plugins/openapi/ParameterList.tsx +37 -23
  323. package/src/lib/plugins/openapi/ParameterListItem.tsx +105 -54
  324. package/src/lib/plugins/openapi/RequestBodySidecarBox.tsx +48 -7
  325. package/src/lib/plugins/openapi/ResponsesSidecarBox.tsx +81 -33
  326. package/src/lib/plugins/openapi/Sidecar.tsx +129 -65
  327. package/src/lib/plugins/openapi/SidecarBox.tsx +26 -4
  328. package/src/lib/plugins/openapi/SidecarExamples.tsx +91 -79
  329. package/src/lib/plugins/openapi/components/ConstValue.tsx +1 -1
  330. package/src/lib/plugins/openapi/components/EnumValues.tsx +2 -2
  331. package/src/lib/plugins/openapi/components/NonHighlightedCode.tsx +22 -0
  332. package/src/lib/plugins/openapi/components/ResponseContent.tsx +63 -53
  333. package/src/lib/plugins/openapi/interfaces.ts +12 -0
  334. package/src/lib/plugins/openapi/playground/BodyPanel.tsx +246 -30
  335. package/src/lib/plugins/openapi/playground/CollapsibleHeader.tsx +10 -6
  336. package/src/lib/plugins/openapi/playground/ExamplesDropdown.tsx +3 -2
  337. package/src/lib/plugins/openapi/playground/Headers.tsx +103 -219
  338. package/src/lib/plugins/openapi/playground/ParamsGrid.tsx +33 -1
  339. package/src/lib/plugins/openapi/playground/PathParams.tsx +26 -34
  340. package/src/lib/plugins/openapi/playground/Playground.tsx +73 -35
  341. package/src/lib/plugins/openapi/playground/PlaygroundDialog.tsx +9 -30
  342. package/src/lib/plugins/openapi/playground/QueryParams.tsx +82 -136
  343. package/src/lib/plugins/openapi/playground/request-panel/MultipartField.tsx +91 -0
  344. package/src/lib/plugins/openapi/playground/request-panel/UrlQueryParams.tsx +1 -1
  345. package/src/lib/plugins/openapi/playground/request-panel/fieldManager/useKeyValueFieldManager.test.tsx +872 -0
  346. package/src/lib/plugins/openapi/playground/request-panel/useKeyValueFieldManager.ts +349 -0
  347. package/src/lib/plugins/openapi/playground/result-panel/ResponseTab.tsx +2 -6
  348. package/src/lib/plugins/openapi/schema/SchemaExampleAndDefault.tsx +1 -1
  349. package/src/lib/plugins/openapi/schema/SchemaPropertyItem.tsx +89 -55
  350. package/src/lib/plugins/openapi/schema/SchemaView.tsx +82 -53
  351. package/src/lib/plugins/openapi/schema/UnionView.tsx +6 -17
  352. package/src/lib/plugins/openapi/schema/union-helpers.ts +0 -1
  353. package/src/lib/plugins/openapi/util/generateSchemaExample.ts +5 -15
  354. package/src/lib/ui/Badge.tsx +21 -12
  355. package/src/lib/ui/Button.tsx +1 -0
  356. package/src/lib/ui/Checkbox.tsx +23 -24
  357. package/src/lib/ui/CodeBlock.tsx +3 -4
  358. package/src/lib/ui/Collapsible.tsx +26 -4
  359. package/src/lib/ui/EmbeddedCodeBlock.tsx +21 -19
  360. package/src/lib/ui/Frame.tsx +81 -0
  361. package/src/lib/ui/Item.tsx +192 -0
  362. package/src/lib/ui/NativeSelect.tsx +47 -0
  363. package/src/lib/ui/Select.tsx +153 -126
  364. package/src/lib/ui/Separator.tsx +25 -0
  365. package/src/lib/ui/Tooltip.tsx +54 -32
  366. package/src/lib/util/createVariantComponent.tsx +31 -5
  367. package/src/lib/util/flattenAllOf.test.ts +637 -0
  368. package/src/lib/util/flattenAllOf.ts +101 -0
  369. package/src/lib/util/readFrontmatter.ts +13 -0
  370. package/dist/lib/plugins/openapi/playground/InlineInput.d.ts +0 -4
  371. package/dist/lib/plugins/openapi/playground/InlineInput.js +0 -3
  372. package/dist/lib/plugins/openapi/playground/InlineInput.js.map +0 -1
  373. package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupConnector.d.ts +0 -5
  374. package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupConnector.js +0 -7
  375. package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupConnector.js.map +0 -1
  376. package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupItem.d.ts +0 -4
  377. package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupItem.js +0 -10
  378. package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupItem.js.map +0 -1
  379. package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupView.d.ts +0 -5
  380. package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupView.js +0 -16
  381. package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupView.js.map +0 -1
  382. package/lib/Button-DmS4u8Lj.js.map +0 -1
  383. package/lib/ErrorAlert-DE3Sf66a.js.map +0 -1
  384. package/lib/OperationList-DCJw6wXL.js +0 -5450
  385. package/lib/OperationList-DCJw6wXL.js.map +0 -1
  386. package/lib/RouteGuard-DhU3LRr1.js +0 -81
  387. package/lib/RouteGuard-DhU3LRr1.js.map +0 -1
  388. package/lib/RouterError-VDLnrFqF.js +0 -41
  389. package/lib/RouterError-VDLnrFqF.js.map +0 -1
  390. package/lib/SchemaView-D3hm65cc.js +0 -458
  391. package/lib/SchemaView-D3hm65cc.js.map +0 -1
  392. package/lib/Select-C1DeCqKv.js +0 -372
  393. package/lib/Select-C1DeCqKv.js.map +0 -1
  394. package/lib/SyntaxHighlight-zvlnSnHB.js.map +0 -1
  395. package/lib/circular-CSSuz-LS.js.map +0 -1
  396. package/lib/createServer-CLbcVLbK.js.map +0 -1
  397. package/lib/index-RNAxx6IF.js +0 -3364
  398. package/lib/index-RNAxx6IF.js.map +0 -1
  399. package/src/lib/plugins/openapi/playground/InlineInput.tsx +0 -6
  400. package/src/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupConnector.tsx +0 -36
  401. package/src/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupItem.tsx +0 -25
  402. package/src/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupView.tsx +0 -42
package/lib/ui/Badge.js CHANGED
@@ -1,16 +1,17 @@
1
1
  import { j as o } from "../jsx-runtime-BzflLqGi.js";
2
- import { c as n } from "../index-DI5SPFK9.js";
3
- import { c as a } from "../cn-dYga0KKN.js";
4
- const s = n(
5
- "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-medium transition-colors focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2",
2
+ import { Slot as n } from "@radix-ui/react-slot";
3
+ import { c as s } from "../index-DI5SPFK9.js";
4
+ import { c as d } from "../cn-dYga0KKN.js";
5
+ const c = s(
6
+ "inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
6
7
  {
7
8
  variants: {
8
9
  variant: {
9
- default: "border-transparent bg-primary text-primary-foreground hover:bg-primary/80",
10
- secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
11
- muted: "bg-muted text-muted-foreground ",
12
- destructive: "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",
13
- outline: "text-foreground"
10
+ default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
11
+ secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
12
+ destructive: "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
13
+ outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",
14
+ muted: "bg-muted text-muted-foreground "
14
15
  }
15
16
  },
16
17
  defaultVariants: {
@@ -18,11 +19,24 @@ const s = n(
18
19
  }
19
20
  }
20
21
  );
21
- function c({ className: r, variant: e, ...t }) {
22
- return /* @__PURE__ */ o.jsx("div", { className: a(s({ variant: e }), r), ...t });
22
+ function b({
23
+ className: r,
24
+ variant: e,
25
+ asChild: t = !1,
26
+ ...i
27
+ }) {
28
+ const a = t ? n : "span";
29
+ return /* @__PURE__ */ o.jsx(
30
+ a,
31
+ {
32
+ "data-slot": "badge",
33
+ className: d(c({ variant: e }), r),
34
+ ...i
35
+ }
36
+ );
23
37
  }
24
38
  export {
25
- c as Badge,
26
- s as badgeVariants
39
+ b as Badge,
40
+ c as badgeVariants
27
41
  };
28
42
  //# sourceMappingURL=Badge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Badge.js","sources":["../../src/lib/ui/Badge.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../util/cn.js\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-medium transition-colors focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n muted: \"bg-muted text-muted-foreground \",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n outline: \"text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n );\n}\n\nexport { Badge, badgeVariants };\n"],"names":["badgeVariants","cva","Badge","className","variant","props","jsx","cn"],"mappings":";;;AAKA,MAAMA,IAAgBC;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,WACE;AAAA,QACF,OAAO;AAAA,QACP,aACE;AAAA,QACF,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ;AAMA,SAASC,EAAM,EAAE,WAAAC,GAAW,SAAAC,GAAS,GAAGC,KAAqB;AAC3D,SACEC,gBAAAA,MAAC,OAAA,EAAI,WAAWC,EAAGP,EAAc,EAAE,SAAAI,EAAA,CAAS,GAAGD,CAAS,GAAI,GAAGE,EAAA,CAAO;AAE1E;"}
1
+ {"version":3,"file":"Badge.js","sources":["../../src/lib/ui/Badge.tsx"],"sourcesContent":["import { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\nimport { cn } from \"../util/cn.js\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n destructive:\n \"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n muted: \"bg-muted text-muted-foreground \",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction Badge({\n className,\n variant,\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"span\";\n\n return (\n <Comp\n data-slot=\"badge\"\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nexport { Badge, badgeVariants };\n"],"names":["badgeVariants","cva","Badge","className","variant","asChild","props","Comp","Slot","jsx","cn"],"mappings":";;;;AAKA,MAAMA,IAAgBC;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,WACE;AAAA,QACF,aACE;AAAA,QACF,SACE;AAAA,QACF,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ;AAEA,SAASC,EAAM;AAAA,EACb,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,GAAGC;AACL,GAC8D;AAC5D,QAAMC,IAAOF,IAAUG,IAAO;AAE9B,SACEC,gBAAAA,EAAAA;AAAAA,IAACF;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWG,EAAGV,EAAc,EAAE,SAAAI,EAAA,CAAS,GAAGD,CAAS;AAAA,MAClD,GAAGG;AAAA,IAAA;AAAA,EAAA;AAGV;"}
package/lib/ui/Button.js CHANGED
@@ -1,4 +1,4 @@
1
- import { j as i } from "../jsx-runtime-BzflLqGi.js";
1
+ import { j as d } from "../jsx-runtime-BzflLqGi.js";
2
2
  import { Slot as a } from "@radix-ui/react-slot";
3
3
  import { c as u } from "../index-DI5SPFK9.js";
4
4
  import * as c from "react";
@@ -23,7 +23,8 @@ const f = u(
23
23
  lg: "h-10 rounded-md px-8",
24
24
  xl: "h-14 rounded-lg px-10 text-lg",
25
25
  icon: "size-9",
26
- "icon-xs": "size-7"
26
+ "icon-xs": "size-7",
27
+ "icon-xxs": "size-5"
27
28
  }
28
29
  },
29
30
  defaultVariants: {
@@ -33,9 +34,9 @@ const f = u(
33
34
  }
34
35
  ), g = c.forwardRef(
35
36
  ({ className: e, variant: t, size: r, asChild: o = !1, ...n }, s) => {
36
- const d = o ? a : "button";
37
- return /* @__PURE__ */ i.jsx(
38
- d,
37
+ const i = o ? a : "button";
38
+ return /* @__PURE__ */ d.jsx(
39
+ i,
39
40
  {
40
41
  className: x(f({ variant: t, size: r, className: e })),
41
42
  ref: s,
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","sources":["../../src/lib/ui/Button.tsx"],"sourcesContent":["import { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../util/cn.js\";\n\nexport const buttonVariants = cva(\n \"not-prose inline-flex shrink-0 items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow-sm hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground shadow-xs hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n \"ghost-destructive\":\n \"text-destructive hover:bg-destructive hover:text-destructive-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n expand:\n \"flex gap-1.5 border bg-transparent rounded-xl text-muted-foreground hover:text-foreground\",\n },\n size: {\n default: \"h-9 px-4 py-2\",\n sm: \"h-8 rounded-md px-3 text-xs\",\n lg: \"h-10 rounded-md px-8\",\n xl: \"h-14 rounded-lg px-10 text-lg\",\n icon: \"size-9\",\n \"icon-xs\": \"size-7\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n );\n },\n);\nButton.displayName = \"Button\";\n"],"names":["buttonVariants","cva","Button","React","className","variant","size","asChild","props","ref","Comp","Slot","jsx","cn"],"mappings":";;;;;AAKO,MAAMA,IAAiBC;AAAA,EAC5B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,aACE;AAAA,QACF,SACE;AAAA,QACF,WACE;AAAA,QACF,OAAO;AAAA,QACP,qBACE;AAAA,QACF,MAAM;AAAA,QACN,QACE;AAAA,MAAA;AAAA,MAEJ,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,WAAW;AAAA,MAAA;AAAA,IACb;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ,GAQaC,IAASC,EAAM;AAAA,EAC1B,CAAC,EAAE,WAAAC,GAAW,SAAAC,GAAS,MAAAC,GAAM,SAAAC,IAAU,IAAO,GAAGC,EAAA,GAASC,MAAQ;AAChE,UAAMC,IAAOH,IAAUI,IAAO;AAC9B,WACEC,gBAAAA,EAAAA;AAAAA,MAACF;AAAA,MAAA;AAAA,QACC,WAAWG,EAAGb,EAAe,EAAE,SAAAK,GAAS,MAAAC,GAAM,WAAAF,EAAA,CAAW,CAAC;AAAA,QAC1D,KAAAK;AAAA,QACC,GAAGD;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AACAN,EAAO,cAAc;"}
1
+ {"version":3,"file":"Button.js","sources":["../../src/lib/ui/Button.tsx"],"sourcesContent":["import { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../util/cn.js\";\n\nexport const buttonVariants = cva(\n \"not-prose inline-flex shrink-0 items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow-sm hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground shadow-xs hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n \"ghost-destructive\":\n \"text-destructive hover:bg-destructive hover:text-destructive-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n expand:\n \"flex gap-1.5 border bg-transparent rounded-xl text-muted-foreground hover:text-foreground\",\n },\n size: {\n default: \"h-9 px-4 py-2\",\n sm: \"h-8 rounded-md px-3 text-xs\",\n lg: \"h-10 rounded-md px-8\",\n xl: \"h-14 rounded-lg px-10 text-lg\",\n icon: \"size-9\",\n \"icon-xs\": \"size-7\",\n \"icon-xxs\": \"size-5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n );\n },\n);\nButton.displayName = \"Button\";\n"],"names":["buttonVariants","cva","Button","React","className","variant","size","asChild","props","ref","Comp","Slot","jsx","cn"],"mappings":";;;;;AAKO,MAAMA,IAAiBC;AAAA,EAC5B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,aACE;AAAA,QACF,SACE;AAAA,QACF,WACE;AAAA,QACF,OAAO;AAAA,QACP,qBACE;AAAA,QACF,MAAM;AAAA,QACN,QACE;AAAA,MAAA;AAAA,MAEJ,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,WAAW;AAAA,QACX,YAAY;AAAA,MAAA;AAAA,IACd;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ,GAQaC,IAASC,EAAM;AAAA,EAC1B,CAAC,EAAE,WAAAC,GAAW,SAAAC,GAAS,MAAAC,GAAM,SAAAC,IAAU,IAAO,GAAGC,EAAA,GAASC,MAAQ;AAChE,UAAMC,IAAOH,IAAUI,IAAO;AAC9B,WACEC,gBAAAA,EAAAA;AAAAA,MAACF;AAAA,MAAA;AAAA,QACC,WAAWG,EAAGb,EAAe,EAAE,SAAAK,GAAS,MAAAC,GAAM,WAAAF,EAAA,CAAW,CAAC;AAAA,QAC1D,KAAAK;AAAA,QACC,GAAGD;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AACAN,EAAO,cAAc;"}
@@ -1,29 +1,32 @@
1
- import { j as e } from "../jsx-runtime-BzflLqGi.js";
2
- import * as r from "@radix-ui/react-checkbox";
3
- import { Check as s } from "lucide-react";
4
- import * as c from "react";
5
- import { c as i } from "../cn-dYga0KKN.js";
6
- const d = c.forwardRef(({ className: t, ...a }, o) => /* @__PURE__ */ e.jsx(
7
- r.Root,
8
- {
9
- ref: o,
10
- className: i(
11
- "peer h-4 w-4 shrink-0 rounded-[min(6px,var(--radius)-4px)] ring-offset-background focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:text-primary",
12
- "border border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary",
13
- t
14
- ),
15
- ...a,
16
- children: /* @__PURE__ */ e.jsx(
17
- r.Indicator,
18
- {
19
- className: i("flex items-center justify-center text-current"),
20
- children: /* @__PURE__ */ e.jsx(s, { className: "h-4 w-4" })
21
- }
22
- )
23
- }
24
- ));
25
- d.displayName = r.Root.displayName;
1
+ import { j as r } from "../jsx-runtime-BzflLqGi.js";
2
+ import * as e from "@radix-ui/react-checkbox";
3
+ import { CheckIcon as t } from "lucide-react";
4
+ import { c as o } from "../cn-dYga0KKN.js";
5
+ function n({
6
+ className: i,
7
+ ...a
8
+ }) {
9
+ return /* @__PURE__ */ r.jsx(
10
+ e.Root,
11
+ {
12
+ "data-slot": "checkbox",
13
+ className: o(
14
+ "peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",
15
+ i
16
+ ),
17
+ ...a,
18
+ children: /* @__PURE__ */ r.jsx(
19
+ e.Indicator,
20
+ {
21
+ "data-slot": "checkbox-indicator",
22
+ className: "grid place-content-center text-current transition-none",
23
+ children: /* @__PURE__ */ r.jsx(t, { className: "size-3.5" })
24
+ }
25
+ )
26
+ }
27
+ );
28
+ }
26
29
  export {
27
- d as Checkbox
30
+ n as Checkbox
28
31
  };
29
32
  //# sourceMappingURL=Checkbox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.js","sources":["../../src/lib/ui/Checkbox.tsx"],"sourcesContent":["import * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Check } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../util/cn.js\";\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded-[min(6px,var(--radius)-4px)] ring-offset-background focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:text-primary\",\n \"border border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary\",\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <Check className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\n"],"names":["Checkbox","React","className","props","ref","jsx","CheckboxPrimitive","cn","Check"],"mappings":";;;;;AAMA,MAAMA,IAAWC,EAAM,WAGrB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1BC,gBAAAA,EAAAA;AAAAA,EAACC,EAAkB;AAAA,EAAlB;AAAA,IACC,KAAAF;AAAA,IACA,WAAWG;AAAA,MACT;AAAA,MACA;AAAA,MACAL;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,IAEJ,UAAAE,gBAAAA,EAAAA;AAAAA,MAACC,EAAkB;AAAA,MAAlB;AAAA,QACC,WAAWC,EAAG,+CAA+C;AAAA,QAE7D,UAAAF,gBAAAA,EAAAA,IAACG,GAAA,EAAM,WAAU,UAAA,CAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EAC7B;AACF,CACD;AACDR,EAAS,cAAcM,EAAkB,KAAK;"}
1
+ {"version":3,"file":"Checkbox.js","sources":["../../src/lib/ui/Checkbox.tsx"],"sourcesContent":["import * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { CheckIcon } from \"lucide-react\";\nimport type * as React from \"react\";\nimport { cn } from \"../util/cn.js\";\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"grid place-content-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\nexport { Checkbox };\n"],"names":["Checkbox","className","props","jsx","CheckboxPrimitive","cn","CheckIcon"],"mappings":";;;;AAKA,SAASA,EAAS;AAAA,EAChB,WAAAC;AAAA,EACA,GAAGC;AACL,GAAwD;AACtD,SACEC,gBAAAA,EAAAA;AAAAA,IAACC,EAAkB;AAAA,IAAlB;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAJ;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,MAEJ,UAAAC,gBAAAA,EAAAA;AAAAA,QAACC,EAAkB;AAAA,QAAlB;AAAA,UACC,aAAU;AAAA,UACV,WAAU;AAAA,UAEV,UAAAD,gBAAAA,EAAAA,IAACG,GAAA,EAAU,WAAU,WAAA,CAAW;AAAA,QAAA;AAAA,MAAA;AAAA,IAClC;AAAA,EAAA;AAGN;"}
@@ -166,19 +166,19 @@ const $ = {
166
166
  showCopy: n = "hover",
167
167
  showLanguageIndicator: j,
168
168
  showLineNumbers: a,
169
- ...m
169
+ ...l
170
170
  }) => {
171
- const [p, l] = u(), c = x(null);
171
+ const [p, m] = u(), c = x(null);
172
172
  return i ? /* @__PURE__ */ o.jsxs(
173
173
  "div",
174
174
  {
175
175
  className: s(
176
- "border code-block-wrapper relative group rounded-md overflow-hidden",
176
+ "border code-block-wrapper relative group rounded-xl overflow-hidden",
177
177
  a && "line-numbers",
178
- m.className
178
+ l.className
179
179
  ),
180
180
  children: [
181
- /* @__PURE__ */ o.jsxs("div", { className: "border-b flex items-center h-10 font-sans bg-black/2", children: [
181
+ /* @__PURE__ */ o.jsxs("div", { className: "border-b flex items-center py-1 font-sans bg-black/2", children: [
182
182
  /* @__PURE__ */ o.jsxs("div", { className: "flex items-center gap-1.5 flex-1 text-sm w-full px-3", children: [
183
183
  /* @__PURE__ */ o.jsx(b, { language: e }),
184
184
  r
@@ -191,12 +191,12 @@ const $ = {
191
191
  "aria-label": "Copy code",
192
192
  title: "Copy code",
193
193
  className: s(
194
- "transition px-2 py-2 mx-1 rounded-sm",
194
+ "transition p-1.5 mx-1 rounded-lg",
195
195
  !p && "hover:bg-accent hover:brightness-95"
196
196
  ),
197
197
  disabled: p,
198
198
  onClick: () => {
199
- c.current?.textContent && l(c.current.textContent);
199
+ c.current?.textContent && m(c.current.textContent);
200
200
  },
201
201
  children: p ? /* @__PURE__ */ o.jsx(d, { className: "text-emerald-600", size: 14 }) : /* @__PURE__ */ o.jsx(h, { size: 14 })
202
202
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CodeBlock.js","sources":["../../src/lib/components/LanguageIcon.tsx","../../src/lib/ui/CodeBlock.tsx"],"sourcesContent":["import {\n type ComponentType,\n type LazyExoticComponent,\n lazy,\n Suspense,\n type SVGProps,\n} from \"react\";\n\ntype Language = {\n pattern: RegExp;\n icon: LazyExoticComponent<ComponentType<SVGProps<SVGSVGElement>>>;\n width?: number;\n};\n\nconst Languages: Record<string, Language> = {\n typescript: {\n pattern: /^(ts|typescript)$/,\n icon: lazy(() => import(\"../assets/language-icons/typescript.js\")),\n width: 15,\n },\n javascript: {\n pattern: /^(js|javascript)$/,\n icon: lazy(() => import(\"../assets/language-icons/javascript.js\")),\n },\n react: {\n pattern: /^(react|tsx|jsx)$/,\n icon: lazy(() => import(\"../assets/language-icons/react.js\")),\n width: 22,\n },\n markdown: {\n pattern: /^(md|markdown)$/,\n icon: lazy(() => import(\"../assets/language-icons/markdown.js\")),\n width: 22,\n },\n mdx: {\n pattern: /^mdx$/,\n icon: lazy(() => import(\"../assets/language-icons/mdx.js\")),\n width: 28,\n },\n java: {\n pattern: /^(java)$/,\n icon: lazy(() => import(\"../assets/language-icons/java.js\")),\n width: 22,\n },\n json: {\n pattern: /^jsonc?$/,\n icon: lazy(() => import(\"../assets/language-icons/json.js\")),\n },\n yaml: {\n pattern: /^yaml$/,\n icon: lazy(() => import(\"../assets/language-icons/yaml.js\")),\n },\n toml: {\n pattern: /^toml$/,\n icon: lazy(() => import(\"../assets/language-icons/toml.js\")),\n },\n shell: {\n pattern: /^(shell|bash|sh|zsh|term|terminal|ansi)$/,\n icon: lazy(() => import(\"../assets/language-icons/shell.js\")),\n },\n python: {\n pattern: /^(py|python)$/,\n icon: lazy(() => import(\"../assets/language-icons/python.js\")),\n },\n csharp: {\n pattern: /^(cs|csharp|vb)$/,\n icon: lazy(() => import(\"../assets/language-icons/csharp.js\")),\n width: 20,\n },\n rust: {\n pattern: /^(rs|rust)$/,\n icon: lazy(() => import(\"../assets/language-icons/rust.js\")),\n width: 20,\n },\n ruby: {\n pattern: /^(rb|ruby)$/,\n icon: lazy(() => import(\"../assets/language-icons/ruby.js\")),\n },\n php: {\n pattern: /^php$/,\n icon: lazy(() => import(\"../assets/language-icons/php.js\")),\n width: 24,\n },\n html: {\n pattern: /^html?$/,\n icon: lazy(() => import(\"../assets/language-icons/html.js\")),\n width: 15,\n },\n css: {\n pattern: /^css$/,\n icon: lazy(() => import(\"../assets/language-icons/css.js\")),\n },\n objectivec: {\n pattern: /^(objc|objectivec)$/,\n icon: lazy(() => import(\"../assets/language-icons/objectivec.js\")),\n width: 16,\n },\n swift: {\n pattern: /^swift$/,\n icon: lazy(() => import(\"../assets/language-icons/swift.js\")),\n },\n go: {\n pattern: /^go$/,\n icon: lazy(() => import(\"../assets/language-icons/go.js\")),\n width: 28,\n },\n xml: {\n pattern: /^xml$/,\n icon: lazy(() => import(\"../assets/language-icons/xml.js\")),\n },\n kotlin: {\n pattern: /^(kt|kotlin)$/,\n icon: lazy(() => import(\"../assets/language-icons/kotlin.js\")),\n width: 14,\n },\n graphql: {\n pattern: /^(gql|graphql)$/,\n icon: lazy(() => import(\"../assets/language-icons/graphql.js\")),\n },\n zig: {\n pattern: /^zig$/,\n icon: lazy(() => import(\"../assets/language-icons/zig.js\")),\n width: 28,\n },\n scala: {\n pattern: /^scala$/,\n icon: lazy(() => import(\"../assets/language-icons/scala.js\")),\n width: 18,\n },\n dart: {\n pattern: /^dart$/,\n icon: lazy(() => import(\"../assets/language-icons/dart.js\")),\n width: 20,\n },\n ocaml: {\n pattern: /^ocaml$/,\n icon: lazy(() => import(\"../assets/language-icons/ocaml.js\")),\n width: 20,\n },\n c: {\n pattern: /^c$/,\n icon: lazy(() => import(\"../assets/language-icons/c.js\")),\n width: 20,\n },\n cpp: {\n pattern: /^(cpp|c\\+\\+)$/,\n icon: lazy(() => import(\"../assets/language-icons/cpp.js\")),\n width: 20,\n },\n commonlisp: {\n pattern: /^(clisp|common-lisp|lisp|cl|commonlisp)$/,\n icon: lazy(() => import(\"../assets/language-icons/commonlisp.js\")),\n width: 18,\n },\n elixir: {\n pattern: /^elixir$/,\n icon: lazy(() => import(\"../assets/language-icons/elixir.js\")),\n width: 18,\n },\n powershell: {\n pattern: /^(pshell|powershell|ps1)$/,\n icon: lazy(() => import(\"../assets/language-icons/powershell.js\")),\n width: 18,\n },\n};\n\nexport const LanguageIcon = ({ language }: { language?: string }) => {\n if (!language) return null;\n\n const Lang = Object.values(Languages).find((l) => l.pattern.test(language));\n\n if (!Lang) return null;\n\n const size = Lang.width ?? 18;\n\n return (\n <Suspense fallback={<div style={{ width: size, height: \"1em\" }} />}>\n <Lang.icon className=\"h-auto\" style={{ width: size }} />\n </Suspense>\n );\n};\n","import { CheckIcon, CopyIcon } from \"lucide-react\";\nimport { type ReactNode, useRef } from \"react\";\nimport { LanguageIcon } from \"../components/LanguageIcon.js\";\nimport { cn } from \"../util/cn.js\";\nimport { useCopyToClipboard } from \"../util/useCopyToClipboard.js\";\n\nexport type CodeBlockProps = {\n className?: string;\n noBackground?: boolean;\n wrapLines?: boolean;\n showLanguageIndicator?: boolean;\n language?: string;\n title?: string;\n children?: ReactNode;\n code?: ReactNode;\n showCopy?: \"hover\" | \"always\" | \"never\";\n disabled?: boolean;\n showLineNumbers?: boolean;\n};\n\nexport const CodeBlock = ({\n children,\n title = \"Code\",\n language,\n showCopy = \"hover\",\n showLanguageIndicator,\n showLineNumbers,\n ...props\n}: CodeBlockProps) => {\n const [isCopied, copyToClipboard] = useCopyToClipboard();\n const ref = useRef<HTMLDivElement>(null);\n\n if (!children) return null;\n\n return (\n <div\n className={cn(\n \"border code-block-wrapper relative group rounded-md overflow-hidden\",\n showLineNumbers && \"line-numbers\",\n props.className,\n )}\n >\n <div className=\"border-b flex items-center h-10 font-sans bg-black/2\">\n <div className=\"flex items-center gap-1.5 flex-1 text-sm w-full px-3\">\n <LanguageIcon language={language} />\n {title}\n </div>{\" \"}\n {showCopy !== \"never\" && (\n <button\n type=\"button\"\n aria-label=\"Copy code\"\n title=\"Copy code\"\n className={cn(\n \"transition px-2 py-2 mx-1 rounded-sm\",\n !isCopied && \"hover:bg-accent hover:brightness-95\",\n )}\n disabled={isCopied}\n onClick={() => {\n if (!ref.current?.textContent) return;\n\n copyToClipboard(ref.current.textContent);\n }}\n >\n {isCopied ? (\n <CheckIcon className=\"text-emerald-600\" size={14} />\n ) : (\n <CopyIcon size={14} />\n )}\n </button>\n )}\n </div>\n <div\n className=\"code-block text-sm not-prose scrollbar [&_code]:px-3 [&_code]:py-2\"\n ref={ref}\n >\n {children}\n </div>\n </div>\n );\n};\n"],"names":["Languages","lazy","LanguageIcon","language","Lang","l","size","jsx","Suspense","CodeBlock","children","title","showCopy","showLanguageIndicator","showLineNumbers","props","isCopied","copyToClipboard","useCopyToClipboard","ref","useRef","jsxs","cn","CheckIcon","CopyIcon"],"mappings":"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"}
1
+ {"version":3,"file":"CodeBlock.js","sources":["../../src/lib/components/LanguageIcon.tsx","../../src/lib/ui/CodeBlock.tsx"],"sourcesContent":["import {\n type ComponentType,\n type LazyExoticComponent,\n lazy,\n Suspense,\n type SVGProps,\n} from \"react\";\n\ntype Language = {\n pattern: RegExp;\n icon: LazyExoticComponent<ComponentType<SVGProps<SVGSVGElement>>>;\n width?: number;\n};\n\nconst Languages: Record<string, Language> = {\n typescript: {\n pattern: /^(ts|typescript)$/,\n icon: lazy(() => import(\"../assets/language-icons/typescript.js\")),\n width: 15,\n },\n javascript: {\n pattern: /^(js|javascript)$/,\n icon: lazy(() => import(\"../assets/language-icons/javascript.js\")),\n },\n react: {\n pattern: /^(react|tsx|jsx)$/,\n icon: lazy(() => import(\"../assets/language-icons/react.js\")),\n width: 22,\n },\n markdown: {\n pattern: /^(md|markdown)$/,\n icon: lazy(() => import(\"../assets/language-icons/markdown.js\")),\n width: 22,\n },\n mdx: {\n pattern: /^mdx$/,\n icon: lazy(() => import(\"../assets/language-icons/mdx.js\")),\n width: 28,\n },\n java: {\n pattern: /^(java)$/,\n icon: lazy(() => import(\"../assets/language-icons/java.js\")),\n width: 22,\n },\n json: {\n pattern: /^jsonc?$/,\n icon: lazy(() => import(\"../assets/language-icons/json.js\")),\n },\n yaml: {\n pattern: /^yaml$/,\n icon: lazy(() => import(\"../assets/language-icons/yaml.js\")),\n },\n toml: {\n pattern: /^toml$/,\n icon: lazy(() => import(\"../assets/language-icons/toml.js\")),\n },\n shell: {\n pattern: /^(shell|bash|sh|zsh|term|terminal|ansi)$/,\n icon: lazy(() => import(\"../assets/language-icons/shell.js\")),\n },\n python: {\n pattern: /^(py|python)$/,\n icon: lazy(() => import(\"../assets/language-icons/python.js\")),\n },\n csharp: {\n pattern: /^(cs|csharp|vb)$/,\n icon: lazy(() => import(\"../assets/language-icons/csharp.js\")),\n width: 20,\n },\n rust: {\n pattern: /^(rs|rust)$/,\n icon: lazy(() => import(\"../assets/language-icons/rust.js\")),\n width: 20,\n },\n ruby: {\n pattern: /^(rb|ruby)$/,\n icon: lazy(() => import(\"../assets/language-icons/ruby.js\")),\n },\n php: {\n pattern: /^php$/,\n icon: lazy(() => import(\"../assets/language-icons/php.js\")),\n width: 24,\n },\n html: {\n pattern: /^html?$/,\n icon: lazy(() => import(\"../assets/language-icons/html.js\")),\n width: 15,\n },\n css: {\n pattern: /^css$/,\n icon: lazy(() => import(\"../assets/language-icons/css.js\")),\n },\n objectivec: {\n pattern: /^(objc|objectivec)$/,\n icon: lazy(() => import(\"../assets/language-icons/objectivec.js\")),\n width: 16,\n },\n swift: {\n pattern: /^swift$/,\n icon: lazy(() => import(\"../assets/language-icons/swift.js\")),\n },\n go: {\n pattern: /^go$/,\n icon: lazy(() => import(\"../assets/language-icons/go.js\")),\n width: 28,\n },\n xml: {\n pattern: /^xml$/,\n icon: lazy(() => import(\"../assets/language-icons/xml.js\")),\n },\n kotlin: {\n pattern: /^(kt|kotlin)$/,\n icon: lazy(() => import(\"../assets/language-icons/kotlin.js\")),\n width: 14,\n },\n graphql: {\n pattern: /^(gql|graphql)$/,\n icon: lazy(() => import(\"../assets/language-icons/graphql.js\")),\n },\n zig: {\n pattern: /^zig$/,\n icon: lazy(() => import(\"../assets/language-icons/zig.js\")),\n width: 28,\n },\n scala: {\n pattern: /^scala$/,\n icon: lazy(() => import(\"../assets/language-icons/scala.js\")),\n width: 18,\n },\n dart: {\n pattern: /^dart$/,\n icon: lazy(() => import(\"../assets/language-icons/dart.js\")),\n width: 20,\n },\n ocaml: {\n pattern: /^ocaml$/,\n icon: lazy(() => import(\"../assets/language-icons/ocaml.js\")),\n width: 20,\n },\n c: {\n pattern: /^c$/,\n icon: lazy(() => import(\"../assets/language-icons/c.js\")),\n width: 20,\n },\n cpp: {\n pattern: /^(cpp|c\\+\\+)$/,\n icon: lazy(() => import(\"../assets/language-icons/cpp.js\")),\n width: 20,\n },\n commonlisp: {\n pattern: /^(clisp|common-lisp|lisp|cl|commonlisp)$/,\n icon: lazy(() => import(\"../assets/language-icons/commonlisp.js\")),\n width: 18,\n },\n elixir: {\n pattern: /^elixir$/,\n icon: lazy(() => import(\"../assets/language-icons/elixir.js\")),\n width: 18,\n },\n powershell: {\n pattern: /^(pshell|powershell|ps1)$/,\n icon: lazy(() => import(\"../assets/language-icons/powershell.js\")),\n width: 18,\n },\n};\n\nexport const LanguageIcon = ({ language }: { language?: string }) => {\n if (!language) return null;\n\n const Lang = Object.values(Languages).find((l) => l.pattern.test(language));\n\n if (!Lang) return null;\n\n const size = Lang.width ?? 18;\n\n return (\n <Suspense fallback={<div style={{ width: size, height: \"1em\" }} />}>\n <Lang.icon className=\"h-auto\" style={{ width: size }} />\n </Suspense>\n );\n};\n","import { CheckIcon, CopyIcon } from \"lucide-react\";\nimport { type ReactNode, useRef } from \"react\";\nimport { LanguageIcon } from \"../components/LanguageIcon.js\";\nimport { cn } from \"../util/cn.js\";\nimport { useCopyToClipboard } from \"../util/useCopyToClipboard.js\";\n\nexport type CodeBlockProps = {\n className?: string;\n wrapLines?: boolean;\n showLanguageIndicator?: boolean;\n language?: string;\n title?: string;\n children?: ReactNode;\n code?: ReactNode;\n showCopy?: \"hover\" | \"always\" | \"never\";\n disabled?: boolean;\n showLineNumbers?: boolean;\n};\n\nexport const CodeBlock = ({\n children,\n title = \"Code\",\n language,\n showCopy = \"hover\",\n showLanguageIndicator,\n showLineNumbers,\n ...props\n}: CodeBlockProps) => {\n const [isCopied, copyToClipboard] = useCopyToClipboard();\n const ref = useRef<HTMLDivElement>(null);\n\n if (!children) return null;\n\n return (\n <div\n className={cn(\n \"border code-block-wrapper relative group rounded-xl overflow-hidden\",\n showLineNumbers && \"line-numbers\",\n props.className,\n )}\n >\n <div className=\"border-b flex items-center py-1 font-sans bg-black/2\">\n <div className=\"flex items-center gap-1.5 flex-1 text-sm w-full px-3\">\n <LanguageIcon language={language} />\n {title}\n </div>{\" \"}\n {showCopy !== \"never\" && (\n <button\n type=\"button\"\n aria-label=\"Copy code\"\n title=\"Copy code\"\n className={cn(\n \"transition p-1.5 mx-1 rounded-lg\",\n !isCopied && \"hover:bg-accent hover:brightness-95\",\n )}\n disabled={isCopied}\n onClick={() => {\n if (!ref.current?.textContent) return;\n\n copyToClipboard(ref.current.textContent);\n }}\n >\n {isCopied ? (\n <CheckIcon className=\"text-emerald-600\" size={14} />\n ) : (\n <CopyIcon size={14} />\n )}\n </button>\n )}\n </div>\n <div\n className=\"code-block text-sm not-prose scrollbar [&_code]:px-3 [&_code]:py-2\"\n ref={ref}\n >\n {children}\n </div>\n </div>\n );\n};\n"],"names":["Languages","lazy","LanguageIcon","language","Lang","l","size","jsx","Suspense","CodeBlock","children","title","showCopy","showLanguageIndicator","showLineNumbers","props","isCopied","copyToClipboard","useCopyToClipboard","ref","useRef","jsxs","cn","CheckIcon","CopyIcon"],"mappings":"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"}
@@ -1,8 +1,35 @@
1
- import * as l from "@radix-ui/react-collapsible";
2
- const o = l.Root, e = l.CollapsibleTrigger, s = l.CollapsibleContent;
1
+ import { j as o } from "../jsx-runtime-BzflLqGi.js";
2
+ import * as t from "@radix-ui/react-collapsible";
3
+ function s({
4
+ ...l
5
+ }) {
6
+ return /* @__PURE__ */ o.jsx(t.Root, { "data-slot": "collapsible", ...l });
7
+ }
8
+ function i({
9
+ ...l
10
+ }) {
11
+ return /* @__PURE__ */ o.jsx(
12
+ t.CollapsibleTrigger,
13
+ {
14
+ "data-slot": "collapsible-trigger",
15
+ ...l
16
+ }
17
+ );
18
+ }
19
+ function r({
20
+ ...l
21
+ }) {
22
+ return /* @__PURE__ */ o.jsx(
23
+ t.CollapsibleContent,
24
+ {
25
+ "data-slot": "collapsible-content",
26
+ ...l
27
+ }
28
+ );
29
+ }
3
30
  export {
4
- o as Collapsible,
5
- s as CollapsibleContent,
6
- e as CollapsibleTrigger
31
+ s as Collapsible,
32
+ r as CollapsibleContent,
33
+ i as CollapsibleTrigger
7
34
  };
8
35
  //# sourceMappingURL=Collapsible.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Collapsible.js","sources":["../../src/lib/ui/Collapsible.tsx"],"sourcesContent":["import * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\n\nconst Collapsible = CollapsiblePrimitive.Root;\n\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;\n\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;\n\nexport { Collapsible, CollapsibleContent, CollapsibleTrigger };\n"],"names":["Collapsible","CollapsiblePrimitive","CollapsibleTrigger","CollapsibleContent"],"mappings":";AAEA,MAAMA,IAAcC,EAAqB,MAEnCC,IAAqBD,EAAqB,oBAE1CE,IAAqBF,EAAqB;"}
1
+ {"version":3,"file":"Collapsible.js","sources":["../../src/lib/ui/Collapsible.tsx"],"sourcesContent":["import * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\n\nfunction Collapsible({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />;\n}\n\nfunction CollapsibleTrigger({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\n return (\n <CollapsiblePrimitive.CollapsibleTrigger\n data-slot=\"collapsible-trigger\"\n {...props}\n />\n );\n}\n\nfunction CollapsibleContent({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\n return (\n <CollapsiblePrimitive.CollapsibleContent\n data-slot=\"collapsible-content\"\n {...props}\n />\n );\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n"],"names":["Collapsible","props","CollapsiblePrimitive","CollapsibleTrigger","jsx","CollapsibleContent"],"mappings":";;AAEA,SAASA,EAAY;AAAA,EACnB,GAAGC;AACL,GAA2D;AACzD,+BAAQC,EAAqB,MAArB,EAA0B,aAAU,eAAe,GAAGD,GAAO;AACvE;AAEA,SAASE,EAAmB;AAAA,EAC1B,GAAGF;AACL,GAAyE;AACvE,SACEG,gBAAAA,EAAAA;AAAAA,IAACF,EAAqB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACT,GAAGD;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASI,EAAmB;AAAA,EAC1B,GAAGJ;AACL,GAAyE;AACvE,SACEG,gBAAAA,EAAAA;AAAAA,IAACF,EAAqB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACT,GAAGD;AAAA,IAAA;AAAA,EAAA;AAGV;"}
@@ -1,57 +1,58 @@
1
1
  import { j as e } from "../jsx-runtime-BzflLqGi.js";
2
- import { CheckIcon as m, CopyIcon as x } from "lucide-react";
3
- import { useState as f, useRef as b } from "react";
2
+ import { CheckIcon as p, CopyIcon as x } from "lucide-react";
3
+ import { useState as f, useRef as v } from "react";
4
4
  import { c as t } from "../cn-dYga0KKN.js";
5
- const g = ({
5
+ import { Button as b } from "./Button.js";
6
+ const C = ({
6
7
  children: s,
7
8
  fullHeight: n,
8
- language: d,
9
+ language: c,
9
10
  showCopy: o = "hover",
10
11
  showCopyText: a,
11
- showLanguageIndicator: u = !0,
12
- showLineNumbers: c,
13
- ...p
12
+ showLanguageIndicator: d = !0,
13
+ showLineNumbers: u,
14
+ ...m
14
15
  }) => {
15
- const [i, l] = f(!1), r = b(null);
16
+ const [i, l] = f(!1), r = v(null);
16
17
  return s ? /* @__PURE__ */ e.jsxs(
17
18
  "div",
18
19
  {
19
20
  className: t(
20
21
  "code-block-wrapper relative group bg-muted/50",
21
- c && "line-numbers",
22
+ u && "line-numbers",
22
23
  n && "h-full"
23
24
  ),
24
25
  children: [
25
- /* @__PURE__ */ e.jsx(
26
+ /* @__PURE__ */ e.jsx("div", { className: "relative overflow-auto", children: /* @__PURE__ */ e.jsx(
26
27
  "div",
27
28
  {
28
29
  className: t(
29
- "code-block text-sm not-prose scrollbar [&>pre]:overflow-x-auto [&>pre]:p-2",
30
+ "code-block text-sm not-prose scrollbar [&>pre]:overflow-x-auto [&_code]:p-2",
30
31
  n && "h-full [&>pre]:h-full",
31
- p.className
32
+ m.className
32
33
  ),
33
34
  ref: r,
34
35
  children: s
35
36
  }
36
- ),
37
- u && /* @__PURE__ */ e.jsx(
37
+ ) }),
38
+ d && /* @__PURE__ */ e.jsx(
38
39
  "span",
39
40
  {
40
41
  className: t(
41
- "absolute top-1.5 end-3 text-[11px]! font-mono text-muted-foreground transition group-hover:opacity-0",
42
+ "absolute top-1.5 end-3 text-[11px]! font-mono text-muted-foreground transition group-hover:opacity-0 pointer-events-none",
42
43
  o === "always" && "hidden"
43
44
  ),
44
- children: d
45
+ children: c
45
46
  }
46
47
  ),
47
48
  o !== "never" && /* @__PURE__ */ e.jsxs(
48
- "button",
49
+ b,
49
50
  {
50
51
  type: "button",
51
- "aria-label": "Copy code",
52
- title: "Copy code",
52
+ variant: "outline",
53
+ size: "icon-xs",
53
54
  className: t(
54
- "absolute top-2 end-2 p-2 transition hover:shadow-xs active:shadow-none active:inset-shadow-xs hover:outline outline-border rounded-md text-sm text-muted-foreground",
55
+ "absolute top-2 end-2 p-2",
55
56
  o === "hover" && "opacity-0 group-hover:opacity-100",
56
57
  a && "flex gap-2 items-center font-medium"
57
58
  ),
@@ -61,14 +62,14 @@ const g = ({
61
62
  },
62
63
  children: [
63
64
  i ? /* @__PURE__ */ e.jsx(
64
- m,
65
+ p,
65
66
  {
66
- className: "text-emerald-600",
67
- size: 16,
67
+ className: "shrink-0 text-emerald-600 dark:text-emerald-300",
68
+ size: 13,
68
69
  strokeWidth: 2.5,
69
70
  absoluteStrokeWidth: !0
70
71
  }
71
- ) : /* @__PURE__ */ e.jsx(x, { size: 16 }),
72
+ ) : /* @__PURE__ */ e.jsx(x, { className: "shrink-0", size: 13 }),
72
73
  a && "Copy"
73
74
  ]
74
75
  }
@@ -78,6 +79,6 @@ const g = ({
78
79
  ) : null;
79
80
  };
80
81
  export {
81
- g as EmbeddedCodeBlock
82
+ C as EmbeddedCodeBlock
82
83
  };
83
84
  //# sourceMappingURL=EmbeddedCodeBlock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EmbeddedCodeBlock.js","sources":["../../src/lib/ui/EmbeddedCodeBlock.tsx"],"sourcesContent":["import { CheckIcon, CopyIcon } from \"lucide-react\";\nimport type { ReactNode } from \"react\";\nimport { useRef, useState } from \"react\";\nimport { cn } from \"../util/cn.js\";\n\nexport type CodeBlockProps = {\n className?: string;\n noBackground?: boolean;\n wrapLines?: boolean;\n showLanguageIndicator?: boolean;\n language?: string;\n children?: ReactNode;\n code?: ReactNode;\n showCopy?: \"hover\" | \"always\" | \"never\";\n showCopyText?: boolean;\n disabled?: boolean;\n showLineNumbers?: boolean;\n};\n\nexport const EmbeddedCodeBlock = ({\n children,\n fullHeight,\n language,\n showCopy = \"hover\",\n showCopyText,\n showLanguageIndicator = true,\n showLineNumbers,\n ...props\n}: CodeBlockProps & { fullHeight?: boolean }) => {\n const [isCopied, setIsCopied] = useState(false);\n const ref = useRef<HTMLDivElement>(null);\n\n if (!children) return null;\n\n return (\n <div\n className={cn(\n \"code-block-wrapper relative group bg-muted/50\",\n showLineNumbers && \"line-numbers\",\n fullHeight && \"h-full\",\n )}\n >\n <div\n className={cn(\n \"code-block text-sm not-prose scrollbar [&>pre]:overflow-x-auto [&>pre]:p-2\",\n fullHeight && \"h-full [&>pre]:h-full\",\n props.className,\n )}\n ref={ref}\n >\n {children}\n </div>\n {showLanguageIndicator && (\n <span\n className={cn(\n \"absolute top-1.5 end-3 text-[11px]! font-mono text-muted-foreground transition group-hover:opacity-0\",\n showCopy === \"always\" && \"hidden\",\n )}\n >\n {language}\n </span>\n )}\n {showCopy !== \"never\" && (\n <button\n type=\"button\"\n aria-label=\"Copy code\"\n title=\"Copy code\"\n className={cn(\n \"absolute top-2 end-2 p-2 transition hover:shadow-xs active:shadow-none active:inset-shadow-xs hover:outline outline-border rounded-md text-sm text-muted-foreground\",\n showCopy === \"hover\" && \"opacity-0 group-hover:opacity-100\",\n showCopyText && \"flex gap-2 items-center font-medium\",\n )}\n disabled={isCopied}\n onClick={() => {\n if (!ref.current?.textContent) return;\n\n setIsCopied(true);\n void navigator.clipboard.writeText(ref.current.textContent);\n setTimeout(() => setIsCopied(false), 2000);\n }}\n >\n {isCopied ? (\n <CheckIcon\n className=\"text-emerald-600\"\n size={16}\n strokeWidth={2.5}\n absoluteStrokeWidth\n />\n ) : (\n <CopyIcon size={16} />\n )}\n {showCopyText && \"Copy\"}\n </button>\n )}\n </div>\n );\n};\n"],"names":["EmbeddedCodeBlock","children","fullHeight","language","showCopy","showCopyText","showLanguageIndicator","showLineNumbers","props","isCopied","setIsCopied","useState","ref","useRef","jsxs","cn","jsx","CheckIcon","CopyIcon"],"mappings":";;;;AAmBO,MAAMA,IAAoB,CAAC;AAAA,EAChC,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,cAAAC;AAAA,EACA,uBAAAC,IAAwB;AAAA,EACxB,iBAAAC;AAAA,EACA,GAAGC;AACL,MAAiD;AAC/C,QAAM,CAACC,GAAUC,CAAW,IAAIC,EAAS,EAAK,GACxCC,IAAMC,EAAuB,IAAI;AAEvC,SAAKZ,IAGHa,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAR,KAAmB;AAAA,QACnBL,KAAc;AAAA,MAAA;AAAA,MAGhB,UAAA;AAAA,QAAAc,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWD;AAAA,cACT;AAAA,cACAb,KAAc;AAAA,cACdM,EAAM;AAAA,YAAA;AAAA,YAER,KAAAI;AAAA,YAEC,UAAAX;AAAA,UAAA;AAAA,QAAA;AAAA,QAEFK,KACCU,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWD;AAAA,cACT;AAAA,cACAX,MAAa,YAAY;AAAA,YAAA;AAAA,YAG1B,UAAAD;AAAA,UAAA;AAAA,QAAA;AAAA,QAGJC,MAAa,WACZU,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,cAAW;AAAA,YACX,OAAM;AAAA,YACN,WAAWC;AAAA,cACT;AAAA,cACAX,MAAa,WAAW;AAAA,cACxBC,KAAgB;AAAA,YAAA;AAAA,YAElB,UAAUI;AAAA,YACV,SAAS,MAAM;AACb,cAAKG,EAAI,SAAS,gBAElBF,EAAY,EAAI,GACX,UAAU,UAAU,UAAUE,EAAI,QAAQ,WAAW,GAC1D,WAAW,MAAMF,EAAY,EAAK,GAAG,GAAI;AAAA,YAC3C;AAAA,YAEC,UAAA;AAAA,cAAAD,IACCO,gBAAAA,EAAAA;AAAAA,gBAACC;AAAA,gBAAA;AAAA,kBACC,WAAU;AAAA,kBACV,MAAM;AAAA,kBACN,aAAa;AAAA,kBACb,qBAAmB;AAAA,gBAAA;AAAA,cAAA,IAGrBD,gBAAAA,EAAAA,IAACE,GAAA,EAAS,MAAM,GAAA,CAAI;AAAA,cAErBb,KAAgB;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACnB;AAAA,IAAA;AAAA,EAAA,IA5DgB;AAgExB;"}
1
+ {"version":3,"file":"EmbeddedCodeBlock.js","sources":["../../src/lib/ui/EmbeddedCodeBlock.tsx"],"sourcesContent":["import { CheckIcon, CopyIcon } from \"lucide-react\";\nimport type { ReactNode } from \"react\";\nimport { useRef, useState } from \"react\";\nimport { cn } from \"../util/cn.js\";\nimport { Button } from \"./Button.js\";\n\nexport type CodeBlockProps = {\n className?: string;\n wrapLines?: boolean;\n showLanguageIndicator?: boolean;\n language?: string;\n children?: ReactNode;\n code?: ReactNode;\n showCopy?: \"hover\" | \"always\" | \"never\";\n showCopyText?: boolean;\n disabled?: boolean;\n showLineNumbers?: boolean;\n};\n\nexport const EmbeddedCodeBlock = ({\n children,\n fullHeight,\n language,\n showCopy = \"hover\",\n showCopyText,\n showLanguageIndicator = true,\n showLineNumbers,\n ...props\n}: CodeBlockProps & { fullHeight?: boolean }) => {\n const [isCopied, setIsCopied] = useState(false);\n const ref = useRef<HTMLDivElement>(null);\n\n if (!children) return null;\n\n return (\n <div\n className={cn(\n \"code-block-wrapper relative group bg-muted/50\",\n showLineNumbers && \"line-numbers\",\n fullHeight && \"h-full\",\n )}\n >\n <div className=\"relative overflow-auto\">\n <div\n className={cn(\n \"code-block text-sm not-prose scrollbar [&>pre]:overflow-x-auto [&_code]:p-2\",\n fullHeight && \"h-full [&>pre]:h-full\",\n props.className,\n )}\n ref={ref}\n >\n {children}\n </div>\n </div>\n {showLanguageIndicator && (\n <span\n className={cn(\n \"absolute top-1.5 end-3 text-[11px]! font-mono text-muted-foreground transition group-hover:opacity-0 pointer-events-none\",\n showCopy === \"always\" && \"hidden\",\n )}\n >\n {language}\n </span>\n )}\n {showCopy !== \"never\" && (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"icon-xs\"\n className={cn(\n \"absolute top-2 end-2 p-2\",\n showCopy === \"hover\" && \"opacity-0 group-hover:opacity-100\",\n showCopyText && \"flex gap-2 items-center font-medium\",\n )}\n disabled={isCopied}\n onClick={() => {\n if (!ref.current?.textContent) return;\n\n setIsCopied(true);\n void navigator.clipboard.writeText(ref.current.textContent);\n setTimeout(() => setIsCopied(false), 2000);\n }}\n >\n {isCopied ? (\n <CheckIcon\n className=\"shrink-0 text-emerald-600 dark:text-emerald-300\"\n size={13}\n strokeWidth={2.5}\n absoluteStrokeWidth\n />\n ) : (\n <CopyIcon className=\"shrink-0\" size={13} />\n )}\n {showCopyText && \"Copy\"}\n </Button>\n )}\n </div>\n );\n};\n"],"names":["EmbeddedCodeBlock","children","fullHeight","language","showCopy","showCopyText","showLanguageIndicator","showLineNumbers","props","isCopied","setIsCopied","useState","ref","useRef","jsxs","cn","jsx","Button","CheckIcon","CopyIcon"],"mappings":";;;;;AAmBO,MAAMA,IAAoB,CAAC;AAAA,EAChC,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,cAAAC;AAAA,EACA,uBAAAC,IAAwB;AAAA,EACxB,iBAAAC;AAAA,EACA,GAAGC;AACL,MAAiD;AAC/C,QAAM,CAACC,GAAUC,CAAW,IAAIC,EAAS,EAAK,GACxCC,IAAMC,EAAuB,IAAI;AAEvC,SAAKZ,IAGHa,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAR,KAAmB;AAAA,QACnBL,KAAc;AAAA,MAAA;AAAA,MAGhB,UAAA;AAAA,QAAAc,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,0BACb,UAAAA,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWD;AAAA,cACT;AAAA,cACAb,KAAc;AAAA,cACdM,EAAM;AAAA,YAAA;AAAA,YAER,KAAAI;AAAA,YAEC,UAAAX;AAAA,UAAA;AAAA,QAAA,GAEL;AAAA,QACCK,KACCU,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWD;AAAA,cACT;AAAA,cACAX,MAAa,YAAY;AAAA,YAAA;AAAA,YAG1B,UAAAD;AAAA,UAAA;AAAA,QAAA;AAAA,QAGJC,MAAa,WACZU,gBAAAA,EAAAA;AAAAA,UAACG;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,WAAWF;AAAA,cACT;AAAA,cACAX,MAAa,WAAW;AAAA,cACxBC,KAAgB;AAAA,YAAA;AAAA,YAElB,UAAUI;AAAA,YACV,SAAS,MAAM;AACb,cAAKG,EAAI,SAAS,gBAElBF,EAAY,EAAI,GACX,UAAU,UAAU,UAAUE,EAAI,QAAQ,WAAW,GAC1D,WAAW,MAAMF,EAAY,EAAK,GAAG,GAAI;AAAA,YAC3C;AAAA,YAEC,UAAA;AAAA,cAAAD,IACCO,gBAAAA,EAAAA;AAAAA,gBAACE;AAAA,gBAAA;AAAA,kBACC,WAAU;AAAA,kBACV,MAAM;AAAA,kBACN,aAAa;AAAA,kBACb,qBAAmB;AAAA,gBAAA;AAAA,cAAA,IAGrBF,gBAAAA,EAAAA,IAACG,GAAA,EAAS,WAAU,YAAW,MAAM,IAAI;AAAA,cAE1Cd,KAAgB;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACnB;AAAA,IAAA;AAAA,EAAA,IA9DgB;AAkExB;"}
@@ -0,0 +1,81 @@
1
+ import { j as a } from "../jsx-runtime-BzflLqGi.js";
2
+ import { c as t } from "../cn-dYga0KKN.js";
3
+ function s({ className: e, ...r }) {
4
+ return /* @__PURE__ */ a.jsx(
5
+ "div",
6
+ {
7
+ "data-slot": "frame",
8
+ className: t(
9
+ "relative flex flex-col rounded-2xl bg-muted p-1",
10
+ e
11
+ ),
12
+ ...r
13
+ }
14
+ );
15
+ }
16
+ function n({ className: e, ...r }) {
17
+ return /* @__PURE__ */ a.jsx(
18
+ "div",
19
+ {
20
+ "data-slot": "frame-panel",
21
+ className: t(
22
+ "relative bg-clip-padding rounded-xl border bg-card p-5 shadow-xs",
23
+ "before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-xl)-1px)] before:shadow-[0_1px_--theme(--color-black/4%)] dark:bg-clip-border dark:before:shadow-[0_-1px_--theme(--color-white/8%)]",
24
+ e
25
+ ),
26
+ ...r
27
+ }
28
+ );
29
+ }
30
+ function d({ className: e, ...r }) {
31
+ return /* @__PURE__ */ a.jsx(
32
+ "header",
33
+ {
34
+ "data-slot": "frame-panel-header",
35
+ className: t("flex flex-col p-4", e),
36
+ ...r
37
+ }
38
+ );
39
+ }
40
+ function f({ className: e, ...r }) {
41
+ return /* @__PURE__ */ a.jsx(
42
+ "div",
43
+ {
44
+ "data-slot": "frame-panel-title",
45
+ className: t("text-sm font-semibold", e),
46
+ ...r
47
+ }
48
+ );
49
+ }
50
+ function m({
51
+ className: e,
52
+ ...r
53
+ }) {
54
+ return /* @__PURE__ */ a.jsx(
55
+ "div",
56
+ {
57
+ "data-slot": "frame-panel-description",
58
+ className: t("text-sm text-muted-foreground", e),
59
+ ...r
60
+ }
61
+ );
62
+ }
63
+ function i({ className: e, ...r }) {
64
+ return /* @__PURE__ */ a.jsx(
65
+ "footer",
66
+ {
67
+ "data-slot": "frame-panel-footer",
68
+ className: t("flex flex-col gap-1 px-5 py-4", e),
69
+ ...r
70
+ }
71
+ );
72
+ }
73
+ export {
74
+ s as Frame,
75
+ m as FrameDescription,
76
+ i as FrameFooter,
77
+ d as FrameHeader,
78
+ n as FramePanel,
79
+ f as FrameTitle
80
+ };
81
+ //# sourceMappingURL=Frame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Frame.js","sources":["../../src/lib/ui/Frame.tsx"],"sourcesContent":["import type * as React from \"react\";\nimport { cn } from \"../util/cn.js\";\n\nfunction Frame({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"frame\"\n className={cn(\n \"relative flex flex-col rounded-2xl bg-muted p-1\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FramePanel({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"frame-panel\"\n className={cn(\n \"relative bg-clip-padding rounded-xl border bg-card p-5 shadow-xs\",\n \"before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-xl)-1px)] before:shadow-[0_1px_--theme(--color-black/4%)] dark:bg-clip-border dark:before:shadow-[0_-1px_--theme(--color-white/8%)]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FrameHeader({ className, ...props }: React.ComponentProps<\"header\">) {\n return (\n <header\n data-slot=\"frame-panel-header\"\n className={cn(\"flex flex-col p-4\", className)}\n {...props}\n />\n );\n}\n\nfunction FrameTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"frame-panel-title\"\n className={cn(\"text-sm font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction FrameDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"frame-panel-description\"\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nfunction FrameFooter({ className, ...props }: React.ComponentProps<\"footer\">) {\n return (\n <footer\n data-slot=\"frame-panel-footer\"\n className={cn(\"flex flex-col gap-1 px-5 py-4\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Frame,\n FramePanel,\n FrameHeader,\n FrameTitle,\n FrameDescription,\n FrameFooter,\n};\n"],"names":["Frame","className","props","jsx","cn","FramePanel","FrameHeader","FrameTitle","FrameDescription","FrameFooter"],"mappings":";;AAGA,SAASA,EAAM,EAAE,WAAAC,GAAW,GAAGC,KAAsC;AACnE,SACEC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAH;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASG,EAAW,EAAE,WAAAJ,GAAW,GAAGC,KAAsC;AACxE,SACEC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACA;AAAA,QACAH;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASI,EAAY,EAAE,WAAAL,GAAW,GAAGC,KAAyC;AAC5E,SACEC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,EAAG,qBAAqBH,CAAS;AAAA,MAC3C,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASK,EAAW,EAAE,WAAAN,GAAW,GAAGC,KAAsC;AACxE,SACEC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,EAAG,yBAAyBH,CAAS;AAAA,MAC/C,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASM,EAAiB;AAAA,EACxB,WAAAP;AAAA,EACA,GAAGC;AACL,GAAgC;AAC9B,SACEC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,EAAG,iCAAiCH,CAAS;AAAA,MACvD,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASO,EAAY,EAAE,WAAAR,GAAW,GAAGC,KAAyC;AAC5E,SACEC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,EAAG,iCAAiCH,CAAS;AAAA,MACvD,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;"}