pycharter 0.0.22__py3-none-any.whl → 0.0.23__py3-none-any.whl

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 (332) hide show
  1. api/routes/v1/templates.py +43 -24
  2. pycharter/data/templates/etl/README.md +91 -0
  3. pycharter/data/templates/etl/extract_cloud_azure.yaml +23 -0
  4. pycharter/data/templates/etl/extract_cloud_gcs.yaml +22 -0
  5. pycharter/data/templates/etl/extract_cloud_s3.yaml +24 -0
  6. pycharter/data/templates/etl/extract_database.yaml +28 -0
  7. pycharter/data/templates/etl/extract_database_ssh.yaml +27 -0
  8. pycharter/data/templates/etl/extract_file_csv.yaml +17 -0
  9. pycharter/data/templates/etl/extract_file_glob.yaml +17 -0
  10. pycharter/data/templates/etl/extract_file_json.yaml +14 -0
  11. pycharter/data/templates/etl/extract_file_parquet.yaml +13 -0
  12. pycharter/data/templates/etl/extract_http_paginated.yaml +75 -0
  13. pycharter/data/templates/etl/extract_http_path_params.yaml +45 -0
  14. pycharter/data/templates/etl/extract_http_simple.yaml +52 -0
  15. pycharter/data/templates/etl/load_insert.yaml +17 -0
  16. pycharter/data/templates/etl/load_postgresql.yaml +17 -0
  17. pycharter/data/templates/etl/load_sqlite.yaml +16 -0
  18. pycharter/data/templates/etl/load_truncate_and_load.yaml +18 -0
  19. pycharter/data/templates/etl/load_upsert.yaml +28 -0
  20. pycharter/data/templates/etl/load_with_dlq.yaml +24 -0
  21. pycharter/data/templates/etl/load_with_ssh_tunnel.yaml +28 -0
  22. pycharter/data/templates/etl/pipeline_http_to_db.yaml +38 -0
  23. pycharter/data/templates/etl/transform_combined.yaml +38 -0
  24. pycharter/data/templates/etl/transform_custom_function.yaml +18 -0
  25. pycharter/data/templates/etl/transform_jsonata.yaml +20 -0
  26. pycharter/data/templates/etl/transform_simple.yaml +41 -0
  27. pycharter/db/schemas/.ipynb_checkpoints/data_contract-checkpoint.py +160 -0
  28. pycharter/etl_generator/extraction.py +47 -262
  29. pycharter/etl_generator/extractors/__init__.py +26 -0
  30. pycharter/etl_generator/extractors/base.py +70 -0
  31. pycharter/etl_generator/extractors/cloud_storage.py +454 -0
  32. pycharter/etl_generator/extractors/database.py +151 -0
  33. pycharter/etl_generator/extractors/factory.py +141 -0
  34. pycharter/etl_generator/extractors/file.py +418 -0
  35. pycharter/etl_generator/extractors/http.py +816 -0
  36. {pycharter-0.0.22.dist-info → pycharter-0.0.23.dist-info}/METADATA +6 -1
  37. pycharter-0.0.23.dist-info/RECORD +498 -0
  38. {pycharter-0.0.22.dist-info → pycharter-0.0.23.dist-info}/WHEEL +1 -1
  39. ui/static/404/index.html +1 -1
  40. ui/static/404.html +1 -1
  41. ui/static/__next.__PAGE__.txt +1 -1
  42. ui/static/__next._full.txt +1 -1
  43. ui/static/__next._head.txt +1 -1
  44. ui/static/__next._index.txt +1 -1
  45. ui/static/__next._tree.txt +1 -1
  46. ui/static/_next/static/chunks/26dfc590f7714c03.js +1 -0
  47. ui/static/_next/static/chunks/34d289e6db2ef551.js +1 -0
  48. ui/static/_next/static/chunks/99508d9d5869cc27.js +1 -0
  49. ui/static/_next/static/chunks/b313c35a6ba76574.js +1 -0
  50. ui/static/_not-found/__next._full.txt +1 -1
  51. ui/static/_not-found/__next._head.txt +1 -1
  52. ui/static/_not-found/__next._index.txt +1 -1
  53. ui/static/_not-found/__next._not-found.__PAGE__.txt +1 -1
  54. ui/static/_not-found/__next._not-found.txt +1 -1
  55. ui/static/_not-found/__next._tree.txt +1 -1
  56. ui/static/_not-found/index.html +1 -1
  57. ui/static/_not-found/index.txt +1 -1
  58. ui/static/contracts/__next._full.txt +2 -2
  59. ui/static/contracts/__next._head.txt +1 -1
  60. ui/static/contracts/__next._index.txt +1 -1
  61. ui/static/contracts/__next._tree.txt +1 -1
  62. ui/static/contracts/__next.contracts.__PAGE__.txt +2 -2
  63. ui/static/contracts/__next.contracts.txt +1 -1
  64. ui/static/contracts/index.html +1 -1
  65. ui/static/contracts/index.txt +2 -2
  66. ui/static/documentation/__next._full.txt +1 -1
  67. ui/static/documentation/__next._head.txt +1 -1
  68. ui/static/documentation/__next._index.txt +1 -1
  69. ui/static/documentation/__next._tree.txt +1 -1
  70. ui/static/documentation/__next.documentation.__PAGE__.txt +1 -1
  71. ui/static/documentation/__next.documentation.txt +1 -1
  72. ui/static/documentation/index.html +2 -2
  73. ui/static/documentation/index.txt +1 -1
  74. ui/static/index.html +1 -1
  75. ui/static/index.txt +1 -1
  76. ui/static/metadata/__next._full.txt +1 -1
  77. ui/static/metadata/__next._head.txt +1 -1
  78. ui/static/metadata/__next._index.txt +1 -1
  79. ui/static/metadata/__next._tree.txt +1 -1
  80. ui/static/metadata/__next.metadata.__PAGE__.txt +1 -1
  81. ui/static/metadata/__next.metadata.txt +1 -1
  82. ui/static/metadata/index.html +1 -1
  83. ui/static/metadata/index.txt +1 -1
  84. ui/static/quality/__next._full.txt +2 -2
  85. ui/static/quality/__next._head.txt +1 -1
  86. ui/static/quality/__next._index.txt +1 -1
  87. ui/static/quality/__next._tree.txt +1 -1
  88. ui/static/quality/__next.quality.__PAGE__.txt +2 -2
  89. ui/static/quality/__next.quality.txt +1 -1
  90. ui/static/quality/index.html +2 -2
  91. ui/static/quality/index.txt +2 -2
  92. ui/static/rules/__next._full.txt +1 -1
  93. ui/static/rules/__next._head.txt +1 -1
  94. ui/static/rules/__next._index.txt +1 -1
  95. ui/static/rules/__next._tree.txt +1 -1
  96. ui/static/rules/__next.rules.__PAGE__.txt +1 -1
  97. ui/static/rules/__next.rules.txt +1 -1
  98. ui/static/rules/index.html +1 -1
  99. ui/static/rules/index.txt +1 -1
  100. ui/static/schemas/__next._full.txt +1 -1
  101. ui/static/schemas/__next._head.txt +1 -1
  102. ui/static/schemas/__next._index.txt +1 -1
  103. ui/static/schemas/__next._tree.txt +1 -1
  104. ui/static/schemas/__next.schemas.__PAGE__.txt +1 -1
  105. ui/static/schemas/__next.schemas.txt +1 -1
  106. ui/static/schemas/index.html +1 -1
  107. ui/static/schemas/index.txt +1 -1
  108. ui/static/settings/__next._full.txt +1 -1
  109. ui/static/settings/__next._head.txt +1 -1
  110. ui/static/settings/__next._index.txt +1 -1
  111. ui/static/settings/__next._tree.txt +1 -1
  112. ui/static/settings/__next.settings.__PAGE__.txt +1 -1
  113. ui/static/settings/__next.settings.txt +1 -1
  114. ui/static/settings/index.html +1 -1
  115. ui/static/settings/index.txt +1 -1
  116. ui/static/static/404/index.html +1 -1
  117. ui/static/static/404.html +1 -1
  118. ui/static/static/__next.__PAGE__.txt +1 -1
  119. ui/static/static/__next._full.txt +2 -2
  120. ui/static/static/__next._head.txt +1 -1
  121. ui/static/static/__next._index.txt +2 -2
  122. ui/static/static/__next._tree.txt +2 -2
  123. ui/static/static/_next/static/chunks/13d4a0fbd74c1ee4.js +1 -0
  124. ui/static/static/_next/static/chunks/2edb43b48432ac04.js +441 -0
  125. ui/static/static/_next/static/chunks/d2363397e1b2bcab.css +1 -0
  126. ui/static/static/_next/static/chunks/f7d1a90dd75d2572.js +1 -0
  127. ui/static/static/_not-found/__next._full.txt +2 -2
  128. ui/static/static/_not-found/__next._head.txt +1 -1
  129. ui/static/static/_not-found/__next._index.txt +2 -2
  130. ui/static/static/_not-found/__next._not-found.__PAGE__.txt +1 -1
  131. ui/static/static/_not-found/__next._not-found.txt +1 -1
  132. ui/static/static/_not-found/__next._tree.txt +2 -2
  133. ui/static/static/_not-found/index.html +1 -1
  134. ui/static/static/_not-found/index.txt +2 -2
  135. ui/static/static/contracts/__next._full.txt +3 -3
  136. ui/static/static/contracts/__next._head.txt +1 -1
  137. ui/static/static/contracts/__next._index.txt +2 -2
  138. ui/static/static/contracts/__next._tree.txt +2 -2
  139. ui/static/static/contracts/__next.contracts.__PAGE__.txt +2 -2
  140. ui/static/static/contracts/__next.contracts.txt +1 -1
  141. ui/static/static/contracts/index.html +1 -1
  142. ui/static/static/contracts/index.txt +3 -3
  143. ui/static/static/documentation/__next._full.txt +3 -3
  144. ui/static/static/documentation/__next._head.txt +1 -1
  145. ui/static/static/documentation/__next._index.txt +2 -2
  146. ui/static/static/documentation/__next._tree.txt +2 -2
  147. ui/static/static/documentation/__next.documentation.__PAGE__.txt +2 -2
  148. ui/static/static/documentation/__next.documentation.txt +1 -1
  149. ui/static/static/documentation/index.html +2 -2
  150. ui/static/static/documentation/index.txt +3 -3
  151. ui/static/static/index.html +1 -1
  152. ui/static/static/index.txt +2 -2
  153. ui/static/static/metadata/__next._full.txt +2 -2
  154. ui/static/static/metadata/__next._head.txt +1 -1
  155. ui/static/static/metadata/__next._index.txt +2 -2
  156. ui/static/static/metadata/__next._tree.txt +2 -2
  157. ui/static/static/metadata/__next.metadata.__PAGE__.txt +1 -1
  158. ui/static/static/metadata/__next.metadata.txt +1 -1
  159. ui/static/static/metadata/index.html +1 -1
  160. ui/static/static/metadata/index.txt +2 -2
  161. ui/static/static/quality/__next._full.txt +2 -2
  162. ui/static/static/quality/__next._head.txt +1 -1
  163. ui/static/static/quality/__next._index.txt +2 -2
  164. ui/static/static/quality/__next._tree.txt +2 -2
  165. ui/static/static/quality/__next.quality.__PAGE__.txt +1 -1
  166. ui/static/static/quality/__next.quality.txt +1 -1
  167. ui/static/static/quality/index.html +2 -2
  168. ui/static/static/quality/index.txt +2 -2
  169. ui/static/static/rules/__next._full.txt +2 -2
  170. ui/static/static/rules/__next._head.txt +1 -1
  171. ui/static/static/rules/__next._index.txt +2 -2
  172. ui/static/static/rules/__next._tree.txt +2 -2
  173. ui/static/static/rules/__next.rules.__PAGE__.txt +1 -1
  174. ui/static/static/rules/__next.rules.txt +1 -1
  175. ui/static/static/rules/index.html +1 -1
  176. ui/static/static/rules/index.txt +2 -2
  177. ui/static/static/schemas/__next._full.txt +2 -2
  178. ui/static/static/schemas/__next._head.txt +1 -1
  179. ui/static/static/schemas/__next._index.txt +2 -2
  180. ui/static/static/schemas/__next._tree.txt +2 -2
  181. ui/static/static/schemas/__next.schemas.__PAGE__.txt +1 -1
  182. ui/static/static/schemas/__next.schemas.txt +1 -1
  183. ui/static/static/schemas/index.html +1 -1
  184. ui/static/static/schemas/index.txt +2 -2
  185. ui/static/static/settings/__next._full.txt +2 -2
  186. ui/static/static/settings/__next._head.txt +1 -1
  187. ui/static/static/settings/__next._index.txt +2 -2
  188. ui/static/static/settings/__next._tree.txt +2 -2
  189. ui/static/static/settings/__next.settings.__PAGE__.txt +1 -1
  190. ui/static/static/settings/__next.settings.txt +1 -1
  191. ui/static/static/settings/index.html +1 -1
  192. ui/static/static/settings/index.txt +2 -2
  193. ui/static/static/static/.gitkeep +0 -0
  194. ui/static/static/static/404/index.html +1 -0
  195. ui/static/static/static/404.html +1 -0
  196. ui/static/static/static/__next.__PAGE__.txt +10 -0
  197. ui/static/static/static/__next._full.txt +30 -0
  198. ui/static/static/static/__next._head.txt +7 -0
  199. ui/static/static/static/__next._index.txt +9 -0
  200. ui/static/static/static/__next._tree.txt +2 -0
  201. ui/static/static/static/_next/static/chunks/222442f6da32302a.js +1 -0
  202. ui/static/static/static/_next/static/chunks/247eb132b7f7b574.js +1 -0
  203. ui/static/static/static/_next/static/chunks/297d55555b71baba.js +1 -0
  204. ui/static/static/static/_next/static/chunks/2ab439ce003cd691.js +1 -0
  205. ui/static/static/static/_next/static/chunks/414e77373f8ff61c.js +1 -0
  206. ui/static/static/static/_next/static/chunks/49ca65abd26ae49e.js +1 -0
  207. ui/static/static/static/_next/static/chunks/652ad0aa26265c47.js +2 -0
  208. ui/static/static/static/_next/static/chunks/9667e7a3d359eb39.js +1 -0
  209. ui/static/static/static/_next/static/chunks/9c23f44fff36548a.js +1 -0
  210. ui/static/static/static/_next/static/chunks/a6dad97d9634a72d.js +1 -0
  211. ui/static/static/static/_next/static/chunks/b32a0963684b9933.js +4 -0
  212. ui/static/static/static/_next/static/chunks/c69f6cba366bd988.js +1 -0
  213. ui/static/static/static/_next/static/chunks/db913959c675cea6.js +1 -0
  214. ui/static/static/static/_next/static/chunks/f061a4be97bfc3b3.js +1 -0
  215. ui/static/static/static/_next/static/chunks/f2e7afeab1178138.js +1 -0
  216. ui/static/static/static/_next/static/chunks/ff1a16fafef87110.js +1 -0
  217. ui/static/static/static/_next/static/chunks/turbopack-ffcb7ab6794027ef.js +3 -0
  218. ui/static/static/static/_next/static/tNTkVW6puVXC4bAm4WrHl/_buildManifest.js +11 -0
  219. ui/static/static/static/_next/static/tNTkVW6puVXC4bAm4WrHl/_ssgManifest.js +1 -0
  220. ui/static/static/static/_not-found/__next._full.txt +17 -0
  221. ui/static/static/static/_not-found/__next._head.txt +7 -0
  222. ui/static/static/static/_not-found/__next._index.txt +9 -0
  223. ui/static/static/static/_not-found/__next._not-found.__PAGE__.txt +5 -0
  224. ui/static/static/static/_not-found/__next._not-found.txt +4 -0
  225. ui/static/static/static/_not-found/__next._tree.txt +2 -0
  226. ui/static/static/static/_not-found/index.html +1 -0
  227. ui/static/static/static/_not-found/index.txt +17 -0
  228. ui/static/static/static/contracts/__next._full.txt +21 -0
  229. ui/static/static/static/contracts/__next._head.txt +7 -0
  230. ui/static/static/static/contracts/__next._index.txt +9 -0
  231. ui/static/static/static/contracts/__next._tree.txt +2 -0
  232. ui/static/static/static/contracts/__next.contracts.__PAGE__.txt +9 -0
  233. ui/static/static/static/contracts/__next.contracts.txt +4 -0
  234. ui/static/static/static/contracts/index.html +1 -0
  235. ui/static/static/static/contracts/index.txt +21 -0
  236. ui/static/static/static/documentation/__next._full.txt +21 -0
  237. ui/static/static/static/documentation/__next._head.txt +7 -0
  238. ui/static/static/static/documentation/__next._index.txt +9 -0
  239. ui/static/static/static/documentation/__next._tree.txt +2 -0
  240. ui/static/static/static/documentation/__next.documentation.__PAGE__.txt +9 -0
  241. ui/static/static/static/documentation/__next.documentation.txt +4 -0
  242. ui/static/static/static/documentation/index.html +93 -0
  243. ui/static/static/static/documentation/index.txt +21 -0
  244. ui/static/static/static/index.html +1 -0
  245. ui/static/static/static/index.txt +30 -0
  246. ui/static/static/static/metadata/__next._full.txt +21 -0
  247. ui/static/static/static/metadata/__next._head.txt +7 -0
  248. ui/static/static/static/metadata/__next._index.txt +9 -0
  249. ui/static/static/static/metadata/__next._tree.txt +2 -0
  250. ui/static/static/static/metadata/__next.metadata.__PAGE__.txt +9 -0
  251. ui/static/static/static/metadata/__next.metadata.txt +4 -0
  252. ui/static/static/static/metadata/index.html +1 -0
  253. ui/static/static/static/metadata/index.txt +21 -0
  254. ui/static/static/static/quality/__next._full.txt +21 -0
  255. ui/static/static/static/quality/__next._head.txt +7 -0
  256. ui/static/static/static/quality/__next._index.txt +9 -0
  257. ui/static/static/static/quality/__next._tree.txt +2 -0
  258. ui/static/static/static/quality/__next.quality.__PAGE__.txt +9 -0
  259. ui/static/static/static/quality/__next.quality.txt +4 -0
  260. ui/static/static/static/quality/index.html +2 -0
  261. ui/static/static/static/quality/index.txt +21 -0
  262. ui/static/static/static/rules/__next._full.txt +21 -0
  263. ui/static/static/static/rules/__next._head.txt +7 -0
  264. ui/static/static/static/rules/__next._index.txt +9 -0
  265. ui/static/static/static/rules/__next._tree.txt +2 -0
  266. ui/static/static/static/rules/__next.rules.__PAGE__.txt +9 -0
  267. ui/static/static/static/rules/__next.rules.txt +4 -0
  268. ui/static/static/static/rules/index.html +1 -0
  269. ui/static/static/static/rules/index.txt +21 -0
  270. ui/static/static/static/schemas/__next._full.txt +21 -0
  271. ui/static/static/static/schemas/__next._head.txt +7 -0
  272. ui/static/static/static/schemas/__next._index.txt +9 -0
  273. ui/static/static/static/schemas/__next._tree.txt +2 -0
  274. ui/static/static/static/schemas/__next.schemas.__PAGE__.txt +9 -0
  275. ui/static/static/static/schemas/__next.schemas.txt +4 -0
  276. ui/static/static/static/schemas/index.html +1 -0
  277. ui/static/static/static/schemas/index.txt +21 -0
  278. ui/static/static/static/settings/__next._full.txt +21 -0
  279. ui/static/static/static/settings/__next._head.txt +7 -0
  280. ui/static/static/static/settings/__next._index.txt +9 -0
  281. ui/static/static/static/settings/__next._tree.txt +2 -0
  282. ui/static/static/static/settings/__next.settings.__PAGE__.txt +9 -0
  283. ui/static/static/static/settings/__next.settings.txt +4 -0
  284. ui/static/static/static/settings/index.html +1 -0
  285. ui/static/static/static/settings/index.txt +21 -0
  286. ui/static/static/static/validation/__next._full.txt +21 -0
  287. ui/static/static/static/validation/__next._head.txt +7 -0
  288. ui/static/static/static/validation/__next._index.txt +9 -0
  289. ui/static/static/static/validation/__next._tree.txt +2 -0
  290. ui/static/static/static/validation/__next.validation.__PAGE__.txt +9 -0
  291. ui/static/static/static/validation/__next.validation.txt +4 -0
  292. ui/static/static/static/validation/index.html +1 -0
  293. ui/static/static/static/validation/index.txt +21 -0
  294. ui/static/static/validation/__next._full.txt +2 -2
  295. ui/static/static/validation/__next._head.txt +1 -1
  296. ui/static/static/validation/__next._index.txt +2 -2
  297. ui/static/static/validation/__next._tree.txt +2 -2
  298. ui/static/static/validation/__next.validation.__PAGE__.txt +1 -1
  299. ui/static/static/validation/__next.validation.txt +1 -1
  300. ui/static/static/validation/index.html +1 -1
  301. ui/static/static/validation/index.txt +2 -2
  302. ui/static/validation/__next._full.txt +2 -2
  303. ui/static/validation/__next._head.txt +1 -1
  304. ui/static/validation/__next._index.txt +1 -1
  305. ui/static/validation/__next._tree.txt +1 -1
  306. ui/static/validation/__next.validation.__PAGE__.txt +2 -2
  307. ui/static/validation/__next.validation.txt +1 -1
  308. ui/static/validation/index.html +1 -1
  309. ui/static/validation/index.txt +2 -2
  310. pycharter/data/templates/template_transform_advanced.yaml +0 -50
  311. pycharter/data/templates/template_transform_simple.yaml +0 -59
  312. pycharter-0.0.22.dist-info/RECORD +0 -358
  313. /pycharter/data/templates/{template_coercion_rules.yaml → contract/template_coercion_rules.yaml} +0 -0
  314. /pycharter/data/templates/{template_contract.yaml → contract/template_contract.yaml} +0 -0
  315. /pycharter/data/templates/{template_metadata.yaml → contract/template_metadata.yaml} +0 -0
  316. /pycharter/data/templates/{template_schema.yaml → contract/template_schema.yaml} +0 -0
  317. /pycharter/data/templates/{template_validation_rules.yaml → contract/template_validation_rules.yaml} +0 -0
  318. {pycharter-0.0.22.dist-info → pycharter-0.0.23.dist-info}/entry_points.txt +0 -0
  319. {pycharter-0.0.22.dist-info → pycharter-0.0.23.dist-info}/licenses/LICENSE +0 -0
  320. {pycharter-0.0.22.dist-info → pycharter-0.0.23.dist-info}/top_level.txt +0 -0
  321. /ui/static/_next/static/{0rYA78L88aUyD2Uh38hhX → 2gKjNv6YvE6BcIdFthBLs}/_buildManifest.js +0 -0
  322. /ui/static/_next/static/{0rYA78L88aUyD2Uh38hhX → 2gKjNv6YvE6BcIdFthBLs}/_ssgManifest.js +0 -0
  323. /ui/static/static/_next/static/{tNTkVW6puVXC4bAm4WrHl → 0rYA78L88aUyD2Uh38hhX}/_buildManifest.js +0 -0
  324. /ui/static/static/_next/static/{tNTkVW6puVXC4bAm4WrHl → 0rYA78L88aUyD2Uh38hhX}/_ssgManifest.js +0 -0
  325. /ui/static/{_next → static/_next}/static/chunks/c4fa4f4114b7c352.js +0 -0
  326. /ui/static/static/{_next → static/_next}/static/chunks/4e310fe5005770a3.css +0 -0
  327. /ui/static/{_next → static/static/_next}/static/chunks/5e04d10c4a7b58a3.js +0 -0
  328. /ui/static/static/{_next → static/_next}/static/chunks/5fc14c00a2779dc5.js +0 -0
  329. /ui/static/{_next → static/static/_next}/static/chunks/75d88a058d8ffaa6.js +0 -0
  330. /ui/static/{_next → static/static/_next}/static/chunks/8c89634cf6bad76f.js +0 -0
  331. /ui/static/static/{_next → static/_next}/static/chunks/b584574fdc8ab13e.js +0 -0
  332. /ui/static/static/{_next → static/_next}/static/chunks/d5989c94d3614b3a.js +0 -0
ui/static/404/index.html CHANGED
@@ -1 +1 @@
1
- <!DOCTYPE html><!--0rYA78L88aUyD2Uh38hhX--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/d2363397e1b2bcab.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/414e77373f8ff61c.js"/><script src="/_next/static/chunks/b32a0963684b9933.js" async=""></script><script src="/_next/static/chunks/652ad0aa26265c47.js" async=""></script><script src="/_next/static/chunks/9c23f44fff36548a.js" async=""></script><script src="/_next/static/chunks/turbopack-ffcb7ab6794027ef.js" async=""></script><script src="/_next/static/chunks/f061a4be97bfc3b3.js" async=""></script><script src="/_next/static/chunks/247eb132b7f7b574.js" async=""></script><script src="/_next/static/chunks/f2e7afeab1178138.js" async=""></script><script src="/_next/static/chunks/c69f6cba366bd988.js" async=""></script><script src="/_next/static/chunks/297d55555b71baba.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>PyCharter - Data Contract Management</title><meta name="description" content="Data Contract Management and Validation"/><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body class="antialiased"><div hidden=""><!--$--><!--/$--></div><div class="min-h-screen flex flex-col"><nav class="border-b bg-background sticky top-0 z-50"><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"><div class="flex justify-between h-16"><div class="flex"><a class="flex items-center" href="/"><span class="text-xl font-bold text-primary">PyCharter</span></a><div class="hidden sm:ml-6 sm:flex sm:space-x-8"><a class="inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium transition-colors border-transparent text-muted-foreground hover:border-gray-300 hover:text-foreground" href="/contracts/">Contracts</a><a class="inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium transition-colors border-transparent text-muted-foreground hover:border-gray-300 hover:text-foreground" href="/schemas/">Schemas</a><a class="inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium transition-colors border-transparent text-muted-foreground hover:border-gray-300 hover:text-foreground" href="/metadata/">Metadata</a><a class="inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium transition-colors border-transparent text-muted-foreground hover:border-gray-300 hover:text-foreground" href="/rules/">Rules</a><a class="inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium transition-colors border-transparent text-muted-foreground hover:border-gray-300 hover:text-foreground" href="/validation/">Validation</a><a class="inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium transition-colors border-transparent text-muted-foreground hover:border-gray-300 hover:text-foreground" href="/quality/">Quality</a><a class="inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium transition-colors border-transparent text-muted-foreground hover:border-gray-300 hover:text-foreground" href="/documentation/">Documentation</a></div></div><div class="flex items-center gap-2"><div class="hidden sm:block relative"><button type="button" class="inline-flex items-center gap-2 px-3 py-2 rounded-md text-sm font-medium text-muted-foreground hover:text-foreground hover:bg-muted focus:outline-none focus:ring-2 focus:ring-inset focus:ring-primary transition-colors" aria-expanded="false" aria-haspopup="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-user h-5 w-5"><path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle></svg><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down h-4 w-4 transition-transform"><path d="m6 9 6 6 6-6"></path></svg></button></div><div class="flex items-center sm:hidden"><button type="button" class="inline-flex items-center justify-center p-2 rounded-md text-muted-foreground hover:text-foreground hover:bg-muted focus:outline-none focus:ring-2 focus:ring-inset focus:ring-primary" aria-controls="mobile-menu" aria-expanded="false"><span class="sr-only">Open main menu</span><svg class="block h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"></path></svg></button></div></div></div></div></nav><main class="flex-1" style="min-height:0;overflow:hidden;position:relative"><!--$--><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><!--/$--></main></div><script src="/_next/static/chunks/414e77373f8ff61c.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[46417,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"default\"]\n3:I[88589,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"default\"]\n4:I[39756,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"default\"]\n5:I[58298,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\",\"/_next/static/chunks/c69f6cba366bd988.js\"],\"default\"]\n6:I[37457,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"default\"]\n7:I[97367,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"OutletBoundary\"]\n8:\"$Sreact.suspense\"\na:I[61246,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\",\"/_next/static/chunks/297d55555b71baba.js\"],\"PageLoading\"]\nb:I[97367,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"ViewportBoundary\"]\nd:I[97367,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"MetadataBoundary\"]\nf:I[68027,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"default\"]\n:HL[\"/_next/static/chunks/d2363397e1b2bcab.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"0rYA78L88aUyD2Uh38hhX\",\"c\":[\"\",\"_not-found\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/d2363397e1b2bcab.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/247eb132b7f7b574.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/f2e7afeab1178138.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"className\":\"antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"min-h-screen flex flex-col\",\"children\":[[\"$\",\"$L3\",null,{}],[\"$\",\"main\",null,{\"className\":\"flex-1\",\"style\":{\"minHeight\":0,\"overflow\":\"hidden\",\"position\":\"relative\"},\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$5\",\"errorStyles\":[],\"errorScripts\":[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/c69f6cba366bd988.js\",\"async\":true}]],\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@9\"}]}]]}],{},null,false,false]},null,false,false]},[[\"$\",\"$La\",\"l\",{}],[],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/297d55555b71baba.js\",\"async\":true}]]],false,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$Lb\",null,{\"children\":\"$@c\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.Metadata\",\"children\":\"$@e\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"c:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"e:[[\"$\",\"title\",\"0\",{\"children\":\"PyCharter - Data Contract Management\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Data Contract Management and Validation\"}]]\n9:null\n"])</script></body></html>
1
+ <!DOCTYPE html><!--2gKjNv6YvE6BcIdFthBLs--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/d2363397e1b2bcab.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/414e77373f8ff61c.js"/><script src="/_next/static/chunks/b32a0963684b9933.js" async=""></script><script src="/_next/static/chunks/652ad0aa26265c47.js" async=""></script><script src="/_next/static/chunks/9c23f44fff36548a.js" async=""></script><script src="/_next/static/chunks/turbopack-ffcb7ab6794027ef.js" async=""></script><script src="/_next/static/chunks/f061a4be97bfc3b3.js" async=""></script><script src="/_next/static/chunks/247eb132b7f7b574.js" async=""></script><script src="/_next/static/chunks/f2e7afeab1178138.js" async=""></script><script src="/_next/static/chunks/c69f6cba366bd988.js" async=""></script><script src="/_next/static/chunks/297d55555b71baba.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>PyCharter - Data Contract Management</title><meta name="description" content="Data Contract Management and Validation"/><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body class="antialiased"><div hidden=""><!--$--><!--/$--></div><div class="min-h-screen flex flex-col"><nav class="border-b bg-background sticky top-0 z-50"><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"><div class="flex justify-between h-16"><div class="flex"><a class="flex items-center" href="/"><span class="text-xl font-bold text-primary">PyCharter</span></a><div class="hidden sm:ml-6 sm:flex sm:space-x-8"><a class="inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium transition-colors border-transparent text-muted-foreground hover:border-gray-300 hover:text-foreground" href="/contracts/">Contracts</a><a class="inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium transition-colors border-transparent text-muted-foreground hover:border-gray-300 hover:text-foreground" href="/schemas/">Schemas</a><a class="inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium transition-colors border-transparent text-muted-foreground hover:border-gray-300 hover:text-foreground" href="/metadata/">Metadata</a><a class="inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium transition-colors border-transparent text-muted-foreground hover:border-gray-300 hover:text-foreground" href="/rules/">Rules</a><a class="inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium transition-colors border-transparent text-muted-foreground hover:border-gray-300 hover:text-foreground" href="/validation/">Validation</a><a class="inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium transition-colors border-transparent text-muted-foreground hover:border-gray-300 hover:text-foreground" href="/quality/">Quality</a><a class="inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium transition-colors border-transparent text-muted-foreground hover:border-gray-300 hover:text-foreground" href="/documentation/">Documentation</a></div></div><div class="flex items-center gap-2"><div class="hidden sm:block relative"><button type="button" class="inline-flex items-center gap-2 px-3 py-2 rounded-md text-sm font-medium text-muted-foreground hover:text-foreground hover:bg-muted focus:outline-none focus:ring-2 focus:ring-inset focus:ring-primary transition-colors" aria-expanded="false" aria-haspopup="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-user h-5 w-5"><path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle></svg><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down h-4 w-4 transition-transform"><path d="m6 9 6 6 6-6"></path></svg></button></div><div class="flex items-center sm:hidden"><button type="button" class="inline-flex items-center justify-center p-2 rounded-md text-muted-foreground hover:text-foreground hover:bg-muted focus:outline-none focus:ring-2 focus:ring-inset focus:ring-primary" aria-controls="mobile-menu" aria-expanded="false"><span class="sr-only">Open main menu</span><svg class="block h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"></path></svg></button></div></div></div></div></nav><main class="flex-1" style="min-height:0;overflow:hidden;position:relative"><!--$--><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><!--/$--></main></div><script src="/_next/static/chunks/414e77373f8ff61c.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[46417,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"default\"]\n3:I[88589,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"default\"]\n4:I[39756,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"default\"]\n5:I[58298,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\",\"/_next/static/chunks/c69f6cba366bd988.js\"],\"default\"]\n6:I[37457,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"default\"]\n7:I[97367,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"OutletBoundary\"]\n8:\"$Sreact.suspense\"\na:I[61246,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\",\"/_next/static/chunks/297d55555b71baba.js\"],\"PageLoading\"]\nb:I[97367,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"ViewportBoundary\"]\nd:I[97367,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"MetadataBoundary\"]\nf:I[68027,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"default\"]\n:HL[\"/_next/static/chunks/d2363397e1b2bcab.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"2gKjNv6YvE6BcIdFthBLs\",\"c\":[\"\",\"_not-found\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/d2363397e1b2bcab.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/247eb132b7f7b574.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/f2e7afeab1178138.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"className\":\"antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"min-h-screen flex flex-col\",\"children\":[[\"$\",\"$L3\",null,{}],[\"$\",\"main\",null,{\"className\":\"flex-1\",\"style\":{\"minHeight\":0,\"overflow\":\"hidden\",\"position\":\"relative\"},\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$5\",\"errorStyles\":[],\"errorScripts\":[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/c69f6cba366bd988.js\",\"async\":true}]],\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@9\"}]}]]}],{},null,false,false]},null,false,false]},[[\"$\",\"$La\",\"l\",{}],[],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/297d55555b71baba.js\",\"async\":true}]]],false,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$Lb\",null,{\"children\":\"$@c\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.Metadata\",\"children\":\"$@e\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"c:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"e:[[\"$\",\"title\",\"0\",{\"children\":\"PyCharter - Data Contract Management\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Data Contract Management and Validation\"}]]\n9:null\n"])</script></body></html>
ui/static/404.html CHANGED
@@ -1 +1 @@
1
- <!DOCTYPE html><!--0rYA78L88aUyD2Uh38hhX--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/d2363397e1b2bcab.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/414e77373f8ff61c.js"/><script src="/_next/static/chunks/b32a0963684b9933.js" async=""></script><script src="/_next/static/chunks/652ad0aa26265c47.js" async=""></script><script src="/_next/static/chunks/9c23f44fff36548a.js" async=""></script><script src="/_next/static/chunks/turbopack-ffcb7ab6794027ef.js" async=""></script><script src="/_next/static/chunks/f061a4be97bfc3b3.js" async=""></script><script src="/_next/static/chunks/247eb132b7f7b574.js" async=""></script><script src="/_next/static/chunks/f2e7afeab1178138.js" async=""></script><script src="/_next/static/chunks/c69f6cba366bd988.js" async=""></script><script src="/_next/static/chunks/297d55555b71baba.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>PyCharter - Data Contract Management</title><meta name="description" content="Data Contract Management and Validation"/><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body class="antialiased"><div hidden=""><!--$--><!--/$--></div><div class="min-h-screen flex flex-col"><nav class="border-b bg-background sticky top-0 z-50"><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"><div class="flex justify-between h-16"><div class="flex"><a class="flex items-center" href="/"><span class="text-xl font-bold text-primary">PyCharter</span></a><div class="hidden sm:ml-6 sm:flex sm:space-x-8"><a class="inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium transition-colors border-transparent text-muted-foreground hover:border-gray-300 hover:text-foreground" href="/contracts/">Contracts</a><a class="inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium transition-colors border-transparent text-muted-foreground hover:border-gray-300 hover:text-foreground" href="/schemas/">Schemas</a><a class="inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium transition-colors border-transparent text-muted-foreground hover:border-gray-300 hover:text-foreground" href="/metadata/">Metadata</a><a class="inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium transition-colors border-transparent text-muted-foreground hover:border-gray-300 hover:text-foreground" href="/rules/">Rules</a><a class="inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium transition-colors border-transparent text-muted-foreground hover:border-gray-300 hover:text-foreground" href="/validation/">Validation</a><a class="inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium transition-colors border-transparent text-muted-foreground hover:border-gray-300 hover:text-foreground" href="/quality/">Quality</a><a class="inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium transition-colors border-transparent text-muted-foreground hover:border-gray-300 hover:text-foreground" href="/documentation/">Documentation</a></div></div><div class="flex items-center gap-2"><div class="hidden sm:block relative"><button type="button" class="inline-flex items-center gap-2 px-3 py-2 rounded-md text-sm font-medium text-muted-foreground hover:text-foreground hover:bg-muted focus:outline-none focus:ring-2 focus:ring-inset focus:ring-primary transition-colors" aria-expanded="false" aria-haspopup="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-user h-5 w-5"><path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle></svg><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down h-4 w-4 transition-transform"><path d="m6 9 6 6 6-6"></path></svg></button></div><div class="flex items-center sm:hidden"><button type="button" class="inline-flex items-center justify-center p-2 rounded-md text-muted-foreground hover:text-foreground hover:bg-muted focus:outline-none focus:ring-2 focus:ring-inset focus:ring-primary" aria-controls="mobile-menu" aria-expanded="false"><span class="sr-only">Open main menu</span><svg class="block h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"></path></svg></button></div></div></div></div></nav><main class="flex-1" style="min-height:0;overflow:hidden;position:relative"><!--$--><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><!--/$--></main></div><script src="/_next/static/chunks/414e77373f8ff61c.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[46417,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"default\"]\n3:I[88589,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"default\"]\n4:I[39756,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"default\"]\n5:I[58298,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\",\"/_next/static/chunks/c69f6cba366bd988.js\"],\"default\"]\n6:I[37457,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"default\"]\n7:I[97367,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"OutletBoundary\"]\n8:\"$Sreact.suspense\"\na:I[61246,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\",\"/_next/static/chunks/297d55555b71baba.js\"],\"PageLoading\"]\nb:I[97367,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"ViewportBoundary\"]\nd:I[97367,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"MetadataBoundary\"]\nf:I[68027,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"default\"]\n:HL[\"/_next/static/chunks/d2363397e1b2bcab.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"0rYA78L88aUyD2Uh38hhX\",\"c\":[\"\",\"_not-found\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/d2363397e1b2bcab.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/247eb132b7f7b574.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/f2e7afeab1178138.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"className\":\"antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"min-h-screen flex flex-col\",\"children\":[[\"$\",\"$L3\",null,{}],[\"$\",\"main\",null,{\"className\":\"flex-1\",\"style\":{\"minHeight\":0,\"overflow\":\"hidden\",\"position\":\"relative\"},\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$5\",\"errorStyles\":[],\"errorScripts\":[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/c69f6cba366bd988.js\",\"async\":true}]],\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@9\"}]}]]}],{},null,false,false]},null,false,false]},[[\"$\",\"$La\",\"l\",{}],[],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/297d55555b71baba.js\",\"async\":true}]]],false,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$Lb\",null,{\"children\":\"$@c\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.Metadata\",\"children\":\"$@e\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"c:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"e:[[\"$\",\"title\",\"0\",{\"children\":\"PyCharter - Data Contract Management\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Data Contract Management and Validation\"}]]\n9:null\n"])</script></body></html>
1
+ <!DOCTYPE html><!--2gKjNv6YvE6BcIdFthBLs--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/d2363397e1b2bcab.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/414e77373f8ff61c.js"/><script src="/_next/static/chunks/b32a0963684b9933.js" async=""></script><script src="/_next/static/chunks/652ad0aa26265c47.js" async=""></script><script src="/_next/static/chunks/9c23f44fff36548a.js" async=""></script><script src="/_next/static/chunks/turbopack-ffcb7ab6794027ef.js" async=""></script><script src="/_next/static/chunks/f061a4be97bfc3b3.js" async=""></script><script src="/_next/static/chunks/247eb132b7f7b574.js" async=""></script><script src="/_next/static/chunks/f2e7afeab1178138.js" async=""></script><script src="/_next/static/chunks/c69f6cba366bd988.js" async=""></script><script src="/_next/static/chunks/297d55555b71baba.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>PyCharter - Data Contract Management</title><meta name="description" content="Data Contract Management and Validation"/><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body class="antialiased"><div hidden=""><!--$--><!--/$--></div><div class="min-h-screen flex flex-col"><nav class="border-b bg-background sticky top-0 z-50"><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"><div class="flex justify-between h-16"><div class="flex"><a class="flex items-center" href="/"><span class="text-xl font-bold text-primary">PyCharter</span></a><div class="hidden sm:ml-6 sm:flex sm:space-x-8"><a class="inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium transition-colors border-transparent text-muted-foreground hover:border-gray-300 hover:text-foreground" href="/contracts/">Contracts</a><a class="inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium transition-colors border-transparent text-muted-foreground hover:border-gray-300 hover:text-foreground" href="/schemas/">Schemas</a><a class="inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium transition-colors border-transparent text-muted-foreground hover:border-gray-300 hover:text-foreground" href="/metadata/">Metadata</a><a class="inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium transition-colors border-transparent text-muted-foreground hover:border-gray-300 hover:text-foreground" href="/rules/">Rules</a><a class="inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium transition-colors border-transparent text-muted-foreground hover:border-gray-300 hover:text-foreground" href="/validation/">Validation</a><a class="inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium transition-colors border-transparent text-muted-foreground hover:border-gray-300 hover:text-foreground" href="/quality/">Quality</a><a class="inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium transition-colors border-transparent text-muted-foreground hover:border-gray-300 hover:text-foreground" href="/documentation/">Documentation</a></div></div><div class="flex items-center gap-2"><div class="hidden sm:block relative"><button type="button" class="inline-flex items-center gap-2 px-3 py-2 rounded-md text-sm font-medium text-muted-foreground hover:text-foreground hover:bg-muted focus:outline-none focus:ring-2 focus:ring-inset focus:ring-primary transition-colors" aria-expanded="false" aria-haspopup="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-user h-5 w-5"><path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle></svg><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down h-4 w-4 transition-transform"><path d="m6 9 6 6 6-6"></path></svg></button></div><div class="flex items-center sm:hidden"><button type="button" class="inline-flex items-center justify-center p-2 rounded-md text-muted-foreground hover:text-foreground hover:bg-muted focus:outline-none focus:ring-2 focus:ring-inset focus:ring-primary" aria-controls="mobile-menu" aria-expanded="false"><span class="sr-only">Open main menu</span><svg class="block h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"></path></svg></button></div></div></div></div></nav><main class="flex-1" style="min-height:0;overflow:hidden;position:relative"><!--$--><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><!--/$--></main></div><script src="/_next/static/chunks/414e77373f8ff61c.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[46417,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"default\"]\n3:I[88589,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"default\"]\n4:I[39756,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"default\"]\n5:I[58298,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\",\"/_next/static/chunks/c69f6cba366bd988.js\"],\"default\"]\n6:I[37457,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"default\"]\n7:I[97367,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"OutletBoundary\"]\n8:\"$Sreact.suspense\"\na:I[61246,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\",\"/_next/static/chunks/297d55555b71baba.js\"],\"PageLoading\"]\nb:I[97367,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"ViewportBoundary\"]\nd:I[97367,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"MetadataBoundary\"]\nf:I[68027,[\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"/_next/static/chunks/247eb132b7f7b574.js\",\"/_next/static/chunks/f2e7afeab1178138.js\"],\"default\"]\n:HL[\"/_next/static/chunks/d2363397e1b2bcab.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"2gKjNv6YvE6BcIdFthBLs\",\"c\":[\"\",\"_not-found\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/d2363397e1b2bcab.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/f061a4be97bfc3b3.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/247eb132b7f7b574.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/f2e7afeab1178138.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"className\":\"antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"min-h-screen flex flex-col\",\"children\":[[\"$\",\"$L3\",null,{}],[\"$\",\"main\",null,{\"className\":\"flex-1\",\"style\":{\"minHeight\":0,\"overflow\":\"hidden\",\"position\":\"relative\"},\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$5\",\"errorStyles\":[],\"errorScripts\":[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/c69f6cba366bd988.js\",\"async\":true}]],\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@9\"}]}]]}],{},null,false,false]},null,false,false]},[[\"$\",\"$La\",\"l\",{}],[],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/297d55555b71baba.js\",\"async\":true}]]],false,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$Lb\",null,{\"children\":\"$@c\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.Metadata\",\"children\":\"$@e\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"c:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"e:[[\"$\",\"title\",\"0\",{\"children\":\"PyCharter - Data Contract Management\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Data Contract Management and Validation\"}]]\n9:null\n"])</script></body></html>
@@ -2,7 +2,7 @@
2
2
  2:I[22016,["/_next/static/chunks/f061a4be97bfc3b3.js","/_next/static/chunks/f2e7afeab1178138.js"],""]
3
3
  7:I[97367,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/247eb132b7f7b574.js"],"OutletBoundary"]
4
4
  8:"$Sreact.suspense"
5
- 0:{"buildId":"0rYA78L88aUyD2Uh38hhX","rsc":["$","$1","c",{"children":[["$","div",null,{"className":"min-h-screen bg-background","children":[["$","div",null,{"className":"border-b","children":["$","div",null,{"className":"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-16","children":["$","div",null,{"className":"text-center","children":[["$","h1",null,{"className":"text-4xl font-bold tracking-tight text-foreground sm:text-5xl md:text-6xl","children":"PyCharter"}],["$","p",null,{"className":"mt-6 text-lg leading-8 text-muted-foreground max-w-2xl mx-auto","children":"Data Contract Management and Validation Platform"}],["$","div",null,{"className":"mt-10 flex items-center justify-center gap-x-6","children":[["$","$L2",null,{"href":"/schemas","children":["$","button",null,{"className":"inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary/90 h-11 rounded-md px-8","children":"Get Started"}]}],["$","$L2",null,{"href":"/contracts","children":["$","button",null,{"className":"inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-11 rounded-md px-8","children":"View Contracts"}]}]]}]]}]}]}],["$","div",null,{"className":"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-16","children":["$","div",null,{"className":"grid grid-cols-1 md:grid-cols-3 gap-6","children":[["$","div",null,{"className":"rounded-lg border bg-card text-card-foreground shadow-sm","children":[["$","div",null,{"className":"flex flex-col space-y-1.5 p-6","children":[["$","svg",null,{"xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-database h-8 w-8 text-primary mb-2","children":[["$","ellipse","msslwz",{"cx":"12","cy":"5","rx":"9","ry":"3"}],["$","path","1wlel7",{"d":"M3 5V19A9 3 0 0 0 21 19V5"}],["$","path","mv7ke4",{"d":"M3 12A9 3 0 0 0 21 12"}],"$undefined"]}],["$","h3",null,{"className":"text-2xl font-semibold leading-none tracking-tight","children":"Schemas"}],["$","p",null,{"className":"text-sm text-muted-foreground","children":"Manage and version your data schemas. Store, retrieve, and track schema evolution."}]]}],["$","div",null,{"className":"p-6 pt-0","children":["$","$L2",null,{"href":"/schemas","children":["$","button",null,{"className":"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-10 px-4 py-2 w-full","children":"View Schemas"}]}]}]]}],["$","div",null,{"className":"rounded-lg border bg-card text-card-foreground shadow-sm","children":[["$","div",null,{"className":"flex flex-col space-y-1.5 p-6","children":[["$","svg",null,{"xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-file-text h-8 w-8 text-primary mb-2","children":[["$","path","1rqfz7",{"d":"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"}],["$","path","tnqrlb",{"d":"M14 2v4a2 2 0 0 0 2 2h4"}],["$","path","b1mrlr",{"d":"M10 9H8"}],["$","path","t4e002",{"d":"M16 13H8"}],["$","path","z1uh3a",{"d":"M16 17H8"}],"$undefined"]}],["$","h3",null,{"className":"text-2xl font-semibold leading-none tracking-tight","children":"Contracts"}],"$L3"]}],"$L4"]}],"$L5"]}]}]]}],null,"$L6"]}],"loading":null,"isPartial":false}
5
+ 0:{"buildId":"2gKjNv6YvE6BcIdFthBLs","rsc":["$","$1","c",{"children":[["$","div",null,{"className":"min-h-screen bg-background","children":[["$","div",null,{"className":"border-b","children":["$","div",null,{"className":"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-16","children":["$","div",null,{"className":"text-center","children":[["$","h1",null,{"className":"text-4xl font-bold tracking-tight text-foreground sm:text-5xl md:text-6xl","children":"PyCharter"}],["$","p",null,{"className":"mt-6 text-lg leading-8 text-muted-foreground max-w-2xl mx-auto","children":"Data Contract Management and Validation Platform"}],["$","div",null,{"className":"mt-10 flex items-center justify-center gap-x-6","children":[["$","$L2",null,{"href":"/schemas","children":["$","button",null,{"className":"inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary/90 h-11 rounded-md px-8","children":"Get Started"}]}],["$","$L2",null,{"href":"/contracts","children":["$","button",null,{"className":"inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-11 rounded-md px-8","children":"View Contracts"}]}]]}]]}]}]}],["$","div",null,{"className":"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-16","children":["$","div",null,{"className":"grid grid-cols-1 md:grid-cols-3 gap-6","children":[["$","div",null,{"className":"rounded-lg border bg-card text-card-foreground shadow-sm","children":[["$","div",null,{"className":"flex flex-col space-y-1.5 p-6","children":[["$","svg",null,{"xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-database h-8 w-8 text-primary mb-2","children":[["$","ellipse","msslwz",{"cx":"12","cy":"5","rx":"9","ry":"3"}],["$","path","1wlel7",{"d":"M3 5V19A9 3 0 0 0 21 19V5"}],["$","path","mv7ke4",{"d":"M3 12A9 3 0 0 0 21 12"}],"$undefined"]}],["$","h3",null,{"className":"text-2xl font-semibold leading-none tracking-tight","children":"Schemas"}],["$","p",null,{"className":"text-sm text-muted-foreground","children":"Manage and version your data schemas. Store, retrieve, and track schema evolution."}]]}],["$","div",null,{"className":"p-6 pt-0","children":["$","$L2",null,{"href":"/schemas","children":["$","button",null,{"className":"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-10 px-4 py-2 w-full","children":"View Schemas"}]}]}]]}],["$","div",null,{"className":"rounded-lg border bg-card text-card-foreground shadow-sm","children":[["$","div",null,{"className":"flex flex-col space-y-1.5 p-6","children":[["$","svg",null,{"xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-file-text h-8 w-8 text-primary mb-2","children":[["$","path","1rqfz7",{"d":"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"}],["$","path","tnqrlb",{"d":"M14 2v4a2 2 0 0 0 2 2h4"}],["$","path","b1mrlr",{"d":"M10 9H8"}],["$","path","t4e002",{"d":"M16 13H8"}],["$","path","z1uh3a",{"d":"M16 17H8"}],"$undefined"]}],["$","h3",null,{"className":"text-2xl font-semibold leading-none tracking-tight","children":"Contracts"}],"$L3"]}],"$L4"]}],"$L5"]}]}]]}],null,"$L6"]}],"loading":null,"isPartial":false}
6
6
  3:["$","p",null,{"className":"text-sm text-muted-foreground","children":"Parse and build data contracts. Decompose contracts into components and reconstruct them."}]
7
7
  4:["$","div",null,{"className":"p-6 pt-0","children":["$","$L2",null,{"href":"/contracts","children":["$","button",null,{"className":"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-10 px-4 py-2 w-full","children":"Manage Contracts"}]}]}]
8
8
  5:["$","div",null,{"className":"rounded-lg border bg-card text-card-foreground shadow-sm","children":[["$","div",null,{"className":"flex flex-col space-y-1.5 p-6","children":[["$","svg",null,{"xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-circle-check h-8 w-8 text-primary mb-2","children":[["$","circle","1mglay",{"cx":"12","cy":"12","r":"10"}],["$","path","dzmm74",{"d":"m9 12 2 2 4-4"}],"$undefined"]}],["$","h3",null,{"className":"text-2xl font-semibold leading-none tracking-tight","children":"Validation"}],["$","p",null,{"className":"text-sm text-muted-foreground","children":"Validate data against schemas. Check compliance and get detailed error reports."}]]}],["$","div",null,{"className":"p-6 pt-0","children":["$","$L2",null,{"href":"/validation","children":["$","button",null,{"className":"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-10 px-4 py-2 w-full","children":"Validate Data"}]}]}]]}]
@@ -7,7 +7,7 @@
7
7
  7:I[22016,["/_next/static/chunks/f061a4be97bfc3b3.js","/_next/static/chunks/f2e7afeab1178138.js"],""]
8
8
  14:I[68027,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/247eb132b7f7b574.js"],"default"]
9
9
  :HL["/_next/static/chunks/d2363397e1b2bcab.css","style"]
10
- 0:{"P":null,"b":"0rYA78L88aUyD2Uh38hhX","c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/d2363397e1b2bcab.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/f061a4be97bfc3b3.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/f2e7afeab1178138.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"antialiased","children":["$","$L2",null,{"children":["$","div",null,{"className":"min-h-screen flex flex-col","children":[["$","$L3",null,{}],["$","main",null,{"className":"flex-1","style":{"minHeight":0,"overflow":"hidden","position":"relative"},"children":["$","$L4",null,{"parallelRouterKey":"children","error":"$5","errorStyles":[],"errorScripts":[["$","script","script-0",{"src":"/_next/static/chunks/c69f6cba366bd988.js","async":true}]],"template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"className":"min-h-screen bg-background","children":[["$","div",null,{"className":"border-b","children":["$","div",null,{"className":"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-16","children":["$","div",null,{"className":"text-center","children":[["$","h1",null,{"className":"text-4xl font-bold tracking-tight text-foreground sm:text-5xl md:text-6xl","children":"PyCharter"}],["$","p",null,{"className":"mt-6 text-lg leading-8 text-muted-foreground max-w-2xl mx-auto","children":"Data Contract Management and Validation Platform"}],["$","div",null,{"className":"mt-10 flex items-center justify-center gap-x-6","children":[["$","$L7",null,{"href":"/schemas","children":["$","button",null,{"className":"inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary/90 h-11 rounded-md px-8","ref":"$undefined","children":"Get Started"}]}],["$","$L7",null,{"href":"/contracts","children":["$","button",null,{"className":"inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-11 rounded-md px-8","ref":"$undefined","children":"View Contracts"}]}]]}]]}]}]}],["$","div",null,{"className":"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-16","children":["$","div",null,{"className":"grid grid-cols-1 md:grid-cols-3 gap-6","children":[["$","div",null,{"ref":"$undefined","className":"rounded-lg border bg-card text-card-foreground shadow-sm","children":[["$","div",null,{"ref":"$undefined","className":"flex flex-col space-y-1.5 p-6","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-database h-8 w-8 text-primary mb-2","children":["$L8","$L9","$La","$undefined"]}],"$Lb","$Lc"]}],"$Ld"]}],"$Le","$Lf"]}]}]]}],null,"$L10"]}],{},null,false,false]},["$L11",[],["$L12"]],false,false],"$L13",false]],"m":"$undefined","G":["$14",[]],"S":true}
10
+ 0:{"P":null,"b":"2gKjNv6YvE6BcIdFthBLs","c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/d2363397e1b2bcab.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/f061a4be97bfc3b3.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/f2e7afeab1178138.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"antialiased","children":["$","$L2",null,{"children":["$","div",null,{"className":"min-h-screen flex flex-col","children":[["$","$L3",null,{}],["$","main",null,{"className":"flex-1","style":{"minHeight":0,"overflow":"hidden","position":"relative"},"children":["$","$L4",null,{"parallelRouterKey":"children","error":"$5","errorStyles":[],"errorScripts":[["$","script","script-0",{"src":"/_next/static/chunks/c69f6cba366bd988.js","async":true}]],"template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"className":"min-h-screen bg-background","children":[["$","div",null,{"className":"border-b","children":["$","div",null,{"className":"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-16","children":["$","div",null,{"className":"text-center","children":[["$","h1",null,{"className":"text-4xl font-bold tracking-tight text-foreground sm:text-5xl md:text-6xl","children":"PyCharter"}],["$","p",null,{"className":"mt-6 text-lg leading-8 text-muted-foreground max-w-2xl mx-auto","children":"Data Contract Management and Validation Platform"}],["$","div",null,{"className":"mt-10 flex items-center justify-center gap-x-6","children":[["$","$L7",null,{"href":"/schemas","children":["$","button",null,{"className":"inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary/90 h-11 rounded-md px-8","ref":"$undefined","children":"Get Started"}]}],["$","$L7",null,{"href":"/contracts","children":["$","button",null,{"className":"inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-11 rounded-md px-8","ref":"$undefined","children":"View Contracts"}]}]]}]]}]}]}],["$","div",null,{"className":"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-16","children":["$","div",null,{"className":"grid grid-cols-1 md:grid-cols-3 gap-6","children":[["$","div",null,{"ref":"$undefined","className":"rounded-lg border bg-card text-card-foreground shadow-sm","children":[["$","div",null,{"ref":"$undefined","className":"flex flex-col space-y-1.5 p-6","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-database h-8 w-8 text-primary mb-2","children":["$L8","$L9","$La","$undefined"]}],"$Lb","$Lc"]}],"$Ld"]}],"$Le","$Lf"]}]}]]}],null,"$L10"]}],{},null,false,false]},["$L11",[],["$L12"]],false,false],"$L13",false]],"m":"$undefined","G":["$14",[]],"S":true}
11
11
  15:I[97367,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/247eb132b7f7b574.js"],"OutletBoundary"]
12
12
  16:"$Sreact.suspense"
13
13
  18:I[61246,["/_next/static/chunks/f061a4be97bfc3b3.js","/_next/static/chunks/f2e7afeab1178138.js","/_next/static/chunks/297d55555b71baba.js"],"PageLoading"]
@@ -2,6 +2,6 @@
2
2
  2:I[97367,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/247eb132b7f7b574.js"],"ViewportBoundary"]
3
3
  4:I[97367,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/247eb132b7f7b574.js"],"MetadataBoundary"]
4
4
  5:"$Sreact.suspense"
5
- 0:{"buildId":"0rYA78L88aUyD2Uh38hhX","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":"$@3"}],["$","div",null,{"hidden":true,"children":["$","$L4",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$@6"}]}]}],null]}],"loading":null,"isPartial":false}
5
+ 0:{"buildId":"2gKjNv6YvE6BcIdFthBLs","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":"$@3"}],["$","div",null,{"hidden":true,"children":["$","$L4",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$@6"}]}]}],null]}],"loading":null,"isPartial":false}
6
6
  3:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
7
7
  6:[["$","title","0",{"children":"PyCharter - Data Contract Management"}],["$","meta","1",{"name":"description","content":"Data Contract Management and Validation"}]]
@@ -6,4 +6,4 @@
6
6
  6:I[37457,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/247eb132b7f7b574.js"],"default"]
7
7
  7:I[61246,["/_next/static/chunks/f061a4be97bfc3b3.js","/_next/static/chunks/f2e7afeab1178138.js","/_next/static/chunks/297d55555b71baba.js"],"PageLoading"]
8
8
  :HL["/_next/static/chunks/d2363397e1b2bcab.css","style"]
9
- 0:{"buildId":"0rYA78L88aUyD2Uh38hhX","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/d2363397e1b2bcab.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/f061a4be97bfc3b3.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/f2e7afeab1178138.js","async":true}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"antialiased","children":["$","$L2",null,{"children":["$","div",null,{"className":"min-h-screen flex flex-col","children":[["$","$L3",null,{}],["$","main",null,{"className":"flex-1","style":{"minHeight":0,"overflow":"hidden","position":"relative"},"children":["$","$L4",null,{"parallelRouterKey":"children","error":"$5","errorStyles":[],"errorScripts":[["$","script","script-0",{"src":"/_next/static/chunks/c69f6cba366bd988.js","async":true}]],"template":["$","$L6",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]]}]}]}]}]]}],"loading":[["$","$L7","l",{}],[],[["$","script","script-0",{"src":"/_next/static/chunks/297d55555b71baba.js","async":true}]]],"isPartial":false}
9
+ 0:{"buildId":"2gKjNv6YvE6BcIdFthBLs","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/d2363397e1b2bcab.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/f061a4be97bfc3b3.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/f2e7afeab1178138.js","async":true}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"antialiased","children":["$","$L2",null,{"children":["$","div",null,{"className":"min-h-screen flex flex-col","children":[["$","$L3",null,{}],["$","main",null,{"className":"flex-1","style":{"minHeight":0,"overflow":"hidden","position":"relative"},"children":["$","$L4",null,{"parallelRouterKey":"children","error":"$5","errorStyles":[],"errorScripts":[["$","script","script-0",{"src":"/_next/static/chunks/c69f6cba366bd988.js","async":true}]],"template":["$","$L6",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]]}]}]}]}]]}],"loading":[["$","$L7","l",{}],[],[["$","script","script-0",{"src":"/_next/static/chunks/297d55555b71baba.js","async":true}]]],"isPartial":false}
@@ -1,2 +1,2 @@
1
1
  :HL["/_next/static/chunks/d2363397e1b2bcab.css","style"]
2
- 0:{"buildId":"0rYA78L88aUyD2Uh38hhX","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":true},"staleTime":300}
2
+ 0:{"buildId":"2gKjNv6YvE6BcIdFthBLs","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":true},"staleTime":300}
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,58041,e=>{"use strict";let t=(0,e.i(75254).default)("Database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]);e.s(["Database",()=>t],58041)},56909,e=>{"use strict";let t=(0,e.i(75254).default)("Save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);e.s(["Save",()=>t],56909)},37727,7233,e=>{"use strict";var t=e.i(75254);let a=(0,t.default)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);e.s(["X",()=>a],37727);let s=(0,t.default)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);e.s(["Plus",()=>s],7233)},78583,e=>{"use strict";let t=(0,e.i(75254).default)("FileText",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);e.s(["FileText",()=>t],78583)},46652,e=>{"use strict";var t=e.i(71645),a=e.i(9165);function s(){let[e,s]=(0,t.useState)([]),[r,i]=(0,t.useState)(!0),[l,n]=(0,t.useState)(null),c=(0,t.useCallback)(async()=>{try{i(!0),n(null);let e=await a.api.contracts.list();s(e.contracts)}catch(t){let e="Failed to load contracts";t instanceof a.ApiError&&(e=0===t.status||t.message.includes("Unable to connect")?"API server is not running. Please start it with: pycharter api":t.message),n(e),console.error("Error loading contracts:",t)}finally{i(!1)}},[]);return(0,t.useEffect)(()=>{c()},[c]),{contracts:e,loading:r,error:l,refetch:c}}e.s(["useContracts",()=>s])},95468,e=>{"use strict";let t=(0,e.i(75254).default)("CircleCheck",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);e.s(["CheckCircle2",()=>t],95468)},98919,52571,e=>{"use strict";var t=e.i(75254);let a=(0,t.default)("Shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]);e.s(["Shield",()=>a],98919);let s=(0,t.default)("Info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);e.s(["Info",()=>s],52571)},61246,e=>{"use strict";var t=e.i(43476),a=e.i(75157);function s({className:e,...s}){return(0,t.jsx)("div",{className:(0,a.cn)("animate-pulse rounded-md bg-muted",e),...s})}function r({size:e="md",className:s}){return(0,t.jsx)("div",{className:(0,a.cn)("flex items-center justify-center",s),children:(0,t.jsx)("div",{className:(0,a.cn)("animate-spin rounded-full border-2 border-muted border-t-primary",{sm:"h-4 w-4",md:"h-8 w-8",lg:"h-12 w-12"}[e])})})}function i({message:e="Loading..."}){return(0,t.jsx)("div",{className:"min-h-screen flex items-center justify-center bg-background",children:(0,t.jsxs)("div",{className:"text-center",children:[(0,t.jsx)(r,{size:"lg",className:"mb-4"}),(0,t.jsx)("p",{className:"text-muted-foreground",children:e})]})})}function l(){return(0,t.jsxs)("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[(0,t.jsx)(s,{className:"h-6 w-3/4"}),(0,t.jsx)(s,{className:"h-4 w-full"}),(0,t.jsx)(s,{className:"h-4 w-5/6"}),(0,t.jsxs)("div",{className:"flex gap-2 mt-4",children:[(0,t.jsx)(s,{className:"h-9 w-20"}),(0,t.jsx)(s,{className:"h-9 w-20"})]})]})}function n({rows:e=5}){return(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsx)(s,{className:"h-10 w-full"}),Array.from({length:e}).map((e,a)=>(0,t.jsx)(s,{className:"h-12 w-full"},a))]})}e.s(["CardSkeleton",()=>l,"PageLoading",()=>i,"TableSkeleton",()=>n,"default",()=>r],61246)},43668,e=>{"use strict";var t=e.i(47167);let a="pycharter_settings",s={apiServer:{url:t.default.env.NEXT_PUBLIC_API_URL||"http://localhost:8000"},database:{enabled:!1},dlq:{enabled:!1}};function r(){try{let e=localStorage.getItem(a);if(e){let t=JSON.parse(e);return{...s,...t,apiServer:{...s.apiServer,...t.apiServer},database:{...s.database,...t.database},dlq:{...s.dlq,...t.dlq}}}}catch(e){console.error("Failed to load settings:",e)}return s}function i(e){try{localStorage.setItem(a,JSON.stringify(e))}catch(e){throw console.error("Failed to save settings:",e),e}}function l(){return r().apiServer.url||s.apiServer.url}e.s(["getApiBaseUrl",()=>l,"getSettings",()=>r,"saveSettings",()=>i])},9165,e=>{"use strict";var t=e.i(43668);class a extends Error{status;response;constructor(e,t,a){super(e),this.status=t,this.response=a,this.name="ApiError"}}async function s(e,s){let r=`${(0,t.getApiBaseUrl)()}${e}`;try{let e=await fetch(r,{...s,headers:{"Content-Type":"application/json",...s?.headers}});if(!e.ok){let t;try{t=await e.json()}catch{t={detail:e.statusText}}let s=t.detail||`API request failed: ${e.statusText}`;throw 422===e.status&&t.details&&Array.isArray(t.details)&&(s=t.details.map(e=>{let t=e.loc?.join(".")||e.field||"field",a=e.msg||e.message||"validation error";return`${t}: ${a}`}).join("; ")||s),new a(s,e.status,t)}let t=e.headers.get("content-type");if(t&&t.includes("application/json"))return e.json();return e.text()}catch(s){if(s instanceof TypeError&&"Failed to fetch"===s.message){let s=(0,t.getApiBaseUrl)();throw new a(`Unable to connect to API server at ${s}. Please ensure the API server is running and the URL is correct.`,0,{originalError:"NetworkError",apiUrl:s,endpoint:e,suggestion:"Check your API server settings in the Settings page"})}throw s}}async function r(e){return s(e,{method:"GET"})}async function i(e,t){return s(e,{method:"POST",body:t?JSON.stringify(t):void 0})}async function l(e,t){return s(e,{method:"PUT",body:t?JSON.stringify(t):void 0})}async function n(e,s){let r=`${(0,t.getApiBaseUrl)()}${e}`,i=await fetch(r,{method:"POST",body:s});if(!i.ok){let e;try{e=await i.json()}catch{e={detail:i.statusText}}throw new a(e.detail||`API request failed: ${i.statusText}`,i.status,e)}let l=i.headers.get("content-type");return l&&l.includes("application/json")?i.json():i.text()}async function c(e){let s=`${(0,t.getApiBaseUrl)()}${e}`,r=await fetch(s,{method:"GET"});if(!r.ok){let e;try{e=await r.json()}catch{e={detail:r.statusText}}throw new a(e.detail||`API request failed: ${r.statusText}`,r.status,e)}return r.blob()}e.s(["ApiError",()=>a,"api",0,{contracts:{list:()=>r("/api/v1/contracts"),get:e=>r(`/api/v1/contracts/${e}`),parse:e=>i("/api/v1/contracts/parse",{contract:e}),parseFile:(e,t)=>{let a=new FormData;return a.append("file",e),void 0!==t&&a.append("validate",String(t)),n("/api/v1/contracts/parse/upload",a)},build:e=>i("/api/v1/contracts/build",e),buildFromId:(e,t)=>{let a=new URLSearchParams;t?.include_metadata!==void 0&&a.append("include_metadata",String(t.include_metadata)),t?.include_ownership!==void 0&&a.append("include_ownership",String(t.include_ownership)),t?.include_governance!==void 0&&a.append("include_governance",String(t.include_governance));let s=a.toString();return i(`/api/v1/contracts/${e}/build${s?`?${s}`:""}`,{})},createFromArtifacts:e=>i("/api/v1/contracts/create-from-artifacts",e),createMixed:e=>i("/api/v1/contracts/create-mixed",e),update:(e,t)=>l(`/api/v1/contracts/${e}`,t)},metadata:{listSchemas:()=>r("/api/v1/metadata/schemas"),getSchema:(e,t)=>{let a=t?`?version=${t}`:"";return r(`/api/v1/metadata/schemas/${e}${a}`)},getCompleteSchema:(e,t)=>{let a=t?`?version=${t}`:"";return r(`/api/v1/metadata/schemas/${e}/complete${a}`)},storeSchema:e=>i("/api/v1/metadata/schemas",e),getMetadata:(e,t)=>{let a=t?`?version=${t}`:"";return r(`/api/v1/metadata/metadata/${e}${a}`)},storeMetadata:e=>i("/api/v1/metadata/metadata",e),getCoercionRules:(e,t)=>{let a=t?`?version=${t}`:"";return r(`/api/v1/metadata/coercion-rules/${e}${a}`)},storeCoercionRules:e=>i("/api/v1/metadata/coercion-rules",e),getValidationRules:(e,t)=>{let a=t?`?version=${t}`:"";return r(`/api/v1/metadata/validation-rules/${e}${a}`)},storeValidationRules:e=>i("/api/v1/metadata/validation-rules",e),getEntityList:e=>r(`/api/v1/metadata/${e}`),createEntity:(e,t)=>i(`/api/v1/metadata/${e}`,t),updateEntity:(e,t,a)=>l(`/api/v1/metadata/${e}/${t}`,a),listArtifacts:()=>r("/api/v1/metadata/artifacts")},validation:{validate:e=>i("/api/v1/validation/validate",e),validateBatch:e=>i("/api/v1/validation/validate-batch",e)},schemas:{generate:e=>i("/api/v1/schemas/generate",e),convert:e=>i("/api/v1/schemas/convert",e)},quality:{listMetrics:e=>{let t=new URLSearchParams;e?.schema_id&&t.append("schema_id",e.schema_id),e?.limit&&t.append("limit",e.limit.toString()),e?.offset&&t.append("offset",e.offset.toString());let a=t.toString();return r(`/api/v1/quality/metrics${a?`?${a}`:""}`)},getMetric:e=>r(`/api/v1/quality/metrics/${e}`),getReport:(e,t)=>{let a=new URLSearchParams;t?.data_source&&a.append("data_source",t.data_source),t?.limit&&a.append("limit",t.limit.toString());let s=a.toString();return r(`/api/v1/quality/reports/${e}${s?`?${s}`:""}`)},check:e=>i("/api/v1/quality/check",e),checkUpload:(e,t)=>{let a=new FormData;return a.append("file",e),t.schema_id&&a.append("schema_id",t.schema_id),t.contract&&a.append("contract",t.contract),void 0!==t.record_violations&&a.append("record_violations",String(t.record_violations)),void 0!==t.calculate_metrics&&a.append("calculate_metrics",String(t.calculate_metrics)),void 0!==t.check_thresholds&&a.append("check_thresholds",String(t.check_thresholds)),t.thresholds&&a.append("thresholds",t.thresholds),void 0!==t.include_field_metrics&&a.append("include_field_metrics",String(t.include_field_metrics)),void 0!==t.sample_size&&a.append("sample_size",String(t.sample_size)),t.data_source&&a.append("data_source",t.data_source),t.data_version&&a.append("data_version",t.data_version),n("/api/v1/quality/check/upload",a)},queryViolations:e=>i("/api/v1/quality/violations",e)},templates:{downloadSchema:()=>c("/api/v1/templates/schema"),downloadContractArtifacts:()=>c("/api/v1/templates/contract-artifacts")},settings:{testDatabase:e=>i("/api/v1/settings/test-database",e),testDlq:e=>i("/api/v1/settings/test-dlq",e),getDlqStats:e=>i("/api/v1/settings/dlq-stats",e)}}])},63209,e=>{"use strict";let t=(0,e.i(75254).default)("CircleAlert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);e.s(["AlertCircle",()=>t],63209)},95113,e=>{"use strict";var t=e.i(43476),a=e.i(63209),s=e.i(9165),r=e.i(75157);function i({error:e,title:i="Error",className:l}){if(!e)return null;let n=e instanceof s.ApiError,c=n?e.message:e.message||"An unexpected error occurred";return(0,t.jsx)("div",{className:(0,r.cn)("rounded-lg border border-destructive/50 bg-destructive/10 p-4",l),children:(0,t.jsxs)("div",{className:"flex",children:[(0,t.jsx)(a.AlertCircle,{className:"h-5 w-5 text-destructive flex-shrink-0 mt-0.5"}),(0,t.jsxs)("div",{className:"ml-3",children:[(0,t.jsx)("h3",{className:"text-sm font-medium text-destructive",children:i}),(0,t.jsxs)("div",{className:"mt-2 text-sm text-destructive/90",children:[(0,t.jsx)("p",{children:c}),n&&e.status&&(0,t.jsxs)("p",{className:"mt-1 text-xs opacity-75",children:["Status: ",e.status]})]})]})]})})}e.s(["default",()=>i])},88511,e=>{"use strict";let t=(0,e.i(75254).default)("SquarePen",[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]]);e.s(["Edit",()=>t],88511)},40160,e=>{"use strict";let t=(0,e.i(75254).default)("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);e.s(["Download",()=>t],40160)}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,55824,16370,e=>{"use strict";var t=e.i(43476);function a({title:e,description:a,actions:s}){return(0,t.jsxs)("div",{className:"mb-4 flex justify-between items-center",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h1",{className:"text-2xl font-bold text-foreground mb-1",children:e}),a&&(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:a})]}),s&&(0,t.jsx)("div",{className:"flex gap-2",children:s})]})}e.s(["PageHeader",()=>a],16370),e.s([],55824)},61246,e=>{"use strict";var t=e.i(43476),a=e.i(75157);function s({className:e,...s}){return(0,t.jsx)("div",{className:(0,a.cn)("animate-pulse rounded-md bg-muted",e),...s})}function i({size:e="md",className:s}){return(0,t.jsx)("div",{className:(0,a.cn)("flex items-center justify-center",s),children:(0,t.jsx)("div",{className:(0,a.cn)("animate-spin rounded-full border-2 border-muted border-t-primary",{sm:"h-4 w-4",md:"h-8 w-8",lg:"h-12 w-12"}[e])})})}function r({message:e="Loading..."}){return(0,t.jsx)("div",{className:"min-h-screen flex items-center justify-center bg-background",children:(0,t.jsxs)("div",{className:"text-center",children:[(0,t.jsx)(i,{size:"lg",className:"mb-4"}),(0,t.jsx)("p",{className:"text-muted-foreground",children:e})]})})}function l(){return(0,t.jsxs)("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[(0,t.jsx)(s,{className:"h-6 w-3/4"}),(0,t.jsx)(s,{className:"h-4 w-full"}),(0,t.jsx)(s,{className:"h-4 w-5/6"}),(0,t.jsxs)("div",{className:"flex gap-2 mt-4",children:[(0,t.jsx)(s,{className:"h-9 w-20"}),(0,t.jsx)(s,{className:"h-9 w-20"})]})]})}function d({rows:e=5}){return(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsx)(s,{className:"h-10 w-full"}),Array.from({length:e}).map((e,a)=>(0,t.jsx)(s,{className:"h-12 w-full"},a))]})}e.s(["CardSkeleton",()=>l,"PageLoading",()=>r,"TableSkeleton",()=>d,"default",()=>i],61246)},43668,e=>{"use strict";var t=e.i(47167);let a="pycharter_settings",s={apiServer:{url:t.default.env.NEXT_PUBLIC_API_URL||"http://localhost:8000"},database:{enabled:!1},dlq:{enabled:!1}};function i(){try{let e=localStorage.getItem(a);if(e){let t=JSON.parse(e);return{...s,...t,apiServer:{...s.apiServer,...t.apiServer},database:{...s.database,...t.database},dlq:{...s.dlq,...t.dlq}}}}catch(e){console.error("Failed to load settings:",e)}return s}function r(e){try{localStorage.setItem(a,JSON.stringify(e))}catch(e){throw console.error("Failed to save settings:",e),e}}function l(){return i().apiServer.url||s.apiServer.url}e.s(["getApiBaseUrl",()=>l,"getSettings",()=>i,"saveSettings",()=>r])},9165,e=>{"use strict";var t=e.i(43668);class a extends Error{status;response;constructor(e,t,a){super(e),this.status=t,this.response=a,this.name="ApiError"}}async function s(e,s){let i=`${(0,t.getApiBaseUrl)()}${e}`;try{let e=await fetch(i,{...s,headers:{"Content-Type":"application/json",...s?.headers}});if(!e.ok){let t;try{t=await e.json()}catch{t={detail:e.statusText}}let s=t.detail||`API request failed: ${e.statusText}`;throw 422===e.status&&t.details&&Array.isArray(t.details)&&(s=t.details.map(e=>{let t=e.loc?.join(".")||e.field||"field",a=e.msg||e.message||"validation error";return`${t}: ${a}`}).join("; ")||s),new a(s,e.status,t)}let t=e.headers.get("content-type");if(t&&t.includes("application/json"))return e.json();return e.text()}catch(s){if(s instanceof TypeError&&"Failed to fetch"===s.message){let s=(0,t.getApiBaseUrl)();throw new a(`Unable to connect to API server at ${s}. Please ensure the API server is running and the URL is correct.`,0,{originalError:"NetworkError",apiUrl:s,endpoint:e,suggestion:"Check your API server settings in the Settings page"})}throw s}}async function i(e){return s(e,{method:"GET"})}async function r(e,t){return s(e,{method:"POST",body:t?JSON.stringify(t):void 0})}async function l(e,t){return s(e,{method:"PUT",body:t?JSON.stringify(t):void 0})}async function d(e,s){let i=`${(0,t.getApiBaseUrl)()}${e}`,r=await fetch(i,{method:"POST",body:s});if(!r.ok){let e;try{e=await r.json()}catch{e={detail:r.statusText}}throw new a(e.detail||`API request failed: ${r.statusText}`,r.status,e)}let l=r.headers.get("content-type");return l&&l.includes("application/json")?r.json():r.text()}async function n(e){let s=`${(0,t.getApiBaseUrl)()}${e}`,i=await fetch(s,{method:"GET"});if(!i.ok){let e;try{e=await i.json()}catch{e={detail:i.statusText}}throw new a(e.detail||`API request failed: ${i.statusText}`,i.status,e)}return i.blob()}e.s(["ApiError",()=>a,"api",0,{contracts:{list:()=>i("/api/v1/contracts"),get:e=>i(`/api/v1/contracts/${e}`),parse:e=>r("/api/v1/contracts/parse",{contract:e}),parseFile:(e,t)=>{let a=new FormData;return a.append("file",e),void 0!==t&&a.append("validate",String(t)),d("/api/v1/contracts/parse/upload",a)},build:e=>r("/api/v1/contracts/build",e),buildFromId:(e,t)=>{let a=new URLSearchParams;t?.include_metadata!==void 0&&a.append("include_metadata",String(t.include_metadata)),t?.include_ownership!==void 0&&a.append("include_ownership",String(t.include_ownership)),t?.include_governance!==void 0&&a.append("include_governance",String(t.include_governance));let s=a.toString();return r(`/api/v1/contracts/${e}/build${s?`?${s}`:""}`,{})},createFromArtifacts:e=>r("/api/v1/contracts/create-from-artifacts",e),createMixed:e=>r("/api/v1/contracts/create-mixed",e),update:(e,t)=>l(`/api/v1/contracts/${e}`,t)},metadata:{listSchemas:()=>i("/api/v1/metadata/schemas"),getSchema:(e,t)=>{let a=t?`?version=${t}`:"";return i(`/api/v1/metadata/schemas/${e}${a}`)},getCompleteSchema:(e,t)=>{let a=t?`?version=${t}`:"";return i(`/api/v1/metadata/schemas/${e}/complete${a}`)},storeSchema:e=>r("/api/v1/metadata/schemas",e),getMetadata:(e,t)=>{let a=t?`?version=${t}`:"";return i(`/api/v1/metadata/metadata/${e}${a}`)},storeMetadata:e=>r("/api/v1/metadata/metadata",e),getCoercionRules:(e,t)=>{let a=t?`?version=${t}`:"";return i(`/api/v1/metadata/coercion-rules/${e}${a}`)},storeCoercionRules:e=>r("/api/v1/metadata/coercion-rules",e),getValidationRules:(e,t)=>{let a=t?`?version=${t}`:"";return i(`/api/v1/metadata/validation-rules/${e}${a}`)},storeValidationRules:e=>r("/api/v1/metadata/validation-rules",e),getEntityList:e=>i(`/api/v1/metadata/${e}`),createEntity:(e,t)=>r(`/api/v1/metadata/${e}`,t),updateEntity:(e,t,a)=>l(`/api/v1/metadata/${e}/${t}`,a),listArtifacts:()=>i("/api/v1/metadata/artifacts")},validation:{validate:e=>r("/api/v1/validation/validate",e),validateBatch:e=>r("/api/v1/validation/validate-batch",e)},schemas:{generate:e=>r("/api/v1/schemas/generate",e),convert:e=>r("/api/v1/schemas/convert",e)},quality:{listMetrics:e=>{let t=new URLSearchParams;e?.schema_id&&t.append("schema_id",e.schema_id),e?.limit&&t.append("limit",e.limit.toString()),e?.offset&&t.append("offset",e.offset.toString());let a=t.toString();return i(`/api/v1/quality/metrics${a?`?${a}`:""}`)},getMetric:e=>i(`/api/v1/quality/metrics/${e}`),getReport:(e,t)=>{let a=new URLSearchParams;t?.data_source&&a.append("data_source",t.data_source),t?.limit&&a.append("limit",t.limit.toString());let s=a.toString();return i(`/api/v1/quality/reports/${e}${s?`?${s}`:""}`)},check:e=>r("/api/v1/quality/check",e),checkUpload:(e,t)=>{let a=new FormData;return a.append("file",e),t.schema_id&&a.append("schema_id",t.schema_id),t.contract&&a.append("contract",t.contract),void 0!==t.record_violations&&a.append("record_violations",String(t.record_violations)),void 0!==t.calculate_metrics&&a.append("calculate_metrics",String(t.calculate_metrics)),void 0!==t.check_thresholds&&a.append("check_thresholds",String(t.check_thresholds)),t.thresholds&&a.append("thresholds",t.thresholds),void 0!==t.include_field_metrics&&a.append("include_field_metrics",String(t.include_field_metrics)),void 0!==t.sample_size&&a.append("sample_size",String(t.sample_size)),t.data_source&&a.append("data_source",t.data_source),t.data_version&&a.append("data_version",t.data_version),d("/api/v1/quality/check/upload",a)},queryViolations:e=>r("/api/v1/quality/violations",e)},templates:{downloadSchema:()=>n("/api/v1/templates/schema"),downloadContractArtifacts:()=>n("/api/v1/templates/contract-artifacts")},settings:{testDatabase:e=>r("/api/v1/settings/test-database",e),testDlq:e=>r("/api/v1/settings/test-dlq",e),getDlqStats:e=>r("/api/v1/settings/dlq-stats",e)}}])},63209,e=>{"use strict";let t=(0,e.i(75254).default)("CircleAlert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);e.s(["AlertCircle",()=>t],63209)},95113,e=>{"use strict";var t=e.i(43476),a=e.i(63209),s=e.i(9165),i=e.i(75157);function r({error:e,title:r="Error",className:l}){if(!e)return null;let d=e instanceof s.ApiError,n=d?e.message:e.message||"An unexpected error occurred";return(0,t.jsx)("div",{className:(0,i.cn)("rounded-lg border border-destructive/50 bg-destructive/10 p-4",l),children:(0,t.jsxs)("div",{className:"flex",children:[(0,t.jsx)(a.AlertCircle,{className:"h-5 w-5 text-destructive flex-shrink-0 mt-0.5"}),(0,t.jsxs)("div",{className:"ml-3",children:[(0,t.jsx)("h3",{className:"text-sm font-medium text-destructive",children:r}),(0,t.jsxs)("div",{className:"mt-2 text-sm text-destructive/90",children:[(0,t.jsx)("p",{children:n}),d&&e.status&&(0,t.jsxs)("p",{className:"mt-1 text-xs opacity-75",children:["Status: ",e.status]})]})]})]})})}e.s(["default",()=>r])},78583,e=>{"use strict";let t=(0,e.i(75254).default)("FileText",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);e.s(["FileText",()=>t],78583)},46652,e=>{"use strict";var t=e.i(71645),a=e.i(9165);function s(){let[e,s]=(0,t.useState)([]),[i,r]=(0,t.useState)(!0),[l,d]=(0,t.useState)(null),n=(0,t.useCallback)(async()=>{try{r(!0),d(null);let e=await a.api.contracts.list();s(e.contracts)}catch(t){let e="Failed to load contracts";t instanceof a.ApiError&&(e=0===t.status||t.message.includes("Unable to connect")?"API server is not running. Please start it with: pycharter api":t.message),d(e),console.error("Error loading contracts:",t)}finally{r(!1)}},[]);return(0,t.useEffect)(()=>{n()},[n]),{contracts:e,loading:i,error:l,refetch:n}}e.s(["useContracts",()=>s])},69074,e=>{"use strict";let t=(0,e.i(75254).default)("Upload",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"17 8 12 3 7 8",key:"t8dd8p"}],["line",{x1:"12",x2:"12",y1:"3",y2:"15",key:"widbto"}]]);e.s(["Upload",()=>t],69074)},42009,50398,80428,e=>{"use strict";var t=e.i(75254);let a=(0,t.default)("Award",[["path",{d:"m15.477 12.89 1.515 8.526a.5.5 0 0 1-.81.47l-3.58-2.687a1 1 0 0 0-1.197 0l-3.586 2.686a.5.5 0 0 1-.81-.469l1.514-8.526",key:"1yiouv"}],["circle",{cx:"12",cy:"8",r:"6",key:"1vp47v"}]]);e.s(["Award",()=>a],42009);var s=e.i(43476),i=e.i(71645);let r=(0,t.default)("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]),l=(0,t.default)("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);var d=e.i(64659);let n=(0,t.default)("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);function c({sections:e,defaultCollapsed:t=!1,onItemClick:a,onSectionClick:c,selectedSection:o,headerTitle:m="Navigation"}){let[u,h]=(0,i.useState)(t),[x,p]=(0,i.useState)(new Set(e.map(e=>e.id)));return(0,s.jsxs)("div",{className:`flex flex-col bg-background border-r border-border/50 shadow-sm transition-all duration-300 ${u?"w-16":"w-64"}`,style:{height:"100%",overflow:"hidden"},children:[(0,s.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-border/50 bg-muted/30",children:[!u&&(0,s.jsx)("h2",{className:"text-sm font-semibold text-foreground tracking-wide",children:m}),(0,s.jsx)("button",{onClick:()=>{h(!u)},className:"p-1.5 rounded-md hover:bg-muted transition-all duration-200 hover:scale-105 active:scale-95","aria-label":u?"Expand sidebar":"Collapse sidebar",children:u?(0,s.jsx)(l,{className:"h-4 w-4 text-muted-foreground"}):(0,s.jsx)(r,{className:"h-4 w-4 text-muted-foreground"})})]}),(0,s.jsx)("div",{className:"flex-1 overflow-y-auto overflow-x-hidden px-2 py-3",style:{maxHeight:"100%"},children:(0,s.jsx)("div",{className:"space-y-1",children:e.map(e=>{let t=x.has(e.id);return(0,s.jsxs)("div",{className:"mb-1",children:[(0,s.jsx)("button",{onClick:()=>{var t;c&&c(e.id),t=e.id,p(e=>{let a=new Set(e);return a.has(t)?a.delete(t):a.add(t),a})},className:`w-full flex items-center justify-between px-3 py-2.5 rounded-lg transition-all duration-200 ${u?"justify-center hover:bg-muted/50":o===e.id?"bg-primary/10 text-primary hover:bg-primary/15":"hover:bg-muted/50 hover:shadow-sm"}`,title:u?e.title:void 0,children:u?e.icon?(0,s.jsx)(e.icon,{className:`h-5 w-5 transition-colors ${o===e.id?"text-primary":"text-muted-foreground"}`}):(0,s.jsx)("span",{className:`text-xs font-semibold ${o===e.id?"text-primary":"text-muted-foreground"}`,children:e.title.charAt(0).toUpperCase()}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"flex items-center gap-2.5",children:[e.icon&&(0,s.jsx)(e.icon,{className:`h-4 w-4 transition-colors ${o===e.id?"text-primary":"text-muted-foreground"}`}),(0,s.jsx)("span",{className:`text-sm font-medium ${o===e.id?"text-primary":"text-foreground"}`,children:e.title})]}),t?(0,s.jsx)(n,{className:"h-3.5 w-3.5 text-muted-foreground transition-transform duration-200"}):(0,s.jsx)(d.ChevronDown,{className:"h-3.5 w-3.5 text-muted-foreground transition-transform duration-200"})]})}),!u&&t&&(0,s.jsx)("div",{className:"ml-1 mt-1 space-y-0.5 pl-2 border-l-2 border-muted",children:e.items.map(t=>(0,s.jsx)("button",{onClick:()=>{var s,i;return s=e.id,i=t.id,void(t.onClick&&t.onClick(),a&&a(s,i))},className:"w-full text-left px-3 py-2 text-sm text-muted-foreground hover:text-foreground hover:bg-muted/50 rounded-md transition-all duration-200 hover:translate-x-0.5",children:t.label},t.id))})]},e.id)})})})]})}e.s(["CollapsibleSidebar",()=>c],50398),e.s([],80428)},42033,e=>{"use strict";var t=e.i(43476),a=e.i(71645),s=e.i(15288),i=e.i(19455);e.i(55824);var r=e.i(16370),l=e.i(9165),d=e.i(61246),n=e.i(95113),c=e.i(46652),o=e.i(69074),m=e.i(78583),u=e.i(42009),h=e.i(75254);let x=(0,h.default)("ChartColumn",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]]),p=(0,h.default)("TriangleAlert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]),v=(0,h.default)("TrendingUp",[["polyline",{points:"22 7 13.5 15.5 8.5 10.5 2 17",key:"126l90"}],["polyline",{points:"16 7 22 7 22 13",key:"kwv8wd"}]]);var g=e.i(39616);e.i(80428);var f=e.i(50398);function j(){let[e,h]=(0,a.useState)([]),[j,y]=(0,a.useState)(!0),[b,N]=(0,a.useState)(null),[k,w]=(0,a.useState)(0),[_,C]=(0,a.useState)(null),[S,$]=(0,a.useState)([]),[q,A]=(0,a.useState)(!1),[T,F]=(0,a.useState)(!1),[R,P]=(0,a.useState)(null),[U,V]=(0,a.useState)("json"),[B,E]=(0,a.useState)(null),[D,O]=(0,a.useState)(""),[M,I]=(0,a.useState)(!1),[L,H]=(0,a.useState)("metrics"),{contracts:z,loading:J}=(0,c.useContracts)(),Q=[{id:"metrics",title:"Quality Metrics",icon:x,items:[{id:"overview",label:"Overview",onClick:()=>H("metrics")},{id:"by_schema",label:"By Schema",onClick:()=>H("metrics")},{id:"by_source",label:"By Data Source",onClick:()=>H("metrics")},{id:"trends",label:"Trends",onClick:()=>H("metrics")}]},{id:"violations",title:"Violations",icon:p,items:[{id:"all_violations",label:"All Violations",onClick:()=>H("violations")},{id:"open_violations",label:"Open Violations",onClick:()=>H("violations")},{id:"resolved_violations",label:"Resolved Violations",onClick:()=>H("violations")},{id:"by_severity",label:"By Severity",onClick:()=>H("violations")}]},{id:"checks",title:"Quality Checks",icon:u.Award,items:[{id:"run_check",label:"Run Quality Check",onClick:()=>H("checks")},{id:"check_history",label:"Check History",onClick:()=>H("checks")},{id:"scheduled_checks",label:"Scheduled Checks",onClick:()=>H("checks")}]},{id:"thresholds",title:"Thresholds",icon:v,items:[{id:"configure_thresholds",label:"Configure Thresholds",onClick:()=>H("thresholds")},{id:"threshold_breaches",label:"Threshold Breaches",onClick:()=>H("thresholds")}]},{id:"settings",title:"Settings",icon:g.Settings,items:[{id:"quality_config",label:"Quality Configuration",onClick:()=>H("settings")},{id:"notification_settings",label:"Notification Settings",onClick:()=>H("settings")}]}];(0,a.useEffect)(()=>{K()},[]);let K=async()=>{try{y(!0),N(null);let e=await l.api.quality.listMetrics({limit:100});h(e.metrics),w(e.total)}catch(e){N(e.message||"Failed to load quality metrics"),console.error("Error loading quality metrics:",e)}finally{y(!1)}},G=async e=>{try{A(!0),N(null);let t=await l.api.quality.queryViolations({schema_id:e});$(t.violations||[])}catch(e){N(e.message||"Failed to load violations"),console.error("Error loading violations:",e)}finally{A(!1)}},X=async e=>{if(e.preventDefault(),"file"===U){if(!B)return void N("Please select a file to upload");if(!D)return void N("Please select a contract");try{N(null),I(!0);let e=z.find(e=>e.id===D);if(!e)return void N("Selected contract not found");let t=e.schema_id;if(t||(t=(await l.api.contracts.get(D)).schema_id),!t)return void N("Contract does not have an associated schema");let a=await l.api.quality.checkUpload(B,{schema_id:t,record_violations:!0,calculate_metrics:!0,include_field_metrics:!0,data_source:B.name});P(a),F(!1),E(null),O(""),await K()}catch(e){N(e.message||"Failed to run quality check"),console.error("Error running quality check:",e)}finally{I(!1)}}else{let t=new FormData(e.currentTarget),a=t.get("schema_id"),s=t.get("data");try{N(null);let e=JSON.parse(s),t=await l.api.quality.check({schema_id:a,data:Array.isArray(e)?e:[e],record_violations:!0,calculate_metrics:!0,include_field_metrics:!0});P(t),F(!1),await K()}catch(e){N(e.message||"Failed to run quality check"),console.error("Error running quality check:",e)}}},Y=e=>{if(!e)return"N/A";try{return new Date(e).toLocaleString()}catch{return e}},Z=e=>`${(100*e).toFixed(2)}%`,W=e=>e>=90?"text-green-600 dark:text-green-400":e>=75?"text-yellow-600 dark:text-yellow-400":"text-red-600 dark:text-red-400",ee=Object.values(e.reduce((e,t)=>{let a=`${t.schema_id}::${t.data_source||"unknown"}`;return(!e[a]||new Date(t.check_timestamp||0)>new Date(e[a].check_timestamp||0))&&(e[a]=t),e},{}));return(0,t.jsxs)("div",{className:"flex h-full bg-background",style:{height:"calc(100vh - 4rem)",overflow:"hidden"},children:[(0,t.jsx)("div",{className:"flex-shrink-0",style:{height:"100%",overflow:"hidden"},children:(0,t.jsx)(f.CollapsibleSidebar,{sections:Q,defaultCollapsed:!1,headerTitle:"Quality",selectedSection:L,onSectionClick:H})}),(0,t.jsx)("div",{className:"flex-1 min-w-0",style:{height:"100%",overflowY:"auto",overflowX:"hidden"},"data-content-area":!0,children:(0,t.jsxs)("div",{className:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-6",children:[(0,t.jsx)(r.PageHeader,{title:"Quality Reports",description:"View quality metrics and reports for different data feeds",actions:(0,t.jsx)(i.Button,{onClick:()=>F(!T),children:T?"Cancel":"Run Quality Check"})}),j&&(0,t.jsx)("div",{className:"flex justify-center items-center py-12",children:(0,t.jsx)(d.default,{})}),b&&(0,t.jsxs)("div",{className:"mb-4",children:[(0,t.jsx)(n.default,{error:Error(b),title:"Error"}),(0,t.jsx)(i.Button,{onClick:K,variant:"outline",className:"mt-4",children:"Retry"})]}),T&&(0,t.jsxs)(s.Card,{className:"mb-6",children:[(0,t.jsxs)(s.CardHeader,{children:[(0,t.jsx)(s.CardTitle,{children:"Run Quality Check"}),(0,t.jsx)(s.CardDescription,{children:"Run a quality check against a data contract. Upload a file (CSV/JSON) or provide JSON data directly."})]}),(0,t.jsx)(s.CardContent,{children:(0,t.jsxs)("form",{onSubmit:X,className:"space-y-4",children:[(0,t.jsxs)("div",{className:"flex gap-2 mb-4",children:[(0,t.jsxs)(i.Button,{type:"button",variant:"json"===U?"default":"outline",onClick:()=>V("json"),className:"flex items-center gap-2",children:[(0,t.jsx)(m.FileText,{className:"h-4 w-4"}),"JSON Data"]}),(0,t.jsxs)(i.Button,{type:"button",variant:"file"===U?"default":"outline",onClick:()=>V("file"),className:"flex items-center gap-2",children:[(0,t.jsx)(o.Upload,{className:"h-4 w-4"}),"Upload File"]})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("label",{htmlFor:"contract_id",className:"block text-sm font-medium mb-2",children:["Data Contract ","file"===U&&"*"]}),J?(0,t.jsx)("div",{className:"text-sm text-muted-foreground",children:"Loading contracts..."}):(0,t.jsxs)("select",{id:"contract_id",value:D,onChange:e=>O(e.target.value),className:"w-full px-3 py-2 border rounded-md",required:"file"===U,children:[(0,t.jsx)("option",{value:"",children:"Select a contract..."}),z.map(e=>(0,t.jsxs)("option",{value:e.id,children:[e.name," (v",e.version,")"]},e.id))]}),"json"===U&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground mt-1",children:"Or enter schema_id directly in the field below"})]}),"file"===U?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{htmlFor:"file",className:"block text-sm font-medium mb-2",children:"Data File (CSV or JSON) *"}),(0,t.jsx)("input",{type:"file",id:"file",accept:".json,.csv",onChange:e=>{let t=e.target.files?.[0];if(t){let e=t.name.split(".").pop()?.toLowerCase();if("json"!==e&&"csv"!==e)return void N("Please select a JSON or CSV file");E(t),N(null)}},className:"w-full px-3 py-2 border rounded-md",required:!0}),B&&(0,t.jsxs)("p",{className:"text-sm text-muted-foreground mt-1",children:["Selected: ",B.name," (",(B.size/1024).toFixed(2)," KB)"]})]}),(0,t.jsx)(i.Button,{type:"submit",disabled:M||!B||!D,children:M?"Running Check...":"Run Quality Check"})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{htmlFor:"schema_id",className:"block text-sm font-medium mb-2",children:"Schema ID"}),(0,t.jsx)("input",{type:"text",id:"schema_id",name:"schema_id",className:"w-full px-3 py-2 border rounded-md",placeholder:"schema_id",required:!0})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{htmlFor:"data",className:"block text-sm font-medium mb-2",children:"Data (JSON array or object)"}),(0,t.jsx)("textarea",{id:"data",name:"data",rows:8,className:"w-full px-3 py-2 border rounded-md font-mono text-sm",placeholder:'[{"field1": "value1"}, {"field1": "value2"}]',required:!0})]}),(0,t.jsx)(i.Button,{type:"submit",children:"Run Check"})]})]})})]}),R&&(0,t.jsxs)(s.Card,{className:"mb-6",children:[(0,t.jsxs)(s.CardHeader,{children:[(0,t.jsx)(s.CardTitle,{children:"Quality Check Result"}),(0,t.jsxs)(s.CardDescription,{children:["Schema: ",R.schema_id," •",R.passed?" ✓ Passed":" ✗ Failed"]})]}),(0,t.jsxs)(s.CardContent,{children:[R.quality_score&&(0,t.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4 mb-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-sm text-muted-foreground",children:"Overall Score"}),(0,t.jsx)("div",{className:`text-2xl font-bold ${W(R.quality_score.overall_score)}`,children:R.quality_score.overall_score.toFixed(1)})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-sm text-muted-foreground",children:"Valid Records"}),(0,t.jsxs)("div",{className:"text-lg font-semibold text-green-600 dark:text-green-400",children:[R.valid_count," / ",R.record_count]})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-sm text-muted-foreground",children:"Violations"}),(0,t.jsx)("div",{className:"text-lg font-semibold text-red-600 dark:text-red-400",children:R.violation_count})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-sm text-muted-foreground",children:"Completeness"}),(0,t.jsx)("div",{className:"text-lg font-semibold",children:Z(R.quality_score.completeness)})]})]}),(0,t.jsx)("pre",{className:"bg-muted p-4 rounded-md overflow-auto text-sm max-h-96",children:JSON.stringify(R,null,2)})]})]}),!j&&!b&&(0,t.jsx)(t.Fragment,{children:0===ee.length?(0,t.jsxs)(s.Card,{children:[(0,t.jsxs)(s.CardHeader,{children:[(0,t.jsx)(s.CardTitle,{children:"No Quality Metrics Found"}),(0,t.jsx)(s.CardDescription,{children:"No quality check results are currently available. Run quality checks to see metrics here."})]}),(0,t.jsx)(s.CardContent,{children:(0,t.jsx)(i.Button,{onClick:()=>F(!0),children:"Run Quality Check"})})]}):(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"flex justify-between items-center",children:[(0,t.jsxs)("p",{className:"text-sm text-muted-foreground",children:[ee.length," data feed",1!==ee.length?"s":""," with quality metrics",k>ee.length&&` (${k} total checks)`]}),(0,t.jsx)(i.Button,{onClick:K,variant:"outline",children:"Refresh"})]}),(0,t.jsx)("div",{className:"grid gap-6",children:ee.map(e=>(0,t.jsxs)(s.Card,{children:[(0,t.jsx)(s.CardHeader,{children:(0,t.jsxs)("div",{className:"flex justify-between items-start",children:[(0,t.jsxs)("div",{className:"flex-1",children:[(0,t.jsxs)(s.CardTitle,{className:"text-lg",children:[e.schema_id,e.schema_version&&(0,t.jsxs)("span",{className:"text-sm text-muted-foreground ml-2",children:["v",e.schema_version]})]}),(0,t.jsxs)(s.CardDescription,{children:[e.data_source||"Unknown source",e.data_version&&` • Version: ${e.data_version}`]})]}),e.passed?(0,t.jsx)("span",{className:"px-2 py-1 rounded text-xs bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200",children:"✓ Passed"}):(0,t.jsx)("span",{className:"px-2 py-1 rounded text-xs bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200",children:"✗ Failed"})]})}),(0,t.jsxs)(s.CardContent,{children:[(0,t.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4 mb-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-sm text-muted-foreground",children:"Overall Score"}),(0,t.jsx)("div",{className:`text-2xl font-bold ${W(e.overall_score)}`,children:e.overall_score.toFixed(1)})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-sm text-muted-foreground",children:"Accuracy"}),(0,t.jsx)("div",{className:"text-lg font-semibold",children:Z(e.accuracy)})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-sm text-muted-foreground",children:"Completeness"}),(0,t.jsx)("div",{className:"text-lg font-semibold",children:Z(e.completeness)})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-sm text-muted-foreground",children:"Violation Rate"}),(0,t.jsx)("div",{className:"text-lg font-semibold",children:Z(e.violation_rate)})]})]}),(0,t.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4 mb-4 pt-4 border-t",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-sm text-muted-foreground",children:"Total Records"}),(0,t.jsx)("div",{className:"text-lg font-semibold",children:e.record_count})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-sm text-muted-foreground",children:"Valid"}),(0,t.jsx)("div",{className:"text-lg font-semibold text-green-600 dark:text-green-400",children:e.valid_count})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-sm text-muted-foreground",children:"Invalid"}),(0,t.jsx)("div",{className:"text-lg font-semibold text-red-600 dark:text-red-400",children:e.invalid_count})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-sm text-muted-foreground",children:"Violations"}),(0,t.jsx)("div",{className:"text-lg font-semibold text-orange-600 dark:text-orange-400",children:e.violation_count})]})]}),e.threshold_breaches&&e.threshold_breaches.length>0&&(0,t.jsxs)("div",{className:"mt-4 pt-4 border-t",children:[(0,t.jsx)("div",{className:"text-sm font-semibold text-orange-600 dark:text-orange-400 mb-2",children:"Threshold Breaches:"}),(0,t.jsx)("ul",{className:"list-disc list-inside text-sm text-muted-foreground space-y-1",children:e.threshold_breaches.map((e,a)=>(0,t.jsx)("li",{children:e},a))})]}),(0,t.jsx)("div",{className:"mt-4 pt-4 border-t flex gap-2",children:(0,t.jsx)(i.Button,{variant:"outline",size:"sm",onClick:()=>{C(e),G(e.schema_id)},disabled:q,children:q&&_?.id===e.id?"Loading...":"View Violations"})}),(0,t.jsxs)("div",{className:"mt-4 pt-4 border-t text-xs text-muted-foreground",children:[(0,t.jsxs)("div",{children:["Last Check: ",Y(e.check_timestamp)]}),e.data_fingerprint&&(0,t.jsxs)("div",{className:"mt-1",children:["Fingerprint: ",e.data_fingerprint.substring(0,16),"..."]})]})]})]},e.id))})]})}),_&&S.length>0&&(0,t.jsxs)(s.Card,{className:"mt-6",children:[(0,t.jsx)(s.CardHeader,{children:(0,t.jsxs)("div",{className:"flex justify-between items-start",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)(s.CardTitle,{children:["Violations for ",_.schema_id]}),(0,t.jsxs)(s.CardDescription,{children:[S.length," violation",1!==S.length?"s":""," found"]})]}),(0,t.jsx)(i.Button,{variant:"outline",size:"sm",onClick:()=>{C(null),$([])},children:"Close"})]})}),(0,t.jsx)(s.CardContent,{children:(0,t.jsx)("div",{className:"space-y-4 max-h-96 overflow-auto",children:S.map(e=>(0,t.jsxs)("div",{className:"border rounded-md p-4",children:[(0,t.jsxs)("div",{className:"flex justify-between items-start mb-2",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"font-semibold",children:["Record ID: ",e.record_id]}),(0,t.jsx)("div",{className:"text-sm text-muted-foreground",children:Y(e.timestamp)})]}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)("span",{className:`px-2 py-1 rounded text-xs ${"critical"===e.severity?"bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200":"warning"===e.severity?"bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200":"bg-gray-100 text-gray-800 dark:bg-gray-800 dark:text-gray-200"}`,children:e.severity}),(0,t.jsx)("span",{className:`px-2 py-1 rounded text-xs ${"resolved"===e.status?"bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200":"bg-orange-100 text-orange-800 dark:bg-orange-900 dark:text-orange-200"}`,children:e.status})]})]}),(0,t.jsxs)("div",{className:"mt-2",children:[(0,t.jsx)("div",{className:"text-sm font-semibold mb-1",children:"Field Violations:"}),(0,t.jsx)("ul",{className:"list-disc list-inside text-sm text-muted-foreground space-y-1",children:e.field_violations.map((e,a)=>(0,t.jsxs)("li",{children:[(0,t.jsx)("span",{className:"font-medium",children:e.field||"unknown"}),": ",e.message||e.error||"Validation error"]},a))})]})]},e.id))})})]})]})})]})}e.s(["default",()=>j],42033)}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,95468,t=>{"use strict";let e=(0,t.i(75254).default)("CircleCheck",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);t.s(["CheckCircle2",()=>e],95468)},73884,t=>{"use strict";let e=(0,t.i(75254).default)("CircleX",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);t.s(["XCircle",()=>e],73884)},78583,t=>{"use strict";let e=(0,t.i(75254).default)("FileText",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);t.s(["FileText",()=>e],78583)},46652,t=>{"use strict";var e=t.i(71645),a=t.i(9165);function i(){let[t,i]=(0,e.useState)([]),[r,s]=(0,e.useState)(!0),[n,c]=(0,e.useState)(null),l=(0,e.useCallback)(async()=>{try{s(!0),c(null);let t=await a.api.contracts.list();i(t.contracts)}catch(e){let t="Failed to load contracts";e instanceof a.ApiError&&(t=0===e.status||e.message.includes("Unable to connect")?"API server is not running. Please start it with: pycharter api":e.message),c(t),console.error("Error loading contracts:",e)}finally{s(!1)}},[]);return(0,e.useEffect)(()=>{l()},[l]),{contracts:t,loading:r,error:n,refetch:l}}t.s(["useContracts",()=>i])},69074,t=>{"use strict";let e=(0,t.i(75254).default)("Upload",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"17 8 12 3 7 8",key:"t8dd8p"}],["line",{x1:"12",x2:"12",y1:"3",y2:"15",key:"widbto"}]]);t.s(["Upload",()=>e],69074)},43668,t=>{"use strict";var e=t.i(47167);let a="pycharter_settings",i={apiServer:{url:e.default.env.NEXT_PUBLIC_API_URL||"http://localhost:8000"},database:{enabled:!1},dlq:{enabled:!1}};function r(){try{let t=localStorage.getItem(a);if(t){let e=JSON.parse(t);return{...i,...e,apiServer:{...i.apiServer,...e.apiServer},database:{...i.database,...e.database},dlq:{...i.dlq,...e.dlq}}}}catch(t){console.error("Failed to load settings:",t)}return i}function s(t){try{localStorage.setItem(a,JSON.stringify(t))}catch(t){throw console.error("Failed to save settings:",t),t}}function n(){return r().apiServer.url||i.apiServer.url}t.s(["getApiBaseUrl",()=>n,"getSettings",()=>r,"saveSettings",()=>s])},9165,t=>{"use strict";var e=t.i(43668);class a extends Error{status;response;constructor(t,e,a){super(t),this.status=e,this.response=a,this.name="ApiError"}}async function i(t,i){let r=`${(0,e.getApiBaseUrl)()}${t}`;try{let t=await fetch(r,{...i,headers:{"Content-Type":"application/json",...i?.headers}});if(!t.ok){let e;try{e=await t.json()}catch{e={detail:t.statusText}}let i=e.detail||`API request failed: ${t.statusText}`;throw 422===t.status&&e.details&&Array.isArray(e.details)&&(i=e.details.map(t=>{let e=t.loc?.join(".")||t.field||"field",a=t.msg||t.message||"validation error";return`${e}: ${a}`}).join("; ")||i),new a(i,t.status,e)}let e=t.headers.get("content-type");if(e&&e.includes("application/json"))return t.json();return t.text()}catch(i){if(i instanceof TypeError&&"Failed to fetch"===i.message){let i=(0,e.getApiBaseUrl)();throw new a(`Unable to connect to API server at ${i}. Please ensure the API server is running and the URL is correct.`,0,{originalError:"NetworkError",apiUrl:i,endpoint:t,suggestion:"Check your API server settings in the Settings page"})}throw i}}async function r(t){return i(t,{method:"GET"})}async function s(t,e){return i(t,{method:"POST",body:e?JSON.stringify(e):void 0})}async function n(t,e){return i(t,{method:"PUT",body:e?JSON.stringify(e):void 0})}async function c(t,i){let r=`${(0,e.getApiBaseUrl)()}${t}`,s=await fetch(r,{method:"POST",body:i});if(!s.ok){let t;try{t=await s.json()}catch{t={detail:s.statusText}}throw new a(t.detail||`API request failed: ${s.statusText}`,s.status,t)}let n=s.headers.get("content-type");return n&&n.includes("application/json")?s.json():s.text()}async function l(t){let i=`${(0,e.getApiBaseUrl)()}${t}`,r=await fetch(i,{method:"GET"});if(!r.ok){let t;try{t=await r.json()}catch{t={detail:r.statusText}}throw new a(t.detail||`API request failed: ${r.statusText}`,r.status,t)}return r.blob()}t.s(["ApiError",()=>a,"api",0,{contracts:{list:()=>r("/api/v1/contracts"),get:t=>r(`/api/v1/contracts/${t}`),parse:t=>s("/api/v1/contracts/parse",{contract:t}),parseFile:(t,e)=>{let a=new FormData;return a.append("file",t),void 0!==e&&a.append("validate",String(e)),c("/api/v1/contracts/parse/upload",a)},build:t=>s("/api/v1/contracts/build",t),buildFromId:(t,e)=>{let a=new URLSearchParams;e?.include_metadata!==void 0&&a.append("include_metadata",String(e.include_metadata)),e?.include_ownership!==void 0&&a.append("include_ownership",String(e.include_ownership)),e?.include_governance!==void 0&&a.append("include_governance",String(e.include_governance));let i=a.toString();return s(`/api/v1/contracts/${t}/build${i?`?${i}`:""}`,{})},createFromArtifacts:t=>s("/api/v1/contracts/create-from-artifacts",t),createMixed:t=>s("/api/v1/contracts/create-mixed",t),update:(t,e)=>n(`/api/v1/contracts/${t}`,e)},metadata:{listSchemas:()=>r("/api/v1/metadata/schemas"),getSchema:(t,e)=>{let a=e?`?version=${e}`:"";return r(`/api/v1/metadata/schemas/${t}${a}`)},getCompleteSchema:(t,e)=>{let a=e?`?version=${e}`:"";return r(`/api/v1/metadata/schemas/${t}/complete${a}`)},storeSchema:t=>s("/api/v1/metadata/schemas",t),getMetadata:(t,e)=>{let a=e?`?version=${e}`:"";return r(`/api/v1/metadata/metadata/${t}${a}`)},storeMetadata:t=>s("/api/v1/metadata/metadata",t),getCoercionRules:(t,e)=>{let a=e?`?version=${e}`:"";return r(`/api/v1/metadata/coercion-rules/${t}${a}`)},storeCoercionRules:t=>s("/api/v1/metadata/coercion-rules",t),getValidationRules:(t,e)=>{let a=e?`?version=${e}`:"";return r(`/api/v1/metadata/validation-rules/${t}${a}`)},storeValidationRules:t=>s("/api/v1/metadata/validation-rules",t),getEntityList:t=>r(`/api/v1/metadata/${t}`),createEntity:(t,e)=>s(`/api/v1/metadata/${t}`,e),updateEntity:(t,e,a)=>n(`/api/v1/metadata/${t}/${e}`,a),listArtifacts:()=>r("/api/v1/metadata/artifacts")},validation:{validate:t=>s("/api/v1/validation/validate",t),validateBatch:t=>s("/api/v1/validation/validate-batch",t)},schemas:{generate:t=>s("/api/v1/schemas/generate",t),convert:t=>s("/api/v1/schemas/convert",t)},quality:{listMetrics:t=>{let e=new URLSearchParams;t?.schema_id&&e.append("schema_id",t.schema_id),t?.limit&&e.append("limit",t.limit.toString()),t?.offset&&e.append("offset",t.offset.toString());let a=e.toString();return r(`/api/v1/quality/metrics${a?`?${a}`:""}`)},getMetric:t=>r(`/api/v1/quality/metrics/${t}`),getReport:(t,e)=>{let a=new URLSearchParams;e?.data_source&&a.append("data_source",e.data_source),e?.limit&&a.append("limit",e.limit.toString());let i=a.toString();return r(`/api/v1/quality/reports/${t}${i?`?${i}`:""}`)},check:t=>s("/api/v1/quality/check",t),checkUpload:(t,e)=>{let a=new FormData;return a.append("file",t),e.schema_id&&a.append("schema_id",e.schema_id),e.contract&&a.append("contract",e.contract),void 0!==e.record_violations&&a.append("record_violations",String(e.record_violations)),void 0!==e.calculate_metrics&&a.append("calculate_metrics",String(e.calculate_metrics)),void 0!==e.check_thresholds&&a.append("check_thresholds",String(e.check_thresholds)),e.thresholds&&a.append("thresholds",e.thresholds),void 0!==e.include_field_metrics&&a.append("include_field_metrics",String(e.include_field_metrics)),void 0!==e.sample_size&&a.append("sample_size",String(e.sample_size)),e.data_source&&a.append("data_source",e.data_source),e.data_version&&a.append("data_version",e.data_version),c("/api/v1/quality/check/upload",a)},queryViolations:t=>s("/api/v1/quality/violations",t)},templates:{downloadSchema:()=>l("/api/v1/templates/schema"),downloadContractArtifacts:()=>l("/api/v1/templates/contract-artifacts")},settings:{testDatabase:t=>s("/api/v1/settings/test-database",t),testDlq:t=>s("/api/v1/settings/test-dlq",t),getDlqStats:t=>s("/api/v1/settings/dlq-stats",t)}}])},63209,t=>{"use strict";let e=(0,t.i(75254).default)("CircleAlert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);t.s(["AlertCircle",()=>e],63209)},56909,t=>{"use strict";let e=(0,t.i(75254).default)("Save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);t.s(["Save",()=>e],56909)},98919,52571,t=>{"use strict";var e=t.i(75254);let a=(0,e.default)("Shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]);t.s(["Shield",()=>a],98919);let i=(0,e.default)("Info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);t.s(["Info",()=>i],52571)}]);