@onequery/cli 0.1.64-win32-arm64 → 0.1.64

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 (172) hide show
  1. package/bin/onequery.js +266 -0
  2. package/bin/package-constants.d.ts +75 -0
  3. package/bin/package-constants.js +160 -0
  4. package/package.json +24 -17
  5. package/runtime-bundle.json +55 -0
  6. package/vendor/aarch64-pc-windows-msvc/onequery/onequery.exe +0 -0
  7. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/CompositeItem-BB408Cyb.js +0 -1
  8. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/CompositeList-DbbDW_rT.js +0 -1
  9. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/DialogTitle-ChNkcIa6.js +0 -1
  10. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/IconArrowRight-DsOD7mDl.js +0 -1
  11. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/IconCheck-Gc24xPT2.js +0 -1
  12. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/IconChevronDown-B-39MA7-.js +0 -1
  13. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/IconChevronRight-DD16tNHZ.js +0 -1
  14. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/IconCoins-C7Nn0L6R.js +0 -1
  15. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/IconHistory-DuLS8PKF.js +0 -1
  16. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/IconLoader2-BpZcTuHV.js +0 -1
  17. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/IconPlus-CZiRiEUF.js +0 -1
  18. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/IconTerminal2-PxNqcz3d.js +0 -1
  19. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/IconX-rRpRFwc5.js +0 -1
  20. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/Separator-M05FshHx.js +0 -1
  21. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/_authenticated-CcSc_Pt7.js +0 -1
  22. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/_org_slug-BvJDit6U.js +0 -1
  23. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/alert-BIGxI3XN.js +0 -1
  24. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/api-base-url-DIb6qukm.js +0 -1
  25. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/api-client-tp8XTpAa.js +0 -1
  26. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/api-paths-DcYkf-C_.js +0 -1
  27. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/app-routes-CMyon6Em.js +0 -1
  28. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/audit-CdPU9Jf2.js +0 -2
  29. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/auth-bootstrap-query-B1MHd_NV.js +0 -1
  30. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/auth-client-D-YHMy0G.js +0 -3
  31. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/avatar-SaFoLofF.js +0 -1
  32. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/badge-BFPkSrVD.js +0 -1
  33. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/budget-CX5MplAP.js +0 -1
  34. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/callback-BWQ3ETBy.js +0 -1
  35. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/card-Dllm2lhp.js +0 -1
  36. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/checkbox-Bii9Pcrx.js +0 -1
  37. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/compiler-runtime-DCc3R3Xn.js +0 -1
  38. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/connect-database-C1Jb2l53.js +0 -1
  39. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/copy-button-BO1KBdf9.js +0 -1
  40. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/create-org-BSzKv5ue.js +0 -1
  41. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/createReactComponent-_L2mp4Ui.js +0 -1
  42. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/data-source-connection-form-CbDL0cgG.js +0 -273
  43. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/device-Bbz7apAX.js +0 -1
  44. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/dist-BNi06Dzx.js +0 -3
  45. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/dropdown-menu-Cw2MW0pD.js +0 -1
  46. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/empty-DjRo5ytz.js +0 -1
  47. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/format-date-Rg05aHXh.js +0 -1
  48. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/getDisabledMountTransitionStyles-C0uz3iMh.js +0 -1
  49. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/getPseudoElementBounds-CRlxTrfr.js +0 -12
  50. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/home-BNjpNKdt.js +0 -1
  51. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/index-B4OsjuJp.css +0 -2
  52. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/index-CXR0dKJj.js +0 -10
  53. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/input-BRu0b1Tq.js +0 -1
  54. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/integrations-BWC7iPQ5.js +0 -1
  55. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  56. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  57. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  58. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  59. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  60. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  61. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  62. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/invite._invitationId-DmJnR4R5.js +0 -1
  63. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/jsx-runtime-DG_AJzB_.js +0 -1
  64. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/label-f2wVZcni.js +0 -1
  65. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/link-Cgvqhh5w.js +0 -1
  66. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/matchContext-CDajBC0L.js +0 -1
  67. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/organization-permissions-BXV_ess0.js +0 -1
  68. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/organization-query-keys-ieaSNxMR.js +0 -1
  69. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/query-CY--GYXb.js +0 -1
  70. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/query-timing-YBkSOxxF.js +0 -1
  71. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/queryOptions-bXtOUR_h.js +0 -1
  72. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/routes-CxJ2aoMf.js +0 -1
  73. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/schemas-EcBBwCo1.js +0 -64
  74. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/select-yNaL0SXM.js +0 -1
  75. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/separator-BH7Gsum-.js +0 -1
  76. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/settings-C8us2bWX.js +0 -1
  77. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/signin-BgfqB9QB.js +0 -1
  78. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/src-C5F1uEDb.js +0 -1
  79. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/team-CYPsHFTt.js +0 -1
  80. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/textarea-CnA77PLS.js +0 -1
  81. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/theme-toggle-CRaDbyxE.js +0 -1
  82. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/use-optimistic-mutation-3PPnMc-O.js +0 -1
  83. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/useBaseQuery-CO5Q8xm4.js +0 -1
  84. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/useBaseUiId-CtNp109T.js +0 -1
  85. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/useCompositeItem-D243hyne.js +0 -1
  86. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/useControlled-C-85HRFr.js +0 -1
  87. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/useQuery-DyOxsY45.js +0 -1
  88. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/useRender-CzpKCg11.js +0 -1
  89. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/useRouterState-DpT8luFk.js +0 -1
  90. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/useSuspenseQuery-CBFRU4At.js +0 -1
  91. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/useValueChanged-BNrgSVVM.js +0 -1
  92. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/utils-C8DGLIgm.js +0 -1
  93. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/xstate-react.esm-Bo3CCIRt.js +0 -1
  94. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/assets/zod-D0PWrP9q.js +0 -1
  95. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/favicon.ico +0 -0
  96. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/amplitude/step1_settings_sidebar.png +0 -0
  97. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/amplitude/step2_projects.png +0 -0
  98. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/amplitude/step3_project_keys.png +0 -0
  99. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/amplitude/step4_api_keys.png +0 -0
  100. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/bigquery/step1_service_accounts.png +0 -0
  101. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/bigquery/step2_bigquery_roles.png +0 -0
  102. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/bigquery/step3_add_key_menu.png +0 -0
  103. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/bigquery/step4_create_json_key.png +0 -0
  104. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/cloudflare-workers-observability/step2_enable_workers_logs.png +0 -0
  105. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/cloudflare-workers-observability/step3_user_api_tokens.png +0 -0
  106. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/cloudflare-workers-observability/step4_create_api_token.png +0 -0
  107. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/cloudflare-workers-observability/step5_workers_pages_account_id.png +0 -0
  108. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/cloudflare-workers-observability/step6_workers_observability_permission.png +0 -0
  109. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/ga4/step1_service_accounts.png +0 -0
  110. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/ga4/step2_create_json_key.png +0 -0
  111. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/ga4/step3_add_user_viewer.png +0 -0
  112. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/ga4/step4_property_details.png +0 -0
  113. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/github-token-guide/step1_signin.png +0 -0
  114. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/github-token-guide/step2_new_fine_grained_token_sanitized.png +0 -0
  115. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/github-token-guide/step3_permissions_configured_sanitized.png +0 -0
  116. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/github-token-guide/step4_token_created_sanitized.png +0 -0
  117. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/google-search-console/step1_confirm_property.png +0 -0
  118. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/google-search-console/step2_scope_selected.png +0 -0
  119. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/google-search-console/step3_copy_access_token.png +0 -0
  120. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/mixpanel/step1_service_accounts.png +0 -0
  121. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/mixpanel/step2_create_service_account.png +0 -0
  122. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/mixpanel/step3_credentials.png +0 -0
  123. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/mixpanel/step4_project_settings.png +0 -0
  124. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/postgresql/step1_create_user.png +0 -0
  125. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/postgresql/step2_connection.png +0 -0
  126. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/posthog/step1_project_settings.png +0 -0
  127. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/posthog/step2_personal_api_keys.png +0 -0
  128. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/posthog/step3_create_key_modal.png +0 -0
  129. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/rds/step1_connect.png +0 -0
  130. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/rds/step2_create_user.png +0 -0
  131. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/rds/step3_grant.png +0 -0
  132. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/rds/step4_info.png +0 -0
  133. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/sentry/step1_personal_tokens.png +0 -0
  134. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/sentry/step2_create_token_permissions.png +0 -0
  135. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/sentry/step3_organization_slug.png +0 -0
  136. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/sentry/step4_project_slug.png +0 -0
  137. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/vercel/step1_tokens_page.png +0 -0
  138. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/images/vercel/step2_configure_token.png +0 -0
  139. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/index.html +0 -47
  140. package/vendor/aarch64-pc-windows-msvc/runtime/dashboard/onequery.svg +0 -44
  141. package/vendor/aarch64-pc-windows-msvc/runtime/migrations/20260327065242_curious_nightmare.sql +0 -403
  142. package/vendor/aarch64-pc-windows-msvc/runtime/migrations/20260403103652_slippery_hellfire_club.sql +0 -8
  143. package/vendor/aarch64-pc-windows-msvc/runtime/migrations/20260403112219_gigantic_namora.sql +0 -1
  144. package/vendor/aarch64-pc-windows-msvc/runtime/migrations/20260420071232_previous_justin_hammer.sql +0 -141
  145. package/vendor/aarch64-pc-windows-msvc/runtime/migrations/20260420093157_spooky_cassandra_nova.sql +0 -29
  146. package/vendor/aarch64-pc-windows-msvc/runtime/migrations/20260420101631_even_ogun.sql +0 -5
  147. package/vendor/aarch64-pc-windows-msvc/runtime/migrations/20260425110519_smart_amazoness.sql +0 -8
  148. package/vendor/aarch64-pc-windows-msvc/runtime/migrations/20260428033542_rename_source_query_interface_missing.sql +0 -36
  149. package/vendor/aarch64-pc-windows-msvc/runtime/migrations/20260430114113_jittery_scorpion.sql +0 -28
  150. package/vendor/aarch64-pc-windows-msvc/runtime/migrations/20260430135906_flippant_timeslip.sql +0 -4
  151. package/vendor/aarch64-pc-windows-msvc/runtime/migrations/20260502000100_drop_old_workflow_audit_tables.sql +0 -15
  152. package/vendor/aarch64-pc-windows-msvc/runtime/migrations/20260503011110_moaning_jack_flag.sql +0 -22
  153. package/vendor/aarch64-pc-windows-msvc/runtime/migrations/20260514143216_reset_workflow_audit_history.sql +0 -20
  154. package/vendor/aarch64-pc-windows-msvc/runtime/migrations/20260524081943_colorful_firelord.sql +0 -1
  155. package/vendor/aarch64-pc-windows-msvc/runtime/migrations/meta/20260327065242_snapshot.json +0 -2817
  156. package/vendor/aarch64-pc-windows-msvc/runtime/migrations/meta/20260403103652_snapshot.json +0 -2864
  157. package/vendor/aarch64-pc-windows-msvc/runtime/migrations/meta/20260403112219_snapshot.json +0 -2870
  158. package/vendor/aarch64-pc-windows-msvc/runtime/migrations/meta/20260420071232_snapshot.json +0 -3879
  159. package/vendor/aarch64-pc-windows-msvc/runtime/migrations/meta/20260420093157_snapshot.json +0 -4088
  160. package/vendor/aarch64-pc-windows-msvc/runtime/migrations/meta/20260420101631_snapshot.json +0 -3250
  161. package/vendor/aarch64-pc-windows-msvc/runtime/migrations/meta/20260425110519_snapshot.json +0 -3250
  162. package/vendor/aarch64-pc-windows-msvc/runtime/migrations/meta/20260428033542_snapshot.json +0 -3250
  163. package/vendor/aarch64-pc-windows-msvc/runtime/migrations/meta/20260430114113_snapshot.json +0 -3507
  164. package/vendor/aarch64-pc-windows-msvc/runtime/migrations/meta/20260430135906_snapshot.json +0 -3531
  165. package/vendor/aarch64-pc-windows-msvc/runtime/migrations/meta/20260503011110_snapshot.json +0 -3089
  166. package/vendor/aarch64-pc-windows-msvc/runtime/migrations/meta/20260524081943_snapshot.json +0 -3082
  167. package/vendor/aarch64-pc-windows-msvc/runtime/migrations/meta/_journal.json +0 -104
  168. package/vendor/aarch64-pc-windows-msvc/runtime/pglite/initdb.wasm +0 -0
  169. package/vendor/aarch64-pc-windows-msvc/runtime/pglite/pglite.data +0 -0
  170. package/vendor/aarch64-pc-windows-msvc/runtime/pglite/pglite.wasm +0 -0
  171. package/vendor/aarch64-pc-windows-msvc/server/onequery-server.mjs +0 -447932
  172. package/vendor/aarch64-pc-windows-msvc/server/polyglot_sql_wasm_bg.wasm +0 -0
@@ -1,273 +0,0 @@
1
- import{i as e,n as t,t as n}from"./jsx-runtime-DG_AJzB_.js";import{t as r}from"./compiler-runtime-DCc3R3Xn.js";import{n as i}from"./api-base-url-DIb6qukm.js";import{S as a,a as o,d as s,g as c,i as l,n as u,t as d,x as f,y as p}from"./createReactComponent-_L2mp4Ui.js";import{t as m}from"./utils-C8DGLIgm.js";import{a as h,i as g,n as _,r as v,t as y}from"./select-yNaL0SXM.js";import{n as b,t as x}from"./IconTerminal2-PxNqcz3d.js";import{c as S,i as C,l as w,r as T,s as E,t as ee}from"./use-optimistic-mutation-3PPnMc-O.js";import{t as D}from"./useQuery-DyOxsY45.js";import{M as O,ct as k,i as A,st as j}from"./getDisabledMountTransitionStyles-C0uz3iMh.js";import{i as M,t as N}from"./CompositeList-DbbDW_rT.js";import{d as P,n as F,t as I}from"./useBaseUiId-CtNp109T.js";import{c as L,d as R,g as z,m as B,n as V,p as H,r as te,s as ne,u as U}from"./schemas-EcBBwCo1.js";import{t as re}from"./src-C5F1uEDb.js";import{J as ie,O as ae,_ as oe,b as se,v as ce}from"./index-CXR0dKJj.js";import{t as W}from"./input-BRu0b1Tq.js";import{t as le}from"./useControlled-C-85HRFr.js";import"./separator-BH7Gsum-.js";import{t as ue}from"./useCompositeItem-D243hyne.js";import{t as G}from"./label-f2wVZcni.js";import{n as de,r as fe,t as pe}from"./textarea-CnA77PLS.js";import{t as me}from"./api-paths-DcYkf-C_.js";import{n as he,t as ge}from"./zod-D0PWrP9q.js";var _e=d(`outline`,`help-circle`,`HelpCircle`,[[`path`,{d:`M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0`,key:`svg-0`}],[`path`,{d:`M12 16v.01`,key:`svg-1`}],[`path`,{d:`M12 13a2 2 0 0 0 .914 -3.782a1.98 1.98 0 0 0 -2.414 .483`,key:`svg-2`}]]),ve=d(`outline`,`notebook`,`Notebook`,[[`path`,{d:`M6 4h11a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-11a1 1 0 0 1 -1 -1v-14a1 1 0 0 1 1 -1m3 0v18`,key:`svg-0`}],[`path`,{d:`M13 8l2 0`,key:`svg-1`}],[`path`,{d:`M13 12l2 0`,key:`svg-2`}]]),K=r(),q=n();function ye(e){return e===!0||e===`true`}function be(e){return e===!1||e===`false`}function xe(e){return e?.trim()||void 0}function Se({ariaHidden:e,ariaLabel:t,ariaLabelledBy:n,defaultLabel:r,role:i,title:a}){let o=xe(n),s=xe(t)??xe(a);if(ye(e)||!be(e)&&!s&&!o)return{hidden:!0,label:void 0,labelledBy:void 0,role:void 0,title:void 0};if(o)return{hidden:!1,label:void 0,labelledBy:o,role:i??`img`,title:void 0};let c=s??r;return{hidden:!1,label:c,labelledBy:void 0,role:i??`img`,title:c}}function Ce(e){let t=(0,K.c)(30),n,r,i,a,o,s,c,l,u,d;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4],o=t[5],s=t[6],c=t[7],l=t[8],u=t[9],d=t[10]):({"aria-hidden":n,"aria-label":r,"aria-labelledby":i,children:a,defaultLabel:o,role:c,size:l,title:u,viewBox:d,...s}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a,t[5]=o,t[6]=s,t[7]=c,t[8]=l,t[9]=u,t[10]=d);let f;t[11]!==n||t[12]!==r||t[13]!==i||t[14]!==o||t[15]!==c||t[16]!==u?(f=Se({ariaHidden:n,ariaLabel:r,ariaLabelledBy:i,defaultLabel:o,role:c,title:u}),t[11]=n,t[12]=r,t[13]=i,t[14]=o,t[15]=c,t[16]=u,t[17]=f):f=t[17];let p=f,m=p.hidden?!0:void 0,h;t[18]===p.title?h=t[19]:(h=p.title?(0,q.jsx)(`title`,{children:p.title}):null,t[18]=p.title,t[19]=h);let g;return t[20]!==p.label||t[21]!==p.labelledBy||t[22]!==p.role||t[23]!==a||t[24]!==s||t[25]!==l||t[26]!==m||t[27]!==h||t[28]!==d?(g=(0,q.jsxs)(`svg`,{...s,"aria-hidden":m,"aria-label":p.label,"aria-labelledby":p.labelledBy,height:l,role:p.role,viewBox:d,width:l,children:[h,a]}),t[20]=p.label,t[21]=p.labelledBy,t[22]=p.role,t[23]=a,t[24]=s,t[25]=l,t[26]=m,t[27]=h,t[28]=d,t[29]=g):g=t[29],g}function we(e){let t=(0,K.c)(11),n,r,i;t[0]===e?(n=t[1],r=t[2],i=t[3]):({fill:i,icon:n,...r}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i);let a=i===void 0?`currentColor`:i,o;t[4]===n.path?o=t[5]:(o=(0,q.jsx)(`path`,{d:n.path}),t[4]=n.path,t[5]=o);let s;return t[6]!==a||t[7]!==n.title||t[8]!==r||t[9]!==o?(s=(0,q.jsx)(Ce,{...r,defaultLabel:n.title,fill:a,viewBox:`0 0 24 24`,children:o}),t[6]=a,t[7]=n.title,t[8]=r,t[9]=o,t[10]=s):s=t[10],s}var J=`<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>`,Y=`"/></svg>`,Te={title:`Airtable`,slug:`airtable`,get svg(){return J+`Airtable</title><path d="`+this.path+Y},path:`M11.992 1.966c-.434 0-.87.086-1.28.257L1.779 5.917c-.503.208-.49.908.012 1.116l8.982 3.558a3.266 3.266 0 0 0 2.454 0l8.982-3.558c.503-.196.503-.908.012-1.116l-8.957-3.694a3.255 3.255 0 0 0-1.272-.257zM23.4 8.056a.589.589 0 0 0-.222.045l-10.012 3.877a.612.612 0 0 0-.38.564v8.896a.6.6 0 0 0 .821.552L23.62 18.1a.583.583 0 0 0 .38-.551V8.653a.6.6 0 0 0-.6-.596zM.676 8.095a.644.644 0 0 0-.48.19C.086 8.396 0 8.53 0 8.69v8.355c0 .442.515.737.908.54l6.27-3.006.307-.147 2.969-1.436c.466-.22.43-.908-.061-1.092L.883 8.138a.57.57 0 0 0-.207-.044z`,source:`https://airtable.com/newsroom`,hex:`18BFFF`},Ee={title:`Cal.com`,slug:`caldotcom`,get svg(){return J+`Cal.com</title><path d="`+this.path+Y},path:`M2.408 14.488C1.035 14.488 0 13.4 0 12.058c0-1.346.982-2.443 2.408-2.443.758 0 1.282.233 1.691.765l-.66.55a1.343 1.343 0 0 0-1.03-.442c-.93 0-1.44.711-1.44 1.57 0 .86.559 1.557 1.44 1.557.413 0 .765-.147 1.043-.443l.651.573c-.391.51-.929.743-1.695.743zM6.948 10.913h.89v3.49h-.89v-.51c-.185.362-.493.604-1.083.604-.943 0-1.695-.82-1.695-1.826 0-1.007.752-1.825 1.695-1.825.585 0 .898.241 1.083.604zm.026 1.758c0-.546-.374-.998-.964-.998-.568 0-.938.457-.938.998 0 .528.37.998.938.998.586 0 .964-.456.964-.998zM8.467 9.503h.89v4.895h-.89zM9.752 13.937a.53.53 0 0 1 .542-.528c.313 0 .533.242.533.528a.527.527 0 0 1-.533.537.534.534 0 0 1-.542-.537zM14.23 13.839c-.33.403-.832.658-1.426.658a1.806 1.806 0 0 1-1.84-1.826c0-1.007.778-1.825 1.84-1.825.572 0 1.07.241 1.4.622l-.687.577c-.172-.215-.396-.376-.713-.376-.568 0-.938.456-.938.998 0 .541.37.997.938.997.343 0 .58-.179.757-.42zM14.305 12.671c0-1.007.78-1.825 1.84-1.825 1.061 0 1.84.818 1.84 1.825 0 1.007-.779 1.826-1.84 1.826-1.06-.005-1.84-.82-1.84-1.826zm2.778 0c0-.546-.37-.998-.938-.998-.568-.004-.937.452-.937.998 0 .542.37.998.937.998.568 0 .938-.456.938-.998zM24 12.269v2.13h-.89v-1.911c0-.604-.281-.864-.704-.864-.396 0-.678.197-.678.864v1.91h-.89v-1.91c0-.604-.285-.864-.704-.864-.396 0-.744.197-.744.864v1.91h-.89v-3.49h.89v.484c.185-.376.52-.564 1.035-.564.489 0 .898.241 1.123.649.224-.417.554-.65 1.153-.65.731.005 1.299.56 1.299 1.442z`,source:`https://design.cal.com/assets/logos`,hex:`292929`},De={title:`Cloudflare Workers`,slug:`cloudflareworkers`,get svg(){return J+`Cloudflare Workers</title><path d="`+this.path+Y},path:`m8.213.063 8.879 12.136-8.67 11.739h2.476l8.665-11.735-8.89-12.14Zm4.728 0 9.02 11.992-9.018 11.883h2.496L24 12.656v-1.199L15.434.063ZM7.178 2.02.01 11.398l-.01 1.2 7.203 9.644 1.238-1.676-6.396-8.556 6.361-8.313Z`,source:`https://www.cloudflare.com/developer-platform/products/`,hex:`F38020`,guidelines:`https://www.cloudflare.com/trademark/`},Oe={title:`Confluence`,slug:`confluence`,get svg(){return J+`Confluence</title><path d="`+this.path+Y},path:`M.87 18.257c-.248.382-.53.875-.763 1.245a.764.764 0 0 0 .255 1.04l4.965 3.054a.764.764 0 0 0 1.058-.26c.199-.332.454-.763.733-1.221 1.967-3.247 3.945-2.853 7.508-1.146l4.957 2.337a.764.764 0 0 0 1.028-.382l2.364-5.346a.764.764 0 0 0-.382-1 599.851 599.851 0 0 1-4.965-2.361C10.911 10.97 5.224 11.185.87 18.257zM23.131 5.743c.249-.405.531-.875.764-1.25a.764.764 0 0 0-.256-1.034L18.675.404a.764.764 0 0 0-1.058.26c-.195.335-.451.763-.734 1.225-1.966 3.246-3.945 2.85-7.508 1.146L4.437.694a.764.764 0 0 0-1.027.382L1.046 6.422a.764.764 0 0 0 .382 1c1.039.49 3.105 1.467 4.965 2.361 6.698 3.246 12.392 3.029 16.738-4.04z`,source:`https://www.atlassian.com/company/news/press-kit`,hex:`172B4D`},ke={title:`Discord`,slug:`discord`,get svg(){return J+`Discord</title><path d="`+this.path+Y},path:`M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z`,source:`https://discord.com/branding`,hex:`5865F2`,guidelines:`https://discord.com/branding`},Ae={title:`GitHub`,slug:`github`,get svg(){return J+`GitHub</title><path d="`+this.path+Y},path:`M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12`,source:`https://github.com/logos`,hex:`181717`,guidelines:`https://github.com/logos`},je={title:`Google Analytics`,slug:`googleanalytics`,get svg(){return J+`Google Analytics</title><path d="`+this.path+Y},path:`M22.84 2.9982v17.9987c.0086 1.6473-1.3197 2.9897-2.967 2.9984a2.9808 2.9808 0 01-.3677-.0208c-1.528-.226-2.6477-1.5558-2.6105-3.1V3.1204c-.0369-1.5458 1.0856-2.8762 2.6157-3.1 1.6361-.1915 3.1178.9796 3.3093 2.6158.014.1201.0208.241.0202.3619zM4.1326 18.0548c-1.6417 0-2.9726 1.331-2.9726 2.9726C1.16 22.6691 2.4909 24 4.1326 24s2.9726-1.3309 2.9726-2.9726-1.331-2.9726-2.9726-2.9726zm7.8728-9.0098c-.0171 0-.0342 0-.0513.0003-1.6495.0904-2.9293 1.474-2.891 3.1256v7.9846c0 2.167.9535 3.4825 2.3505 3.763 1.6118.3266 3.1832-.7152 3.5098-2.327.04-.1974.06-.3983.0593-.5998v-8.9585c.003-1.6474-1.33-2.9852-2.9773-2.9882z`,source:`https://marketingplatform.google.com/intl/en_uk/about/analytics/`,hex:`E37400`},Me={title:`Google BigQuery`,slug:`googlebigquery`,get svg(){return J+`Google BigQuery</title><path d="`+this.path+Y},path:`M5.676 10.595h2.052v5.244a5.892 5.892 0 0 1-2.052-2.088v-3.156zm18.179 10.836a.504.504 0 0 1 0 .708l-1.716 1.716a.504.504 0 0 1-.708 0l-4.248-4.248a.206.206 0 0 1-.007-.007c-.02-.02-.028-.045-.043-.066a10.736 10.736 0 0 1-6.334 2.065C4.835 21.599 0 16.764 0 10.799S4.835 0 10.8 0s10.799 4.835 10.799 10.8c0 2.369-.772 4.553-2.066 6.333.025.017.052.028.074.05l4.248 4.248zm-5.028-10.632a8.015 8.015 0 1 0-8.028 8.028h.024a8.016 8.016 0 0 0 8.004-8.028zm-4.86 4.98a6.002 6.002 0 0 0 2.04-2.184v-1.764h-2.04v3.948zm-4.5.948c.442.057.887.08 1.332.072.4.025.8.025 1.2 0V7.692H9.468v9.035z`,source:`https://cloud.google.com/icons`,hex:`669DF6`,guidelines:`https://about.google/brand-resource-center`},Ne={title:`Google Docs`,slug:`googledocs`,get svg(){return J+`Google Docs</title><path d="`+this.path+Y},path:`M14.727 6.727H14V0H4.91c-.905 0-1.637.732-1.637 1.636v20.728c0 .904.732 1.636 1.636 1.636h14.182c.904 0 1.636-.732 1.636-1.636V6.727h-6zm-.545 10.455H7.09v-1.364h7.09v1.364zm2.727-3.273H7.091v-1.364h9.818v1.364zm0-3.273H7.091V9.273h9.818v1.363zM14.727 6h6l-6-6v6z`,source:`https://www.google.com/docs/about`,hex:`4285F4`},Pe={title:`Google Search Console`,slug:`googlesearchconsole`,get svg(){return J+`Google Search Console</title><path d="`+this.path+Y},path:`M8.548 1.156L6.832 2.872v1.682h1.716zm0 3.398v.035H6.832v-.035H3.386L0 7.844v3.577h2.826V8.94c0-.525.429-.954.954-.954h16.476c.525 0 .954.43.954.954v2.48h2.754V7.844l-3.386-3.29H17.3v.035h-1.717v-.035zm7.035 0H17.3V2.872l-1.717-1.716zM8.679 1.188V2.84h6.773V1.188zm11.471 7.07a.834.834 0 00-.132.01l-.543.002c-5.216.014-10.432-.008-15.648.01-.435-.063-.794.436-.716.883v2.264h17.812c-.016-.888.045-1.782-.034-2.666-.104-.342-.427-.502-.739-.502zm-15.422.634a.689.698 0 01.689.698.689.698 0 01-.689.697.689.698 0 01-.688-.697.689.698 0 01.688-.698zm2.134 0a.689.698 0 01.689.698.689.698 0 01-.689.697.689.698 0 01-.688-.697.689.698 0 01.688-.698zM.036 11.645v9.156c0 1.05.858 1.908 1.907 1.908h.883V11.645zm21.174 0v11.064h.882c1.05 0 1.908-.858 1.908-1.908v-9.156zM4.057 13.133v6.85h6.137v-6.85zm13.243.021v3.777l-1.708.977-1.708-.977v-3.758a4.006 4.006 0 000 7.23v2.441h3.457v-2.442a4.006 4.006 0 00-.041-7.248zm-13.243 8.26v1.43h7.925v-1.43z`,source:`https://search.google.com/search-console`,hex:`458CF5`},Fe={title:`Jira`,slug:`jira`,get svg(){return J+`Jira</title><path d="`+this.path+Y},path:`M11.571 11.513H0a5.218 5.218 0 0 0 5.232 5.215h2.13v2.057A5.215 5.215 0 0 0 12.575 24V12.518a1.005 1.005 0 0 0-1.005-1.005zm5.723-5.756H5.736a5.215 5.215 0 0 0 5.215 5.214h2.129v2.058a5.218 5.218 0 0 0 5.215 5.214V6.758a1.001 1.001 0 0 0-1.001-1.001zM23.013 0H11.455a5.215 5.215 0 0 0 5.215 5.215h2.129v2.057A5.215 5.215 0 0 0 24 12.483V1.005A1.001 1.001 0 0 0 23.013 0Z`,source:`https://atlassian.design/resources/logo-library`,hex:`0052CC`,guidelines:`https://atlassian.design/foundations/logos/`},Ie={title:`Linear`,slug:`linear`,get svg(){return J+`Linear</title><path d="`+this.path+Y},path:`M2.886 4.18A11.982 11.982 0 0 1 11.99 0C18.624 0 24 5.376 24 12.009c0 3.64-1.62 6.903-4.18 9.105L2.887 4.18ZM1.817 5.626l16.556 16.556c-.524.33-1.075.62-1.65.866L.951 7.277c.247-.575.537-1.126.866-1.65ZM.322 9.163l14.515 14.515c-.71.172-1.443.282-2.195.322L0 11.358a12 12 0 0 1 .322-2.195Zm-.17 4.862 9.823 9.824a12.02 12.02 0 0 1-9.824-9.824Z`,source:`https://linear.app`,hex:`5E6AD2`},Le={title:`Mixpanel`,slug:`mixpanel`,get svg(){return J+`Mixpanel</title><path d="`+this.path+Y},path:`M6.967 9.996h3.053c-.763-.477-1.048-1.145-1.431-2.384L7.443 3.366C6.919 1.458 6.49.551 4.39.551H.004v1.145h.621c1.286 0 1.431.477 1.814 1.908L3.44 7.326c.524 1.814 1.337 2.67 3.53 2.67h-.003Zm7.06 0h3.053c2.194 0 2.956-.86 3.484-2.67l1.001-3.722c.382-1.431.57-1.908 1.814-1.908H24V.551h-4.34c-2.146 0-2.576.86-3.053 2.815l-1.145 4.246c-.384 1.286-.673 1.907-1.435 2.384Zm-4.007 4.008h4.007V9.996H10.02v4.008ZM0 23.449h4.39c2.1 0 2.529-.907 3.053-2.815l1.146-4.246c.383-1.239.668-1.907 1.431-2.384H6.967c-2.194 0-3.007.86-3.531 2.67l-1.001 3.722c-.383 1.431-.524 1.907-1.814 1.907H0v1.146Zm19.65 0h4.343v-1.146h-.622c-1.239 0-1.431-.476-1.814-1.907l-1.001-3.722c-.524-1.814-1.286-2.67-3.483-2.67h-3.046c.762.477 1.041 1.098 1.424 2.384l1.145 4.246c.477 1.955.907 2.815 3.054 2.815Z`,source:`https://mixpanel.com`,hex:`7856FF`,guidelines:`https://brand.mixpanel.com`},Re={title:`MongoDB`,slug:`mongodb`,get svg(){return J+`MongoDB</title><path d="`+this.path+Y},path:`M17.193 9.555c-1.264-5.58-4.252-7.414-4.573-8.115-.28-.394-.53-.954-.735-1.44-.036.495-.055.685-.523 1.184-.723.566-4.438 3.682-4.74 10.02-.282 5.912 4.27 9.435 4.888 9.884l.07.05A73.49 73.49 0 0111.91 24h.481c.114-1.032.284-2.056.51-3.07.417-.296.604-.463.85-.693a11.342 11.342 0 003.639-8.464c.01-.814-.103-1.662-.197-2.218zm-5.336 8.195s0-8.291.275-8.29c.213 0 .49 10.695.49 10.695-.381-.045-.765-1.76-.765-2.405z`,source:`https://www.mongodb.com/pressroom`,hex:`47A248`},ze={title:`MySQL`,slug:`mysql`,get svg(){return J+`MySQL</title><path d="`+this.path+Y},path:`M16.405 5.501c-.115 0-.193.014-.274.033v.013h.014c.054.104.146.18.214.273.054.107.1.214.154.32l.014-.015c.094-.066.14-.172.14-.333-.04-.047-.046-.094-.08-.14-.04-.067-.126-.1-.18-.153zM5.77 18.695h-.927a50.854 50.854 0 00-.27-4.41h-.008l-1.41 4.41H2.45l-1.4-4.41h-.01a72.892 72.892 0 00-.195 4.41H0c.055-1.966.192-3.81.41-5.53h1.15l1.335 4.064h.008l1.347-4.064h1.095c.242 2.015.384 3.86.428 5.53zm4.017-4.08c-.378 2.045-.876 3.533-1.492 4.46-.482.716-1.01 1.073-1.583 1.073-.153 0-.34-.046-.566-.138v-.494c.11.017.24.026.386.026.268 0 .483-.075.647-.222.197-.18.295-.382.295-.605 0-.155-.077-.47-.23-.944L6.23 14.615h.91l.727 2.36c.164.536.233.91.205 1.123.4-1.064.678-2.227.835-3.483zm12.325 4.08h-2.63v-5.53h.885v4.85h1.745zm-3.32.135l-1.016-.5c.09-.076.177-.158.255-.25.433-.506.648-1.258.648-2.253 0-1.83-.718-2.746-2.155-2.746-.704 0-1.254.232-1.65.697-.43.508-.646 1.256-.646 2.245 0 .972.19 1.686.574 2.14.35.41.877.615 1.583.615.264 0 .506-.033.725-.098l1.325.772.36-.622zM15.5 17.588c-.225-.36-.337-.94-.337-1.736 0-1.393.424-2.09 1.27-2.09.443 0 .77.167.977.5.224.362.336.936.336 1.723 0 1.404-.424 2.108-1.27 2.108-.445 0-.77-.167-.978-.5zm-1.658-.425c0 .47-.172.856-.516 1.156-.344.3-.803.45-1.384.45-.543 0-1.064-.172-1.573-.515l.237-.476c.438.22.833.328 1.19.328.332 0 .593-.073.783-.22a.754.754 0 00.3-.615c0-.33-.23-.61-.648-.845-.388-.213-1.163-.657-1.163-.657-.422-.307-.632-.636-.632-1.177 0-.45.157-.81.47-1.085.315-.278.72-.415 1.22-.415.512 0 .98.136 1.4.41l-.213.476a2.726 2.726 0 00-1.064-.23c-.283 0-.502.068-.654.206a.685.685 0 00-.248.524c0 .328.234.61.666.85.393.215 1.187.67 1.187.67.433.305.648.63.648 1.168zm9.382-5.852c-.535-.014-.95.04-1.297.188-.1.04-.26.04-.274.167.055.053.063.14.11.214.08.134.218.313.346.407.14.11.28.216.427.31.26.16.555.255.81.416.145.094.293.213.44.313.073.05.12.14.214.172v-.02c-.046-.06-.06-.147-.105-.214-.067-.067-.134-.127-.2-.193a3.223 3.223 0 00-.695-.675c-.214-.146-.682-.35-.77-.595l-.013-.014c.146-.013.32-.066.46-.106.227-.06.435-.047.67-.106.106-.027.213-.06.32-.094v-.06c-.12-.12-.21-.283-.334-.395a8.867 8.867 0 00-1.104-.823c-.21-.134-.476-.22-.697-.334-.08-.04-.214-.06-.26-.127-.12-.146-.19-.34-.275-.514a17.69 17.69 0 01-.547-1.163c-.12-.262-.193-.523-.34-.763-.69-1.137-1.437-1.826-2.586-2.5-.247-.14-.543-.2-.856-.274-.167-.008-.334-.02-.5-.027-.11-.047-.216-.174-.31-.235-.38-.24-1.364-.76-1.644-.072-.18.434.267.862.422 1.082.115.153.26.328.34.5.047.116.06.235.107.356.106.294.207.622.347.897.073.14.153.287.247.413.054.073.146.107.167.227-.094.136-.1.334-.154.5-.24.757-.146 1.693.194 2.25.107.166.362.534.703.393.3-.12.234-.5.32-.835.02-.08.007-.133.048-.187v.015c.094.188.188.367.274.555.206.328.566.668.867.895.16.12.287.328.487.402v-.02h-.015c-.043-.058-.1-.086-.154-.133a3.445 3.445 0 01-.35-.4 8.76 8.76 0 01-.747-1.218c-.11-.21-.202-.436-.29-.643-.04-.08-.04-.2-.107-.24-.1.146-.247.273-.32.453-.127.288-.14.642-.188 1.01-.027.007-.014 0-.027.014-.214-.052-.287-.274-.367-.46-.2-.475-.233-1.238-.06-1.785.047-.14.247-.582.167-.716-.042-.127-.174-.2-.247-.303a2.478 2.478 0 01-.24-.427c-.16-.374-.24-.788-.414-1.162-.08-.173-.22-.354-.334-.513-.127-.18-.267-.307-.368-.52-.033-.073-.08-.194-.027-.274.014-.054.042-.075.094-.09.088-.072.335.022.422.062.247.1.455.194.662.334.094.066.195.193.315.226h.14c.214.047.455.014.655.073.355.114.675.28.962.46a5.953 5.953 0 012.085 2.286c.08.154.115.295.188.455.14.33.313.663.455.982.14.315.275.636.476.897.1.14.502.213.682.286.133.06.34.115.46.188.23.14.454.3.67.454.11.076.443.243.463.378z`,source:`https://www.mysql.com/about/legal/logos.html`,hex:`4479A1`,guidelines:`https://www.mysql.com/about/legal/logos.html`},Be={title:`PostgreSQL`,slug:`postgresql`,get svg(){return J+`PostgreSQL</title><path d="`+this.path+Y},path:`M23.5594 14.7228a.5269.5269 0 0 0-.0563-.1191c-.139-.2632-.4768-.3418-1.0074-.2321-1.6533.3411-2.2935.1312-2.5256-.0191 1.342-2.0482 2.445-4.522 3.0411-6.8297.2714-1.0507.7982-3.5237.1222-4.7316a1.5641 1.5641 0 0 0-.1509-.235C21.6931.9086 19.8007.0248 17.5099.0005c-1.4947-.0158-2.7705.3461-3.1161.4794a9.449 9.449 0 0 0-.5159-.0816 8.044 8.044 0 0 0-1.3114-.1278c-1.1822-.0184-2.2038.2642-3.0498.8406-.8573-.3211-4.7888-1.645-7.2219.0788C.9359 2.1526.3086 3.8733.4302 6.3043c.0409.818.5069 3.334 1.2423 5.7436.4598 1.5065.9387 2.7019 1.4334 3.582.553.9942 1.1259 1.5933 1.7143 1.7895.4474.1491 1.1327.1441 1.8581-.7279.8012-.9635 1.5903-1.8258 1.9446-2.2069.4351.2355.9064.3625 1.39.3772a.0569.0569 0 0 0 .0004.0041 11.0312 11.0312 0 0 0-.2472.3054c-.3389.4302-.4094.5197-1.5002.7443-.3102.064-1.1344.2339-1.1464.8115-.0025.1224.0329.2309.0919.3268.2269.4231.9216.6097 1.015.6331 1.3345.3335 2.5044.092 3.3714-.6787-.017 2.231.0775 4.4174.3454 5.0874.2212.5529.7618 1.9045 2.4692 1.9043.2505 0 .5263-.0291.8296-.0941 1.7819-.3821 2.5557-1.1696 2.855-2.9059.1503-.8707.4016-2.8753.5388-4.1012.0169-.0703.0357-.1207.057-.1362.0007-.0005.0697-.0471.4272.0307a.3673.3673 0 0 0 .0443.0068l.2539.0223.0149.001c.8468.0384 1.9114-.1426 2.5312-.4308.6438-.2988 1.8057-1.0323 1.5951-1.6698zM2.371 11.8765c-.7435-2.4358-1.1779-4.8851-1.2123-5.5719-.1086-2.1714.4171-3.6829 1.5623-4.4927 1.8367-1.2986 4.8398-.5408 6.108-.13-.0032.0032-.0066.0061-.0098.0094-2.0238 2.044-1.9758 5.536-1.9708 5.7495-.0002.0823.0066.1989.0162.3593.0348.5873.0996 1.6804-.0735 2.9184-.1609 1.1504.1937 2.2764.9728 3.0892.0806.0841.1648.1631.2518.2374-.3468.3714-1.1004 1.1926-1.9025 2.1576-.5677.6825-.9597.5517-1.0886.5087-.3919-.1307-.813-.5871-1.2381-1.3223-.4796-.839-.9635-2.0317-1.4155-3.5126zm6.0072 5.0871c-.1711-.0428-.3271-.1132-.4322-.1772.0889-.0394.2374-.0902.4833-.1409 1.2833-.2641 1.4815-.4506 1.9143-1.0002.0992-.126.2116-.2687.3673-.4426a.3549.3549 0 0 0 .0737-.1298c.1708-.1513.2724-.1099.4369-.0417.156.0646.3078.26.3695.4752.0291.1016.0619.2945-.0452.4444-.9043 1.2658-2.2216 1.2494-3.1676 1.0128zm2.094-3.988-.0525.141c-.133.3566-.2567.6881-.3334 1.003-.6674-.0021-1.3168-.2872-1.8105-.8024-.6279-.6551-.9131-1.5664-.7825-2.5004.1828-1.3079.1153-2.4468.079-3.0586-.005-.0857-.0095-.1607-.0122-.2199.2957-.2621 1.6659-.9962 2.6429-.7724.4459.1022.7176.4057.8305.928.5846 2.7038.0774 3.8307-.3302 4.7363-.084.1866-.1633.3629-.2311.5454zm7.3637 4.5725c-.0169.1768-.0358.376-.0618.5959l-.146.4383a.3547.3547 0 0 0-.0182.1077c-.0059.4747-.054.6489-.115.8693-.0634.2292-.1353.4891-.1794 1.0575-.11 1.4143-.8782 2.2267-2.4172 2.5565-1.5155.3251-1.7843-.4968-2.0212-1.2217a6.5824 6.5824 0 0 0-.0769-.2266c-.2154-.5858-.1911-1.4119-.1574-2.5551.0165-.5612-.0249-1.9013-.3302-2.6462.0044-.2932.0106-.5909.019-.8918a.3529.3529 0 0 0-.0153-.1126 1.4927 1.4927 0 0 0-.0439-.208c-.1226-.4283-.4213-.7866-.7797-.9351-.1424-.059-.4038-.1672-.7178-.0869.067-.276.1831-.5875.309-.9249l.0529-.142c.0595-.16.134-.3257.213-.5012.4265-.9476 1.0106-2.2453.3766-5.1772-.2374-1.0981-1.0304-1.6343-2.2324-1.5098-.7207.0746-1.3799.3654-1.7088.5321a5.6716 5.6716 0 0 0-.1958.1041c.0918-1.1064.4386-3.1741 1.7357-4.4823a4.0306 4.0306 0 0 1 .3033-.276.3532.3532 0 0 0 .1447-.0644c.7524-.5706 1.6945-.8506 2.802-.8325.4091.0067.8017.0339 1.1742.081 1.939.3544 3.2439 1.4468 4.0359 2.3827.8143.9623 1.2552 1.9315 1.4312 2.4543-1.3232-.1346-2.2234.1268-2.6797.779-.9926 1.4189.543 4.1729 1.2811 5.4964.1353.2426.2522.4522.2889.5413.2403.5825.5515.9713.7787 1.2552.0696.087.1372.1714.1885.245-.4008.1155-1.1208.3825-1.0552 1.717-.0123.1563-.0423.4469-.0834.8148-.0461.2077-.0702.4603-.0994.7662zm.8905-1.6211c-.0405-.8316.2691-.9185.5967-1.0105a2.8566 2.8566 0 0 0 .135-.0406 1.202 1.202 0 0 0 .1342.103c.5703.3765 1.5823.4213 3.0068.1344-.2016.1769-.5189.3994-.9533.6011-.4098.1903-1.0957.333-1.7473.3636-.7197.0336-1.0859-.0807-1.1721-.151zm.5695-9.2712c-.0059.3508-.0542.6692-.1054 1.0017-.055.3576-.112.7274-.1264 1.1762-.0142.4368.0404.8909.0932 1.3301.1066.887.216 1.8003-.2075 2.7014a3.5272 3.5272 0 0 1-.1876-.3856c-.0527-.1276-.1669-.3326-.3251-.6162-.6156-1.1041-2.0574-3.6896-1.3193-4.7446.3795-.5427 1.3408-.5661 2.1781-.463zm.2284 7.0137a12.3762 12.3762 0 0 0-.0853-.1074l-.0355-.0444c.7262-1.1995.5842-2.3862.4578-3.4385-.0519-.4318-.1009-.8396-.0885-1.2226.0129-.4061.0666-.7543.1185-1.0911.0639-.415.1288-.8443.1109-1.3505.0134-.0531.0188-.1158.0118-.1902-.0457-.4855-.5999-1.938-1.7294-3.253-.6076-.7073-1.4896-1.4972-2.6889-2.0395.5251-.1066 1.2328-.2035 2.0244-.1859 2.0515.0456 3.6746.8135 4.8242 2.2824a.908.908 0 0 1 .0667.1002c.7231 1.3556-.2762 6.2751-2.9867 10.5405zm-8.8166-6.1162c-.025.1794-.3089.4225-.6211.4225a.5821.5821 0 0 1-.0809-.0056c-.1873-.026-.3765-.144-.5059-.3156-.0458-.0605-.1203-.178-.1055-.2844.0055-.0401.0261-.0985.0925-.1488.1182-.0894.3518-.1226.6096-.0867.3163.0441.6426.1938.6113.4186zm7.9305-.4114c.0111.0792-.049.201-.1531.3102-.0683.0717-.212.1961-.4079.2232a.5456.5456 0 0 1-.075.0052c-.2935 0-.5414-.2344-.5607-.3717-.024-.1765.2641-.3106.5611-.352.297-.0414.6111.0088.6356.1851z`,source:`https://wiki.postgresql.org/wiki/Logo`,hex:`4169E1`,guidelines:`https://www.postgresql.org/about/policies/trademarks/`},Ve={title:`PostHog`,slug:`posthog`,get svg(){return J+`PostHog</title><path d="`+this.path+Y},path:`M9.854 14.5 5 9.647.854 5.5A.5.5 0 0 0 0 5.854V8.44a.5.5 0 0 0 .146.353L5 13.647l.147.146L9.854 18.5l.146.147v-.049c.065.03.134.049.207.049h2.586a.5.5 0 0 0 .353-.854L9.854 14.5zm0-5-4-4a.487.487 0 0 0-.409-.144.515.515 0 0 0-.356.21.493.493 0 0 0-.089.288V8.44a.5.5 0 0 0 .147.353l9 9a.5.5 0 0 0 .853-.354v-2.585a.5.5 0 0 0-.146-.354l-5-5zm1-4a.5.5 0 0 0-.854.354V8.44a.5.5 0 0 0 .147.353l4 4a.5.5 0 0 0 .853-.354V9.854a.5.5 0 0 0-.146-.354l-4-4zm12.647 11.515a3.863 3.863 0 0 1-2.232-1.1l-4.708-4.707a.5.5 0 0 0-.854.354v6.585a.5.5 0 0 0 .5.5H23.5a.5.5 0 0 0 .5-.5v-.6c0-.276-.225-.497-.499-.532zm-5.394.032a.8.8 0 1 1 0-1.6.8.8 0 0 1 0 1.6zM.854 15.5a.5.5 0 0 0-.854.354v2.293a.5.5 0 0 0 .5.5h2.293c.222 0 .39-.135.462-.309a.493.493 0 0 0-.109-.545L.854 15.501zM5 14.647.854 10.5a.5.5 0 0 0-.854.353v2.586a.5.5 0 0 0 .146.353L4.854 18.5l.146.147h2.793a.5.5 0 0 0 .353-.854L5 14.647z`,source:`https://posthog.com/handbook/company/brand-assets`,hex:`000000`,guidelines:`https://posthog.com/handbook/company/brand-assets`},He={title:`Sentry`,slug:`sentry`,get svg(){return J+`Sentry</title><path d="`+this.path+Y},path:`M13.91 2.505c-.873-1.448-2.972-1.448-3.844 0L6.904 7.92a15.478 15.478 0 0 1 8.53 12.811h-2.221A13.301 13.301 0 0 0 5.784 9.814l-2.926 5.06a7.65 7.65 0 0 1 4.435 5.848H2.194a.365.365 0 0 1-.298-.534l1.413-2.402a5.16 5.16 0 0 0-1.614-.913L.296 19.275a2.182 2.182 0 0 0 .812 2.999 2.24 2.24 0 0 0 1.086.288h6.983a9.322 9.322 0 0 0-3.845-8.318l1.11-1.922a11.47 11.47 0 0 1 4.95 10.24h5.915a17.242 17.242 0 0 0-7.885-15.28l2.244-3.845a.37.37 0 0 1 .504-.13c.255.14 9.75 16.708 9.928 16.9a.365.365 0 0 1-.327.543h-2.287c.029.612.029 1.223 0 1.831h2.297a2.206 2.206 0 0 0 1.922-3.31z`,source:`https://sentry.io/branding/`,hex:`362D59`},Ue={title:`Snowflake`,slug:`snowflake`,get svg(){return J+`Snowflake</title><path d="`+this.path+Y},path:`M24 3.459c0 .646-.418 1.18-1.141 1.18-.723 0-1.142-.534-1.142-1.18 0-.647.419-1.18 1.142-1.18.723 0 1.141.533 1.141 1.18zm-.228 0c0-.533-.38-.951-.913-.951s-.913.38-.913.95c0 .533.38.952.913.952.57 0 .913-.419.913-.951zm-1.37-.533h.495c.266 0 .456.152.456.38 0 .153-.076.229-.19.305l.19.266v.038h-.266l-.19-.266h-.229v.266h-.266zm.495.228h-.229v.267h.229c.114 0 .152-.038.152-.114.038-.077-.038-.153-.152-.153zM7.602 12.4c.038-.151.076-.304.076-.456 0-.114-.038-.228-.038-.342-.114-.343-.304-.647-.646-.838l-4.87-2.777c-.685-.38-1.56-.152-1.94.533-.381.685-.153 1.56.532 1.94l2.701 1.56-2.701 1.56c-.685.38-.913 1.256-.533 1.94.38.685 1.256.914 1.94.533l4.832-2.777c.343-.267.571-.533.647-.876zm1.332 2.626c-.266-.038-.57.038-.837.19l-4.832 2.777c-.685.38-.913 1.256-.532 1.94.38.686 1.255.914 1.94.533l2.701-1.56v3.12c0 .8.647 1.408 1.446 1.408.799 0 1.407-.647 1.407-1.408v-5.592c0-.761-.57-1.37-1.293-1.408zm4.946-6.088c.266.038.57-.038.837-.19l4.832-2.777c.685-.38.913-1.256.532-1.94-.38-.686-1.255-.914-1.94-.533l-2.701 1.56V1.975c0-.799-.647-1.408-1.446-1.408-.799 0-1.446.609-1.446 1.408V7.53c0 .76.609 1.37 1.332 1.407zM3.265 5.97l4.832 2.777c.266.152.533.19.837.19.723-.038 1.331-.684 1.331-1.407V1.975c0-.799-.646-1.408-1.407-1.408-.799 0-1.446.647-1.446 1.408v3.12l-2.701-1.56c-.685-.38-1.56-.152-1.94.533-.419.646-.19 1.521.494 1.902zm9.093 6.011a.412.412 0 00-.114-.266l-.57-.571a.346.346 0 00-.267-.114.412.412 0 00-.266.114l-.571.57a.411.411 0 00-.114.267c0 .076.038.19.114.267l.57.57a.345.345 0 00.267.114c.076 0 .19-.038.266-.114l.571-.57a.412.412 0 00.114-.267zm1.598.533L11.94 14.53c-.039.038-.153.114-.229.114h-.608a.411.411 0 01-.267-.114L8.82 12.514a.408.408 0 01-.076-.229v-.608c0-.076.038-.19.114-.267l2.016-2.016a.41.41 0 01.267-.114h.608a.41.41 0 01.267.114l2.016 2.016a.347.347 0 01.114.267v.608c-.076.077-.114.19-.19.229zm5.593 5.44l-4.832-2.777c-.266-.152-.57-.19-.837-.152-.723.038-1.332.684-1.332 1.408v5.554c0 .8.647 1.408 1.408 1.408.799 0 1.446-.647 1.446-1.408v-3.12l2.7 1.56c.686.38 1.561.152 1.941-.533.419-.646.19-1.521-.494-1.94zm2.549-7.533l-2.701 1.56 2.7 1.56c.686.38.914 1.256.533 1.94-.38.685-1.255.913-1.94.533l-4.832-2.778a1.644 1.644 0 01-.647-.798c-.037-.153-.076-.305-.076-.457 0-.114.039-.228.039-.342.114-.343.342-.647.646-.837l4.832-2.778c.685-.38 1.56-.152 1.94.533.457.609.19 1.484-.494 1.864`,source:`https://www.snowflake.com/brand-guidelines/`,hex:`29B5E8`,guidelines:`https://www.snowflake.com/brand-guidelines/`},We={title:`Supabase`,slug:`supabase`,get svg(){return J+`Supabase</title><path d="`+this.path+Y},path:`M11.9 1.036c-.015-.986-1.26-1.41-1.874-.637L.764 12.05C-.33 13.427.65 15.455 2.409 15.455h9.579l.113 7.51c.014.985 1.259 1.408 1.873.636l9.262-11.653c1.093-1.375.113-3.403-1.645-3.403h-9.642z`,source:`https://github.com/supabase/supabase/blob/4031a7549f5d46da7bc79c01d56be4177dc7c114/packages/common/assets/images/supabase-logo-wordmark--light.svg`,hex:`3FCF8E`},Ge={title:`TikTok`,slug:`tiktok`,get svg(){return J+`TikTok</title><path d="`+this.path+Y},path:`M12.525.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.44 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z`,source:`https://tiktok.com`,hex:`000000`},Ke={title:`Vercel`,slug:`vercel`,get svg(){return J+`Vercel</title><path d="`+this.path+Y},path:`m12 1.608 12 20.784H0Z`,source:`https://vercel.com/geist/brands`,hex:`000000`,guidelines:`https://vercel.com/geist/brands`},qe={title:`YouTube`,slug:`youtube`,get svg(){return J+`YouTube</title><path d="`+this.path+Y},path:`M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z`,source:`https://www.youtube.com/howyoutubeworks/resources/brand-resources/#logos-icons-and-colors`,hex:`FF0000`,guidelines:`https://www.youtube.com/howyoutubeworks/resources/brand-resources/#logos-icons-and-colors`};function Je(e){let t=(0,K.c)(8),n,r,i;t[0]===e?(n=t[1],r=t[2],i=t[3]):({icon:n,size:i,...r}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i);let a=i===void 0?24:i,o;return t[4]!==n||t[5]!==r||t[6]!==a?(o=(0,q.jsx)(we,{...r,icon:n,size:a}),t[4]=n,t[5]=r,t[6]=a,t[7]=o):o=t[7],o}function Ye(e){function t(t){let n=(0,K.c)(2),r;return n[0]===t?r=n[1]:(r=(0,q.jsx)(Je,{...t,icon:e}),n[0]=t,n[1]=r),r}return t}function Xe(e){let t=(0,K.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({size:r,...n}=e,t[0]=e,t[1]=n,t[2]=r);let i=r===void 0?24:r,a,o;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,q.jsx)(`path`,{d:`M17.6,9c-0.1-0.1-0.2-0.2-0.4-0.2c-0.1,0-0.2,0.1-0.3,0.1c-1.1,0.8-2.5,4.4-3.7,9l1.1,0c2.1,0,4.2,0,6.4,0.1 c-0.6-2.1-1.1-4-1.6-5.5C18.4,10.4,17.9,9.4,17.6,9z`}),o=(0,q.jsx)(`path`,{d:`M20,0C9,0,0,9,0,20c0,11,9,20,20,20s20-9,20-20C40,9,31,0,20,0z M34.4,20.4C34.4,20.4,34.4,20.4,34.4,20.4 C34.4,20.4,34.3,20.4,34.4,20.4C34.3,20.4,34.3,20.4,34.4,20.4c-0.1,0.1-0.1,0.1-0.1,0.1c0,0,0,0,0,0c0,0,0,0,0,0 c-0.1,0.1-0.3,0.1-0.5,0.1c0,0-9.5,0-9.5,0c0.1,0.3,0.2,0.7,0.2,1.1c0.5,2.2,1.9,8.2,3.4,8.2l0,0l0,0l0,0c1.1,0,1.7-1.7,3-5.3l0,0 c0.2-0.6,0.4-1.2,0.7-1.9l0.1-0.2l0,0c0.1-0.2,0.2-0.3,0.4-0.3c0.3,0,0.5,0.2,0.5,0.5c0,0,0,0.1,0,0.1l0,0l-0.1,0.2 c-0.1,0.4-0.3,1-0.4,1.7c-0.8,3.2-1.9,7.9-4.9,7.9l0,0c-1.9,0-3.1-3.1-3.5-4.4c-0.9-2.4-1.6-5-2.3-7.6h-8.7l-1.8,5.8l0,0 c-0.2,0.3-0.5,0.4-0.8,0.4c-0.5,0-0.9-0.4-0.9-0.9l0,0l0.1-0.7c0.3-1.5,0.5-3,0.9-4.6H6.4l0,0c-0.7-0.1-1.2-0.7-1.2-1.4 c0-0.7,0.5-1.2,1.1-1.4c0.1,0,0.2,0,0.4,0c0.1,0,0.1,0,0.2,0c1.2,0,2.4,0,3.8,0.1c1.9-7.8,4.1-11.8,6.6-11.8c2.7,0,4.6,6,6.2,11.9 l0,0c3.2,0.1,6.7,0.2,10,0.4l0.1,0c0.1,0,0.1,0,0.2,0l0,0c0,0,0,0,0,0c0,0,0,0,0,0c0.5,0.1,0.8,0.5,0.8,1 C34.8,19.9,34.6,20.2,34.4,20.4z`}),t[3]=a,t[4]=o):(a=t[3],o=t[4]);let s;return t[5]!==n||t[6]!==i?(s=(0,q.jsxs)(Ce,{...n,defaultLabel:`Amplitude`,fill:`currentColor`,size:i,viewBox:`0 0 40 40`,children:[a,o]}),t[5]=n,t[6]=i,t[7]=s):s=t[7],s}function Ze(e){let t=(0,K.c)(7),n,r;t[0]===e?(n=t[1],r=t[2]):({size:r,...n}=e,t[0]=e,t[1]=n,t[2]=r);let i=r===void 0?24:r,a;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,q.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M1.32507 73.4886C0.00220402 72.0863 0.0802819 69.9867 0.653968 68.1462C3.57273 58.7824 5.14534 48.8249 5.14534 38.5C5.14534 27.8899 3.48464 17.6677 0.408998 8.0791C-0.129499 6.40029 -0.266346 4.50696 0.811824 3.11199C2.27491 1.21902 4.56777 0 7.14535 0H37.1454C58.1322 0 75.1454 17.0132 75.1454 38C75.1454 58.9868 58.1322 76 37.1454 76H7.14535C4.85185 76 2.78376 75.0349 1.32507 73.4886Z`}),t[3]=a):a=t[3];let o;return t[4]!==n||t[5]!==i?(o=(0,q.jsx)(Ce,{...n,defaultLabel:`Laminar`,fill:`currentColor`,size:i,viewBox:`0 0 76 76`,children:a}),t[4]=n,t[5]=i,t[6]=o):o=t[6],o}function Qe(e){let t=(0,K.c)(7),n,r;t[0]===e?(n=t[1],r=t[2]):({size:r,...n}=e,t[0]=e,t[1]=n,t[2]=r);let i=r===void 0?24:r,a;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,q.jsx)(`path`,{d:`M38.29505,27.2267312 C42.787319,27.2267312 45.2478437,28.2331825 45.6964751,28.7379193 C45.2478437,29.2426562 42.787319,30.2491074 38.29505,30.2491074 C33.8027811,30.2491074 31.3422564,29.2426562 30.893625,28.7379193 C31.3422564,28.2331825 33.8027811,27.2267312 38.29505,27.2267312 L38.29505,27.2267312 Z M37.7838882,35.2823712 C37.6191254,35.1977447 37.5029973,35.0294991 37.5029973,34.8300223 C37.5029973,34.5499487 37.7292981,34.3212556 38.0062188,34.3212556 C38.0866151,34.3212556 38.1600636,34.3444272 38.2285494,34.3796882 L37.7838882,35.2823712 Z M43.5674612,43.5908834 C43.4930201,43.6513309 43.322302,43.7681961 42.9709403,43.9092403 C42.6582879,44.0341652 42.2880677,44.1470006 41.8682202,44.2457316 C40.7525971,44.5076708 39.3808968,44.6517374 38.0052262,44.6517374 C34.9968155,44.6517374 32.9005556,44.0019265 32.4489466,43.5989431 L31.1159556,31.150783 C33.1596104,31.9869737 36.1700063,32.2640249 38.29505,32.2640249 C40.3843621,32.2640249 43.3292498,31.9950334 45.3719121,31.1910813 L44.5748967,36.6656121 C43.0731726,36.0994203 41.1992434,35.2773339 39.4235763,34.4129344 C39.2429327,33.786295 38.6801584,33.3248789 38.0062188,33.3248789 C37.1883598,33.3248789 36.5233532,34.0008837 36.5233532,34.8300223 C36.5233532,35.6611757 37.1883598,36.3361731 38.0062188,36.3361731 C38.1997655,36.3361731 38.3843793,36.2958747 38.5531123,36.2273675 C41.0344805,37.4524373 42.8835961,38.2382552 44.2751474,38.7228428 L43.5674612,43.5908834 Z M28.8718062,28.8467249 L30.4787403,43.8498003 C30.5918907,46.6344162 37.6995217,46.6666549 38.0052262,46.6666549 C39.5268012,46.6666549 41.0573091,46.5034466 42.3148665,46.2092686 C42.8299985,46.0883736 43.2964958,45.9453144 43.7004625,45.7831136 C44.8736534,45.3116229 45.4890327,44.6688642 45.5317122,43.8739793 L46.2006891,39.2759376 C46.6562683,39.3696313 47.0284735,39.4109371 47.3252452,39.4109371 C48.2592321,39.4109371 48.5053839,39.0281028 48.6751094,38.7641486 C48.853768,38.48609 48.9053804,38.1445615 48.8220064,37.8010181 C48.6314374,37.0111704 47.5168068,35.971473 46.7723963,35.3539008 L47.7133311,28.8850083 L47.7043982,28.8840008 C47.7083684,28.8346354 47.7242492,28.7882923 47.7242492,28.7379193 C47.7242492,25.9543109 41.7967568,25.2118138 38.29505,25.2118138 C34.7933433,25.2118138 28.8658509,25.9543109 28.8658509,28.7379193 C28.8658509,28.7751953 28.8787541,28.8084414 28.8807391,28.8457174 L28.8718062,28.8467249 Z M37.8355007,20.0596698 C46.4865427,20.0596698 53.5246954,27.2035597 53.5246954,35.98457 C53.5246954,44.7655803 46.4865427,51.9094701 37.8355007,51.9094701 C29.1834661,51.9094701 22.1453133,44.7655803 22.1453133,35.98457 C22.1453133,27.2035597 29.1834661,20.0596698 37.8355007,20.0596698 L37.8355007,20.0596698 Z M12.9850945,41.8348828 L12.9850945,43.8498003 L21.91802,43.8498003 L21.91802,43.7309201 C24.7735785,49.7494786 30.8261318,53.9243876 37.8355007,53.9243876 C47.5803298,53.9243876 55.50979,45.8768072 55.50979,35.98457 C55.50979,26.0923327 47.5803298,18.0447524 37.8355007,18.0447524 C30.253432,18.0447524 23.7909567,22.9248825 21.2857674,29.7453781 L12.9850945,29.7453781 L12.9850945,31.7602955 L20.6763434,31.7602955 C20.3666686,33.0568949 20.1850325,34.4018523 20.1701443,35.7901304 L11,35.7901304 L11,37.8050479 L20.2515331,37.8050479 C20.3914823,39.2044081 20.7061198,40.548358 21.1448257,41.8348828 L12.9850945,41.8348828 Z M67.0799136,66.035049 C65.8789314,67.2560889 63.7965672,67.2631412 62.5965775,66.046131 L51.9326496,55.220987 C53.6487638,53.9223727 55.1802643,52.3900279 56.4934043,50.6763406 L67.0918241,61.4853653 C67.688345,62.0918555 68.0168782,62.8998374 68.014902,63.7591997 C68.0139005,64.6205769 67.6823898,65.4275513 67.0799136,66.035049 L67.0799136,66.035049 Z M68.4972711,60.0628336 L57.6616325,49.0100039 C60.0635969,45.2562127 61.4650736,40.7851108 61.4650736,35.98457 C61.4650736,22.7586518 50.8646687,12 37.8355007,12 C28.4728022,12 19.9825528,17.6196048 16.2039254,26.316996 L18.0202869,27.1290077 C21.4812992,19.1630316 29.2588997,14.0149175 37.8355007,14.0149175 C49.7708816,14.0149175 59.4799791,23.8698788 59.4799791,35.98457 C59.4799791,48.0982537 49.7708816,57.9542225 37.8355007,57.9542225 C29.8623684,57.9542225 22.5572205,53.5244265 18.7686675,46.3936336 L17.0217843,47.3507194 C21.1557437,55.1343455 29.1318536,59.9691399 37.8355007,59.9691399 C42.3912926,59.9691399 46.6483279,58.6503765 50.2602074,56.3735197 L61.1941082,67.4716851 C62.1648195,68.4569797 63.4561235,69 64.8278238,69 C66.2074645,69 67.5067089,68.4529499 68.4813903,67.462618 C69.4580568,66.4773233 69.9980025,65.1635972 70,63.7622221 C70.0029653,62.3628619 69.4679823,61.0491357 68.4972711,60.0628336 L68.4972711,60.0628336 Z`}),t[3]=a):a=t[3];let o;return t[4]!==n||t[5]!==i?(o=(0,q.jsx)(Ce,{...n,defaultLabel:`AWS Athena`,fill:`currentColor`,size:i,viewBox:`11 12 59 57`,children:a}),t[4]=n,t[5]=i,t[6]=o):o=t[6],o}function $e(e){let t=(0,K.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({size:r,...n}=e,t[0]=e,t[1]=n,t[2]=r);let i=r===void 0?24:r,a,o;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,q.jsx)(`path`,{d:`m2.207 2.381 1.687-1.284L4.21 1h7.604l.313.102 1.736 1.285.215.423v9.98l-.145.362-1.268 1.343-.384.165H3.967l-.36-.142-1.439-1.342L2 12.79V2.81l.207-.429Zm.844 6.674 1.174 1.298h.014v1.05h-.48l-.708-.788v1.941l1.118 1.05h7.88l.972-1.026v-2.028l-.964.851H7.16v-1.05h4.505l1.363-1.211V7.188l-.964.853H7.16v-1.05h4.505l1.363-1.208V3.965l-.964.856H3.77l-.72-.735v1.607l1.175 1.298h.014v1.05h-.48l-.708-.788v1.802Zm8.59-7.004H4.388l-1.069.816.893.914h7.454l1.05-.935-1.073-.795Z`,fill:`currentColor`,fillRule:`evenodd`}),o=(0,q.jsx)(`path`,{d:`M5.7 8.452a.788.788 0 1 1 0 1.576.788.788 0 0 1 0-1.576Zm-.93 3.858.93-.929.928.929-.929.928-.928-.928Zm.93-7.05.796.46v.92l-.797.46-.796-.46v-.92l.796-.46Z`,fill:`currentColor`}),t[3]=a,t[4]=o):(a=t[3],o=t[4]);let s;return t[5]!==n||t[6]!==i?(s=(0,q.jsxs)(Ce,{...n,defaultLabel:`Cloudflare D1`,size:i,viewBox:`0 0 16 16`,children:[a,o]}),t[5]=n,t[6]=i,t[7]=s):s=t[7],s}function et(e){let t=(0,K.c)(11),n,r,i;if(t[0]!==e){let{"aria-hidden":a,"aria-label":o,role:s,size:c,title:l,...u}=e;n=u,r=c===void 0?24:c,i=Se({ariaHidden:a,ariaLabel:o,ariaLabelledBy:n[`aria-labelledby`],defaultLabel:`Unknown provider`,role:s,title:l}),t[0]=e,t[1]=n,t[2]=r,t[3]=i}else n=t[1],r=t[2],i=t[3];let a=i,o=a.hidden?!0:void 0,s;return t[4]!==a.label||t[5]!==a.labelledBy||t[6]!==a.role||t[7]!==n||t[8]!==r||t[9]!==o?(s=(0,q.jsx)(_e,{...n,"aria-hidden":o,"aria-label":a.label,"aria-labelledby":a.labelledBy,role:a.role,size:r,stroke:2}),t[4]=a.label,t[5]=a.labelledBy,t[6]=a.role,t[7]=n,t[8]=r,t[9]=o,t[10]=s):s=t[10],s}function tt(e){let t=(0,K.c)(7),n,r;t[0]===e?(n=t[1],r=t[2]):({size:r,...n}=e,t[0]=e,t[1]=n,t[2]=r);let i=r===void 0?24:r,a;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,q.jsx)(`path`,{d:`M12 3C7.03 3 3 4.57 3 6.5v11C3 19.43 7.03 21 12 21s9-1.57 9-3.5v-11C21 4.57 16.97 3 12 3Zm0 2c4.42 0 7 1.24 7 1.5S16.42 8 12 8 5 6.76 5 6.5 7.58 5 12 5Zm7 5.07c-1.62 1.08-4.22 1.68-7 1.68s-5.38-.6-7-1.68V8.93c1.62.69 4.01 1.07 7 1.07s5.38-.38 7-1.07v1.14Zm0 3.5c-1.62 1.08-4.22 1.68-7 1.68s-5.38-.6-7-1.68v-1.14c1.62.69 4.01 1.07 7 1.07s5.38-.38 7-1.07v1.14Zm-7 5.68c-4.42 0-7-1.24-7-1.75v-1.57c1.62 1.08 4.22 1.68 7 1.68s5.38-.6 7-1.68v1.57c0 .51-2.58 1.75-7 1.75Z`}),t[3]=a):a=t[3];let o;return t[4]!==n||t[5]!==i?(o=(0,q.jsx)(Ce,{...n,defaultLabel:`MotherDuck`,fill:`currentColor`,size:i,viewBox:`0 0 24 24`,children:a}),t[4]=n,t[5]=i,t[6]=o):o=t[6],o}function nt(e){let t=(0,K.c)(13),n,r,i,a;if(t[0]!==e){let{"aria-hidden":o,"aria-label":s,defaultLabel:c,Icon:l,role:u,size:d,title:f,...p}=e;n=l,r=p,i=d===void 0?24:d,a=Se({ariaHidden:o,ariaLabel:s,ariaLabelledBy:r[`aria-labelledby`],defaultLabel:c,role:u,title:f}),t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a}else n=t[1],r=t[2],i=t[3],a=t[4];let o=a,s=o.hidden?!0:void 0,c;return t[5]!==n||t[6]!==o.label||t[7]!==o.labelledBy||t[8]!==o.role||t[9]!==r||t[10]!==i||t[11]!==s?(c=(0,q.jsx)(n,{...r,"aria-hidden":s,"aria-label":o.label,"aria-labelledby":o.labelledBy,role:o.role,size:i,stroke:2}),t[5]=n,t[6]=o.label,t[7]=o.labelledBy,t[8]=o.role,t[9]=r,t[10]=i,t[11]=s,t[12]=c):c=t[12],c}function rt(e){let t=(0,K.c)(2),n;return t[0]===e?n=t[1]:(n=(0,q.jsx)(nt,{...e,defaultLabel:`Granola`,Icon:ve}),t[0]=e,t[1]=n),n}function it(e){let t=(0,K.c)(2),n;return t[0]===e?n=t[1]:(n=(0,q.jsx)(nt,{...e,defaultLabel:`E2B`,Icon:x}),t[0]=e,t[1]=n),n}function at(e){let t=(0,K.c)(2),n;return t[0]===e?n=t[1]:(n=(0,q.jsx)(nt,{...e,defaultLabel:`1Password`,Icon:b}),t[0]=e,t[1]=n),n}function ot(e){let t=(0,K.c)(7),n,r;t[0]===e?(n=t[1],r=t[2]):({size:r,...n}=e,t[0]=e,t[1]=n,t[2]=r);let i=r===void 0?24:r,a;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,q.jsx)(`path`,{d:`M4.5 4A2.5 2.5 0 0 0 2 6.5v11A2.5 2.5 0 0 0 4.5 20h15a2.5 2.5 0 0 0 2.5-2.5v-11A2.5 2.5 0 0 0 19.5 4h-15Zm0 2h15a.5.5 0 0 1 .5.5v11a.5.5 0 0 1-.5.5h-15a.5.5 0 0 1-.5-.5v-11a.5.5 0 0 1 .5-.5Zm3.25 3A1.25 1.25 0 0 0 6.5 10.25v4.5a1.25 1.25 0 1 0 2.5 0v-4.5A1.25 1.25 0 0 0 7.75 9Zm4.25-1a1.25 1.25 0 0 0-1.25 1.25v5.5a1.25 1.25 0 1 0 2.5 0v-5.5A1.25 1.25 0 0 0 12 8Zm4.25 3a1.25 1.25 0 0 0-1.25 1.25v2.5a1.25 1.25 0 1 0 2.5 0v-2.5A1.25 1.25 0 0 0 16.25 11Z`}),t[3]=a):a=t[3];let o;return t[4]!==n||t[5]!==i?(o=(0,q.jsx)(Ce,{...n,defaultLabel:`Microsoft Clarity`,fill:`currentColor`,size:i,viewBox:`0 0 24 24`,children:a}),t[4]=n,t[5]=i,t[6]=o):o=t[6],o}function st(e){let t=(0,K.c)(7),n,r;t[0]===e?(n=t[1],r=t[2]):({size:r,...n}=e,t[0]=e,t[1]=n,t[2]=r);let i=r===void 0?24:r,a;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,q.jsx)(`path`,{d:`M12.2 3.5a1 1 0 0 1 .93.63l5.5 14a1 1 0 0 1-1.86.74L15.6 15.9H8.4l-1.17 2.97a1 1 0 1 1-1.86-.74l5.5-14a1 1 0 0 1 .93-.63h.4Zm-3 10.4h5.6L12 6.77 9.2 13.9Zm9.95 4.88a1 1 0 0 1-.36 1.37c-3.77 2.16-8.38 2.16-12.15 0a1 1 0 0 1 1-1.73 10.2 10.2 0 0 0 10.15 0 1 1 0 0 1 1.36.36Z`}),t[3]=a):a=t[3];let o;return t[4]!==n||t[5]!==i?(o=(0,q.jsx)(Ce,{...n,defaultLabel:`Amazon Ads`,fill:`currentColor`,size:i,viewBox:`0 0 24 24`,children:a}),t[4]=n,t[5]=i,t[6]=o):o=t[6],o}function ct(e){let t=(0,K.c)(7),n,r;t[0]===e?(n=t[1],r=t[2]):({size:r,...n}=e,t[0]=e,t[1]=n,t[2]=r);let i=r===void 0?24:r,a;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,q.jsx)(`path`,{d:`M5.75 3A2.75 2.75 0 0 0 3 5.75v12.5A2.75 2.75 0 0 0 5.75 21h12.5A2.75 2.75 0 0 0 21 18.25V5.75A2.75 2.75 0 0 0 18.25 3H5.75Zm2.09 6.28a1.48 1.48 0 1 1 0-2.96 1.48 1.48 0 0 1 0 2.96ZM6.54 18v-7.45h2.6V18h-2.6Zm4.06 0v-7.45h2.48v1.02h.04c.35-.65 1.2-1.2 2.45-1.2 2.62 0 3.1 1.73 3.1 3.97V18h-2.59v-3.25c0-.78-.01-1.78-1.08-1.78-1.09 0-1.26.85-1.26 1.72V18H10.6Z`}),t[3]=a):a=t[3];let o;return t[4]!==n||t[5]!==i?(o=(0,q.jsx)(Ce,{...n,defaultLabel:`LinkedIn Ads`,fill:`currentColor`,size:i,viewBox:`0 0 24 24`,children:a}),t[4]=n,t[5]=i,t[6]=o):o=t[6],o}function lt(e){let t=(0,K.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({size:r,...n}=e,t[0]=e,t[1]=n,t[2]=r);let i=r===void 0?24:r,a,o;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,q.jsx)(`path`,{d:`M4.75 4A2.75 2.75 0 0 0 2 6.75v10.5A2.75 2.75 0 0 0 4.75 20h14.5A2.75 2.75 0 0 0 22 17.25V6.75A2.75 2.75 0 0 0 19.25 4H4.75Zm.36 2h13.78L12 11.17 5.11 6ZM4 7.6l5.35 4.02L4 16.15V7.6Zm2.08 10.4 4.9-4.16.42.32a1 1 0 0 0 1.2 0l.42-.32 4.9 4.16H6.08ZM20 16.15l-5.35-4.53L20 7.6v8.55Z`}),o=(0,q.jsx)(`path`,{d:`M17.5 10.25a1 1 0 0 1 1 1v.5h.5a1 1 0 1 1 0 2h-.5v.5a1 1 0 1 1-2 0v-.5H16a1 1 0 1 1 0-2h.5v-.5a1 1 0 0 1 1-1Z`}),t[3]=a,t[4]=o):(a=t[3],o=t[4]);let s;return t[5]!==n||t[6]!==i?(s=(0,q.jsxs)(Ce,{...n,defaultLabel:`SendGrid`,fill:`currentColor`,size:i,viewBox:`0 0 24 24`,children:[a,o]}),t[5]=n,t[6]=i,t[7]=s):s=t[7],s}function ut(e){let t=(0,K.c)(10),n,r;t[0]===e?(n=t[1],r=t[2]):({size:r,...n}=e,t[0]=e,t[1]=n,t[2]=r);let i=r===void 0?24:r,a,o,s,c;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,q.jsx)(`path`,{d:`M27.255 80.719c0 7.33-5.978 13.317-13.309 13.317C6.616 94.036.63 88.049.63 80.719s5.987-13.317 13.317-13.317h13.309zm6.709 0c0-7.33 5.987-13.317 13.317-13.317s13.317 5.986 13.317 13.317v33.335c0 7.33-5.986 13.317-13.317 13.317-7.33 0-13.317-5.987-13.317-13.317zm0 0`,fill:`#de1c59`}),o=(0,q.jsx)(`path`,{d:`M47.281 27.255c-7.33 0-13.317-5.978-13.317-13.309C33.964 6.616 39.951.63 47.281.63s13.317 5.987 13.317 13.317v13.309zm0 6.709c7.33 0 13.317 5.987 13.317 13.317s-5.986 13.317-13.317 13.317H13.946C6.616 60.598.63 54.612.63 47.281c0-7.33 5.987-13.317 13.317-13.317zm0 0`,fill:`#35c5f0`}),s=(0,q.jsx)(`path`,{d:`M100.745 47.281c0-7.33 5.978-13.317 13.309-13.317 7.33 0 13.317 5.987 13.317 13.317s-5.987 13.317-13.317 13.317h-13.309zm-6.709 0c0 7.33-5.987 13.317-13.317 13.317s-13.317-5.986-13.317-13.317V13.946C67.402 6.616 73.388.63 80.719.63c7.33 0 13.317 5.987 13.317 13.317zm0 0`,fill:`#2eb57d`}),c=(0,q.jsx)(`path`,{d:`M80.719 100.745c7.33 0 13.317 5.978 13.317 13.309 0 7.33-5.987 13.317-13.317 13.317s-13.317-5.987-13.317-13.317v-13.309zm0-6.709c-7.33 0-13.317-5.987-13.317-13.317s5.986-13.317 13.317-13.317h33.335c7.33 0 13.317 5.986 13.317 13.317 0 7.33-5.987 13.317-13.317 13.317zm0 0`,fill:`#ebb02e`}),t[3]=a,t[4]=o,t[5]=s,t[6]=c):(a=t[3],o=t[4],s=t[5],c=t[6]);let l;return t[7]!==n||t[8]!==i?(l=(0,q.jsxs)(Ce,{...n,defaultLabel:`Slack`,size:i,viewBox:`0 0 128 128`,children:[a,o,s,c]}),t[7]=n,t[8]=i,t[9]=l):l=t[9],l}var dt=Ye(Ae),ft={amplitude:Xe,amazon_ads:st,airtable:Ye(Te),aws_athena_connector:Qe,bigquery:Ye(Me),cal:Ye(Ee),cloudflare_d1:$e,cloudflare_r2_sql:Ye(De),cloudflare_web_analytics:Ye(De),cloudflare_workers_observability:Ye(De),confluence:Ye(Oe),discord:Ye(ke),e2b:it,ga:Ye(je),github:dt,google_docs:Ye(Ne),google_search_console:Ye(Pe),granola:rt,jira:Ye(Fe),laminar:Ze,linear:Ye(Ie),linkedin_ads:ct,microsoft_clarity:ot,mixpanel:Ye(Le),motherduck:tt,mongodb:Ye(Re),mysql:Ye(ze),onepassword:at,postgres:Ye(Be),supabase:Ye(We),posthog:Ye(Ve),sendgrid:lt,sentry:Ye(He),slack:ut,snowflake:Ye(Ue),tiktok_marketing:Ye(Ge),vercel:Ye(Ke),youtube_analytics:Ye(qe)};function pt(e){return e in ft}function mt(e){return pt(e)?ft[e]:et}var X=e(t()),ht=X.createContext(void 0);function gt(){let e=X.useContext(ht);if(e===void 0)throw Error(p(64));return e}var _t=function(e){return e.activationDirection=`data-activation-direction`,e.orientation=`data-orientation`,e}({}),vt={tabActivationDirection:e=>({[_t.activationDirection]:e})},yt=X.forwardRef(function(e,t){let{className:n,defaultValue:r=0,onValueChange:i,orientation:s=`horizontal`,render:c,value:l,...u}=e,d=A(),p=Object.hasOwn(e,`defaultValue`),m=X.useRef([]),[h,g]=X.useState(()=>new Map),[_,v]=le({controlled:l,default:r,name:`Tabs`,state:`value`}),y=l!==void 0,[b,x]=X.useState(()=>new Map),[S,C]=X.useState(`none`),w=a((e,t)=>{i?.(e,t),!t.isCanceled&&(v(e),C(t.activationDirection))}),T=a((e,t)=>{g(n=>{if(n.get(e)===t)return n;let r=new Map(n);return r.set(e,t),r})}),E=a((e,t)=>{g(n=>{if(!n.has(e)||n.get(e)!==t)return n;let r=new Map(n);return r.delete(e),r})}),ee=X.useCallback(e=>h.get(e),[h]),D=X.useCallback(e=>{for(let t of b.values())if(e===t?.value)return t?.id},[b]),O=X.useCallback(e=>{if(e===void 0)return null;for(let[t,n]of b.entries())if(n!=null&&e===(n.value??n.index))return t;return null},[b]),k=X.useMemo(()=>({direction:d,getTabElementBySelectedValue:O,getTabIdByPanelValue:D,getTabPanelIdByValue:ee,onValueChange:w,orientation:s,registerMountedTabPanel:T,setTabMap:x,unregisterMountedTabPanel:E,tabActivationDirection:S,value:_}),[d,O,D,ee,w,s,T,x,E,S,_]),j=X.useMemo(()=>{for(let e of b.values())if(e!=null&&e.value===_)return e},[b,_]),M=X.useMemo(()=>{for(let e of b.values())if(e!=null&&!e.disabled)return e.value},[b]);f(()=>{if(y||b.size===0)return;let e=j?.disabled;if(p&&e&&_===r||!e&&!(j==null&&_!==null))return;let t=M??null;_!==t&&(v(t),C(`none`))},[r,M,p,y,j,C,v,b,_]);let P=o(`div`,e,{state:{orientation:s,tabActivationDirection:S},ref:t,props:u,stateAttributesMapping:vt});return(0,q.jsx)(ht.Provider,{value:k,children:(0,q.jsx)(N,{elementsRef:m,children:P})})}),bt=X.createContext(void 0);function xt(){let e=X.useContext(bt);if(e===void 0)throw Error(p(65));return e}var St=X.forwardRef(function(e,t){let{className:n,disabled:r=!1,render:i,value:a,id:s,nativeButton:l=!0,...u}=e,{value:d,getTabPanelIdByValue:p,orientation:m}=gt(),{activateOnFocus:h,highlightedTabIndex:g,onTabActivation:_,setHighlightedTabIndex:v,tabsListElement:y}=xt(),b=I(s),{compositeProps:x,compositeRef:S,index:C}=ue({metadata:X.useMemo(()=>({disabled:r,id:b,value:a}),[r,b,a])}),w=a===d,T=X.useRef(!1);f(()=>{if(T.current){T.current=!1;return}if(!(w&&C>-1&&g!==C))return;let e=y;if(e!=null){let t=j(O(e));if(t&&k(e,t))return}r||v(C)},[w,C,g,v,r,y]);let{getButtonProps:E,buttonRef:ee}=c({disabled:r,native:l,focusableWhenDisabled:!0}),D=p(a),A=X.useRef(!1),M=X.useRef(!1);function N(e){w||r||_(a,F(P,e.nativeEvent,void 0,{activationDirection:`none`}))}function L(e){w||(C>-1&&!r&&v(C),!r&&h&&(!A.current||A.current&&M.current)&&_(a,F(P,e.nativeEvent,void 0,{activationDirection:`none`})))}function R(e){if(w||r)return;A.current=!0;function t(){A.current=!1,M.current=!1}(!e.button||e.button===0)&&(M.current=!0,O(e.currentTarget).addEventListener(`pointerup`,t,{once:!0}))}return o(`button`,e,{state:X.useMemo(()=>({disabled:r,active:w,orientation:m}),[r,w,m]),ref:[t,ee,S],props:[x,{role:`tab`,"aria-controls":D,"aria-selected":w,id:b,onClick:N,onFocus:L,onPointerDown:R,[fe]:w?``:void 0,onKeyDownCapture(){T.current=!0}},u,E]})}),Ct=function(e){return e.index=`data-index`,e.activationDirection=`data-activation-direction`,e.orientation=`data-orientation`,e.hidden=`data-hidden`,e}({}),wt=X.forwardRef(function(e,t){let{className:n,value:r,render:i,keepMounted:a=!1,...s}=e,{value:c,getTabIdByPanelValue:l,orientation:u,tabActivationDirection:d,registerMountedTabPanel:p,unregisterMountedTabPanel:m}=gt(),h=I(),{ref:g,index:_}=M({metadata:X.useMemo(()=>({id:h,value:r}),[h,r])}),v=r!==c,y=l(r),b=o(`div`,e,{state:X.useMemo(()=>({hidden:v,orientation:u,tabActivationDirection:d}),[v,u,d]),ref:[t,g],props:[{"aria-labelledby":y,hidden:v,id:h??void 0,role:`tabpanel`,tabIndex:v?-1:0,[Ct.index]:_},s],stateAttributesMapping:vt});return f(()=>{if(!(v&&!a)&&h!=null)return p(r,h),()=>{m(r,h)}},[v,a,r,h,p,m]),!v||a?b:null}),Tt=X.forwardRef(function(e,t){let{activateOnFocus:n=!1,className:r,loopFocus:i=!0,render:o,...c}=e,{getTabElementBySelectedValue:l,onValueChange:u,orientation:d,value:f,setTabMap:p,tabActivationDirection:m}=gt(),[h,g]=X.useState(0),[_,v]=X.useState(null),y=Dt(f,d,_,l),b=a((e,t)=>{e!==f&&(t.activationDirection=y(e),u(e,t))}),x=X.useMemo(()=>({orientation:d,tabActivationDirection:m}),[d,m]),S={"aria-orientation":d===`vertical`?`vertical`:void 0,role:`tablist`},C=X.useMemo(()=>({activateOnFocus:n,highlightedTabIndex:h,onTabActivation:b,setHighlightedTabIndex:g,tabsListElement:_,value:f}),[n,h,b,g,_,f]);return(0,q.jsx)(bt.Provider,{value:C,children:(0,q.jsx)(de,{render:o,className:r,state:x,refs:[t,v],props:[S,c],stateAttributesMapping:vt,highlightedIndex:h,enableHomeAndEndKeys:!0,loopFocus:i,orientation:d,onHighlightedIndexChange:g,onMapChange:p,disabledIndices:s})})});function Et(e,t){let{left:n,top:r}=e.getBoundingClientRect(),{left:i,top:a}=t.getBoundingClientRect();return{left:n-i,top:r-a}}function Dt(e,t,n,r){let[i,a]=X.useState(null);return f(()=>{if(e==null||n==null){a(null);return}let i=r(e);if(i==null){a(null);return}let{left:o,top:s}=Et(i,n);a(t===`horizontal`?o:s)},[t,r,n,e]),X.useCallback(o=>{if(o===e)return`none`;if(o==null)return a(null),`none`;if(o!=null&&n!=null){let e=r(o);if(e!=null){let{left:r,top:o}=Et(e,n);if(i==null)return a(t===`horizontal`?r:o),`none`;if(t===`horizontal`){if(r<i)return a(r),`left`;if(r>i)return a(r),`right`}else if(o<i)return a(o),`up`;else if(o>i)return a(o),`down`}}return`none`},[r,t,i,n,e])}function Ot(e){let t=(0,K.c)(10),n,r,i;t[0]===e?(n=t[1],r=t[2],i=t[3]):({className:n,orientation:i,...r}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i);let a=i===void 0?`horizontal`:i,o;t[4]===n?o=t[5]:(o=m(`gap-2 group/tabs flex data-[orientation=horizontal]:flex-col`,n),t[4]=n,t[5]=o);let s;return t[6]!==a||t[7]!==r||t[8]!==o?(s=(0,q.jsx)(yt,{"data-slot":`tabs`,"data-orientation":a,className:o,...r}),t[6]=a,t[7]=r,t[8]=o,t[9]=s):s=t[9],s}var kt=l(`rounded-lg p-[3px] group-data-horizontal/tabs:h-8 data-[variant=line]:rounded-none group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col`,{variants:{variant:{default:`bg-muted`,line:`gap-1 bg-transparent`}},defaultVariants:{variant:`default`}});function At(e){let t=(0,K.c)(11),n,r,i;t[0]===e?(n=t[1],r=t[2],i=t[3]):({className:n,variant:i,...r}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i);let a=i===void 0?`default`:i,o;t[4]!==n||t[5]!==a?(o=m(kt({variant:a}),n),t[4]=n,t[5]=a,t[6]=o):o=t[6];let s;return t[7]!==r||t[8]!==o||t[9]!==a?(s=(0,q.jsx)(Tt,{"data-slot":`tabs-list`,"data-variant":a,className:o,...r}),t[7]=r,t[8]=o,t[9]=a,t[10]=s):s=t[10],s}function jt(e){let t=(0,K.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=m(`gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg:not([class*='size-'])]:size-4 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground dark:text-muted-foreground dark:hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center whitespace-nowrap transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0`,`group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent`,`data-active:bg-background dark:data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 data-active:text-foreground`,`after:bg-foreground after:absolute after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,q.jsx)(St,{"data-slot":`tabs-trigger`,className:i,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function Mt(e){let t=(0,K.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=m(`text-sm flex-1 outline-none`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,q.jsx)(wt,{"data-slot":`tabs-content`,className:i,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}var Nt={providerLabel:`Amplitude`,ko:{title:`Amplitude API Key 연결 가이드`,description:"OneQuery에 Amplitude를 연결하려면 프로젝트의 `API Key`, `Secret Key`, 그리고 올바른 `region` 값이 필요합니다.",steps:[{title:`Settings 열기`,paragraphs:[`Amplitude에 로그인해 주세요. 일반 워크스페이스는 https://app.amplitude.com/, EU 워크스페이스는 Amplitude EU URL에서 열립니다.`,"우측 상단의 Settings를 열고, 좌측 사이드바에서 `Projects`와 `API Keys` 메뉴를 확인하세요."],imageSrc:`/images/amplitude/step1_settings_sidebar.png`,imageAlt:`Amplitude settings sidebar`},{title:`대상 프로젝트 선택`,paragraphs:["`Projects`를 클릭한 뒤 OneQuery이 읽을 프로젝트를 선택하세요.","프로젝트를 클릭하면 `General` 탭의 Project Details 카드로 이동합니다."],imageSrc:`/images/amplitude/step2_projects.png`,imageAlt:`Amplitude projects list`,reverse:!0},{title:`Secret Key 확인`,paragraphs:["프로젝트 `General` 화면의 `Project Details` 카드에서 `Secret Key` 옆 `Show`를 눌러 값을 확인하세요.","`API Key` 옆 `Manage`를 누르면 API Key 목록 페이지로 이동합니다."],note:"이 화면은 프로젝트별 Secret Key를 보여 줍니다. OneQuery에서는 이 값을 `credentials.secretKey`에 넣습니다.",imageSrc:`/images/amplitude/step3_project_keys.png`,imageAlt:`Amplitude project details card with secret key and API key actions`},{title:`API Key 복사 후 OneQuery에 연결`,paragraphs:["`API and Secret Keys` 페이지에서 대상 프로젝트의 활성 API Key를 복사하세요. 필요한 키가 없으면 `Generate API Key`를 사용하세요.","복사한 값을 `credentials.apiKey`에 넣고, `region`은 EU Amplitude 프로젝트일 때만 `eu`, 그 외에는 `us`로 설정하세요."],code:`{
2
- "name": "amplitude_product",
3
- "credentials": {
4
- "type": "amplitude",
5
- "apiKey": "amplitude_api_key",
6
- "secretKey": "amplitude_secret_key",
7
- "region": "us"
8
- }
9
- }`,note:"`onequery source connect --source amplitude --input '<json>'`로 연결할 수 있습니다.",imageSrc:`/images/amplitude/step4_api_keys.png`,imageAlt:`Amplitude API and Secret Keys page`,reverse:!0}],closingTitle:`연동 준비 완료!`,closingDescription:`이제 Amplitude의 API Key, Secret Key, region 값을 OneQuery에 넣어 연결을 마칠 수 있습니다.`,closingNote:`Amplitude 화면에서 Secret Key를 노출했다면 채팅이나 스크린샷에 남기지 말고, 노출되었을 경우 새 값으로 교체하세요.`},en:{title:`Amplitude API Key Guide`,description:"To connect Amplitude to OneQuery, collect the project's `API Key`, `Secret Key`, and the correct `region` value.",steps:[{title:`Open Settings`,paragraphs:[`Sign in to Amplitude. Standard workspaces open at https://app.amplitude.com/, while EU workspaces use the Amplitude EU app URL.`,"Open Settings from the top-right corner, then use the left sidebar to reach `Projects` and `API Keys`."],imageSrc:`/images/amplitude/step1_settings_sidebar.png`,imageAlt:`Amplitude settings sidebar`},{title:`Select the target project`,paragraphs:["Open `Projects`, then click the project that OneQuery should read.","That takes you to the project's `General` settings page."],imageSrc:`/images/amplitude/step2_projects.png`,imageAlt:`Amplitude projects list`,reverse:!0},{title:`Reveal the secret key`,paragraphs:["In the `Project Details` card on the `General` tab, click `Show` next to `Secret Key` to reveal the value you need for OneQuery.","Use `Manage` next to `API Key` to open the API key inventory page."],note:"Use the revealed value as `credentials.secretKey` in OneQuery.",imageSrc:`/images/amplitude/step3_project_keys.png`,imageAlt:`Amplitude project details card with secret key and API key actions`},{title:`Copy the API key and connect OneQuery`,paragraphs:["On `API and Secret Keys`, copy an active API key for the target project, or click `Generate API Key` if you need a new one.","Use that value as `credentials.apiKey`, and set `region` to `eu` only for Amplitude EU projects; otherwise use `us`."],code:`{
10
- "name": "amplitude_product",
11
- "credentials": {
12
- "type": "amplitude",
13
- "apiKey": "amplitude_api_key",
14
- "secretKey": "amplitude_secret_key",
15
- "region": "us"
16
- }
17
- }`,note:"Connect with `onequery source connect --source amplitude --input '<json>'`.",imageSrc:`/images/amplitude/step4_api_keys.png`,imageAlt:`Amplitude API and Secret Keys page`,reverse:!0}],closingTitle:`Integration Ready!`,closingDescription:`You now have the exact Amplitude fields OneQuery expects: API key, secret key, and region.`,closingNote:`If a secret key is ever exposed in chat or screenshots, rotate it before using it again.`}},Pt=`__ONEQUERY_CONNECTOR_BASE_URL__`,Ft={amplitude:Nt,aws_athena_connector:{providerLabel:`AWS Athena Connector`,ko:{title:`AWS Athena Connector Connection Guide`,description:`먼저 고객 AWS 환경에 OneQuery Connector를 배포하고, 커넥터가 발급받은 Connector ID와 Athena 설정값을 OneQuery에 입력해야 합니다.`,steps:[{title:`AWS에 커넥터 배포`,paragraphs:[`OneQuery Connector는 고객 AWS 계정 안에서 실행되어 Athena에 직접 질의합니다.`,`EC2, ECS, 혹은 다른 실행 환경에 커넥터를 띄우고 아래 환경 변수를 설정해 주세요.`],code:`ONEQUERY_BASE_URL=${Pt}
18
- CONNECTOR_ENROLLMENT_TOKEN=<issued-by-onequery>
19
- ORGANIZATION_ID=<your-onequery-organization-id>
20
- AWS_REGION=<athena-region>`,note:`커넥터는 등록 후 주기적으로 heartbeat를 보내므로 외부에서 Athena 자격증명을 OneQuery에 직접 저장할 필요가 없습니다.`},{title:`Connector ID 확인`,paragraphs:[`커넥터가 정상 등록되면 로그에 connector.registration.succeeded 와 함께 Connector ID가 출력됩니다.`,`OneQuery의 Connector ID 입력칸에는 이 값을 그대로 넣어 주세요.`],code:`connector.registration.succeeded
21
- connectorId=connector_12345678-abcd-ef01-2345-6789abcdef01`,note:`커넥터를 삭제 후 다시 등록하면 Connector ID가 바뀔 수 있습니다. 그 경우 OneQuery 데이터소스 설정도 새 ID로 업데이트해야 합니다.`},{title:`Athena Database 입력`,paragraphs:[`Athena Database에는 Athena 콘솔 또는 AWS Glue Data Catalog에 보이는 데이터베이스 이름을 입력합니다.`,`즉, 쿼리에서 FROM 앞에 붙는 카탈로그 내 데이터베이스 이름입니다. 테이블 이름이나 S3 버킷 이름을 넣는 칸이 아닙니다.`],bullets:[`예: analytics`,`예: prod_events`,`현재 Dev 테스트 환경 예시: onequery_connector_test`],code:`-- database가 analytics 라면
22
- SELECT * FROM analytics.orders LIMIT 10;`},{title:`Athena Workgroup 입력`,paragraphs:[`Workgroup은 선택값입니다. 별도 워크그룹을 운영 중이면 그 이름을 입력하고, 아니라면 비워 두거나 기본값 primary를 사용하면 됩니다.`,`커넥터 IAM 권한과 Athena 설정이 해당 워크그룹에서 쿼리 실행을 허용해야 합니다.`],bullets:[`비워두면 커넥터 기본값 또는 Athena 기본 워크그룹을 사용합니다.`,`현재 Dev 테스트 환경 예시: onequery_connector_test`]},{title:`OneQuery에서 연결 테스트`,paragraphs:[`OneQuery Integration 페이지에서 AWS Athena Connector 데이터소스를 생성한 뒤 Test Connection을 실행합니다.`,`성공하면 OneQuery은 이 데이터소스를 다른 데이터베이스 데이터소스와 동일하게 쿼리할 수 있습니다.`],note:`만약 Connector query failed 또는 AWS_ACCESS_DENIED가 발생하면, 커넥터 실행 IAM 역할에 athena:StartQueryExecution, athena:GetQueryExecution, athena:GetQueryResults, Glue 조회 권한, 결과 S3 쓰기 권한이 있는지 확인해 주세요.`}],closingTitle:`입력값 요약`,closingDescription:`Connector ID에는 커넥터 등록 로그의 ID를, Athena Database에는 조회할 Athena/Glue 데이터베이스 이름을 입력합니다.`,closingNote:`현재 Dev 테스트 환경 기준 입력 예시는 Connector ID: 등록된 connector_* 값, Athena Database: onequery_connector_test, Athena Workgroup: onequery_connector_test 입니다.`},en:{title:`AWS Athena Connector Connection Guide`,description:`Deploy the OneQuery Connector inside the customer's AWS environment first, then enter the registered Connector ID and Athena settings in OneQuery.`,steps:[{title:`Deploy the connector in AWS`,paragraphs:[`The OneQuery Connector runs inside the customer's AWS account and queries Athena directly.`,`Run the connector on EC2, ECS, or another compute environment and configure the following environment variables.`],code:`ONEQUERY_BASE_URL=${Pt}
23
- CONNECTOR_ENROLLMENT_TOKEN=<issued-by-onequery>
24
- ORGANIZATION_ID=<your-onequery-organization-id>
25
- AWS_REGION=<athena-region>`,note:`After enrollment, the connector sends heartbeats to OneQuery. You do not store Athena credentials directly in OneQuery.`},{title:`Find the Connector ID`,paragraphs:[`After successful enrollment, the connector logs print connector.registration.succeeded with a Connector ID.`,`Paste that exact value into the Connector ID field in OneQuery.`],code:`connector.registration.succeeded
26
- connectorId=connector_12345678-abcd-ef01-2345-6789abcdef01`,note:`If the connector is recreated, the Connector ID can change. Update the OneQuery data source to the new value in that case.`},{title:`What to enter for Athena Database`,paragraphs:[`Enter the Athena database name shown in the Athena console or AWS Glue Data Catalog.`,`This is the database portion of the SQL path. Do not enter a table name or an S3 bucket name here.`],bullets:[`Example: analytics`,`Example: prod_events`,`Current Dev test environment example: onequery_connector_test`],code:`-- if the database is analytics
27
- SELECT * FROM analytics.orders LIMIT 10;`},{title:`What to enter for Athena Workgroup`,paragraphs:[`The workgroup field is optional. Enter it only if your Athena queries must run in a specific workgroup.`,`If you do not use a dedicated workgroup, leave it blank or use the default workgroup primary.`],bullets:[`Leave it empty to use the connector default or Athena default workgroup.`,`Current Dev test environment example: onequery_connector_test`]},{title:`Run Test Connection in OneQuery`,paragraphs:[`Create the AWS Athena Connector data source in the OneQuery Integration page and run Test Connection.`,`When the test succeeds, OneQuery can query Athena through this connector the same way it queries other database-style data sources.`],note:`If you see Connector query failed or AWS_ACCESS_DENIED, verify the connector IAM role allows athena:StartQueryExecution, athena:GetQueryExecution, athena:GetQueryResults, Glue read access, and S3 write access for Athena query results.`}],closingTitle:`Field summary`,closingDescription:`Connector ID should be the ID printed by the connector enrollment log, and Athena Database should be the Athena/Glue database name you want OneQuery to query.`,closingNote:`For the current Dev test environment, the example values are Connector ID: the registered connector_* value, Athena Database: onequery_connector_test, Athena Workgroup: onequery_connector_test.`}},bigquery:{providerLabel:`BigQuery`,ko:{title:`BigQuery 서비스 계정 연결 가이드`,description:`OneQuery의 BigQuery 연결은 API 키가 아니라 Google Cloud Service Account JSON 키와 정확한 IAM 역할이 필요합니다.`,steps:[{title:`Service Accounts 페이지 열기`,paragraphs:[`Google Cloud Console에 로그인한 뒤 대상 BigQuery 프로젝트를 선택하세요: https://console.cloud.google.com`,"`IAM & Admin` > `Service Accounts`로 이동하고 `Create service account`를 클릭하세요.",`서비스 계정 이름은 자유롭게 정해도 됩니다. 이 계정이 나중에 OneQuery의 BigQuery 자격 증명이 됩니다.`],imageSrc:`/images/bigquery/step1_service_accounts.png`,imageAlt:`Google Cloud service accounts page`},{title:`정확한 BigQuery 역할 2개 부여하기`,paragraphs:["권한 단계에서 `BigQuery Data Viewer`와 `BigQuery Job User`를 둘 다 추가하세요.",`첫 번째 역할은 데이터셋 읽기용이고, 두 번째 역할은 쿼리 작업 실행용입니다.`],bullets:[`BigQuery Data Viewer`,`BigQuery Job User`],note:"Repo 코드상 OneQuery은 연결 테스트 때 `SELECT 1 AS onequery_connection_test`를 실행하므로, 읽기 권한만으로는 부족하고 Job 실행 권한도 필요합니다.",imageSrc:`/images/bigquery/step2_bigquery_roles.png`,imageAlt:`Google Cloud BigQuery roles`,reverse:!0},{title:`Keys 탭에서 JSON 키 만들기`,paragraphs:["서비스 계정을 만든 뒤 해당 계정 상세 페이지를 열고 `Keys` 탭으로 이동하세요.","`Add key` > `Create new key`를 누르세요."],imageSrc:`/images/bigquery/step3_add_key_menu.png`,imageAlt:`Google Cloud add key menu`},{title:`JSON 키를 OneQuery 형식으로 넣기`,paragraphs:["`JSON`을 선택하고 `Create`를 누르면 키 파일이 다운로드됩니다.",`웹 가이드는 이 실시간 흐름을 기준으로 작성되었고, OneQuery 웹 폼은 다운로드한 Google Service Account JSON 파일 자체를 바로 업로드하거나 붙여넣을 수 있습니다.`,'CLI에서는 raw Google JSON을 그대로 넣지 말고, 아래처럼 `authType: "service_account"`와 camelCase `serviceAccount` 필드로 정규화해서 사용하세요.'],code:`{
28
- "name": "bigquery_prod",
29
- "credentials": {
30
- "type": "bigquery",
31
- "authType": "service_account",
32
- "projectId": "my-gcp-project",
33
- "serviceAccount": {
34
- "projectId": "my-gcp-project",
35
- "clientEmail": "onequery@my-gcp-project.iam.gserviceaccount.com",
36
- "privateKeyId": "key-id",
37
- "privateKey": "-----BEGIN PRIVATE KEY-----\\n...\\n-----END PRIVATE KEY-----\\n"
38
- }
39
- }
40
- }`,note:"OAuth도 지원되지만, 그 경우 repo는 `https://www.googleapis.com/auth/bigquery.readonly` 범위의 토큰을 기대합니다. JSON 키가 노출되었다면 즉시 해당 키를 삭제하거나 서비스 계정을 폐기하세요.",imageSrc:`/images/bigquery/step4_create_json_key.png`,imageAlt:`Google Cloud JSON key type selection`,reverse:!0}],closingTitle:`연결 준비 완료!`,closingDescription:`이제 프로젝트 ID와 서비스 계정 JSON 키로 OneQuery BigQuery 연결을 만들 수 있습니다.`,closingNote:"웹 폼은 raw Google JSON을 받아주지만, CLI JSON은 `projectId`와 nested `serviceAccount`를 명시적으로 넣어야 합니다."},en:{title:`BigQuery Service Account Guide`,description:`OneQuery's BigQuery connection uses a Google Cloud service account JSON key plus the correct IAM roles, not a generic API key.`,steps:[{title:`Open the Service Accounts page`,paragraphs:[`Sign in to Google Cloud Console and select the BigQuery project you want OneQuery to query: https://console.cloud.google.com`,"Open `IAM & Admin` > `Service Accounts`, then click `Create service account`.",`You can choose any recognizable service account name. This account becomes OneQuery's BigQuery credential.`],imageSrc:`/images/bigquery/step1_service_accounts.png`,imageAlt:`Google Cloud service accounts page`},{title:`Grant the exact BigQuery roles`,paragraphs:["In the permissions step, add both `BigQuery Data Viewer` and `BigQuery Job User`.",`The first role lets OneQuery read datasets, and the second lets it run query jobs.`],bullets:[`BigQuery Data Viewer`,`BigQuery Job User`],note:"Repo code verifies the connection by running `SELECT 1 AS onequery_connection_test`, so read access alone is not enough. The credential also needs permission to start jobs.",imageSrc:`/images/bigquery/step2_bigquery_roles.png`,imageAlt:`Google Cloud BigQuery roles`,reverse:!0},{title:`Open the Keys tab and add a key`,paragraphs:["After the service account is created, open it and go to the `Keys` tab.","Click `Add key` > `Create new key`."],imageSrc:`/images/bigquery/step3_add_key_menu.png`,imageAlt:`Google Cloud add key menu`},{title:`Use the JSON key in OneQuery's credential shape`,paragraphs:["Select `JSON` and click `Create` to download the key file.",`The OneQuery web form can accept the downloaded Google service-account JSON file directly by upload or paste.`,'For `onequery source connect`, normalize that file into OneQuery\'s schema with `authType: "service_account"` and camelCase `serviceAccount` fields.'],code:`{
41
- "name": "bigquery_prod",
42
- "credentials": {
43
- "type": "bigquery",
44
- "authType": "service_account",
45
- "projectId": "my-gcp-project",
46
- "serviceAccount": {
47
- "projectId": "my-gcp-project",
48
- "clientEmail": "onequery@my-gcp-project.iam.gserviceaccount.com",
49
- "privateKeyId": "key-id",
50
- "privateKey": "-----BEGIN PRIVATE KEY-----\\n...\\n-----END PRIVATE KEY-----\\n"
51
- }
52
- }
53
- }`,note:"OAuth is also accepted, but repo code expects `https://www.googleapis.com/auth/bigquery.readonly` for that flow. If a JSON key appears in a screenshot or chat, delete the key or delete the temporary service account.",imageSrc:`/images/bigquery/step4_create_json_key.png`,imageAlt:`Google Cloud JSON key type selection`,reverse:!0}],closingTitle:`Ready to Connect`,closingDescription:`You now have the project ID, service-account roles, and JSON key shape that OneQuery expects for BigQuery.`,closingNote:"The web form can normalize raw Google JSON, but the CLI payload must include both the top-level `projectId` and the nested `serviceAccount` object."}},cloudflare_d1:{providerLabel:`Cloudflare D1`,ko:{title:`Cloudflare D1 연결 가이드`,description:"OneQuery의 Cloudflare D1 연결은 `accountId`, `databaseId`, `apiToken`, optional `apiBaseUrl`를 받습니다. 대상 D1 database를 조회할 수 있는 Cloudflare API Token을 준비해 주세요.",steps:[{title:`Account ID 확인`,paragraphs:[`Cloudflare Dashboard에서 대상 계정을 열고 Account ID를 복사해 주세요.`,"OneQuery는 이 값을 Cloudflare D1 REST API의 `/accounts/{account_id}` 경로에 사용합니다."]},{title:`Database ID 확인`,paragraphs:[`Cloudflare Dashboard에서 D1 메뉴를 열고 연결할 database를 선택해 주세요.`,"database 설정 화면에서 Database ID를 복사해 `databaseId`로 입력합니다."]},{title:`API Token 준비`,paragraphs:[`Cloudflare API Tokens 화면에서 OneQuery 전용 token을 생성해 주세요.`,`가능하면 대상 account와 D1 database 조회에 필요한 최소 권한으로 제한해 주세요.`],note:`API Token 값은 비밀값입니다. 스크린샷, 이슈, 채팅에 노출하지 마세요.`},{title:`OneQuery에 입력`,paragraphs:[`OneQuery 웹 폼 또는 CLI JSON에 Account ID, Database ID, API Token을 입력해 주세요.`,"Cloudflare 기본 API를 사용할 때 `apiBaseUrl`은 비워 두면 됩니다. 프록시나 테스트용 엔드포인트가 있을 때만 설정해 주세요."],bullets:["`accountId`: Cloudflare Account ID","`databaseId`: D1 Database ID","`apiToken`: D1 조회용 Cloudflare API Token","`apiBaseUrl` (optional): 기본값은 `https://api.cloudflare.com/client/v4`"],code:`{
54
- "name": "cloudflare_d1_prod",
55
- "credentials": {
56
- "type": "cloudflare_d1",
57
- "accountId": "023e105f4ecef8ad9ca31a8372d0c353",
58
- "databaseId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
59
- "apiToken": "cf_api_token"
60
- }
61
- }`}],closingTitle:`연결 준비 완료`,closingDescription:`연결 후 SQL query 도구에서 Cloudflare D1을 SQLite dialect의 read-only query source로 사용할 수 있습니다.`},en:{title:`Cloudflare D1 Connection Guide`,description:"The OneQuery Cloudflare D1 connection accepts `accountId`, `databaseId`, `apiToken`, and optional `apiBaseUrl`. Prepare a Cloudflare API token that can query the target D1 database.",steps:[{title:`Find the Account ID`,paragraphs:[`Open the target account in the Cloudflare Dashboard and copy the Account ID.`,"OneQuery uses this value in the Cloudflare D1 REST API `/accounts/{account_id}` path."]},{title:`Find the Database ID`,paragraphs:[`Open D1 in the Cloudflare Dashboard and choose the database you want to connect.`,"Copy the Database ID from the database settings and enter it as `databaseId`."]},{title:`Prepare an API token`,paragraphs:[`Create a dedicated token for OneQuery from the Cloudflare API Tokens page.`,`Limit the token to the target account and the minimum permissions required to query the D1 database when possible.`],note:`The API token is secret. Do not include it in screenshots, issues, or chat.`},{title:`Enter the fields in OneQuery`,paragraphs:[`Paste the Account ID, Database ID, and API token into the OneQuery form or CLI JSON payload.`,"Leave `apiBaseUrl` empty for the default Cloudflare API. Set it only for a proxy or test endpoint."],bullets:["`accountId`: Cloudflare Account ID","`databaseId`: D1 Database ID","`apiToken`: Cloudflare API token for D1 queries","`apiBaseUrl` (optional): defaults to `https://api.cloudflare.com/client/v4`"],code:`{
62
- "name": "cloudflare_d1_prod",
63
- "credentials": {
64
- "type": "cloudflare_d1",
65
- "accountId": "023e105f4ecef8ad9ca31a8372d0c353",
66
- "databaseId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
67
- "apiToken": "cf_api_token"
68
- }
69
- }`}],closingTitle:`Ready to Connect`,closingDescription:`After connecting, SQL query tools can use Cloudflare D1 as a read-only SQLite-dialect query source.`}},cloudflare_r2_sql:{providerLabel:`Cloudflare R2 SQL`,ko:{title:`Cloudflare R2 SQL 연결 가이드`,description:"OneQuery의 Cloudflare R2 SQL 연결은 `accountId`, `bucketName`, `apiToken`, optional `apiBaseUrl`를 받습니다. R2 Data Catalog가 활성화된 bucket과 R2 SQL 조회 권한이 있는 API Token을 준비해 주세요.",steps:[{title:`R2 Data Catalog 확인`,paragraphs:[`Cloudflare Dashboard에서 대상 R2 bucket을 열고 R2 Data Catalog가 활성화되어 있는지 확인해 주세요.`,`OneQuery는 R2 SQL REST API를 통해 이 catalog의 Apache Iceberg table을 조회합니다.`]},{title:`Account ID와 Bucket 이름 확인`,paragraphs:[`Cloudflare Dashboard에서 대상 계정의 Account ID를 복사해 주세요.`,"R2 bucket 이름을 `bucketName`으로 입력합니다. Wrangler의 warehouse 이름은 보통 `{accountId}_{bucketName}` 형식이지만, OneQuery에는 두 값을 분리해서 입력합니다."]},{title:`API Token 준비`,paragraphs:[`Cloudflare API Tokens 화면에서 OneQuery 전용 token을 생성해 주세요.`,`R2 SQL read, R2 Data Catalog read, R2 storage access 권한을 대상 bucket 범위로 제한하는 것을 권장합니다.`],note:`API Token 값은 비밀값입니다. 스크린샷, 이슈, 채팅에 노출하지 마세요.`},{title:`OneQuery에 입력`,paragraphs:[`OneQuery 웹 폼 또는 CLI JSON에 Account ID, Bucket name, API Token을 입력해 주세요.`,"Cloudflare 기본 R2 SQL API를 사용할 때 `apiBaseUrl`은 비워 두면 됩니다. 프록시나 테스트용 엔드포인트가 있을 때만 설정해 주세요."],bullets:["`accountId`: Cloudflare Account ID","`bucketName`: R2 Data Catalog가 연결된 R2 bucket 이름","`apiToken`: R2 SQL 조회용 Cloudflare API Token","`apiBaseUrl` (optional): 기본값은 `https://api.sql.cloudflarestorage.com/api/v1`"],code:`{
70
- "name": "cloudflare_r2_sql_prod",
71
- "credentials": {
72
- "type": "cloudflare_r2_sql",
73
- "accountId": "023e105f4ecef8ad9ca31a8372d0c353",
74
- "bucketName": "analytics-events",
75
- "apiToken": "cf_r2_sql_token"
76
- }
77
- }`}],closingTitle:`연결 준비 완료`,closingDescription:"연결 후 SQL query 도구에서 `namespace.table_name` 형식으로 R2 Data Catalog의 Iceberg table을 read-only 조회할 수 있습니다."},en:{title:`Cloudflare R2 SQL Connection Guide`,description:"The OneQuery Cloudflare R2 SQL connection accepts `accountId`, `bucketName`, `apiToken`, and optional `apiBaseUrl`. Prepare an R2 bucket with R2 Data Catalog enabled and an API token that can run R2 SQL queries.",steps:[{title:`Check R2 Data Catalog`,paragraphs:[`Open the target R2 bucket in the Cloudflare Dashboard and confirm that R2 Data Catalog is enabled.`,`OneQuery queries Apache Iceberg tables in that catalog through the R2 SQL REST API.`]},{title:`Find the Account ID and bucket name`,paragraphs:[`Copy the Account ID from the target Cloudflare account.`,"Enter the R2 bucket name as `bucketName`. Wrangler's warehouse name is usually `{accountId}_{bucketName}`, but OneQuery stores the two fields separately."]},{title:`Prepare an API token`,paragraphs:[`Create a dedicated token for OneQuery from the Cloudflare API Tokens page.`,`Prefer a token scoped to the target bucket with R2 SQL read, R2 Data Catalog read, and R2 storage access.`],note:`The API token is secret. Do not include it in screenshots, issues, or chat.`},{title:`Enter the fields in OneQuery`,paragraphs:[`Paste the Account ID, bucket name, and API token into the OneQuery form or CLI JSON payload.`,"Leave `apiBaseUrl` empty for Cloudflare's default R2 SQL API. Set it only for a proxy or test endpoint."],bullets:["`accountId`: Cloudflare Account ID","`bucketName`: R2 bucket name with R2 Data Catalog enabled","`apiToken`: Cloudflare API token for R2 SQL queries","`apiBaseUrl` (optional): defaults to `https://api.sql.cloudflarestorage.com/api/v1`"],code:`{
78
- "name": "cloudflare_r2_sql_prod",
79
- "credentials": {
80
- "type": "cloudflare_r2_sql",
81
- "accountId": "023e105f4ecef8ad9ca31a8372d0c353",
82
- "bucketName": "analytics-events",
83
- "apiToken": "cf_r2_sql_token"
84
- }
85
- }`}],closingTitle:`Ready to Connect`,closingDescription:"After connecting, SQL query tools can read R2 Data Catalog Iceberg tables with `namespace.table_name` references."}},cloudflare_workers_observability:{providerLabel:`Cloudflare Workers Observability`,ko:{title:`Cloudflare Workers Observability 연결 가이드`,description:"OneQuery의 Cloudflare Workers Observability 연결은 `accountId`, `apiToken`, optional `scriptName`, optional `apiBaseUrl`를 받습니다. Workers Logs가 켜진 계정과 읽기용 API Token을 준비해 주세요.",steps:[{title:`Workers Logs 활성화`,paragraphs:[`Cloudflare Worker의 Wrangler 설정에서 Workers Logs를 활성화해 주세요. 로그가 수집되어야 Workers Observability Telemetry API에서 조회할 수 있습니다.`,"`scriptName`을 비워 두면 계정 범위에서 조회하고, 특정 Worker로 좁히려면 Worker script 이름을 OneQuery 입력값에 넣어 주세요."],imageSrc:`/images/cloudflare-workers-observability/step2_enable_workers_logs.png`,imageAlt:`Cloudflare Workers Logs 활성화 문서 화면`,code:`[observability]
86
- enabled = true`},{title:`Account ID 확인`,paragraphs:[`Cloudflare Dashboard에서 대상 계정을 연 뒤 Overview 또는 URL에서 Account ID를 확인해 주세요.`,"OneQuery는 이 값을 `/accounts/{account_id}/workers/observability/telemetry/*` API 경로에 사용합니다."],imageSrc:`/images/cloudflare-workers-observability/step5_workers_pages_account_id.png`,imageAlt:`Cloudflare Account ID 위치 안내 화면`},{title:`API Token 생성 화면 열기`,paragraphs:[`Cloudflare Dashboard의 My Profile > API Tokens에서 Create Token을 선택해 주세요.`,`OneQuery 전용 토큰을 따로 만들면 나중에 권한 회수와 만료 관리가 쉽습니다.`],imageSrc:`/images/cloudflare-workers-observability/step3_user_api_tokens.png`,imageAlt:`Cloudflare User API Tokens 화면`},{title:`Custom Token 선택`,paragraphs:[`Create API Token 화면에서 Create Custom Token의 Get started를 선택해 주세요.`,`템플릿 대신 Custom token을 사용하면 Workers Observability 권한과 대상 계정 범위를 명확히 제한할 수 있습니다.`],imageSrc:`/images/cloudflare-workers-observability/step4_create_api_token.png`,imageAlt:`Cloudflare Create API Token 화면`},{title:`Workers Observability 읽기 권한 설정`,paragraphs:[`Token name을 입력한 뒤 Permissions에서 Account > Workers Observability를 선택하고 권한 레벨은 Read로 설정해 주세요.`,`Account Resources는 Include로 두고 대상 Cloudflare 계정만 선택하는 것을 권장합니다.`],imageSrc:`/images/cloudflare-workers-observability/step6_workers_observability_permission.png`,imageAlt:`Cloudflare Workers Observability 권한 선택 화면`,note:`API Token 값은 비밀값입니다. 스크린샷, 이슈, 채팅에 노출하지 마세요.`},{title:`OneQuery에 입력`,paragraphs:[`OneQuery 웹 폼 또는 CLI JSON에 Account ID와 API Token을 입력해 주세요.`,"Cloudflare 기본 API를 사용할 때 `apiBaseUrl`은 비워 두면 됩니다. 프록시나 테스트용 엔드포인트가 있을 때만 설정해 주세요."],bullets:["`accountId`: Cloudflare Account ID","`apiToken`: 읽기용 Cloudflare API Token","`scriptName` (optional): Worker script 이름","`apiBaseUrl` (optional): 기본값은 `https://api.cloudflare.com/client/v4`"],code:`{
87
- "name": "cloudflare_workers",
88
- "credentials": {
89
- "type": "cloudflare_workers_observability",
90
- "accountId": "023e105f4ecef8ad9ca31a8372d0c353",
91
- "apiToken": "cf_api_token",
92
- "scriptName": "api-production"
93
- }
94
- }`}],closingTitle:`연결 준비 완료`,closingDescription:"연결 후 Source API에서 `list_keys`, `list_values`, `run_query` 작업으로 Workers Observability telemetry를 조회할 수 있습니다."},en:{title:`Cloudflare Workers Observability Connection Guide`,description:"The OneQuery Cloudflare Workers Observability connection accepts `accountId`, `apiToken`, optional `scriptName`, and optional `apiBaseUrl`. Prepare an account with Workers Logs enabled and a read-only API token.",steps:[{title:`Enable Workers Logs`,paragraphs:[`Enable Workers Logs in the Worker Wrangler configuration. Telemetry must be collected before the Workers Observability Telemetry API can return data.`,"Leave `scriptName` empty for account-level queries, or set it to a Worker script name when you want examples and queries scoped to one Worker."],imageSrc:`/images/cloudflare-workers-observability/step2_enable_workers_logs.png`,imageAlt:`Cloudflare Workers Logs enablement documentation screen`,code:`[observability]
95
- enabled = true`},{title:`Find the Account ID`,paragraphs:[`Open the target account in the Cloudflare Dashboard and copy the Account ID from the account overview or URL.`,"OneQuery uses this value in the `/accounts/{account_id}/workers/observability/telemetry/*` API path."],imageSrc:`/images/cloudflare-workers-observability/step5_workers_pages_account_id.png`,imageAlt:`Cloudflare Account ID location guide`},{title:`Open API token creation`,paragraphs:[`Open My Profile > API Tokens in the Cloudflare Dashboard, then choose Create Token.`,`Create a dedicated token for OneQuery so it can be revoked or expired independently later.`],imageSrc:`/images/cloudflare-workers-observability/step3_user_api_tokens.png`,imageAlt:`Cloudflare User API Tokens page`},{title:`Choose Custom Token`,paragraphs:[`On Create API Token, choose Get started in the Create Custom Token row.`,`A custom token lets you limit the permission and account scope to Workers Observability only.`],imageSrc:`/images/cloudflare-workers-observability/step4_create_api_token.png`,imageAlt:`Cloudflare Create API Token page`},{title:`Set Workers Observability read access`,paragraphs:[`Enter a token name, then set Permissions to Account > Workers Observability and choose the Read permission level.`,`For Account Resources, use Include and restrict the token to the target Cloudflare account when possible.`],imageSrc:`/images/cloudflare-workers-observability/step6_workers_observability_permission.png`,imageAlt:`Cloudflare Workers Observability permission selection`,note:`The API token is secret. Do not include it in screenshots, issues, or chat.`},{title:`Enter the fields in OneQuery`,paragraphs:[`Paste the Account ID and API token into the OneQuery form or CLI JSON payload.`,"Leave `apiBaseUrl` empty for the default Cloudflare API. Set it only for a proxy or test endpoint."],bullets:["`accountId`: Cloudflare Account ID","`apiToken`: read-only Cloudflare API token","`scriptName` (optional): Worker script name","`apiBaseUrl` (optional): defaults to `https://api.cloudflare.com/client/v4`"],code:`{
96
- "name": "cloudflare_workers",
97
- "credentials": {
98
- "type": "cloudflare_workers_observability",
99
- "accountId": "023e105f4ecef8ad9ca31a8372d0c353",
100
- "apiToken": "cf_api_token",
101
- "scriptName": "api-production"
102
- }
103
- }`}],closingTitle:`Ready to Connect`,closingDescription:"After connecting, use Source API operations `list_keys`, `list_values`, and `run_query` to query Workers Observability telemetry."}},ga:{providerLabel:`Google Analytics`,ko:{title:`Google Analytics 4 서비스 계정 연결 가이드`,description:`OneQuery의 GA4 연결은 Google Cloud Service Account JSON 키, GA4 Property 접근 권한, 그리고 Property ID가 필요합니다.`,steps:[{title:`Google Cloud Service Account 만들기`,paragraphs:["Google Cloud Console에서 `IAM & Admin` > `Service Accounts`를 열고 `Create service account`를 클릭하세요.",`서비스 계정 이름은 자유롭게 정해도 됩니다.`,"다운로드할 JSON 안의 `client_email` 값이 나중에 GA4 `Property access management`에 추가할 사용자 이메일이 됩니다."],imageSrc:`/images/ga4/step1_service_accounts.png`,imageAlt:`Google Cloud service accounts page`},{title:`JSON 키 다운로드하기`,paragraphs:["생성한 서비스 계정을 열고 `Keys` 탭으로 이동하세요.","`Add key` > `Create new key`를 누른 뒤 `JSON`을 선택하세요.","다운로드되는 파일에는 `project_id`, `client_email`, `private_key`, 그리고 경우에 따라 `private_key_id`가 들어 있습니다."],note:`OneQuery 웹 폼은 이 raw Google JSON 파일 자체를 업로드하거나 붙여넣을 수 있습니다.`,imageSrc:`/images/ga4/step2_create_json_key.png`,imageAlt:`Google Cloud JSON key type selection`,reverse:!0},{title:`GA4 Property에 Viewer 권한 추가하기`,paragraphs:["https://analytics.google.com 에서 `Admin` > `Property access management`를 여세요.","`Add users`를 누르고, 방금 받은 JSON 파일의 `client_email` 값을 이메일 주소로 붙여넣으세요.","표준 역할은 `Viewer`로 두고, `No Cost Metrics`와 `No Revenue Metrics` 체크박스는 선택하지 마세요."],note:"Repo 코드상 OneQuery은 `runReport`로 `activeUsers`를 조회해 연결을 테스트하므로, 최소 읽기 권한인 `Viewer`면 충분합니다.",imageSrc:`/images/ga4/step3_add_user_viewer.png`,imageAlt:`GA4 add user dialog with Viewer role`},{title:`Property ID를 복사해 OneQuery에 넣기`,paragraphs:["`Admin` > `Property details`로 이동해 `Copy property ID`를 클릭하세요.","OneQuery은 `123456789`처럼 숫자만 넣어도 되고, `properties/123456789` 형태도 받아들입니다.","CLI에서는 raw Google JSON 대신 아래처럼 정규화된 `serviceAccount` 구조를 사용하세요."],code:`{
104
- "name": "ga_marketing",
105
- "credentials": {
106
- "type": "ga",
107
- "authType": "service_account",
108
- "propertyId": "123456789",
109
- "serviceAccount": {
110
- "projectId": "my-gcp-project",
111
- "clientEmail": "onequery@my-gcp-project.iam.gserviceaccount.com",
112
- "privateKeyId": "key-id",
113
- "privateKey": "-----BEGIN PRIVATE KEY-----\\n...\\n-----END PRIVATE KEY-----\\n"
114
- }
115
- }
116
- }`,note:"OAuth도 지원되며, 그 경우 repo는 `https://www.googleapis.com/auth/analytics.readonly` 범위의 토큰을 기대합니다.",imageSrc:`/images/ga4/step4_property_details.png`,imageAlt:`GA4 property details page`,reverse:!0}],closingTitle:`연결 준비 완료!`,closingDescription:`이제 GA4 Property ID와 서비스 계정 JSON 키를 사용해 OneQuery 연결을 만들 수 있습니다.`,closingNote:`서비스 계정 키가 노출되었다면 즉시 해당 키를 삭제하거나 임시 서비스 계정을 폐기하세요.`},en:{title:`Google Analytics 4 Service Account Guide`,description:`OneQuery's GA4 connection needs a Google Cloud service account JSON key, GA4 property access, and the property ID.`,steps:[{title:`Create the Google Cloud service account`,paragraphs:["In Google Cloud Console, open `IAM & Admin` > `Service Accounts` and click `Create service account`.",`Any recognizable service-account name is fine.`,"The downloaded JSON file will include the `client_email` value that you later add to GA4 as a user."],imageSrc:`/images/ga4/step1_service_accounts.png`,imageAlt:`Google Cloud service accounts page`},{title:`Download the JSON key`,paragraphs:["Open the new service account and go to the `Keys` tab.","Click `Add key` > `Create new key`, then keep `JSON` selected.","The downloaded file contains `project_id`, `client_email`, `private_key`, and sometimes `private_key_id`."],note:`The OneQuery web form can accept that raw Google JSON file directly by upload or paste.`,imageSrc:`/images/ga4/step2_create_json_key.png`,imageAlt:`Google Cloud JSON key type selection`,reverse:!0},{title:`Grant Viewer access in GA4`,paragraphs:["In GA4, open `Admin` > `Property access management`.","Click `Add users`, paste the service-account email from the JSON file's `client_email`, and keep the standard role set to `Viewer`.","Leave `No Cost Metrics` and `No Revenue Metrics` unchecked."],note:"Repo code tests GA by calling `runReport` for `activeUsers`, so the minimal read-only property role, `Viewer`, is enough.",imageSrc:`/images/ga4/step3_add_user_viewer.png`,imageAlt:`GA4 add user dialog with Viewer role`},{title:`Copy the property ID and connect OneQuery`,paragraphs:["Open `Admin` > `Property details` and click `Copy property ID`.","OneQuery accepts either plain digits such as `123456789` or the prefixed form `properties/123456789`.","For `onequery source connect`, normalize the Google JSON into OneQuery's `serviceAccount` schema as shown below."],code:`{
117
- "name": "ga_marketing",
118
- "credentials": {
119
- "type": "ga",
120
- "authType": "service_account",
121
- "propertyId": "123456789",
122
- "serviceAccount": {
123
- "projectId": "my-gcp-project",
124
- "clientEmail": "onequery@my-gcp-project.iam.gserviceaccount.com",
125
- "privateKeyId": "key-id",
126
- "privateKey": "-----BEGIN PRIVATE KEY-----\\n...\\n-----END PRIVATE KEY-----\\n"
127
- }
128
- }
129
- }`,note:"OAuth is also supported, and repo code expects the `https://www.googleapis.com/auth/analytics.readonly` scope for that flow.",imageSrc:`/images/ga4/step4_property_details.png`,imageAlt:`GA4 property details page`,reverse:!0}],closingTitle:`Ready to Connect`,closingDescription:`You now have the GA4 property ID, the service-account JSON key, and the exact Viewer permission OneQuery expects.`,closingNote:`If the service-account key was exposed while documenting or sharing setup steps, delete that key or delete the temporary service account.`}},google_search_console:{providerLabel:`Google Search Console`,ko:{title:`Google Search Console OAuth 연결 가이드`,description:`OneQuery의 Google Search Console 연결은 Search Console property 접근 권한이 있는 Google 계정으로 OAuth 승인을 진행합니다. CLI나 JSON 연결에서는 access token과 optional 기본 site URL을 직접 입력할 수도 있습니다.`,steps:[{title:`Search Console property 접근 권한 확인`,paragraphs:[`https://search.google.com/search-console 을 열고 OneQuery이 조회할 property가 보이는지 확인하세요.`,"Domain property는 `sc-domain:example.com` 형식이고, URL-prefix property는 `https://www.example.com/`처럼 전체 URL 형식입니다.","이 값은 OneQuery의 `credentials.siteUrl`에 넣을 수 있으며, `/searchAnalytics/query` 요청의 기본 site selector로 사용됩니다."],note:`스크린샷은 실제 계정, property, 성능 수치를 숨긴 상태입니다. 연결할 때는 Search Console에 표시되는 property string을 그대로 사용하세요.`,imageSrc:`/images/google-search-console/step1_confirm_property.png`,imageAlt:`Google Search Console overview with account, property, and metrics hidden`},{title:`Google OAuth 승인 진행`,paragraphs:["OneQuery dashboard에서는 Google Search Console 연결 화면의 `Connect with Google` 버튼을 눌러 OAuth 승인을 진행하세요.","수동 토큰 발급이나 CLI 연결을 검증할 때는 OAuth 2.0 Playground 또는 자체 Google OAuth client에서 `https://www.googleapis.com/auth/webmasters.readonly` scope를 선택하세요.","Playground를 사용할 때는 custom scope 입력칸에 scope URL을 붙여 넣고 `Authorize APIs`를 누릅니다.",`Google 계정 선택, MFA, consent 화면은 브라우저에서 직접 확인하고 승인해야 합니다.`],note:`OAuth Playground는 빠른 수동 연결 확인용입니다. 장기 운영 연결은 조직의 Google OAuth client와 토큰 갱신 정책을 사용하는 편이 안전합니다.`,imageSrc:`/images/google-search-console/step2_scope_selected.png`,imageAlt:`OAuth 2.0 Playground with the Search Console readonly scope selected`,reverse:!0},{title:`CLI 또는 JSON 연결용 access token 복사`,paragraphs:[`Dashboard OAuth 연결은 승인 후 OneQuery이 토큰을 저장하므로 이 단계를 직접 수행하지 않아도 됩니다.`,"CLI 또는 JSON 연결을 사용할 때는 승인 후 authorization code를 token으로 교환하고 `Access token` 값을 복사하세요.","연결 JSON의 `credentials.accessToken`에 붙여 넣고, 기본 property를 고정하려면 `credentials.siteUrl`도 함께 넣으세요.","Search Console API의 `/sites` 조회만 테스트하려면 `siteUrl`을 비워 둘 수 있지만, `/searchAnalytics/query`를 짧은 selector로 쓰려면 `siteUrl`이 필요합니다."],code:`{
130
- "name": "gsc_main",
131
- "credentials": {
132
- "type": "google_search_console",
133
- "accessToken": "ya29...",
134
- "siteUrl": "sc-domain:example.com"
135
- }
136
- }`,note:`Access token은 민감 정보입니다. 스크린샷, 채팅, 로그에 노출되었다면 해당 토큰을 폐기하고 새로 발급하세요.`,imageSrc:`/images/google-search-console/step3_copy_access_token.png`,imageAlt:`OAuth 2.0 Playground token exchange panel with masked example token values`}],closingTitle:`연결 준비 완료!`,closingDescription:`이제 dashboard OAuth 승인을 완료하거나, CLI 입력 JSON에 Search Console access token과 optional site URL을 넣으면 됩니다.`,closingNote:"현재 OneQuery Source API는 `siteUrl`이 설정된 경우 `/searchAnalytics/query`를 `/sites/<siteUrl>/searchAnalytics/query`로 확장합니다. 다른 property를 조회할 때는 명시적인 `/sites/...` selector를 사용하세요."},en:{title:`Google Search Console OAuth Guide`,description:`The OneQuery Google Search Console connection authorizes a Google account that can read the Search Console property. CLI and JSON connections can also provide an access token plus an optional default site URL directly.`,steps:[{title:`Confirm access to the Search Console property`,paragraphs:[`Open https://search.google.com/search-console and confirm that the property OneQuery should query is visible.`,"Domain properties use the `sc-domain:example.com` format. URL-prefix properties use a full URL such as `https://www.example.com/`.","You can save that value as `credentials.siteUrl`; OneQuery uses it as the default site selector for `/searchAnalytics/query`."],note:`The screenshot hides the real account, property, and performance metrics. When connecting, copy the exact property string shown by Search Console.`,imageSrc:`/images/google-search-console/step1_confirm_property.png`,imageAlt:`Google Search Console overview with account, property, and metrics hidden`},{title:`Authorize with Google OAuth`,paragraphs:["In the OneQuery dashboard, click `Connect with Google` from the Google Search Console connection form to start OAuth.","For manual token generation or CLI connection checks, select the `https://www.googleapis.com/auth/webmasters.readonly` scope in OAuth 2.0 Playground or in your own Google OAuth client.","For Playground, paste the scope URL into the custom scope input and click `Authorize APIs`.",`Handle Google account selection, MFA, and the consent screen directly in the browser.`],note:`OAuth Playground is useful for a quick manual connection check. For a long-running production connection, prefer your organization's Google OAuth client and token refresh policy.`,imageSrc:`/images/google-search-console/step2_scope_selected.png`,imageAlt:`OAuth 2.0 Playground with the Search Console readonly scope selected`,reverse:!0},{title:`Copy the access token for CLI or JSON connections`,paragraphs:[`Dashboard OAuth stores the token for you after consent, so you do not need to copy it manually.`,"For CLI or JSON connections, exchange the authorization code for tokens after consent and copy the `Access token` value.","Paste it into `credentials.accessToken` in the connection JSON. Include `credentials.siteUrl` when you want OneQuery to default queries to one property.","You can omit `siteUrl` for `/sites` discovery, but short `/searchAnalytics/query` selectors need a configured `siteUrl`."],code:`{
137
- "name": "gsc_main",
138
- "credentials": {
139
- "type": "google_search_console",
140
- "accessToken": "ya29...",
141
- "siteUrl": "sc-domain:example.com"
142
- }
143
- }`,note:`Treat the access token as sensitive. If it appears in a screenshot, chat, or log, revoke it and issue a new token.`,imageSrc:`/images/google-search-console/step3_copy_access_token.png`,imageAlt:`OAuth 2.0 Playground token exchange panel with masked example token values`}],closingTitle:`Ready to Connect`,closingDescription:`Finish the dashboard OAuth flow, or paste the Search Console access token and optional site URL into a CLI JSON payload.`,closingNote:"When `siteUrl` is configured, OneQuery Source API expands `/searchAnalytics/query` to `/sites/<siteUrl>/searchAnalytics/query`. Use explicit `/sites/...` selectors when querying a different property."}},github:{providerLabel:`GitHub`,ko:{title:`GitHub Fine-grained Token 생성 가이드`,description:`OneQuery에 GitHub를 연결하려면 선택한 저장소만 읽을 수 있는 Fine-grained personal access token이 필요합니다.`,steps:[{title:`GitHub 토큰 생성 페이지 열기`,paragraphs:[`GitHub에 로그인한 뒤 다음 페이지로 이동하세요: https://github.com/settings/personal-access-tokens/new`,`좌측 메뉴에서 Settings > Developer settings > Personal access tokens > Fine-grained tokens 경로로 들어가도 됩니다.`],imageSrc:`/images/github-token-guide/step1_signin.png`,imageAlt:`GitHub sign-in page for personal access tokens`},{title:`토큰 기본 정보 입력`,paragraphs:["Token name에는 `OneQuery`처럼 알아보기 쉬운 이름을 입력하세요.",`Resource owner는 연결할 저장소를 소유한 계정 또는 조직으로 선택하세요.`,"Expiration을 정하고, Repository access는 `Only select repositories`로 설정한 뒤 OneQuery이 읽을 저장소를 선택하세요."],note:"Description은 선택 사항이지만 `Read-only token for OneQuery`처럼 적어두면 관리가 쉽습니다.",imageSrc:`/images/github-token-guide/step2_new_fine_grained_token_sanitized.png`,imageAlt:`GitHub fine-grained token form`,reverse:!0},{title:`읽기 전용 권한 설정`,paragraphs:[`Permissions 섹션에서 Add permissions를 클릭하세요.`,"`Contents`, `Issues`, `Pull requests`를 모두 `Read-only`로 설정하세요.","GitHub가 자동으로 요구하는 `Metadata: Read-only`도 함께 포함됩니다."],note:`이 설정이면 OneQuery이 저장소 내용을 읽고, 이슈와 PR 데이터를 조회할 수 있습니다.`,imageSrc:`/images/github-token-guide/step3_permissions_configured_sanitized.png`,imageAlt:`GitHub repository permissions configured for OneQuery`},{title:`토큰 복사 후 OneQuery에 연결`,paragraphs:[`Generate token을 누른 뒤 표시되는 토큰 값을 즉시 복사하세요. GitHub는 이 값을 다시 보여주지 않습니다.`,"복사한 값을 `onequery source connect --source github --input '<json>'`의 `credentials.accessToken`에 넣어 연결하세요."],code:`{
144
- "name": "github_main",
145
- "credentials": {
146
- "type": "github",
147
- "accessToken": "github_pat_..."
148
- }
149
- }`,note:`토큰 값은 민감 정보입니다. 채팅이나 스크린샷에 노출되었다면 즉시 폐기하고 새 토큰을 발급하세요.`,imageSrc:`/images/github-token-guide/step4_token_created_sanitized.png`,imageAlt:`GitHub one-time personal access token copy screen`,reverse:!0}],closingTitle:`연결 준비 완료!`,closingDescription:`이제 생성한 토큰을 OneQuery GitHub 연결 화면이나 CLI 입력 JSON에 넣으면 됩니다.`,closingNote:`필요한 저장소만 선택하고 Read-only 권한만 부여하는 것이 가장 안전합니다.`},en:{title:`GitHub Fine-Grained Token Guide`,description:`To connect GitHub to OneQuery, create a fine-grained personal access token with read-only access to the repositories you want OneQuery to query.`,steps:[{title:`Open the GitHub token page`,paragraphs:[`Sign in to GitHub, then open https://github.com/settings/personal-access-tokens/new`,`You can also navigate there from Settings > Developer settings > Personal access tokens > Fine-grained tokens.`],imageSrc:`/images/github-token-guide/step1_signin.png`,imageAlt:`GitHub sign-in page for personal access tokens`},{title:`Fill in the token details`,paragraphs:["Set `Token name` to something recognizable such as `OneQuery`.","Choose the account or organization that owns the repositories as the `Resource owner`.","Set an expiration, choose `Only select repositories`, and select the repositories that OneQuery should read."],note:"The description is optional, but `Read-only token for OneQuery` makes the token easier to identify later.",imageSrc:`/images/github-token-guide/step2_new_fine_grained_token_sanitized.png`,imageAlt:`GitHub fine-grained token form`,reverse:!0},{title:`Grant read-only repository permissions`,paragraphs:[`In the Permissions section, click Add permissions.`,"Set `Contents`, `Issues`, and `Pull requests` to `Read-only`.","GitHub also includes the required `Metadata: Read-only` permission."],note:`These permissions let OneQuery read repository contents plus issue and pull request data without write access.`,imageSrc:`/images/github-token-guide/step3_permissions_configured_sanitized.png`,imageAlt:`GitHub repository permissions configured for OneQuery`},{title:`Copy the token and connect OneQuery`,paragraphs:[`Click Generate token, then copy the token value immediately. GitHub only shows it once.`,"Use that value as `credentials.accessToken` in `onequery source connect --source github --input '<json>'`."],code:`{
150
- "name": "github_main",
151
- "credentials": {
152
- "type": "github",
153
- "accessToken": "github_pat_..."
154
- }
155
- }`,note:`Treat the token as sensitive. If it appears in a screenshot or chat, revoke it and create a new one.`,imageSrc:`/images/github-token-guide/step4_token_created_sanitized.png`,imageAlt:`GitHub one-time personal access token copy screen`,reverse:!0}],closingTitle:`Ready to Connect`,closingDescription:`Paste the token into the OneQuery GitHub connection form or the CLI JSON payload to finish the setup.`,closingNote:`For least privilege, keep repository access limited to the repos you actually want OneQuery to read.`}},laminar:{providerLabel:`Laminar`},linkedin_ads:{providerLabel:`LinkedIn Ads`},mixpanel:{providerLabel:`Mixpanel`,ko:{title:`Mixpanel 서비스 계정 연결 가이드`,description:`OneQuery에 Mixpanel을 연결하려면 조직 단위 Service Account와 대상 Project ID가 필요합니다.`,steps:[{title:`Organization Service Accounts 열기`,paragraphs:[`Mixpanel에 로그인해 주세요: https://mixpanel.com`,"Settings를 연 뒤 `Org` 탭으로 이동하고, 좌측 메뉴에서 `Service Accounts`를 선택하세요.","우측 상단의 `Add Service Account`를 클릭해 새 계정을 만드세요."],imageSrc:`/images/mixpanel/step1_service_accounts.png`,imageAlt:`Mixpanel organization service accounts page`},{title:`Service Account 생성하기`,paragraphs:["이름을 입력한 뒤 `Organization Role`은 `Member`로 두세요.","연결할 프로젝트를 선택하고 `Project Role`은 `Consumer`로 유지하세요.","`Expires`는 `Never`로 둘 수 있고, 조직 정책이 있다면 더 짧은 만료일을 선택해도 됩니다."],note:`OneQuery의 Mixpanel 연결은 프로젝트 접근 권한과 읽기 가능한 서비스 계정 자격 증명만 필요합니다.`,imageSrc:`/images/mixpanel/step2_create_service_account.png`,imageAlt:`Mixpanel create service account modal`,reverse:!0},{title:`Username과 Secret 저장하기`,paragraphs:["생성 직후 표시되는 `Username`과 `Secret`을 복사해 두세요.","OneQuery에서는 이 값을 각각 `credentials.username`, `credentials.secret`에 입력합니다."],note:`Secret은 이 화면을 닫으면 다시 볼 수 없습니다. 스크린샷이나 채팅에 노출되었다면 해당 계정을 폐기하거나 Secret을 다시 발급하세요.`,imageSrc:`/images/mixpanel/step3_credentials.png`,imageAlt:`Mixpanel service account credentials`},{title:`Project ID와 Region 확인하기`,paragraphs:["Settings의 `Project` 탭 `Overview`에서 `Project ID`를 복사해 `credentials.projectId`에 넣으세요.","`Data Residency`를 보고 `US -> us`, `EU -> eu`, `India -> in`으로 `credentials.region`을 맞추세요.","`workspaceId`는 선택 사항입니다. 특정 Mixpanel workspace/data view를 강제로 쓰는 경우가 아니면 비워 두면 됩니다."],code:`{
156
- "name": "mixpanel_growth",
157
- "credentials": {
158
- "type": "mixpanel",
159
- "projectId": "12345",
160
- "username": "service-account-username",
161
- "secret": "service-account-secret",
162
- "region": "us"
163
- }
164
- }`,note:"`onequery source connect --source mixpanel --input '<json>'`에서 위 JSON을 그대로 사용하고, 필요할 때만 `workspaceId`를 추가하세요.",imageSrc:`/images/mixpanel/step4_project_settings.png`,imageAlt:`Mixpanel project settings with project ID and data residency`,reverse:!0}],closingTitle:`연결 준비 완료!`,closingDescription:`이제 Mixpanel Service Account 자격 증명과 Project ID로 OneQuery 연결을 마칠 수 있습니다.`,closingNote:`서비스 계정 Secret이 한 번이라도 노출되었다면 즉시 삭제하거나 새로 발급하는 것이 안전합니다.`},en:{title:`Mixpanel Service Account Guide`,description:`To connect Mixpanel to OneQuery, create an org-level service account and collect the target project ID.`,steps:[{title:`Open Organization Service Accounts`,paragraphs:[`Sign in to Mixpanel at https://mixpanel.com`,"Open Settings, switch to the `Org` tab, and choose `Service Accounts` from the left navigation.","Click `Add Service Account` in the top-right corner."],imageSrc:`/images/mixpanel/step1_service_accounts.png`,imageAlt:`Mixpanel organization service accounts page`},{title:`Create the service account`,paragraphs:["Enter a name, keep `Organization Role` set to `Member`, and select the project that OneQuery should read.","Keep `Project Role` set to `Consumer`.","Leave `Expires` as `Never`, or choose a shorter expiration if your security policy requires rotation."],note:`OneQuery only needs project access plus working read credentials for the Mixpanel Query API.`,imageSrc:`/images/mixpanel/step2_create_service_account.png`,imageAlt:`Mixpanel create service account modal`,reverse:!0},{title:`Copy the username and secret`,paragraphs:["After you create the account, Mixpanel shows the `Username` and `Secret` once.","Use them as `credentials.username` and `credentials.secret` in OneQuery."],note:`Treat the secret as compromised if it appears in a screenshot or chat. Delete the account or rotate the secret and create a new one.`,imageSrc:`/images/mixpanel/step3_credentials.png`,imageAlt:`Mixpanel service account credentials`},{title:`Copy the project ID and choose the region`,paragraphs:["Open Settings > `Project` > `Overview`, then copy `Project ID` into `credentials.projectId`.","Map `Data Residency` to OneQuery's `region` value: `US -> us`, `EU -> eu`, `India -> in`.","Leave `workspaceId` empty unless you already know that your Mixpanel setup requires a specific workspace or data view override."],code:`{
165
- "name": "mixpanel_growth",
166
- "credentials": {
167
- "type": "mixpanel",
168
- "projectId": "12345",
169
- "username": "service-account-username",
170
- "secret": "service-account-secret",
171
- "region": "us"
172
- }
173
- }`,note:"Run `onequery source connect --source mixpanel --input '<json>'` with that payload, and add `workspaceId` only when you intentionally need it.",imageSrc:`/images/mixpanel/step4_project_settings.png`,imageAlt:`Mixpanel project settings with project ID and data residency`,reverse:!0}],closingTitle:`Ready to Connect`,closingDescription:`You now have the exact Mixpanel fields OneQuery expects: username, secret, project ID, and region.`,closingNote:`If the one-time secret was exposed while documenting or sharing setup steps, revoke or delete that temporary service account.`}},motherduck:{providerLabel:`MotherDuck`},mongodb:{providerLabel:`MongoDB`},mysql:{providerLabel:`MySQL`,ko:{title:`AWS RDS 읽기 전용 계정 생성`,description:`OneQuery이 데이터베이스를 안전하게 분석할 수 있도록 Read-only 권한을 가진 계정을 생성해 주세요.`,steps:[{title:`데이터베이스 접속하기`,paragraphs:[`사용 중인 데이터베이스 클라이언트(DBeaver, pgAdmin 등)나 터미널을 이용해 AWS RDS의 Admin 계정으로 접속해 주세요.`,`접속 후 SQL 쿼리를 실행할 수 있는 에디터 창을 열어주세요.`],imageSrc:`/images/rds/step1_connect.png`,imageAlt:`Database Client Connection`},{title:`읽기 전용 유저 생성 (SQL)`,paragraphs:[`아래 SQL 명령어를 복사하여 실행해 주세요.`],code:`CREATE USER onequery_reader WITH PASSWORD 'your_secure_password';
174
- -- DB 접속 권한 부여
175
- GRANT CONNECT ON DATABASE your_db_name TO onequery_reader;`,note:`'your_secure_password'와 'your_db_name'을 실제 값으로 변경해 주세요.`,imageSrc:`/images/rds/step2_create_user.png`,imageAlt:`SQL Create User Query`,reverse:!0},{title:`조회 권한 부여 (SQL)`,paragraphs:[`생성한 유저에게 테이블 조회 권한을 부여합니다.`],code:`-- PostgreSQL의 경우:
176
- GRANT USAGE ON SCHEMA public TO onequery_reader;
177
- GRANT SELECT ON ALL TABLES IN SCHEMA public TO onequery_reader;
178
-
179
- -- MySQL의 경우:
180
- GRANT SELECT ON your_db_name.* TO 'onequery_reader';`,note:`이 명령어는 현재 존재하는 테이블에 대해서만 권한을 부여합니다.`,imageSrc:`/images/rds/step3_grant.png`,imageAlt:`SQL Grant Privileges Query`},{title:`연결 정보 입력`,paragraphs:[`OneQuery에 다음 정보를 입력해 주세요:`],bullets:[`Host (Endpoint): adb-xxx...aws.com`,`Database Name: your_db_name`,`Username: onequery_reader`,`Password: 설정한 비밀번호`],imageSrc:`/images/rds/step4_info.png`,imageAlt:`Connection Details Form`,reverse:!0}],closingTitle:`설정이 완료되었습니다!`,closingDescription:`이제 OneQuery을 통해 RDS 데이터를 안전하게 분석할 수 있습니다.`},en:{title:`AWS RDS Read-Only Account Guide`,description:`Create a Read-only account so OneQuery can safely analyze your database.`,steps:[{title:`Connect to Database`,paragraphs:[`Use your database client (DBeaver, pgAdmin, etc.) or terminal to connect to the Admin account of your AWS RDS.`,`After connecting, open an editor window where you can execute SQL queries.`],imageSrc:`/images/rds/step1_connect.png`,imageAlt:`Database Client Connection`},{title:`Create Read-Only User (SQL)`,paragraphs:[`Copy and execute the SQL command below.`],code:`CREATE USER onequery_reader WITH PASSWORD 'your_secure_password';
181
- -- Grant DB connection privileges
182
- GRANT CONNECT ON DATABASE your_db_name TO onequery_reader;`,note:`Please change 'your_secure_password' and 'your_db_name' to actual values.`,imageSrc:`/images/rds/step2_create_user.png`,imageAlt:`SQL Create User Query`,reverse:!0},{title:`Grant Select Privileges (SQL)`,paragraphs:[`Grant table select privileges to the created user.`],code:`-- For PostgreSQL:
183
- GRANT USAGE ON SCHEMA public TO onequery_reader;
184
- GRANT SELECT ON ALL TABLES IN SCHEMA public TO onequery_reader;
185
-
186
- -- For MySQL:
187
- GRANT SELECT ON your_db_name.* TO 'onequery_reader';`,note:`This command grants privileges only for currently existing tables.`,imageSrc:`/images/rds/step3_grant.png`,imageAlt:`SQL Grant Privileges Query`},{title:`Enter Connection Details`,paragraphs:[`Please enter the following information into OneQuery:`],bullets:[`Host (Endpoint): adb-xxx...aws.com`,`Database Name: your_db_name`,`Username: onequery_reader`,`Password: Set password`],imageSrc:`/images/rds/step4_info.png`,imageAlt:`Connection Details Form`,reverse:!0}],closingTitle:`Setup Complete!`,closingDescription:`You can now securely analyze RDS data via OneQuery.`}},onepassword:{providerLabel:`1Password`},postgres:{providerLabel:`PostgreSQL`,ko:{title:`PostgreSQL 연동 가이드`,description:`PostgreSQL 데이터베이스의 연결 정보(Host, DB Name 등)를 확인하고 읽기 전용 사용자를 생성해 주세요.`,steps:[{title:`읽기 전용 사용자 생성`,paragraphs:[`데이터베이스의 안전을 위해 OneQuery 전용 읽기 권한 사용자를 생성하는 것을 권장합니다.`,`다음 SQL 명령어를 실행하여 사용자를 생성하고 권한을 부여하세요.`],code:`-- 사용자 생성
188
- CREATE USER onequery_readonly WITH PASSWORD 'secure_password';
189
-
190
- -- 읽기 권한 부여
191
- GRANT CONNECT ON DATABASE your_database TO onequery_readonly;
192
- GRANT USAGE ON SCHEMA public TO onequery_readonly;
193
- GRANT SELECT ON ALL TABLES IN SCHEMA public TO onequery_readonly;
194
-
195
- -- 향후 생성될 테이블에도 권한 자동 부여 (선택)
196
- ALTER DEFAULT PRIVILEGES IN SCHEMA public
197
- GRANT SELECT ON TABLES TO onequery_readonly;`,imageSrc:`/images/postgresql/step1_create_user.png`,imageAlt:`PostgreSQL Create User SQL`},{title:`연결 정보 확인`,paragraphs:[`다음 정보를 준비해 주세요:`],bullets:[`Host: 데이터베이스 주소 (예: db.example.com)`,`Port: 기본값은 5432 입니다.`,`Database Name: 연결할 데이터베이스 이름`,`Username: onequery_readonly`,`Password: 설정한 비밀번호`],imageSrc:`/images/postgresql/step2_connection.png`,imageAlt:`PostgreSQL Connection Form`,reverse:!0}]},en:{title:`PostgreSQL Integration Guide`,description:`Check your PostgreSQL database connection details (Host, DB Name, etc.) and create a read-only user.`,steps:[{title:`Create Read-Only User`,paragraphs:[`For database security, we recommend creating a OneQuery-specific read-only user.`,`Run the following SQL commands to create the user and grant permissions.`],code:`-- Create User
198
- CREATE USER onequery_readonly WITH PASSWORD 'secure_password';
199
-
200
- -- Grant Read Permissions
201
- GRANT CONNECT ON DATABASE your_database TO onequery_readonly;
202
- GRANT USAGE ON SCHEMA public TO onequery_readonly;
203
- GRANT SELECT ON ALL TABLES IN SCHEMA public TO onequery_readonly;
204
-
205
- -- Automatically grant permissions on future tables (Optional)
206
- ALTER DEFAULT PRIVILEGES IN SCHEMA public
207
- GRANT SELECT ON TABLES TO onequery_readonly;`,imageSrc:`/images/postgresql/step1_create_user.png`,imageAlt:`PostgreSQL Create User SQL`},{title:`Check Connection Details`,paragraphs:[`Please prepare the following information:`],bullets:[`Host: Database Address (e.g., db.example.com)`,`Port: Default is 5432.`,`Database Name: Name of the database to connect to`,`Username: onequery_readonly`,`Password: The password you set`],imageSrc:`/images/postgresql/step2_connection.png`,imageAlt:`PostgreSQL Connection Form`,reverse:!0}]}},posthog:{providerLabel:`PostHog`,ko:{title:`PostHog API 연동 가이드`,description:`OneQuery와 연동하려면 PostHog에서 Project ID, Personal API Key, 그리고 올바른 Host URL을 확인해야 합니다.`,steps:[{title:`프로젝트 설정 열기`,paragraphs:["연결할 PostHog 프로젝트를 연 뒤 `Settings -> Project -> General`로 이동해 주세요.","`Project token & ID` 섹션에서 OneQuery에 필요한 프로젝트 정보를 확인할 수 있습니다."],imageSrc:`/images/posthog/step1_project_settings.png`,imageAlt:`PostHog Project Settings General Page`},{title:`Project ID와 Host URL 확인`,paragraphs:["`Project token & ID` 섹션에서 `Project ID`를 복사해 주세요.","Host URL은 현재 PostHog 앱 주소의 origin을 사용하면 됩니다. US Cloud는 `https://us.posthog.com`, EU Cloud는 `https://eu.posthog.com`, Self-hosted는 배포 Base URL을 입력해 주세요."],note:"웹 SDK 예시에 보이는 `api_host` (`https://us.i.posthog.com` 등)는 수집용 호스트입니다. OneQuery에는 `https://us.posthog.com` 또는 `https://eu.posthog.com` 같은 PostHog 앱/API 호스트를 입력해 주세요.",reverse:!0},{title:`Personal API Key 페이지로 이동`,paragraphs:["`Settings -> Account -> Personal API keys`로 이동한 뒤 `Create personal API key`를 눌러 주세요.",`기존 키가 없다면 목록이 비어 있어도 정상입니다.`],imageSrc:`/images/posthog/step2_personal_api_keys.png`,imageAlt:`PostHog Personal API Keys Page`},{title:`읽기 권한 키 생성`,paragraphs:["키 이름을 입력하고 `Organization & project access`에서 연결할 프로젝트가 포함되도록 설정해 주세요.","권한은 최소한 `Project`와 `Query`에 `Read`를 부여해 주세요. 연결 테스트에서 접근 오류가 나면 프로젝트 범위도 함께 확인해 주세요."],note:`Personal API Key secret은 생성 직후에만 전체 값을 다시 보여줄 수 있으니 즉시 복사해 안전한 곳에 저장해 주세요.`,imageSrc:`/images/posthog/step3_create_key_modal.png`,imageAlt:`PostHog Create Personal API Key Modal`,reverse:!0},{title:`OneQuery에 입력`,paragraphs:[`복사한 값을 OneQuery의 PostHog 연결 화면에 입력한 뒤 연결 테스트를 실행해 주세요.`],bullets:[`Project ID`,`Personal API Key`,`Host URL`]}],closingTitle:`연동 준비 완료!`,closingDescription:`이제 OneQuery에서 PostHog 데이터를 안전하게 조회할 수 있습니다.`},en:{title:`PostHog API Guide`,description:`To connect PostHog to OneQuery, collect the Project ID, a Personal API Key, and the correct Host URL from PostHog.`,steps:[{title:`Open Project Settings`,paragraphs:["Open the PostHog project you want to connect, then go to `Settings -> Project -> General`.","The `Project token & ID` section is where you confirm the project details OneQuery needs."],imageSrc:`/images/posthog/step1_project_settings.png`,imageAlt:`PostHog Project Settings General Page`},{title:`Copy the Project ID and Host URL`,paragraphs:["Copy the `Project ID` from the `Project token & ID` section.","Use the PostHog app origin as the Host URL: `https://us.posthog.com` for US Cloud, `https://eu.posthog.com` for EU Cloud, or your self-hosted base URL."],note:"Do not use the `api_host` value from the web SDK snippet (`https://us.i.posthog.com`, etc.). OneQuery needs the PostHog app/API host instead.",reverse:!0},{title:`Open Personal API Keys`,paragraphs:["Go to `Settings -> Account -> Personal API keys`, then select `Create personal API key`.",`An empty list is expected if your workspace has not created any keys yet.`],imageSrc:`/images/posthog/step2_personal_api_keys.png`,imageAlt:`PostHog Personal API Keys Page`},{title:`Create a Read-Scoped Key`,paragraphs:["Add a label and make sure `Organization & project access` includes the PostHog project you plan to connect.","Grant at least `Read` access to `Project` and `Query`. If the connection test is denied, verify the project access scope as well."],note:`Copy the secret right away and store it safely. PostHog may only show the full key once.`,imageSrc:`/images/posthog/step3_create_key_modal.png`,imageAlt:`PostHog Create Personal API Key Modal`,reverse:!0},{title:`Enter the Values in OneQuery`,paragraphs:[`Paste the copied values into the OneQuery PostHog setup form, then run the connection test.`],bullets:[`Project ID`,`Personal API Key`,`Host URL`]}],closingTitle:`Integration Ready!`,closingDescription:`You can now query PostHog data from OneQuery.`}},sendgrid:{providerLabel:`SendGrid`},sentry:{providerLabel:`Sentry`,ko:{title:`Sentry Personal Token 연결 가이드`,description:"OneQuery의 Sentry 연결은 `authToken`, `organizationSlug`, optional `projectSlug`, optional `apiBaseUrl`를 받습니다. 아래 단계대로 Sentry Personal Token과 slug 값을 확인해 주세요.",steps:[{title:`Personal Tokens 페이지 열기`,paragraphs:[`Sentry에 로그인한 뒤 Settings > Developer Settings > Personal Tokens로 이동해 주세요.`,`직접 열려면 https://sentry.io/settings/account/api/auth-tokens/ 를 사용해도 됩니다.`],note:"목록이 비어 있어도 괜찮습니다. `Create New Token`으로 바로 다음 단계로 이동할 수 있습니다.",imageSrc:`/images/sentry/step1_personal_tokens.png`,imageAlt:`Sentry Personal Tokens page`},{title:`필요한 읽기 권한으로 토큰 생성`,paragraphs:["`Create New Token`을 누르고 이름은 `OneQuery`처럼 알아보기 쉽게 입력해 주세요.","권한은 `Project = Read`, `Issue & Event = Read`, `Organization = Read`로 설정해 주세요."],bullets:["`Project = Read` -> `project:read`","`Issue & Event = Read` -> `event:read`","`Organization = Read` -> `organization:read`"],note:"Sentry는 토큰 값을 한 번만 보여줍니다. `Create Token` 후 즉시 복사하고, 스크린샷이나 채팅에 노출하지 마세요.",imageSrc:`/images/sentry/step2_create_token_permissions.png`,imageAlt:`Sentry personal token permission selection`,reverse:!0},{title:`Organization Slug 확인`,paragraphs:["Settings > Organization > General의 `Organization Slug` 값을 `organizationSlug`로 사용해 주세요.","`projectSlug`를 비워 두면 OneQuery은 연결 테스트에서 `/organizations/{organizationSlug}/projects/`로 조직 접근만 확인합니다."],imageSrc:`/images/sentry/step3_organization_slug.png`,imageAlt:`Sentry organization settings showing the Organization Slug field`},{title:`Project Slug 확인 후 OneQuery에 입력`,paragraphs:["특정 프로젝트에 연결을 고정하려면 Settings > Projects > <project> > General의 `Slug` 값을 `projectSlug`에 넣어 주세요.","`projectSlug`를 넣으면 OneQuery은 `/projects/{organizationSlug}/{projectSlug}/events/`로 프로젝트 접근을 확인하므로 `Issue & Event = Read`가 필요합니다.","Sentry Cloud는 `apiBaseUrl`를 비워 두면 되고, self-hosted Sentry만 `https://<your-host>/api/0`를 넣어 주세요."],bullets:["`authToken`: 방금 생성한 Personal Token","`organizationSlug`: Organization Settings의 Slug","`projectSlug` (optional): Project Settings의 Slug","`apiBaseUrl` (optional): self-hosted API root"],code:`{
208
- "name": "sentry_main",
209
- "credentials": {
210
- "type": "sentry",
211
- "authToken": "sntrys_...",
212
- "organizationSlug": "your-org-slug",
213
- "projectSlug": "your-project-slug"
214
- }
215
- }`,note:"Self-hosted Sentry라면 `credentials.apiBaseUrl`에 `https://<your-host>/api/0`를 추가하세요.",imageSrc:`/images/sentry/step4_project_slug.png`,imageAlt:`Sentry project settings showing the Slug field`,reverse:!0}],closingTitle:`준비가 완료되었습니다!`,closingDescription:"이제 생성한 Personal Token과 slug 값을 OneQuery 웹 폼이나 `onequery source connect --source sentry` 입력 JSON에 넣으면 됩니다.",closingNote:"`projectSlug` 없이 연결하면 조직 프로젝트 목록 접근부터 확인하고, `projectSlug`를 넣으면 프로젝트 이벤트 접근까지 바로 확인합니다."},en:{title:`Sentry Personal Token Connection Guide`,description:"The OneQuery Sentry connection accepts `authToken`, `organizationSlug`, optional `projectSlug`, and optional `apiBaseUrl`. Follow the live Sentry Personal Token flow below.",steps:[{title:`Open the Personal Tokens page`,paragraphs:[`Sign in to Sentry, then open Settings > Developer Settings > Personal Tokens.`,`You can also open https://sentry.io/settings/account/api/auth-tokens/ directly.`],note:"It is fine if the list is empty. Click `Create New Token` to continue.",imageSrc:`/images/sentry/step1_personal_tokens.png`,imageAlt:`Sentry Personal Tokens page`},{title:`Create the token with the required read permissions`,paragraphs:["Click `Create New Token` and give it a recognizable name such as `OneQuery`.","Set `Project = Read`, `Issue & Event = Read`, and `Organization = Read`."],bullets:["`Project = Read` -> `project:read`","`Issue & Event = Read` -> `event:read`","`Organization = Read` -> `organization:read`"],note:"Sentry only shows the token value once after you click `Create Token`. Copy it immediately and do not leave it in screenshots or chat.",imageSrc:`/images/sentry/step2_create_token_permissions.png`,imageAlt:`Sentry personal token permission selection`,reverse:!0},{title:`Find the organization slug`,paragraphs:["Read the `Organization Slug` value from Settings > Organization > General and use it as `organizationSlug`.","If you leave `projectSlug` empty, OneQuery validates organization access with `/organizations/{organizationSlug}/projects/` during connect."],imageSrc:`/images/sentry/step3_organization_slug.png`,imageAlt:`Sentry organization settings showing the Organization Slug field`},{title:`Find the project slug and enter the fields in OneQuery`,paragraphs:["If you want to pin the connection to one project, read the `Slug` value from Settings > Projects > <project> > General and use it as `projectSlug`.","When `projectSlug` is present, OneQuery validates project access with `/projects/{organizationSlug}/{projectSlug}/events/`, so `Issue & Event = Read` is required.","Leave `apiBaseUrl` empty for Sentry Cloud. Only set it for self-hosted Sentry, using the canonical API root such as `https://<your-host>/api/0`."],bullets:["`authToken`: the Personal Token you just created","`organizationSlug`: the slug from Organization Settings","`projectSlug` (optional): the slug from Project Settings","`apiBaseUrl` (optional): self-hosted API root"],code:`{
216
- "name": "sentry_main",
217
- "credentials": {
218
- "type": "sentry",
219
- "authToken": "sntrys_...",
220
- "organizationSlug": "your-org-slug",
221
- "projectSlug": "your-project-slug"
222
- }
223
- }`,note:"For self-hosted Sentry, also add `credentials.apiBaseUrl`, for example `https://<your-host>/api/0`.",imageSrc:`/images/sentry/step4_project_slug.png`,imageAlt:`Sentry project settings showing the Slug field`,reverse:!0}],closingTitle:`Ready to Go!`,closingDescription:"Paste the Personal Token and slug values into the OneQuery form or `onequery source connect --source sentry` JSON payload to finish the setup.",closingNote:"Without `projectSlug`, OneQuery checks organization-level project access first. With `projectSlug`, it also checks project event access during connect."}},snowflake:{providerLabel:`Snowflake`,ko:{title:`Snowflake 읽기 전용 계정 설정`,description:`OneQuery가 Snowflake warehouse를 통해 승인된 데이터만 조회할 수 있도록 전용 role과 user를 준비합니다.`,steps:[{title:`Role과 user 생성`,paragraphs:[`Snowflake에서 SECURITYADMIN 또는 동등한 권한으로 전용 role과 user를 생성합니다.`],code:`USE ROLE SECURITYADMIN;
224
- CREATE ROLE IF NOT EXISTS ONEQUERY_READONLY;
225
- CREATE USER IF NOT EXISTS ONEQUERY_READER
226
- PASSWORD = 'replace_with_strong_password'
227
- DEFAULT_ROLE = ONEQUERY_READONLY
228
- MUST_CHANGE_PASSWORD = FALSE;
229
- GRANT ROLE ONEQUERY_READONLY TO USER ONEQUERY_READER;`},{title:`Warehouse와 데이터 권한 부여`,paragraphs:[`대상 warehouse, database, schema에 대한 사용 권한과 조회 권한을 부여합니다.`],code:`GRANT USAGE ON WAREHOUSE ANALYTICS_WH TO ROLE ONEQUERY_READONLY;
230
- GRANT USAGE ON DATABASE ANALYTICS TO ROLE ONEQUERY_READONLY;
231
- GRANT USAGE ON SCHEMA ANALYTICS.PUBLIC TO ROLE ONEQUERY_READONLY;
232
- GRANT SELECT ON ALL TABLES IN SCHEMA ANALYTICS.PUBLIC TO ROLE ONEQUERY_READONLY;
233
- GRANT SELECT ON FUTURE TABLES IN SCHEMA ANALYTICS.PUBLIC TO ROLE ONEQUERY_READONLY;
234
- GRANT SELECT ON ALL VIEWS IN SCHEMA ANALYTICS.PUBLIC TO ROLE ONEQUERY_READONLY;
235
- GRANT SELECT ON FUTURE VIEWS IN SCHEMA ANALYTICS.PUBLIC TO ROLE ONEQUERY_READONLY;`},{title:`연결 정보 입력`,paragraphs:[`Account identifier, warehouse, database, schema, role, username, password를 OneQuery에 입력합니다.`],bullets:[`Account Identifier: xy12345.us-east-1`,`Warehouse: ANALYTICS_WH`,`Database: ANALYTICS`,`Schema: PUBLIC`,`Role: ONEQUERY_READONLY`]}],closingTitle:`설정이 완료되었습니다.`,closingDescription:`이제 OneQuery에서 Snowflake SELECT 쿼리를 실행할 수 있습니다.`},en:{title:`Snowflake Read-Only Account Guide`,description:`Create a dedicated role and user so OneQuery can query approved Snowflake data through a warehouse.`,steps:[{title:`Create a role and user`,paragraphs:[`In Snowflake, use SECURITYADMIN or an equivalent role to create a dedicated role and user.`],code:`USE ROLE SECURITYADMIN;
236
- CREATE ROLE IF NOT EXISTS ONEQUERY_READONLY;
237
- CREATE USER IF NOT EXISTS ONEQUERY_READER
238
- PASSWORD = 'replace_with_strong_password'
239
- DEFAULT_ROLE = ONEQUERY_READONLY
240
- MUST_CHANGE_PASSWORD = FALSE;
241
- GRANT ROLE ONEQUERY_READONLY TO USER ONEQUERY_READER;`},{title:`Grant warehouse and data access`,paragraphs:[`Grant usage on the target warehouse, database, and schema, then grant read access to the tables and views OneQuery should query.`],code:`GRANT USAGE ON WAREHOUSE ANALYTICS_WH TO ROLE ONEQUERY_READONLY;
242
- GRANT USAGE ON DATABASE ANALYTICS TO ROLE ONEQUERY_READONLY;
243
- GRANT USAGE ON SCHEMA ANALYTICS.PUBLIC TO ROLE ONEQUERY_READONLY;
244
- GRANT SELECT ON ALL TABLES IN SCHEMA ANALYTICS.PUBLIC TO ROLE ONEQUERY_READONLY;
245
- GRANT SELECT ON FUTURE TABLES IN SCHEMA ANALYTICS.PUBLIC TO ROLE ONEQUERY_READONLY;
246
- GRANT SELECT ON ALL VIEWS IN SCHEMA ANALYTICS.PUBLIC TO ROLE ONEQUERY_READONLY;
247
- GRANT SELECT ON FUTURE VIEWS IN SCHEMA ANALYTICS.PUBLIC TO ROLE ONEQUERY_READONLY;`},{title:`Enter connection details`,paragraphs:[`Enter the account identifier, warehouse, database, schema, role, username, and password in OneQuery.`],bullets:[`Account Identifier: xy12345.us-east-1`,`Warehouse: ANALYTICS_WH`,`Database: ANALYTICS`,`Schema: PUBLIC`,`Role: ONEQUERY_READONLY`]}],closingTitle:`Setup complete.`,closingDescription:`OneQuery can now run SELECT queries against Snowflake.`}},supabase:{providerLabel:`Supabase`,ko:{title:`Supabase 연동 가이드`,description:`Supabase는 내부적으로 PostgreSQL이므로 Project Settings에서 연결 정보와 Database password를 확인한 뒤 읽기 전용 계정 또는 전용 접속 정보를 사용해 연결해 주세요.`,steps:[{title:`Connection string 확인`,paragraphs:["Supabase Dashboard에서 대상 프로젝트를 연 뒤 `Project Settings > Database`로 이동하세요.","상단 `Connect` 패널에서 `Session pooler` connection string 또는 `Connection info`를 열고 Host, Port, Database, User 정보를 확인하세요."]},{title:`Database password 준비`,paragraphs:[`Supabase는 데이터베이스 비밀번호가 필요합니다. 프로젝트 생성 시 설정한 Database password를 준비하세요.`,`비밀번호를 잊어버렸다면 Supabase Dashboard에서 데이터베이스 비밀번호를 재설정한 뒤 새 값을 사용하세요.`],reverse:!0},{title:`가급적 읽기 전용 계정 사용`,paragraphs:[`운영 환경이라면 Supabase 기본 관리자 계정보다 OneQuery 전용 읽기 계정을 만들어 사용하는 편이 안전합니다.`,`Supabase SQL Editor에서 아래 예시처럼 읽기 전용 권한을 부여할 수 있습니다.`],code:`CREATE USER onequery_readonly WITH PASSWORD 'secure_password';
248
-
249
- GRANT CONNECT ON DATABASE postgres TO onequery_readonly;
250
- GRANT USAGE ON SCHEMA public TO onequery_readonly;
251
- GRANT SELECT ON ALL TABLES IN SCHEMA public TO onequery_readonly;
252
-
253
- ALTER DEFAULT PRIVILEGES IN SCHEMA public
254
- GRANT SELECT ON TABLES TO onequery_readonly;`},{title:`OneQuery에 입력`,paragraphs:[`OneQuery에서는 Supabase를 선택한 뒤 Session pooler connection string 또는 수동 입력 값을 그대로 넣으면 됩니다.`,`Supabase는 SSL이 필요하므로 이 integration은 내부적으로 PostgreSQL + SSL required 설정으로 저장됩니다.`],bullets:[`권장 Host 예시: aws-0-<region>.pooler.supabase.com (Session pooler)`,`Port: 5432`,`Database: postgres`,`Username 예시: postgres.<project-ref> 또는 읽기 전용 사용자`],reverse:!0}],closingTitle:`연동 준비 완료!`,closingDescription:`이제 Supabase 프로젝트의 Postgres 데이터를 OneQuery에서 직접 조회할 수 있습니다.`},en:{title:`Supabase Integration Guide`,description:`Supabase is backed by PostgreSQL. Open the project database settings, collect the connection details and database password, then connect it in OneQuery.`,steps:[{title:`Find the connection string`,paragraphs:["Open the target project in the Supabase Dashboard and go to `Project Settings > Database`.","Open the `Connect` panel and use the `Session pooler` connection string or `Connection info` section to collect host, port, database, and username."]},{title:`Prepare the database password`,paragraphs:[`Supabase requires the database password. Use the database password configured for the project.`,`If you no longer have it, reset the database password in Supabase and use the new value.`],reverse:!0},{title:`Prefer a read-only user`,paragraphs:[`For production projects, using a OneQuery-specific read-only user is safer than reusing the default admin connection.`,`You can create one from the Supabase SQL editor with the example below.`],code:`CREATE USER onequery_readonly WITH PASSWORD 'secure_password';
255
-
256
- GRANT CONNECT ON DATABASE postgres TO onequery_readonly;
257
- GRANT USAGE ON SCHEMA public TO onequery_readonly;
258
- GRANT SELECT ON ALL TABLES IN SCHEMA public TO onequery_readonly;
259
-
260
- ALTER DEFAULT PRIVILEGES IN SCHEMA public
261
- GRANT SELECT ON TABLES TO onequery_readonly;`},{title:`Enter it in OneQuery`,paragraphs:[`Select Supabase in OneQuery, then paste the Session pooler connection string or fill the connection details manually.`,`This integration is stored internally as PostgreSQL with SSL required, so the runtime path stays identical to Postgres.`],bullets:[`Recommended host example: aws-0-<region>.pooler.supabase.com (Session pooler)`,`Port: 5432`,`Database: postgres`,`Username example: postgres.<project-ref> or your read-only user`],reverse:!0}],closingTitle:`Integration Ready!`,closingDescription:`You can now query your Supabase Postgres data directly from OneQuery.`}},tiktok_marketing:{providerLabel:`TikTok Marketing`},vercel:{providerLabel:`Vercel`,ko:{title:`Vercel Access Token 연결 가이드`,description:"OneQuery의 Vercel 연결은 `apiToken`과 optional `apiBaseUrl`를 받습니다. Vercel Account Settings에서 API Access Token을 생성한 뒤 OneQuery에 붙여 넣어 주세요.",steps:[{title:`Vercel Tokens 페이지 열기`,paragraphs:[`Vercel에 로그인한 뒤 Personal Account의 Settings > Tokens로 이동해 주세요.`,`직접 열려면 https://vercel.com/account/settings/tokens 를 사용해도 됩니다.`],note:`Vercel 문서 기준으로 Access Token은 Vercel API 인증에 필요하며 Account Settings의 Tokens 페이지에서 생성하고 관리합니다.`,imageSrc:`/images/vercel/step1_tokens_page.png`,imageAlt:`Vercel Tokens page showing the Create Token form`},{title:`토큰 이름, 범위, 만료 기간 설정`,paragraphs:["`Token name`에는 `OneQuery Read Access`처럼 나중에 알아보기 쉬운 이름을 입력해 주세요.","`Scope`에서는 OneQuery이 조회해야 하는 Personal Account 또는 Team을 선택해 주세요. Team API를 조회하려면 해당 Team 범위가 포함된 토큰이 필요합니다.","`Expiration`은 가능한 유한 기간을 선택해 주세요. 예시는 `1 Year`이지만 조직 정책에 맞게 더 짧게 설정해도 됩니다."],note:`Scope 드롭다운에는 개인 계정, 팀, 프로젝트 이름이 표시될 수 있으므로 공유용 스크린샷에는 포함하지 않았습니다.`,imageSrc:`/images/vercel/step2_configure_token.png`,imageAlt:`Vercel Create Token form with a descriptive token name and one-year expiration`,reverse:!0},{title:`Create 후 토큰 값을 즉시 복사`,paragraphs:["`Create`를 누른 뒤 표시되는 토큰 값을 즉시 복사해 주세요. Vercel은 생성된 토큰 값을 다시 보여주지 않습니다.","토큰 값은 OneQuery의 Vercel 연결 화면에서 `credentials.apiToken`에 붙여 넣습니다."],code:`{
262
- "name": "vercel_main",
263
- "credentials": {
264
- "type": "vercel",
265
- "apiToken": "vercel_api_token"
266
- }
267
- }`,note:`토큰은 민감 정보입니다. 스크린샷, 채팅, 로그에 노출되었다면 Vercel Tokens 페이지에서 즉시 revoke하고 새 토큰을 생성하세요.`},{title:`Team 범위 API 호출 준비`,paragraphs:["Vercel Team 데이터를 조회할 때는 Source API 요청의 `params.teamId`에 Team ID를 넘겨 주세요.",`Team ID는 Vercel Team settings에서 확인할 수 있으며, 토큰 Scope도 같은 Team에 접근할 수 있어야 합니다.`,"일반 Vercel Cloud API를 사용할 때는 `apiBaseUrl`을 비워 두세요. Vercel 호환 프록시나 별도 API origin을 써야 할 때만 설정합니다."],bullets:["`apiToken`: 생성한 Vercel Access Token","`apiBaseUrl` (optional): 기본값은 `https://api.vercel.com`","`params.teamId`: Team-scoped Source API 요청에 필요한 Team ID"]}],closingTitle:`연결 준비 완료!`,closingDescription:`이제 생성한 Access Token을 OneQuery Vercel 연결 화면이나 CLI 입력 JSON에 넣으면 됩니다.`,closingNote:"Vercel API는 bearer token 인증을 사용합니다. OneQuery은 저장된 `apiToken`을 서버 측에서 Authorization header로 전달합니다."},en:{title:`Vercel Access Token Connection Guide`,description:"The OneQuery Vercel connection accepts `apiToken` and optional `apiBaseUrl`. Create a Vercel API Access Token from Account Settings, then paste it into OneQuery.",steps:[{title:`Open the Vercel Tokens page`,paragraphs:[`Sign in to Vercel, then open Settings > Tokens from your Personal Account.`,`You can also open https://vercel.com/account/settings/tokens directly.`],note:`Vercel documents Access Tokens as the credentials required for Vercel API authentication. They are created and managed from the Account Settings Tokens page.`,imageSrc:`/images/vercel/step1_tokens_page.png`,imageAlt:`Vercel Tokens page showing the Create Token form`},{title:`Set the token name, scope, and expiration`,paragraphs:["Use a recognizable `Token name`, such as `OneQuery Read Access`.","For `Scope`, choose the Personal Account or Team that OneQuery should inspect. Team API calls require a token scoped to that Team.","For `Expiration`, prefer a finite duration. The screenshot uses `1 Year`, but a shorter value is fine if your policy requires it."],note:`The Scope dropdown can expose account, team, and project names, so it is intentionally not shown in the shared screenshot.`,imageSrc:`/images/vercel/step2_configure_token.png`,imageAlt:`Vercel Create Token form with a descriptive token name and one-year expiration`,reverse:!0},{title:`Create the token and copy it immediately`,paragraphs:["Click `Create`, then copy the token value immediately. Vercel does not show the generated token value again.","Paste the value into `credentials.apiToken` in the OneQuery Vercel connection form."],code:`{
268
- "name": "vercel_main",
269
- "credentials": {
270
- "type": "vercel",
271
- "apiToken": "vercel_api_token"
272
- }
273
- }`,note:`Treat the token as sensitive. If it appears in a screenshot, chat, or log, revoke it from the Vercel Tokens page and create a new one.`},{title:`Prepare for Team-scoped API calls`,paragraphs:["When querying Vercel Team data, pass the Team ID as `params.teamId` in Source API requests.",`You can find the Team ID in Vercel Team settings. The token Scope must also include that Team.`,"Leave `apiBaseUrl` empty for the normal Vercel Cloud API. Only set it for a Vercel-compatible proxy or alternate API origin."],bullets:["`apiToken`: the Vercel Access Token you created","`apiBaseUrl` (optional): defaults to `https://api.vercel.com`","`params.teamId`: Team ID for Team-scoped Source API requests"]}],closingTitle:`Ready to Connect`,closingDescription:`Paste the Access Token into the OneQuery Vercel connection form or CLI JSON payload to finish the setup.`,closingNote:"The Vercel API uses bearer token authentication. OneQuery sends the saved `apiToken` server-side in the Authorization header."}}};function It(e){let t=(0,K.c)(34),n=!!e.step.imageSrc,r=n?`grid gap-5 rounded-xl border p-4 md:grid-cols-2`:`rounded-xl border p-4`,i=e.step.reverse?`md:order-2`:``,a=e.step.reverse?`md:order-1`:``,o;t[0]!==e.connectorBaseUrl||t[1]!==e.step.code?(o=e.step.code?.replaceAll(Pt,e.connectorBaseUrl??``),t[0]=e.connectorBaseUrl,t[1]=e.step.code,t[2]=o):o=t[2];let s=o,c=e.index+1,l;t[3]===c?l=t[4]:(l=(0,q.jsxs)(`p`,{className:`mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground`,children:[`Step `,c]}),t[3]=c,t[4]=l);let u;t[5]===e.step.title?u=t[6]:(u=(0,q.jsx)(`h3`,{className:`mb-3 text-lg font-semibold`,children:e.step.title}),t[5]=e.step.title,t[6]=u);let d;t[7]===e.step.paragraphs?d=t[8]:(d=e.step.paragraphs.map(Rt),t[7]=e.step.paragraphs,t[8]=d);let f;t[9]===d?f=t[10]:(f=(0,q.jsx)(`div`,{className:`space-y-2 text-sm text-muted-foreground`,children:d}),t[9]=d,t[10]=f);let p;t[11]===e.step.bullets?p=t[12]:(p=e.step.bullets&&e.step.bullets.length>0&&(0,q.jsx)(`ul`,{className:`mt-3 list-disc space-y-1 pl-5 text-sm text-muted-foreground`,children:e.step.bullets.map(Lt)}),t[11]=e.step.bullets,t[12]=p);let m;t[13]===s?m=t[14]:(m=s&&(0,q.jsx)(`pre`,{className:`mt-3 overflow-x-auto rounded-md border bg-muted p-3 text-xs leading-relaxed`,children:s}),t[13]=s,t[14]=m);let h;t[15]===e.step.note?h=t[16]:(h=e.step.note&&(0,q.jsx)(`p`,{className:`mt-3 rounded-md border bg-muted/60 p-2 text-xs text-muted-foreground`,children:e.step.note}),t[15]=e.step.note,t[16]=h);let g;t[17]!==l||t[18]!==u||t[19]!==f||t[20]!==p||t[21]!==m||t[22]!==h||t[23]!==i?(g=(0,q.jsxs)(`div`,{className:i,children:[l,u,f,p,m,h]}),t[17]=l,t[18]=u,t[19]=f,t[20]=p,t[21]=m,t[22]=h,t[23]=i,t[24]=g):g=t[24];let _;t[25]!==n||t[26]!==a||t[27]!==e.step.imageAlt||t[28]!==e.step.imageSrc?(_=n&&e.step.imageSrc&&e.step.imageAlt&&(0,q.jsx)(`div`,{className:a,children:(0,q.jsx)(`img`,{src:e.step.imageSrc,alt:e.step.imageAlt,className:`h-auto max-h-[400px] w-full rounded-lg border object-contain`})}),t[25]=n,t[26]=a,t[27]=e.step.imageAlt,t[28]=e.step.imageSrc,t[29]=_):_=t[29];let v;return t[30]!==r||t[31]!==_||t[32]!==g?(v=(0,q.jsxs)(`section`,{className:r,children:[g,_]}),t[30]=r,t[31]=_,t[32]=g,t[33]=v):v=t[33],v}function Lt(e){return(0,q.jsx)(`li`,{children:e},e)}function Rt(e){return(0,q.jsx)(`p`,{children:e},e)}function zt(e){let t=(0,K.c)(22);if(!e.content){let n;return t[0]===e.providerLabel?n=t[1]:(n=(0,q.jsx)(`div`,{className:`rounded-lg border p-4 text-sm text-muted-foreground`,children:(0,q.jsxs)(`p`,{children:[e.providerLabel,` 가이드는 아직 wb-landing 원문 페이지가 없습니다.`]})}),t[0]=e.providerLabel,t[1]=n),n}let n;t[2]===e.content.title?n=t[3]:(n=(0,q.jsx)(`h2`,{className:`text-lg font-semibold`,children:e.content.title}),t[2]=e.content.title,t[3]=n);let r;t[4]===e.content.description?r=t[5]:(r=(0,q.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:e.content.description}),t[4]=e.content.description,t[5]=r);let i;t[6]!==n||t[7]!==r?(i=(0,q.jsxs)(`section`,{className:`rounded-xl border p-4`,children:[n,r]}),t[6]=n,t[7]=r,t[8]=i):i=t[8];let a;if(t[9]!==e.connectorBaseUrl||t[10]!==e.content.steps){let n;t[12]===e.connectorBaseUrl?n=t[13]:(n=(t,n)=>(0,q.jsx)(It,{step:t,index:n,connectorBaseUrl:e.connectorBaseUrl},t.title),t[12]=e.connectorBaseUrl,t[13]=n),a=e.content.steps.map(n),t[9]=e.connectorBaseUrl,t[10]=e.content.steps,t[11]=a}else a=t[11];let o;t[14]!==e.content.closingDescription||t[15]!==e.content.closingNote||t[16]!==e.content.closingTitle?(o=e.content.closingTitle&&(0,q.jsxs)(`section`,{className:`rounded-xl border p-4`,children:[(0,q.jsx)(`h3`,{className:`text-base font-semibold`,children:e.content.closingTitle}),e.content.closingDescription&&(0,q.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:e.content.closingDescription}),e.content.closingNote&&(0,q.jsx)(`p`,{className:`mt-2 rounded-md border bg-muted/60 p-2 text-xs text-muted-foreground`,children:e.content.closingNote})]}),t[14]=e.content.closingDescription,t[15]=e.content.closingNote,t[16]=e.content.closingTitle,t[17]=o):o=t[17];let s;return t[18]!==i||t[19]!==a||t[20]!==o?(s=(0,q.jsxs)(`div`,{className:`space-y-4`,children:[i,a,o]}),t[18]=i,t[19]=a,t[20]=o,t[21]=s):s=t[21],s}function Bt(e){let t=(0,K.c)(25),[n,r]=(0,X.useState)(!1),i=Ft[e.provider],a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,q.jsx)(w,{render:(0,q.jsx)(u,{variant:`outline`,size:`sm`,children:`How to connect`})}),t[0]=a):a=t[0];let o;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(o={width:`min(880px, calc(100vw - 2rem))`,height:`min(720px, calc(100vh - 2rem))`,maxWidth:`calc(100vw - 2rem)`,maxHeight:`calc(100vh - 2rem)`,zIndex:61},t[1]=o):o=t[1];let s;t[2]===i.providerLabel?s=t[3]:(s=(0,q.jsx)(E,{className:`border-b px-5 py-4`,children:(0,q.jsxs)(S,{children:[i.providerLabel,` Connection Guide`]})}),t[2]=i.providerLabel,t[3]=s);let c;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(c={minHeight:0,flex:1,overflow:`hidden`,padding:`0 1.25rem 1.25rem`},t[4]=c):c=t[4];let l;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,q.jsxs)(At,{className:`mt-4 w-full max-w-[320px]`,children:[(0,q.jsx)(jt,{value:`en`,className:`flex-1`,children:`English`}),(0,q.jsx)(jt,{value:`ko`,className:`flex-1`,children:`한국어`})]}),t[5]=l):l=t[5];let d;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(d={minHeight:0,flex:1,overflowY:`auto`,overscrollBehavior:`contain`,paddingRight:`0.5rem`},t[6]=d):d=t[6];let f;t[7]!==i.en||t[8]!==i.providerLabel||t[9]!==e.connectorBaseUrl?(f=(0,q.jsx)(Mt,{value:`en`,className:`mt-4 min-h-0 flex-1 overflow-y-auto overscroll-contain pr-2`,style:d,children:(0,q.jsx)(zt,{content:i.en,providerLabel:i.providerLabel,connectorBaseUrl:e.connectorBaseUrl})}),t[7]=i.en,t[8]=i.providerLabel,t[9]=e.connectorBaseUrl,t[10]=f):f=t[10];let p;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(p={minHeight:0,flex:1,overflowY:`auto`,overscrollBehavior:`contain`,paddingRight:`0.5rem`},t[11]=p):p=t[11];let m;t[12]!==i.ko||t[13]!==i.providerLabel||t[14]!==e.connectorBaseUrl?(m=(0,q.jsx)(Mt,{value:`ko`,className:`mt-4 min-h-0 flex-1 overflow-y-auto overscroll-contain pr-2`,style:p,children:(0,q.jsx)(zt,{content:i.ko,providerLabel:i.providerLabel,connectorBaseUrl:e.connectorBaseUrl})}),t[12]=i.ko,t[13]=i.providerLabel,t[14]=e.connectorBaseUrl,t[15]=m):m=t[15];let h;t[16]!==f||t[17]!==m?(h=(0,q.jsxs)(Ot,{defaultValue:`en`,className:`min-h-0 flex-1 overflow-hidden px-5 pb-5`,style:c,children:[l,f,m]}),t[16]=f,t[17]=m,t[18]=h):h=t[18];let g;t[19]!==s||t[20]!==h?(g=(0,q.jsxs)(C,{overlayClassName:`bg-black/35 supports-backdrop-filter:backdrop-blur-lg`,className:`flex flex-col overflow-hidden gap-0 p-0`,style:o,children:[s,h]}),t[19]=s,t[20]=h,t[21]=g):g=t[21];let _;return t[22]!==n||t[23]!==g?(_=(0,q.jsxs)(T,{open:n,onOpenChange:r,children:[a,g]}),t[22]=n,t[23]=g,t[24]=_):_=t[24],_}function Vt(e){let t=(0,K.c)(3),n=e.provider.id,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=i(),t[0]=r):r=t[0];let a;return t[1]===n?a=t[2]:(a=(0,q.jsx)(Bt,{provider:n,connectorBaseUrl:`${r}${me}`}),t[1]=n,t[2]=a),a}var Ht=`postgres`;function Ut(e){return e.filter(e=>e.dashboardConnectable).map(e=>({...e,icon:mt(e.id),value:e.id}))}function Wt(e,t){return t.some(t=>t.dashboardConnectable&&t.id===e)}function Gt(e,t){return t.some(t=>t.id===e&&t.testable)}function Kt(e,t){return t.find(t=>t.id===e)?.label??e}l(`data-[invalid=true]:text-destructive gap-2 group/field flex w-full`,{variants:{orientation:{vertical:`flex-col [&>*]:w-full [&>.sr-only]:w-auto`,horizontal:`flex-row items-center [&>[data-slot=field-label]]:flex-auto has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px`,responsive:`flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto @md/field-group:[&>[data-slot=field-label]]:flex-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px`}},defaultVariants:{orientation:`vertical`}});function qt(e){let t=(0,K.c)(15),n,r,i,a;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4]):({className:r,children:n,errors:i,...a}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a);let o;bb0:{if(n){o=n;break bb0}if(!i?.length){o=null;break bb0}let e;t[5]===i?e=t[6]:(e=[...new Map(i.map(Yt)).values()],t[5]=i,t[6]=e);let r=e;if(r?.length==1){o=r[0]?.message;break bb0}let a;t[7]===r?a=t[8]:(a=(0,q.jsx)(`ul`,{className:`ml-4 flex list-disc flex-col gap-1`,children:r.map(Jt)}),t[7]=r,t[8]=a),o=a}let s=o;if(!s)return null;let c;t[9]===r?c=t[10]:(c=m(`text-destructive text-sm font-normal`,r),t[9]=r,t[10]=c);let l;return t[11]!==s||t[12]!==a||t[13]!==c?(l=(0,q.jsx)(`div`,{role:`alert`,"data-slot":`field-error`,className:c,...a,children:s}),t[11]=s,t[12]=a,t[13]=c,t[14]=l):l=t[14],l}function Jt(e,t){return e?.message&&(0,q.jsx)(`li`,{children:e.message},t)}function Yt(e){return[e?.message,e]}function Z(e){let t=(0,K.c)(3),{message:n,className:r}=e;if(!n)return null;let i;return t[0]!==r||t[1]!==n?(i=(0,q.jsx)(qt,{className:r,children:n}),t[0]=r,t[1]=n,t[2]=i):i=t[2],i}function Xt(e){let t=(0,K.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=m(`size-4 animate-spin`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,q.jsx)(ie,{role:`status`,"aria-label":`Loading`,className:i,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function Zt(e){let t=(0,K.c)(21),n,r,i,a,o,s,c;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4],o=t[5],s=t[6],c=t[7]):({className:n,disabled:r,fullWidth:s,idleLabel:i,isPending:c,pendingLabel:a,...o}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a,t[5]=o,t[6]=s,t[7]=c);let l=s===void 0?!0:s,d=c===void 0?!1:c,f=l&&`w-full`,p;t[8]!==n||t[9]!==f?(p=m(f,n),t[8]=n,t[9]=f,t[10]=p):p=t[10];let h=r||d,g;t[11]!==i||t[12]!==d||t[13]!==a?(g=d?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(Xt,{className:`size-4`}),(0,q.jsx)(`span`,{children:a??i})]}):i,t[11]=i,t[12]=d,t[13]=a,t[14]=g):g=t[14];let _;return t[15]!==d||t[16]!==o||t[17]!==p||t[18]!==h||t[19]!==g?(_=(0,q.jsx)(u,{type:`submit`,"aria-busy":d,className:p,disabled:h,...o,children:g}),t[15]=d,t[16]=o,t[17]=p,t[18]=h,t[19]=g,t[20]=_):_=t[20],_}var Qt=(e,t,n)=>!ae(e,`data_source_name_duplicate`)||!(e instanceof Error)?!1:(t(n,{message:e.message}),!0),$t=[{label:`US (Standard)`,value:`us`},{label:`EU (Europe)`,value:`eu`}],en=R({apiKey:H().min(1,`API Key is required`),name:H().min(1,`Name is required`),region:V([`us`,`eu`]),secretKey:H().min(1,`Secret Key is required`)});function tn(e){return e===`us`||e===`eu`}function nn({onSuccess:e,organizationId:t}){let n=he({defaultValues:{name:``,apiKey:``,secretKey:``,region:`us`},resolver:ge(en)}),r=ee({createOptimisticItem:e=>({id:`temp-${crypto.randomUUID()}`,provider:`amplitude`,name:e.name,status:`active`,errorMessage:null,lastUsedAt:null,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}),mutationFn:async e=>{let n={type:`amplitude`,apiKey:e.apiKey,secretKey:e.secretKey,region:e.region};return oe({organizationId:t,provider:`amplitude`,name:e.name,credentials:n})},onError:e=>{Qt(e,n.setError,`name`)},onSuccess:t=>{e(t.dataSource.id)},queryKey:ce(t).queryKey,successMessage:`Data source created successfully`});return(0,q.jsxs)(`form`,{onSubmit:e=>{n.handleSubmit(e=>{r.mutate(e)})(e)},className:`space-y-4`,children:[(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(G,{htmlFor:`amplitude-name`,children:`Data Source Name`}),(0,q.jsx)(W,{id:`amplitude-name`,placeholder:`My Amplitude`,...n.register(`name`)}),(0,q.jsx)(Z,{message:n.formState.errors.name?.message})]}),(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(G,{htmlFor:`amplitude-apiKey`,children:`API Key`}),(0,q.jsx)(W,{id:`amplitude-apiKey`,placeholder:`Enter your Amplitude API Key`,...n.register(`apiKey`)}),(0,q.jsx)(Z,{message:n.formState.errors.apiKey?.message})]}),(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(G,{htmlFor:`amplitude-secretKey`,children:`Secret Key`}),(0,q.jsx)(W,{id:`amplitude-secretKey`,type:`password`,placeholder:`Enter your Amplitude Secret Key`,...n.register(`secretKey`)}),(0,q.jsx)(Z,{message:n.formState.errors.secretKey?.message})]}),(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(G,{htmlFor:`amplitude-region`,children:`Region`}),(0,q.jsxs)(y,{items:[...$t],value:n.watch(`region`),onValueChange:e=>{tn(e)&&n.setValue(`region`,e)},children:[(0,q.jsx)(g,{id:`amplitude-region`,children:(0,q.jsx)(h,{})}),(0,q.jsx)(_,{children:$t.map(e=>(0,q.jsx)(v,{value:e.value,children:e.label},e.value))})]})]}),(0,q.jsx)(Zt,{idleLabel:`Create Data Source`,isPending:r.isPending,pendingLabel:`Creating...`})]})}var rn=R({accountId:H().min(1,`Account ID is required`),apiBaseUrl:B([L(``),z(`API base URL must be a valid URL`)]),apiToken:H().min(1,`API token is required`),name:H().min(1,`Name is required`),scriptName:H().optional()});function an(e){let t=(0,K.c)(72),{onSuccess:n,organizationId:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i={defaultValues:{accountId:``,apiBaseUrl:``,apiToken:``,name:``,scriptName:``},resolver:ge(rn)},t[0]=i):i=t[0];let a=he(i),o;t[1]===r?o=t[2]:(o=async e=>{let t={type:`cloudflare_workers_observability`,accountId:e.accountId,apiToken:e.apiToken,scriptName:e.scriptName?.trim()||void 0,apiBaseUrl:e.apiBaseUrl.trim()||void 0};return oe({organizationId:r,provider:`cloudflare_workers_observability`,name:e.name,credentials:t})},t[1]=r,t[2]=o);let s;t[3]===a.setError?s=t[4]:(s=e=>{Qt(e,a.setError,`name`)},t[3]=a.setError,t[4]=s);let c;t[5]===n?c=t[6]:(c=e=>{n(e.dataSource.id)},t[5]=n,t[6]=c);let l;t[7]===r?l=t[8]:(l=ce(r),t[7]=r,t[8]=l);let u;t[9]!==o||t[10]!==s||t[11]!==c||t[12]!==l.queryKey?(u={createOptimisticItem:on,mutationFn:o,onError:s,onSuccess:c,queryKey:l.queryKey,successMessage:`Data source created successfully`},t[9]=o,t[10]=s,t[11]=c,t[12]=l.queryKey,t[13]=u):u=t[13];let d=ee(u),f;t[14]!==a||t[15]!==d?(f=e=>{a.handleSubmit(e=>{d.mutate(e)})(e)},t[14]=a,t[15]=d,t[16]=f):f=t[16];let p;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,q.jsx)(G,{htmlFor:`cloudflare-workers-observability-name`,children:`Data Source Name`}),t[17]=p):p=t[17];let m;t[18]===a?m=t[19]:(m=a.register(`name`),t[18]=a,t[19]=m);let h;t[20]===m?h=t[21]:(h=(0,q.jsx)(W,{id:`cloudflare-workers-observability-name`,placeholder:`Cloudflare Workers`,...m}),t[20]=m,t[21]=h);let g=a.formState.errors.name?.message,_;t[22]===g?_=t[23]:(_=(0,q.jsx)(Z,{message:g}),t[22]=g,t[23]=_);let v;t[24]!==h||t[25]!==_?(v=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[p,h,_]}),t[24]=h,t[25]=_,t[26]=v):v=t[26];let y;t[27]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,q.jsx)(G,{htmlFor:`cloudflare-workers-observability-account-id`,children:`Account ID`}),t[27]=y):y=t[27];let b;t[28]===a?b=t[29]:(b=a.register(`accountId`),t[28]=a,t[29]=b);let x;t[30]===b?x=t[31]:(x=(0,q.jsx)(W,{id:`cloudflare-workers-observability-account-id`,placeholder:`023e105f4ecef8ad9ca31a8372d0c353`,...b}),t[30]=b,t[31]=x);let S=a.formState.errors.accountId?.message,C;t[32]===S?C=t[33]:(C=(0,q.jsx)(Z,{message:S}),t[32]=S,t[33]=C);let w;t[34]!==x||t[35]!==C?(w=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[y,x,C]}),t[34]=x,t[35]=C,t[36]=w):w=t[36];let T;t[37]===Symbol.for(`react.memo_cache_sentinel`)?(T=(0,q.jsx)(G,{htmlFor:`cloudflare-workers-observability-script-name`,children:`Worker Script Name (optional)`}),t[37]=T):T=t[37];let E;t[38]===a?E=t[39]:(E=a.register(`scriptName`),t[38]=a,t[39]=E);let D;t[40]===E?D=t[41]:(D=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[T,(0,q.jsx)(W,{id:`cloudflare-workers-observability-script-name`,placeholder:`api-production`,...E})]}),t[40]=E,t[41]=D);let O;t[42]===Symbol.for(`react.memo_cache_sentinel`)?(O=(0,q.jsx)(G,{htmlFor:`cloudflare-workers-observability-api-token`,children:`API Token`}),t[42]=O):O=t[42];let k;t[43]===a?k=t[44]:(k=a.register(`apiToken`),t[43]=a,t[44]=k);let A;t[45]===k?A=t[46]:(A=(0,q.jsx)(W,{id:`cloudflare-workers-observability-api-token`,type:`password`,placeholder:`Cloudflare API token`,...k}),t[45]=k,t[46]=A);let j=a.formState.errors.apiToken?.message,M;t[47]===j?M=t[48]:(M=(0,q.jsx)(Z,{message:j}),t[47]=j,t[48]=M);let N;t[49]!==A||t[50]!==M?(N=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[O,A,M]}),t[49]=A,t[50]=M,t[51]=N):N=t[51];let P;t[52]===Symbol.for(`react.memo_cache_sentinel`)?(P=(0,q.jsx)(G,{htmlFor:`cloudflare-workers-observability-api-base-url`,children:`API Base URL (optional)`}),t[52]=P):P=t[52];let F;t[53]===a?F=t[54]:(F=a.register(`apiBaseUrl`),t[53]=a,t[54]=F);let I;t[55]===F?I=t[56]:(I=(0,q.jsx)(W,{id:`cloudflare-workers-observability-api-base-url`,placeholder:`https://api.cloudflare.com/client/v4`,...F}),t[55]=F,t[56]=I);let L=a.formState.errors.apiBaseUrl?.message,R;t[57]===L?R=t[58]:(R=(0,q.jsx)(Z,{message:L}),t[57]=L,t[58]=R);let z;t[59]!==I||t[60]!==R?(z=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[P,I,R]}),t[59]=I,t[60]=R,t[61]=z):z=t[61];let B;t[62]===d.isPending?B=t[63]:(B=(0,q.jsx)(Zt,{idleLabel:`Create Data Source`,isPending:d.isPending,pendingLabel:`Creating...`}),t[62]=d.isPending,t[63]=B);let V;return t[64]!==v||t[65]!==w||t[66]!==D||t[67]!==N||t[68]!==z||t[69]!==B||t[70]!==f?(V=(0,q.jsxs)(`form`,{onSubmit:f,className:`space-y-4`,children:[v,w,D,N,z,B]}),t[64]=v,t[65]=w,t[66]=D,t[67]=N,t[68]=z,t[69]=B,t[70]=f,t[71]=V):V=t[71],V}function on(e){return{id:`temp-${crypto.randomUUID()}`,provider:`cloudflare_workers_observability`,name:e.name,status:`active`,errorMessage:null,lastUsedAt:null,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}}var sn=R({connectorId:H().min(1,`Connector ID is required`),database:H().min(1,`Athena database is required`),name:H().min(1,`Name is required`),workgroup:H().optional()});function cn(e){let t=(0,K.c)(68),{organizationId:n,onSuccess:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i={defaultValues:{name:``,connectorId:``,database:``,workgroup:``},resolver:ge(sn)},t[0]=i):i=t[0];let a=he(i),o;t[1]===n?o=t[2]:(o=async e=>{let t={type:`aws_athena_connector`,connectorId:e.connectorId.trim(),database:e.database.trim()},r=e.workgroup?.trim();return r&&(t.workgroup=r),oe({organizationId:n,provider:`aws_athena_connector`,name:e.name.trim(),credentials:t})},t[1]=n,t[2]=o);let s;t[3]===a.setError?s=t[4]:(s=e=>{Qt(e,a.setError,`name`)},t[3]=a.setError,t[4]=s);let c;t[5]===r?c=t[6]:(c=e=>{r(e.dataSource.id)},t[5]=r,t[6]=c);let l;t[7]===n?l=t[8]:(l=ce(n),t[7]=n,t[8]=l);let u;t[9]!==o||t[10]!==s||t[11]!==c||t[12]!==l.queryKey?(u={createOptimisticItem:ln,mutationFn:o,onError:s,onSuccess:c,queryKey:l.queryKey,successMessage:`Data source created successfully`},t[9]=o,t[10]=s,t[11]=c,t[12]=l.queryKey,t[13]=u):u=t[13];let d=ee(u),f;t[14]===d?f=t[15]:(f=e=>{d.mutate(e)},t[14]=d,t[15]=f);let p=f,m;t[16]!==a||t[17]!==p?(m=e=>{a.handleSubmit(p)(e)},t[16]=a,t[17]=p,t[18]=m):m=t[18];let h;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,q.jsx)(G,{htmlFor:`connector-name`,children:`Data Source Name`}),t[19]=h):h=t[19];let g;t[20]===a?g=t[21]:(g=a.register(`name`),t[20]=a,t[21]=g);let _;t[22]===g?_=t[23]:(_=(0,q.jsx)(W,{id:`connector-name`,placeholder:`Customer Athena Connector`,...g}),t[22]=g,t[23]=_);let v=a.formState.errors.name?.message,y;t[24]===v?y=t[25]:(y=(0,q.jsx)(Z,{message:v}),t[24]=v,t[25]=y);let b;t[26]!==_||t[27]!==y?(b=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[h,_,y]}),t[26]=_,t[27]=y,t[28]=b):b=t[28];let x;t[29]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,q.jsx)(G,{htmlFor:`connector-id`,children:`Connector ID`}),t[29]=x):x=t[29];let S;t[30]===a?S=t[31]:(S=a.register(`connectorId`),t[30]=a,t[31]=S);let C;t[32]===S?C=t[33]:(C=(0,q.jsx)(W,{id:`connector-id`,placeholder:`connector_...`,...S}),t[32]=S,t[33]=C);let w=a.formState.errors.connectorId?.message,T;t[34]===w?T=t[35]:(T=(0,q.jsx)(Z,{message:w}),t[34]=w,t[35]=T);let E;t[36]!==C||t[37]!==T?(E=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[x,C,T]}),t[36]=C,t[37]=T,t[38]=E):E=t[38];let D;t[39]===Symbol.for(`react.memo_cache_sentinel`)?(D=(0,q.jsx)(G,{htmlFor:`connector-database`,children:`Athena Database`}),t[39]=D):D=t[39];let O;t[40]===a?O=t[41]:(O=a.register(`database`),t[40]=a,t[41]=O);let k;t[42]===O?k=t[43]:(k=(0,q.jsx)(W,{id:`connector-database`,placeholder:`analytics`,...O}),t[42]=O,t[43]=k);let A;t[44]===Symbol.for(`react.memo_cache_sentinel`)?(A=(0,q.jsx)(`code`,{children:`analytics`}),t[44]=A):A=t[44];let j;t[45]===Symbol.for(`react.memo_cache_sentinel`)?(j=(0,q.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Enter the Athena or AWS Glue database name, such as`,` `,A,` or `,(0,q.jsx)(`code`,{children:`onequery_connector_test`}),`.`]}),t[45]=j):j=t[45];let M=a.formState.errors.database?.message,N;t[46]===M?N=t[47]:(N=(0,q.jsx)(Z,{message:M}),t[46]=M,t[47]=N);let P;t[48]!==k||t[49]!==N?(P=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[D,k,j,N]}),t[48]=k,t[49]=N,t[50]=P):P=t[50];let F;t[51]===Symbol.for(`react.memo_cache_sentinel`)?(F=(0,q.jsx)(G,{htmlFor:`connector-workgroup`,children:`Athena Workgroup (optional)`}),t[51]=F):F=t[51];let I;t[52]===a?I=t[53]:(I=a.register(`workgroup`),t[52]=a,t[53]=I);let L;t[54]===I?L=t[55]:(L=(0,q.jsx)(W,{id:`connector-workgroup`,placeholder:`primary`,...I}),t[54]=I,t[55]=L);let R;t[56]===Symbol.for(`react.memo_cache_sentinel`)?(R=(0,q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Leave blank to use the default workgroup, or enter a specific workgroup name if your Athena setup requires one.`}),t[56]=R):R=t[56];let z;t[57]===L?z=t[58]:(z=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[F,L,R]}),t[57]=L,t[58]=z);let B;t[59]===d.isPending?B=t[60]:(B=(0,q.jsx)(Zt,{idleLabel:`Create Data Source`,isPending:d.isPending,pendingLabel:`Creating...`}),t[59]=d.isPending,t[60]=B);let V;return t[61]!==b||t[62]!==E||t[63]!==P||t[64]!==z||t[65]!==B||t[66]!==m?(V=(0,q.jsxs)(`form`,{onSubmit:m,className:`space-y-4`,children:[b,E,P,z,B]}),t[61]=b,t[62]=E,t[63]=P,t[64]=z,t[65]=B,t[66]=m,t[67]=V):V=t[67],V}function ln(e){return{id:`temp-${crypto.randomUUID()}`,provider:`aws_athena_connector`,name:e.name,status:`active`,errorMessage:null,lastUsedAt:null,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}}var Q=e=>H().trim().min(1,e),un=e=>H().trim().transform(e=>e.length===0?void 0:e).pipe(Q(e).optional()).optional(),$=e=>H().refine(e=>e.trim().length>0,e),dn=e=>H().transform(e=>e.trim().length===0?void 0:e).pipe($(e).optional()).optional(),fn=(e,t)=>H().trim().min(1,e).pipe(z(t)),pn=e=>H().trim().transform(e=>e.length===0?void 0:e).pipe(z(e).optional()).optional(),mn=Q(`Connection string is required`).refine(e=>e.startsWith(`mongodb://`)||e.startsWith(`mongodb+srv://`),`Connection string must start with mongodb:// or mongodb+srv://`),hn=V([`disable`,`prefer`,`require`]),gn=R({database:Q(`Database name is required`),host:Q(`Host is required`),password:$(`Password is required`),port:U().int().min(1).max(65535).default(5432),sslMode:hn.default(`prefer`),type:L(`postgres`),username:Q(`Username is required`)}),_n=R({database:Q(`Database name is required`),host:Q(`Host is required`),password:$(`Password is required`),port:U().int().min(1).max(65535).default(3306),sslMode:hn.default(`prefer`),type:L(`mysql`),username:Q(`Username is required`)}),vn=R({account:Q(`Account identifier is required`),database:Q(`Database name is required`),password:$(`Password is required`),role:un(`Role is required`),schema:un(`Schema is required`),type:L(`snowflake`),username:Q(`Username is required`),warehouse:Q(`Warehouse is required`)}),yn=R({connectionString:mn,database:un(`Database name is required`),databases:te(Q(`Database name is required`)).optional(),type:L(`mongodb`)}),bn=R({clientEmail:H().trim().min(1,`Client email is required`).pipe(ne(`Client email must be a valid email address`)),privateKey:$(`Private key is required`),privateKeyId:dn(`Private key ID is required`),projectId:Q(`Project ID is required`)}),xn=B([R({accessToken:$(`Access token is required`),authType:L(`oauth`).optional(),expiresAt:U().int().min(0,`Expiration time must be positive`),propertyId:Q(`Property ID is required`),refreshToken:$(`Refresh token is required`),type:L(`ga`)}),R({authType:L(`service_account`),propertyId:Q(`Property ID is required`),serviceAccount:bn,type:L(`ga`)})]),Sn=B([R({accessToken:$(`Access token is required`),authType:L(`oauth`).optional(),expiresAt:U().int().min(0,`Expiration time must be positive`),projectId:Q(`Project ID is required`),refreshToken:$(`Refresh token is required`),type:L(`bigquery`)}),R({authType:L(`service_account`),projectId:Q(`Project ID is required`),serviceAccount:bn,type:L(`bigquery`)})]),Cn=R({accessToken:$(`Access token is required`),apiBaseUrl:pn(`API base URL must be a valid URL`),authType:L(`oauth`).optional(),expiresAt:U().int().min(0,`Expiration time must be positive`),refreshToken:$(`Refresh token is required`),type:L(`youtube_analytics`)}),wn=R({apiBaseUrl:pn(`API base URL must be a valid URL`),apiKey:$(`API key is required`),type:L(`laminar`)}),Tn=`pg.us-east-1-aws.motherduck.com`,En=`md:`;function Dn(e){return e.startsWith(`md:`)?e:`md:${e}`}var On=R({database:Q(`MotherDuck database is required`).default(En).transform(Dn),host:Q(`MotherDuck host is required`).default(Tn),port:U().int().min(1).max(65535).default(5432),token:$(`MotherDuck token is required`),type:L(`motherduck`),username:Q(`MotherDuck username is required`).default(`postgres`)}),kn=R({connectorId:Q(`Connector ID is required`),database:Q(`Athena database is required`),maxRows:U().int().positive().optional(),timeoutMs:U().int().positive().optional(),type:L(`aws_athena_connector`),workgroup:un(`Workgroup is required`)}),An=R({apiKey:$(`API Key is required`),region:V([`us`,`eu`]).default(`us`),secretKey:$(`Secret Key is required`),type:L(`amplitude`)}),jn=R({projectId:Q(`Project ID is required`),region:V([`us`,`eu`,`in`]).default(`us`),secret:$(`Service Account Secret is required`),type:L(`mixpanel`),username:Q(`Service Account Username is required`),workspaceId:un(`Workspace ID is required`)}),Mn=R({hostUrl:fn(`Host URL is required`,`Host URL must be a valid URL`).transform(e=>e.replace(/\/+$/,``)),personalApiKey:$(`Personal API Key is required`),projectId:Q(`Project ID is required`),type:L(`posthog`)}),Nn=R({apiBaseUrl:pn(`API base URL must be a valid URL`),authToken:$(`Auth token is required`),organizationSlug:Q(`Organization slug is required`),projectSlug:un(`Project slug is required`),type:L(`sentry`)}),Pn=R({accessToken:$(`Access token is required`),installationId:un(`Installation ID is required`),repositories:te(Q(`Repository is required`)).optional(),type:L(`github`)}),Fn=R({apiBaseUrl:pn(`API base URL must be a valid URL`),baseId:un(`Base ID is required`),personalAccessToken:$(`Personal access token is required`),type:L(`airtable`)}),In=R({apiBaseUrl:pn(`API base URL must be a valid URL`),authScheme:V([`bot`,`bearer`]).default(`bot`),guildId:un(`Guild ID is required`),token:$(`Token is required`),type:L(`discord`)}),Ln=e=>e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0),Rn=R({botToken:$(`Bot token is required`),botUserId:H(),teamId:Q(`Team ID is required`),teamName:H(),type:L(`slack`)}),zn=B([gn,_n,yn,xn,Sn,Cn,vn,wn,On,kn,An,jn,Mn,Nn,Pn,Fn,In,B([Rn.extend({botScopes:te(H())}),Rn.extend({botScopes:te(H()).optional(),scope:H()})]).transform(e=>`scope`in e?{botScopes:e.botScopes??Ln(e.scope),botToken:e.botToken,botUserId:e.botUserId,teamId:e.teamId,teamName:e.teamName,type:e.type}:e),R({apiBaseUrl:pn(`API base URL must be a valid URL`),apiKey:$(`API key is required`),apiVersion:Q(`API version is required`).default(`2026-05-01`),type:L(`cal`)}),R({apiBaseUrl:pn(`API base URL must be a valid URL`),apiKey:$(`API key is required`),type:L(`granola`)}),B([R({accessToken:$(`Access token is required`),apiBaseUrl:pn(`API base URL must be a valid URL`),authType:L(`oauth`).optional(),expiresAt:U().int().min(0,`Expiration time must be positive`),refreshToken:$(`Refresh token is required`),siteUrl:un(`Site URL is required`),type:L(`google_search_console`)}),R({accessToken:$(`Access token is required`),apiBaseUrl:pn(`API base URL must be a valid URL`),siteUrl:un(`Site URL is required`),type:L(`google_search_console`)})]),R({apiToken:$(`API token is required`),email:H().trim().min(1,`Email is required`).pipe(ne(`Email must be a valid email address`)),siteUrl:fn(`Site URL is required`,`Site URL must be a valid URL`).transform(e=>e.replace(/\/+$/,``)),type:L(`confluence`)}),R({accessToken:$(`Access token is required`),apiBaseUrl:pn(`API base URL must be a valid URL`),clientId:Q(`Client ID is required`),profileId:un(`Profile ID is required`),region:V([`na`,`eu`,`fe`]).default(`na`),type:L(`amazon_ads`)}),R({accessToken:$(`Access token is required`),apiBaseUrl:pn(`API base URL must be a valid URL`),apiVersion:Q(`API version is required`).default(`202605`),type:L(`linkedin_ads`)}),R({accessToken:$(`Access token is required`),advertiserId:un(`Advertiser ID is required`),apiBaseUrl:pn(`API base URL must be a valid URL`),type:L(`tiktok_marketing`)}),R({apiBaseUrl:pn(`API base URL must be a valid URL`),apiKey:$(`API key is required`),type:L(`sendgrid`)}),R({apiToken:$(`API token is required`),email:H().trim().min(1,`Email is required`).pipe(ne(`Email must be a valid email address`)),siteUrl:fn(`Site URL is required`,`Site URL must be a valid URL`).transform(e=>e.replace(/\/+$/,``)),type:L(`jira`)}),R({apiBaseUrl:pn(`API base URL must be a valid URL`),apiToken:$(`API token is required`),type:L(`vercel`)}),R({apiBaseUrl:pn(`API base URL must be a valid URL`),apiKey:$(`API key is required`),type:L(`e2b`)}),R({apiBaseUrl:pn(`API base URL must be a valid URL`),apiToken:$(`API token is required`),type:L(`microsoft_clarity`)}),B([R({accessToken:$(`Access token is required`),apiBaseUrl:fn(`API base URL is required`,`API base URL must be a valid URL`).transform(e=>e.replace(/\/+$/,``)),authMethod:L(`connect`).optional(),type:L(`onepassword`)}),R({authMethod:L(`service_account`).optional(),integrationName:un(`Integration name is required`),integrationVersion:un(`Integration version is required`),serviceAccountToken:$(`Service account token is required`),type:L(`onepassword`)})]),R({accountId:Q(`Account ID is required`),apiBaseUrl:pn(`API base URL must be a valid URL`),apiToken:$(`API token is required`),databaseId:Q(`Database ID is required`),type:L(`cloudflare_d1`)}),R({accountId:Q(`Account ID is required`),apiBaseUrl:pn(`API base URL must be a valid URL`),apiToken:$(`API token is required`),bucketName:Q(`Bucket name is required`),type:L(`cloudflare_r2_sql`)}),R({accountId:Q(`Account ID is required`),apiBaseUrl:pn(`API base URL must be a valid URL`),apiToken:$(`API token is required`),scriptName:un(`Worker script name is required`),type:L(`cloudflare_workers_observability`)}),R({accountId:Q(`Account ID is required`),apiBaseUrl:pn(`API base URL must be a valid URL`),apiToken:$(`API token is required`),siteTag:un(`Web Analytics site tag is required`),type:L(`cloudflare_web_analytics`)}),B([R({apiKey:$(`API key is required`),type:L(`linear`)}),R({accessToken:$(`Access token is required`),appUserId:un(`App user ID is required`),expiresAt:un(`Expiration timestamp is required`),linearOrganizationId:Q(`Linear organization ID is required`),linearOrganizationName:un(`Linear organization name is required`),refreshToken:dn(`Refresh token is required`),scope:un(`Scope is required`),tokenType:un(`Token type is required`),type:L(`linear`)})])]),Bn={BIGQUERY:`bigquery`,CLOUDFLARE_D1:`cloudflare_d1`,CLOUDFLARE_R2_SQL:`cloudflare_r2_sql`,CONNECTOR:`aws_athena_connector`,LAMINAR:`laminar`,MOTHERDUCK:`motherduck`,MYSQL:`mysql`,POSTGRES:`postgres`,SNOWFLAKE:`snowflake`};Bn.POSTGRES,Bn.MYSQL,Bn.SNOWFLAKE,Bn.BIGQUERY,Bn.CLOUDFLARE_D1,Bn.CLOUDFLARE_R2_SQL,Bn.LAMINAR,Bn.MOTHERDUCK,Bn.CONNECTOR;var Vn=R({credentialsText:H().optional(),name:H().min(1,`Name is required`),projectId:H().optional(),propertyId:H().optional()});function Hn(e){return e&&e.trim()||null}function Un(e,t){let n=e[t];return typeof n==`string`?Hn(n):null}function Wn(e){let t=Un(e,`project_id`)??Un(e,`projectId`);if(!t)return{error:`Project ID is required in service account JSON`};let n=Un(e,`client_email`)??Un(e,`clientEmail`);if(!n)return{error:`Client email is required in service account JSON`};let r=Un(e,`private_key`)??Un(e,`privateKey`);if(!r)return{error:`Private key is required in service account JSON`};let i=Un(e,`private_key_id`)??Un(e,`privateKeyId`),a={clientEmail:n,privateKey:r,projectId:t};return{projectId:t,serviceAccount:i?{...a,privateKeyId:i}:a}}function Gn(e,t){let n=e.trim();if(!n)return{error:`Credentials are required`};let r;try{r=JSON.parse(n)}catch{return{error:`Credentials must be valid JSON`}}if(!re(r))return{error:`Credentials must be a JSON object`};let i=typeof r.type==`string`?r.type:null;if(i===`service_account`){let e=Wn(r);if(`error`in e)return e;let n={authType:`service_account`,serviceAccount:e.serviceAccount,type:t};return t===`bigquery`?{credentials:{...n,projectId:e.projectId}}:{credentials:n}}return i&&i!==t?{error:`Credentials type must be '${t}'`}:{credentials:i?r:{...r,type:t}}}function Kn(e,t,n){let r={...e};if(t===`ga`){let e=Hn(n.propertyId)??(`propertyId`in r&&typeof r.propertyId==`string`?Hn(r.propertyId):null);if(!e)return{error:`Property ID is required`};r.propertyId=e}if(t===`bigquery`){let e=`serviceAccount`in r&&re(r.serviceAccount)?Un(r.serviceAccount,`projectId`):null,t=Hn(n.projectId)??(`projectId`in r&&typeof r.projectId==`string`?Hn(r.projectId):null)??e;if(!t)return{error:`Project ID is required`};r.projectId=t}let i=zn.safeParse(r);return i.success?{credentials:i.data}:{error:i.error.issues.map(e=>e.message).join(`, `)}}function qn(e){let t=(0,K.c)(89),{provider:n,onSuccess:r,organizationId:i}=e,[a,o]=(0,X.useState)(null),[s,c]=(0,X.useState)(null),l=n===`ga`?`Google Analytics`:`BigQuery`,u;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(u={defaultValues:{name:``,credentialsText:``,propertyId:``,projectId:``},resolver:ge(Vn)},t[0]=u):u=t[0];let d=he(u),f;t[1]===n?f=t[2]:(f=e=>({id:`temp-${crypto.randomUUID()}`,provider:n,name:e.name,status:`active`,errorMessage:null,lastUsedAt:null,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}),t[1]=n,t[2]=f);let p;t[3]!==i||t[4]!==n?(p=async e=>oe({organizationId:i,provider:n,name:e.name,credentials:e.credentials}),t[3]=i,t[4]=n,t[5]=p):p=t[5];let m;t[6]===d.setError?m=t[7]:(m=e=>{Qt(e,d.setError,`name`)},t[6]=d.setError,t[7]=m);let h;t[8]===r?h=t[9]:(h=e=>{r(e.dataSource.id)},t[8]=r,t[9]=h);let g;t[10]===i?g=t[11]:(g=ce(i),t[10]=i,t[11]=g);let _;t[12]!==f||t[13]!==p||t[14]!==m||t[15]!==h||t[16]!==g.queryKey?(_={createOptimisticItem:f,mutationFn:p,onError:m,onSuccess:h,queryKey:g.queryKey,successMessage:`Data source created successfully`},t[12]=f,t[13]=p,t[14]=m,t[15]=h,t[16]=g.queryKey,t[17]=_):_=t[17];let v=ee(_),y;t[18]===d?y=t[19]:(y=e=>{let t=e.target.files?.[0];t&&t.text().then(e=>{d.setValue(`credentialsText`,e,{shouldValidate:!0}),c(t.name),o(null)}).catch(()=>{o(`Failed to read credentials file`)})},t[18]=d,t[19]=y);let b=y,x;t[20]===d?x=t[21]:(x=d.register(`credentialsText`),t[20]=d,t[21]=x);let S=x,C;t[22]!==d||t[23]!==v||t[24]!==n?(C=e=>{d.handleSubmit(e=>{o(null);let t=e.credentialsText??``;if(!t.trim()){o(`Provide a credentials file or JSON.`);return}let r=Gn(t,n);if(`error`in r){o(r.error);return}let i=Kn(r.credentials,n,e);if(`error`in i){o(i.error);return}v.mutate({...e,credentials:i.credentials})})(e)},t[22]=d,t[23]=v,t[24]=n,t[25]=C):C=t[25];let w=`${n}-credentials-name`,T;t[26]===w?T=t[27]:(T=(0,q.jsx)(G,{htmlFor:w,children:`Data Source Name`}),t[26]=w,t[27]=T);let E=`${n}-credentials-name`,D=`My ${l}`,O;t[28]===d?O=t[29]:(O=d.register(`name`),t[28]=d,t[29]=O);let k;t[30]!==E||t[31]!==D||t[32]!==O?(k=(0,q.jsx)(W,{id:E,placeholder:D,...O}),t[30]=E,t[31]=D,t[32]=O,t[33]=k):k=t[33];let A=d.formState.errors.name?.message,j;t[34]===A?j=t[35]:(j=(0,q.jsx)(Z,{message:A}),t[34]=A,t[35]=j);let M;t[36]!==T||t[37]!==k||t[38]!==j?(M=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[T,k,j]}),t[36]=T,t[37]=k,t[38]=j,t[39]=M):M=t[39];let N=`${n}-credentials-file`,P;t[40]===N?P=t[41]:(P=(0,q.jsx)(G,{htmlFor:N,children:`Credentials File`}),t[40]=N,t[41]=P);let F=`${n}-credentials-file`,I;t[42]!==b||t[43]!==F?(I=(0,q.jsx)(W,{id:F,type:`file`,accept:`.json,application/json`,onChange:b}),t[42]=b,t[43]=F,t[44]=I):I=t[44];let L;t[45]===s?L=t[46]:(L=s&&(0,q.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Loaded: `,s]}),t[45]=s,t[46]=L);let R;t[47]!==P||t[48]!==I||t[49]!==L?(R=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[P,I,L]}),t[47]=P,t[48]=I,t[49]=L,t[50]=R):R=t[50];let z;t[51]===Symbol.for(`react.memo_cache_sentinel`)?(z=(0,q.jsxs)(`div`,{className:`my-4 flex items-center gap-3 text-xs text-muted-foreground`,children:[(0,q.jsx)(`div`,{className:`h-px flex-1 bg-border`}),(0,q.jsx)(`span`,{className:`uppercase tracking-widest`,children:`Or`}),(0,q.jsx)(`div`,{className:`h-px flex-1 bg-border`})]}),t[51]=z):z=t[51];let B=`${n}-credentials-text`,V;t[52]===B?V=t[53]:(V=(0,q.jsx)(G,{htmlFor:B,children:`Credentials JSON`}),t[52]=B,t[53]=V);let H=`${n}-credentials-text`,te=`Paste ${l} credentials JSON`,ne;t[54]===S?ne=t[55]:(ne=e=>{S.onChange(e),o(null)},t[54]=S,t[55]=ne);let U;t[56]===Symbol.for(`react.memo_cache_sentinel`)?(U={fieldSizing:`fixed`},t[56]=U):U=t[56];let re;t[57]!==S||t[58]!==H||t[59]!==te||t[60]!==ne?(re=(0,q.jsx)(pe,{id:H,placeholder:te,rows:8,...S,onChange:ne,className:`font-mono text-sm h-48 max-h-64 overflow-y-auto resize-y field-sizing-fixed`,style:U}),t[57]=S,t[58]=H,t[59]=te,t[60]=ne,t[61]=re):re=t[61];let ie;t[62]===a?ie=t[63]:(ie=(0,q.jsx)(Z,{message:a}),t[62]=a,t[63]=ie);let ae=n===`ga`?` propertyId`:` projectId`,se;t[64]===ae?se=t[65]:(se=(0,q.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Include accessToken, refreshToken, and expiresAt for OAuth. Service account JSON is also supported. Provide`,ae,` here or in the JSON.`]}),t[64]=ae,t[65]=se);let le;t[66]!==V||t[67]!==re||t[68]!==ie||t[69]!==se?(le=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[V,re,ie,se]}),t[66]=V,t[67]=re,t[68]=ie,t[69]=se,t[70]=le):le=t[70];let ue;t[71]!==R||t[72]!==le?(ue=(0,q.jsxs)(`div`,{className:`rounded-lg border border-dashed p-4`,children:[R,z,le]}),t[71]=R,t[72]=le,t[73]=ue):ue=t[73];let de;t[74]!==d||t[75]!==n?(de=n===`ga`&&(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(G,{htmlFor:`ga-property-id`,children:`Property ID`}),(0,q.jsx)(W,{id:`ga-property-id`,placeholder:`properties/123456789`,...d.register(`propertyId`)}),(0,q.jsx)(Z,{message:d.formState.errors.propertyId?.message})]}),t[74]=d,t[75]=n,t[76]=de):de=t[76];let fe;t[77]!==d||t[78]!==n?(fe=n===`bigquery`&&(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(G,{htmlFor:`bigquery-project-id`,children:`Project ID`}),(0,q.jsx)(W,{id:`bigquery-project-id`,placeholder:`my-project-id`,...d.register(`projectId`)}),(0,q.jsx)(Z,{message:d.formState.errors.projectId?.message})]}),t[77]=d,t[78]=n,t[79]=fe):fe=t[79];let me;t[80]===v.isPending?me=t[81]:(me=(0,q.jsx)(Zt,{idleLabel:`Create Data Source`,isPending:v.isPending,pendingLabel:`Creating...`}),t[80]=v.isPending,t[81]=me);let _e;return t[82]!==C||t[83]!==M||t[84]!==ue||t[85]!==de||t[86]!==fe||t[87]!==me?(_e=(0,q.jsxs)(`form`,{onSubmit:C,className:`space-y-4 py-4`,children:[M,ue,de,fe,me]}),t[82]=C,t[83]=M,t[84]=ue,t[85]=de,t[86]=fe,t[87]=me,t[88]=_e):_e=t[88],_e}var Jn=`localhost`,Yn=`postgres://user:password@host:port/database`,Xn=`postgresql://postgres.[project-ref]:password@aws-0-[region].pooler.supabase.com:5432/postgres`,Zn=`postgres://postgres:[token]@pg.us-east-1-aws.motherduck.com:5432/md:`,Qn=`mysql://user:password@host:port/database`,$n={mysql:{connectionStringFormat:Qn,connectionStringPlaceholder:`mysql://user:password@host:3306/database`,databasePlaceholder:`mydb`,defaultDatabase:``,defaultPort:3306,defaultSslMode:`prefer`,fallbackHost:Jn,hostPlaceholder:Jn,invalidConnectionStringFormat:Qn,isPostgresFamily:!1,namePlaceholder:`My Database`,supportedProtocols:[`mysql`],usernamePlaceholder:`root`},motherduck:{connectionStringFormat:Zn,connectionStringPlaceholder:Zn,databasePlaceholder:`md:`,defaultDatabase:`md:`,defaultPort:5432,defaultSslMode:`prefer`,fallbackHost:`pg.us-east-1-aws.motherduck.com`,hostPlaceholder:`pg.us-east-1-aws.motherduck.com`,invalidConnectionStringFormat:Zn,isPostgresFamily:!0,namePlaceholder:`My MotherDuck`,supportedProtocols:[`postgres`,`postgresql`],usernamePlaceholder:`postgres`},postgres:{connectionStringFormat:Yn,connectionStringPlaceholder:`postgres://user:password@host:5432/database`,databasePlaceholder:`mydb`,defaultDatabase:``,defaultPort:5432,defaultSslMode:`prefer`,fallbackHost:Jn,hostPlaceholder:Jn,invalidConnectionStringFormat:Yn,isPostgresFamily:!0,namePlaceholder:`My Database`,supportedProtocols:[`postgres`,`postgresql`],usernamePlaceholder:`postgres`},supabase:{connectionStringFormat:Xn,connectionStringPlaceholder:Xn,databasePlaceholder:`postgres`,defaultDatabase:`postgres`,defaultPort:5432,defaultSslMode:`require`,fallbackHost:`aws-0-[region].pooler.supabase.com`,hostPlaceholder:`aws-0-[region].pooler.supabase.com`,invalidConnectionStringFormat:Yn,isPostgresFamily:!0,namePlaceholder:`My Supabase`,supportedProtocols:[`postgres`,`postgresql`],usernamePlaceholder:`postgres.your-project-ref`}};function er(e){return e===`postgres`||e===`supabase`||e===`motherduck`||e===`mysql`}function tr(e){return $n[e]}function nr(e){if(e===null)return;let t=e.trim().toLowerCase();if(t===`disable`||t===`prefer`||t===`require`)return t}function rr(e,t){return nr(e)??t}function ir(e,t){let n=e.trim();if(!n)return null;try{let e=new URL(n),r=e.protocol.replace(`:`,``),i=tr(t);return i.supportedProtocols.includes(r)?{database:e.pathname.slice(1)||``,host:e.hostname||i.fallbackHost,password:decodeURIComponent(e.password)||``,port:e.port?Number.parseInt(e.port,10):i.defaultPort,sslMode:i.isPostgresFamily?rr(e.searchParams.get(`sslmode`),i.defaultSslMode):void 0,username:decodeURIComponent(e.username)||``}:null}catch{return null}}function ar(e){return tr(e).connectionStringPlaceholder}function or(e){return tr(e).connectionStringFormat}function sr(e){return`Invalid connection string format. Expected: ${tr(e).invalidConnectionStringFormat}`}var cr=R({database:H().min(1,`Database name is required`),host:H().min(1,`Host is required`),name:H().min(1,`Name is required`),password:H().min(1,`Password is required`),port:U().min(1).max(65535),provider:V([`postgres`,`supabase`,`motherduck`,`mysql`]),sslMode:V([`disable`,`prefer`,`require`]).optional(),username:H().min(1,`Username is required`)});function lr(e){let t=(0,K.c)(121),{provider:n,onSuccess:r,organizationId:i}=e,a;t[0]===n?a=t[1]:(a=tr(n),t[0]=n,t[1]=a);let o=a,[s,c]=(0,X.useState)(``),[l,u]=(0,X.useState)(null),d=n===`motherduck`?o.fallbackHost:``,f=n===`motherduck`?o.usernamePlaceholder:``,p;t[2]!==n||t[3]!==o.defaultDatabase||t[4]!==o.defaultPort||t[5]!==o.defaultSslMode||t[6]!==d||t[7]!==f?(p={provider:n,name:``,host:d,port:o.defaultPort,database:o.defaultDatabase,username:f,password:``,sslMode:o.defaultSslMode},t[2]=n,t[3]=o.defaultDatabase,t[4]=o.defaultPort,t[5]=o.defaultSslMode,t[6]=d,t[7]=f,t[8]=p):p=t[8];let m;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(m=ge(cr),t[9]=m):m=t[9];let h;t[10]===p?h=t[11]:(h={defaultValues:p,resolver:m},t[10]=p,t[11]=h);let g=he(h),_;t[12]===i?_=t[13]:(_=async e=>{let t=tr(e.provider),n=e.provider===`motherduck`?{type:`motherduck`,host:e.host,port:e.port,database:e.database,username:e.username,token:e.password}:t.isPostgresFamily?{type:`postgres`,host:e.host,port:e.port,database:e.database,username:e.username,password:e.password,sslMode:e.sslMode??t.defaultSslMode}:{type:`mysql`,host:e.host,port:e.port,database:e.database,username:e.username,password:e.password,sslMode:e.sslMode??t.defaultSslMode};return oe({organizationId:i,provider:e.provider,name:e.name,credentials:n})},t[12]=i,t[13]=_);let v;t[14]===g.setError?v=t[15]:(v=e=>{Qt(e,g.setError,`name`)},t[14]=g.setError,t[15]=v);let y;t[16]===r?y=t[17]:(y=e=>{r(e.dataSource.id)},t[16]=r,t[17]=y);let b;t[18]===i?b=t[19]:(b=ce(i),t[18]=i,t[19]=b);let x;t[20]!==b.queryKey||t[21]!==_||t[22]!==v||t[23]!==y?(x={createOptimisticItem:ur,mutationFn:_,onError:v,onSuccess:y,queryKey:b.queryKey,successMessage:`Data source created successfully`},t[20]=b.queryKey,t[21]=_,t[22]=v,t[23]=y,t[24]=x):x=t[24];let S=ee(x),C;t[25]===S?C=t[26]:(C=e=>{S.mutate(e)},t[25]=S,t[26]=C);let w=C,T;t[27]!==s||t[28]!==g||t[29]!==S||t[30]!==n||t[31]!==o.defaultPort||t[32]!==o.defaultSslMode||t[33]!==o.fallbackHost?(T=e=>{e.preventDefault(),u(null);let t=g.getValues(`name`);if(!t){g.setError(`name`,{message:`Name is required`});return}let r=ir(s,n);if(!r){u(sr(n));return}if(!r.database){u(`Database name is required in connection string`);return}if(!r.username){u(`Username is required in connection string`);return}S.mutate({database:r.database,host:r.host??o.fallbackHost,name:t,password:r.password??``,port:r.port??o.defaultPort,provider:n,sslMode:r.sslMode??o.defaultSslMode,username:r.username})},t[27]=s,t[28]=g,t[29]=S,t[30]=n,t[31]=o.defaultPort,t[32]=o.defaultSslMode,t[33]=o.fallbackHost,t[34]=T):T=t[34];let E=T,D;t[35]===Symbol.for(`react.memo_cache_sentinel`)?(D=(0,q.jsx)(G,{htmlFor:`name`,children:`Data Source Name`}),t[35]=D):D=t[35];let O=o.namePlaceholder,k;t[36]===g?k=t[37]:(k=g.register(`name`),t[36]=g,t[37]=k);let A;t[38]!==o.namePlaceholder||t[39]!==k?(A=(0,q.jsx)(W,{id:`name`,placeholder:O,...k}),t[38]=o.namePlaceholder,t[39]=k,t[40]=A):A=t[40];let j=g.formState.errors.name?.message,M;t[41]===j?M=t[42]:(M=(0,q.jsx)(Z,{message:j}),t[41]=j,t[42]=M);let N;t[43]!==A||t[44]!==M?(N=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[D,A,M]}),t[43]=A,t[44]=M,t[45]=N):N=t[45];let P;t[46]===Symbol.for(`react.memo_cache_sentinel`)?(P=(0,q.jsxs)(At,{className:`w-full`,children:[(0,q.jsx)(jt,{value:`url`,className:`flex-1`,children:`Connection URL`}),(0,q.jsx)(jt,{value:`manual`,className:`flex-1`,children:`Manual`})]}),t[46]=P):P=t[46];let F;t[47]===Symbol.for(`react.memo_cache_sentinel`)?(F=(0,q.jsx)(G,{htmlFor:`connectionString`,children:`Connection String`}),t[47]=F):F=t[47];let I;t[48]===n?I=t[49]:(I=ar(n),t[48]=n,t[49]=I);let L;t[50]===Symbol.for(`react.memo_cache_sentinel`)?(L=e=>{c(e.target.value),u(null)},t[50]=L):L=t[50];let R;t[51]!==s||t[52]!==I?(R=(0,q.jsx)(W,{id:`connectionString`,type:`text`,placeholder:I,value:s,onChange:L,className:`font-mono text-sm`}),t[51]=s,t[52]=I,t[53]=R):R=t[53];let z;t[54]===l?z=t[55]:(z=(0,q.jsx)(Z,{message:l}),t[54]=l,t[55]=z);let B;t[56]===n?B=t[57]:(B=or(n),t[56]=n,t[57]=B);let V;t[58]===B?V=t[59]:(V=(0,q.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Format: `,B]}),t[58]=B,t[59]=V);let H;t[60]!==R||t[61]!==z||t[62]!==V?(H=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[F,R,z,V]}),t[60]=R,t[61]=z,t[62]=V,t[63]=H):H=t[63];let te;t[64]===S.isPending?te=t[65]:(te=(0,q.jsx)(Zt,{idleLabel:`Create Data Source`,isPending:S.isPending,pendingLabel:`Creating...`}),t[64]=S.isPending,t[65]=te);let ne;t[66]!==E||t[67]!==H||t[68]!==te?(ne=(0,q.jsx)(Mt,{value:`url`,className:`pt-4`,children:(0,q.jsxs)(`form`,{onSubmit:E,className:`space-y-4`,children:[H,te]})}),t[66]=E,t[67]=H,t[68]=te,t[69]=ne):ne=t[69];let U;t[70]!==g||t[71]!==w?(U=e=>{g.handleSubmit(w)(e)},t[70]=g,t[71]=w,t[72]=U):U=t[72];let re;t[73]===Symbol.for(`react.memo_cache_sentinel`)?(re=(0,q.jsx)(G,{htmlFor:`host`,children:`Host`}),t[73]=re):re=t[73];let ie=o.hostPlaceholder,ae;t[74]===g?ae=t[75]:(ae=g.register(`host`),t[74]=g,t[75]=ae);let se;t[76]!==o.hostPlaceholder||t[77]!==ae?(se=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[re,(0,q.jsx)(W,{id:`host`,placeholder:ie,...ae})]}),t[76]=o.hostPlaceholder,t[77]=ae,t[78]=se):se=t[78];let le;t[79]===Symbol.for(`react.memo_cache_sentinel`)?(le=(0,q.jsx)(G,{htmlFor:`port`,children:`Port`}),t[79]=le):le=t[79];let ue;t[80]===g?ue=t[81]:(ue=g.register(`port`,{valueAsNumber:!0}),t[80]=g,t[81]=ue);let de;t[82]===ue?de=t[83]:(de=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[le,(0,q.jsx)(W,{id:`port`,type:`number`,...ue})]}),t[82]=ue,t[83]=de);let fe;t[84]!==se||t[85]!==de?(fe=(0,q.jsxs)(`div`,{className:`grid grid-cols-2 gap-4`,children:[se,de]}),t[84]=se,t[85]=de,t[86]=fe):fe=t[86];let pe;t[87]===Symbol.for(`react.memo_cache_sentinel`)?(pe=(0,q.jsx)(G,{htmlFor:`database`,children:`Database`}),t[87]=pe):pe=t[87];let me=o.databasePlaceholder,_e;t[88]===g?_e=t[89]:(_e=g.register(`database`),t[88]=g,t[89]=_e);let ve;t[90]!==o.databasePlaceholder||t[91]!==_e?(ve=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[pe,(0,q.jsx)(W,{id:`database`,placeholder:me,..._e})]}),t[90]=o.databasePlaceholder,t[91]=_e,t[92]=ve):ve=t[92];let ye;t[93]===Symbol.for(`react.memo_cache_sentinel`)?(ye=(0,q.jsx)(G,{htmlFor:`username`,children:`Username`}),t[93]=ye):ye=t[93];let be=o.usernamePlaceholder,xe;t[94]===g?xe=t[95]:(xe=g.register(`username`),t[94]=g,t[95]=xe);let Se;t[96]!==o.usernamePlaceholder||t[97]!==xe?(Se=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[ye,(0,q.jsx)(W,{id:`username`,placeholder:be,...xe})]}),t[96]=o.usernamePlaceholder,t[97]=xe,t[98]=Se):Se=t[98];let Ce;t[99]===Symbol.for(`react.memo_cache_sentinel`)?(Ce=(0,q.jsx)(G,{htmlFor:`password`,children:`Password`}),t[99]=Ce):Ce=t[99];let we;t[100]===g?we=t[101]:(we=g.register(`password`),t[100]=g,t[101]=we);let J;t[102]===we?J=t[103]:(J=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[Ce,(0,q.jsx)(W,{id:`password`,type:`password`,...we})]}),t[102]=we,t[103]=J);let Y;t[104]!==Se||t[105]!==J?(Y=(0,q.jsxs)(`div`,{className:`grid grid-cols-2 gap-4`,children:[Se,J]}),t[104]=Se,t[105]=J,t[106]=Y):Y=t[106];let Te;t[107]===S.isPending?Te=t[108]:(Te=(0,q.jsx)(Zt,{idleLabel:`Create Data Source`,isPending:S.isPending,pendingLabel:`Creating...`}),t[107]=S.isPending,t[108]=Te);let Ee;t[109]!==U||t[110]!==fe||t[111]!==ve||t[112]!==Y||t[113]!==Te?(Ee=(0,q.jsx)(Mt,{value:`manual`,className:`pt-4`,children:(0,q.jsxs)(`form`,{onSubmit:U,className:`space-y-4`,children:[fe,ve,Y,Te]})}),t[109]=U,t[110]=fe,t[111]=ve,t[112]=Y,t[113]=Te,t[114]=Ee):Ee=t[114];let De;t[115]!==ne||t[116]!==Ee?(De=(0,q.jsxs)(Ot,{defaultValue:`url`,children:[P,ne,Ee]}),t[115]=ne,t[116]=Ee,t[117]=De):De=t[117];let Oe;return t[118]!==N||t[119]!==De?(Oe=(0,q.jsxs)(`div`,{className:`space-y-4`,children:[N,De]}),t[118]=N,t[119]=De,t[120]=Oe):Oe=t[120],Oe}function ur(e){return{id:`temp-${crypto.randomUUID()}`,provider:e.provider,name:e.name,status:`active`,errorMessage:null,lastUsedAt:null,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}}var dr=R({accessToken:H().min(1,`Access token is required`),name:H().min(1,`Name is required`)});function fr(e){let t=(0,K.c)(45),{organizationId:n,onSuccess:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i={defaultValues:{name:``,accessToken:``},resolver:ge(dr)},t[0]=i):i=t[0];let a=he(i),o;t[1]===n?o=t[2]:(o=async e=>{let t={type:`github`,accessToken:e.accessToken};return oe({organizationId:n,provider:`github`,name:e.name,credentials:t})},t[1]=n,t[2]=o);let s;t[3]===a.setError?s=t[4]:(s=e=>{Qt(e,a.setError,`name`)},t[3]=a.setError,t[4]=s);let c;t[5]===r?c=t[6]:(c=e=>{r?.(e.dataSource.id)},t[5]=r,t[6]=c);let l;t[7]===n?l=t[8]:(l=ce(n),t[7]=n,t[8]=l);let u;t[9]!==o||t[10]!==s||t[11]!==c||t[12]!==l.queryKey?(u={createOptimisticItem:pr,mutationFn:o,onError:s,onSuccess:c,queryKey:l.queryKey,successMessage:`GitHub connected`},t[9]=o,t[10]=s,t[11]=c,t[12]=l.queryKey,t[13]=u):u=t[13];let d=ee(u),f;t[14]!==a||t[15]!==d?(f=e=>{a.handleSubmit(e=>{d.mutate(e)})(e)},t[14]=a,t[15]=d,t[16]=f):f=t[16];let p;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,q.jsx)(G,{htmlFor:`github-token-name`,children:`Data Source Name`}),t[17]=p):p=t[17];let m;t[18]===a?m=t[19]:(m=a.register(`name`),t[18]=a,t[19]=m);let h;t[20]===m?h=t[21]:(h=(0,q.jsx)(W,{id:`github-token-name`,placeholder:`GitHub`,...m}),t[20]=m,t[21]=h);let g=a.formState.errors.name?.message,_;t[22]===g?_=t[23]:(_=(0,q.jsx)(Z,{message:g}),t[22]=g,t[23]=_);let v;t[24]!==h||t[25]!==_?(v=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[p,h,_]}),t[24]=h,t[25]=_,t[26]=v):v=t[26];let y;t[27]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,q.jsx)(G,{htmlFor:`github-access-token`,children:`Access Token`}),t[27]=y):y=t[27];let b;t[28]===a?b=t[29]:(b=a.register(`accessToken`),t[28]=a,t[29]=b);let x;t[30]===b?x=t[31]:(x=(0,q.jsx)(W,{id:`github-access-token`,type:`password`,placeholder:`ghp_...`,...b}),t[30]=b,t[31]=x);let S=a.formState.errors.accessToken?.message,C;t[32]===S?C=t[33]:(C=(0,q.jsx)(Z,{message:S}),t[32]=S,t[33]=C);let w;t[34]===Symbol.for(`react.memo_cache_sentinel`)?(w=(0,q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Use a fine-grained personal access token with read-only access to repositories and issues.`}),t[34]=w):w=t[34];let T;t[35]!==x||t[36]!==C?(T=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[y,x,C,w]}),t[35]=x,t[36]=C,t[37]=T):T=t[37];let E;t[38]===d.isPending?E=t[39]:(E=(0,q.jsx)(Zt,{idleLabel:`Connect GitHub`,isPending:d.isPending,pendingLabel:`Connecting...`}),t[38]=d.isPending,t[39]=E);let D;return t[40]!==v||t[41]!==T||t[42]!==E||t[43]!==f?(D=(0,q.jsxs)(`form`,{onSubmit:f,className:`space-y-4`,children:[v,T,E]}),t[40]=v,t[41]=T,t[42]=E,t[43]=f,t[44]=D):D=t[44],D}function pr(e){return{id:`temp-${crypto.randomUUID()}`,provider:`github`,name:e.name,status:`active`,errorMessage:null,lastUsedAt:null,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}}function mr(e){try{let t=JSON.parse(e);return typeof t!=`object`||!t||Array.isArray(t)?null:t}catch{return null}}var hr=R({credentials:H().refine(e=>mr(e)!==null,{message:`Credentials must be a valid JSON object`}),name:H().min(1,`Name is required`)});function gr(e){let t=(0,K.c)(64),{organizationId:n,onSuccess:r,provider:i}=e,a=i.label,o;t[0]===i.credentialExample?o=t[1]:(o=JSON.stringify(i.credentialExample,null,2),t[0]=i.credentialExample,t[1]=o);let s;t[2]!==i.label||t[3]!==o?(s={name:a,credentials:o},t[2]=i.label,t[3]=o,t[4]=s):s=t[4];let c;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(c=ge(hr),t[5]=c):c=t[5];let l;t[6]===s?l=t[7]:(l={defaultValues:s,resolver:c},t[6]=s,t[7]=l);let u=he(l),d;t[8]===i.id?d=t[9]:(d=e=>({id:`temp-${crypto.randomUUID()}`,provider:i.id,name:e.name,status:`active`,errorMessage:null,lastUsedAt:null,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}),t[8]=i.id,t[9]=d);let f;t[10]!==n||t[11]!==i.id?(f=async e=>{let t=mr(e.credentials);if(!t)throw Error(`Credentials must be a valid JSON object`);return oe({organizationId:n,provider:i.id,name:e.name.trim(),credentials:t})},t[10]=n,t[11]=i.id,t[12]=f):f=t[12];let p;t[13]===u.setError?p=t[14]:(p=e=>{Qt(e,u.setError,`name`)},t[13]=u.setError,t[14]=p);let m;t[15]===r?m=t[16]:(m=e=>{r(e.dataSource.id)},t[15]=r,t[16]=m);let h;t[17]===n?h=t[18]:(h=ce(n),t[17]=n,t[18]=h);let g;t[19]!==h.queryKey||t[20]!==d||t[21]!==f||t[22]!==p||t[23]!==m?(g={createOptimisticItem:d,mutationFn:f,onError:p,onSuccess:m,queryKey:h.queryKey,successMessage:`Data source created successfully`},t[19]=h.queryKey,t[20]=d,t[21]=f,t[22]=p,t[23]=m,t[24]=g):g=t[24];let _=ee(g),v;t[25]===_?v=t[26]:(v=e=>{_.mutate(e)},t[25]=_,t[26]=v);let y=v,b;t[27]!==u||t[28]!==y?(b=e=>{u.handleSubmit(y)(e)},t[27]=u,t[28]=y,t[29]=b):b=t[29];let x=`${i.id}-name`,S;t[30]===x?S=t[31]:(S=(0,q.jsx)(G,{htmlFor:x,children:`Data Source Name`}),t[30]=x,t[31]=S);let C=`${i.id}-name`,w=i.label,T;t[32]===u?T=t[33]:(T=u.register(`name`),t[32]=u,t[33]=T);let E;t[34]!==i.label||t[35]!==C||t[36]!==T?(E=(0,q.jsx)(W,{id:C,placeholder:w,...T}),t[34]=i.label,t[35]=C,t[36]=T,t[37]=E):E=t[37];let D=u.formState.errors.name?.message,O;t[38]===D?O=t[39]:(O=(0,q.jsx)(Z,{message:D}),t[38]=D,t[39]=O);let k;t[40]!==S||t[41]!==E||t[42]!==O?(k=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[S,E,O]}),t[40]=S,t[41]=E,t[42]=O,t[43]=k):k=t[43];let A=`${i.id}-credentials`,j;t[44]===A?j=t[45]:(j=(0,q.jsx)(G,{htmlFor:A,children:`Credentials JSON`}),t[44]=A,t[45]=j);let M=`${i.id}-credentials`,N;t[46]===u?N=t[47]:(N=u.register(`credentials`),t[46]=u,t[47]=N);let P;t[48]!==M||t[49]!==N?(P=(0,q.jsx)(pe,{id:M,className:`min-h-56 font-mono text-sm`,spellCheck:!1,...N}),t[48]=M,t[49]=N,t[50]=P):P=t[50];let F=u.formState.errors.credentials?.message,I;t[51]===F?I=t[52]:(I=(0,q.jsx)(Z,{message:F}),t[51]=F,t[52]=I);let L;t[53]!==j||t[54]!==P||t[55]!==I?(L=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[j,P,I]}),t[53]=j,t[54]=P,t[55]=I,t[56]=L):L=t[56];let R;t[57]===_.isPending?R=t[58]:(R=(0,q.jsx)(Zt,{idleLabel:`Create Data Source`,isPending:_.isPending,pendingLabel:`Creating...`}),t[57]=_.isPending,t[58]=R);let z;return t[59]!==b||t[60]!==k||t[61]!==L||t[62]!==R?(z=(0,q.jsxs)(`form`,{onSubmit:b,className:`space-y-4`,children:[k,L,R]}),t[59]=b,t[60]=k,t[61]=L,t[62]=R,t[63]=z):z=t[63],z}var _r=R({apiBaseUrl:B([z(`API Base URL must be a valid URL`),L(``)]),apiKey:H().min(1,`API Key is required`),name:H().min(1,`Name is required`)});function vr(e){let t=(0,K.c)(58),{organizationId:n,onSuccess:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i={defaultValues:{name:``,apiKey:``,apiBaseUrl:``},resolver:ge(_r)},t[0]=i):i=t[0];let a=he(i),o;t[1]===n?o=t[2]:(o=async e=>{let t={type:`laminar`,apiKey:e.apiKey.trim()},r=e.apiBaseUrl.trim();return r&&(t.apiBaseUrl=r),oe({organizationId:n,provider:`laminar`,name:e.name.trim(),credentials:t})},t[1]=n,t[2]=o);let s;t[3]===a.setError?s=t[4]:(s=e=>{Qt(e,a.setError,`name`)},t[3]=a.setError,t[4]=s);let c;t[5]===r?c=t[6]:(c=e=>{r(e.dataSource.id)},t[5]=r,t[6]=c);let l;t[7]===n?l=t[8]:(l=ce(n),t[7]=n,t[8]=l);let u;t[9]!==o||t[10]!==s||t[11]!==c||t[12]!==l.queryKey?(u={createOptimisticItem:yr,mutationFn:o,onError:s,onSuccess:c,queryKey:l.queryKey,successMessage:`Data source created successfully`},t[9]=o,t[10]=s,t[11]=c,t[12]=l.queryKey,t[13]=u):u=t[13];let d=ee(u),f;t[14]===d?f=t[15]:(f=e=>{d.mutate(e)},t[14]=d,t[15]=f);let p=f,m;t[16]!==a||t[17]!==p?(m=e=>{a.handleSubmit(p)(e)},t[16]=a,t[17]=p,t[18]=m):m=t[18];let h;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,q.jsx)(G,{htmlFor:`laminar-name`,children:`Data Source Name`}),t[19]=h):h=t[19];let g;t[20]===a?g=t[21]:(g=a.register(`name`),t[20]=a,t[21]=g);let _;t[22]===g?_=t[23]:(_=(0,q.jsx)(W,{id:`laminar-name`,placeholder:`Laminar`,...g}),t[22]=g,t[23]=_);let v=a.formState.errors.name?.message,y;t[24]===v?y=t[25]:(y=(0,q.jsx)(Z,{message:v}),t[24]=v,t[25]=y);let b;t[26]!==_||t[27]!==y?(b=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[h,_,y]}),t[26]=_,t[27]=y,t[28]=b):b=t[28];let x;t[29]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,q.jsx)(G,{htmlFor:`laminar-api-key`,children:`API Key`}),t[29]=x):x=t[29];let S;t[30]===a?S=t[31]:(S=a.register(`apiKey`),t[30]=a,t[31]=S);let C;t[32]===S?C=t[33]:(C=(0,q.jsx)(W,{id:`laminar-api-key`,type:`password`,placeholder:`lmnr_project_key_...`,...S}),t[32]=S,t[33]=C);let w=a.formState.errors.apiKey?.message,T;t[34]===w?T=t[35]:(T=(0,q.jsx)(Z,{message:w}),t[34]=w,t[35]=T);let E;t[36]!==C||t[37]!==T?(E=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[x,C,T]}),t[36]=C,t[37]=T,t[38]=E):E=t[38];let D;t[39]===Symbol.for(`react.memo_cache_sentinel`)?(D=(0,q.jsx)(G,{htmlFor:`laminar-api-base-url`,children:`API Base URL (optional)`}),t[39]=D):D=t[39];let O;t[40]===a?O=t[41]:(O=a.register(`apiBaseUrl`),t[40]=a,t[41]=O);let k;t[42]===O?k=t[43]:(k=(0,q.jsx)(W,{id:`laminar-api-base-url`,placeholder:`https://api.lmnr.ai`,...O}),t[42]=O,t[43]=k);let A=a.formState.errors.apiBaseUrl?.message,j;t[44]===A?j=t[45]:(j=(0,q.jsx)(Z,{message:A}),t[44]=A,t[45]=j);let M;t[46]===Symbol.for(`react.memo_cache_sentinel`)?(M=(0,q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Leave blank to use the default Laminar endpoint.`}),t[46]=M):M=t[46];let N;t[47]!==k||t[48]!==j?(N=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[D,k,j,M]}),t[47]=k,t[48]=j,t[49]=N):N=t[49];let P;t[50]===d.isPending?P=t[51]:(P=(0,q.jsx)(Zt,{idleLabel:`Create Data Source`,isPending:d.isPending,pendingLabel:`Creating...`}),t[50]=d.isPending,t[51]=P);let F;return t[52]!==b||t[53]!==E||t[54]!==N||t[55]!==P||t[56]!==m?(F=(0,q.jsxs)(`form`,{onSubmit:m,className:`space-y-4`,children:[b,E,N,P]}),t[52]=b,t[53]=E,t[54]=N,t[55]=P,t[56]=m,t[57]=F):F=t[57],F}function yr(e){return{id:`temp-${crypto.randomUUID()}`,provider:`laminar`,name:e.name,status:`active`,errorMessage:null,lastUsedAt:null,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}}var br=R({name:H().min(1,`Name is required`),projectId:H().min(1,`Project ID is required`),region:V([`us`,`eu`,`in`]),secret:H().min(1,`Service Account Secret is required`),username:H().min(1,`Service Account Username is required`),workspaceId:H().optional()}),xr=[{label:`US (Standard)`,value:`us`},{label:`EU (Europe)`,value:`eu`},{label:`IN (India)`,value:`in`}];function Sr(e){return e===`us`||e===`eu`||e===`in`}function Cr({onSuccess:e,organizationId:t}){let n=he({defaultValues:{name:``,username:``,secret:``,projectId:``,workspaceId:``,region:`us`},resolver:ge(br)}),r=ee({createOptimisticItem:e=>({id:`temp-${crypto.randomUUID()}`,provider:`mixpanel`,name:e.name,status:`active`,errorMessage:null,lastUsedAt:null,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}),mutationFn:async e=>{let n={type:`mixpanel`,username:e.username,secret:e.secret,projectId:e.projectId,workspaceId:e.workspaceId?.trim()||void 0,region:e.region};return oe({organizationId:t,provider:`mixpanel`,name:e.name,credentials:n})},onError:e=>{Qt(e,n.setError,`name`)},onSuccess:t=>{e(t.dataSource.id)},queryKey:ce(t).queryKey,successMessage:`Data source created successfully`});return(0,q.jsxs)(`form`,{onSubmit:e=>{n.handleSubmit(e=>{r.mutate(e)})(e)},className:`space-y-4`,children:[(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(G,{htmlFor:`mixpanel-name`,children:`Data Source Name`}),(0,q.jsx)(W,{id:`mixpanel-name`,placeholder:`My Mixpanel`,...n.register(`name`)}),(0,q.jsx)(Z,{message:n.formState.errors.name?.message})]}),(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(G,{htmlFor:`mixpanel-projectId`,children:`Project ID`}),(0,q.jsx)(W,{id:`mixpanel-projectId`,placeholder:`Enter your Mixpanel Project ID`,...n.register(`projectId`)}),(0,q.jsx)(Z,{message:n.formState.errors.projectId?.message})]}),(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(G,{htmlFor:`mixpanel-username`,children:`Service Account Username`}),(0,q.jsx)(W,{id:`mixpanel-username`,placeholder:`Enter your Service Account Username`,...n.register(`username`)}),(0,q.jsx)(Z,{message:n.formState.errors.username?.message})]}),(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(G,{htmlFor:`mixpanel-secret`,children:`Service Account Secret`}),(0,q.jsx)(W,{id:`mixpanel-secret`,type:`password`,placeholder:`Enter your Service Account Secret`,...n.register(`secret`)}),(0,q.jsx)(Z,{message:n.formState.errors.secret?.message})]}),(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(G,{htmlFor:`mixpanel-workspaceId`,children:`Workspace ID (optional)`}),(0,q.jsx)(W,{id:`mixpanel-workspaceId`,placeholder:`Enter workspace ID if your project uses Data Views`,...n.register(`workspaceId`)})]}),(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(G,{htmlFor:`mixpanel-region`,children:`Region`}),(0,q.jsxs)(y,{items:[...xr],value:n.watch(`region`),onValueChange:e=>{Sr(e)&&n.setValue(`region`,e)},children:[(0,q.jsx)(g,{id:`mixpanel-region`,children:(0,q.jsx)(h,{})}),(0,q.jsx)(_,{children:xr.map(e=>(0,q.jsx)(v,{value:e.value,children:e.label},e.value))})]})]}),(0,q.jsx)(Zt,{idleLabel:`Create Data Source`,isPending:r.isPending,pendingLabel:`Creating...`})]})}var wr=R({connectionString:H().min(1,`Connection string is required`),database:H().optional(),databases:H().optional(),name:H().min(1,`Name is required`)});function Tr(e){let t=e?.trim();if(!t)return;let n=new Set,r=[],i=t.split(`,`);for(let e of i){let t=e.trim();!t||n.has(t)||(n.add(t),r.push(t))}return r.length>0?r:void 0}function Er(e){return e?.trim()||void 0}function Dr(e){let t=(0,K.c)(62),{onSuccess:n,organizationId:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i={defaultValues:{name:``,connectionString:``,database:``,databases:``},resolver:ge(wr)},t[0]=i):i=t[0];let a=he(i),o;t[1]===r?o=t[2]:(o=async e=>{let t={type:`mongodb`,connectionString:e.connectionString.trim()},n=Er(e.database);n&&(t.database=n);let i=Tr(e.databases);return i&&(t.databases=i),oe({organizationId:r,provider:`mongodb`,name:e.name.trim(),credentials:t})},t[1]=r,t[2]=o);let s;t[3]===a.setError?s=t[4]:(s=e=>{Qt(e,a.setError,`name`)},t[3]=a.setError,t[4]=s);let c;t[5]===n?c=t[6]:(c=e=>{n(e.dataSource.id)},t[5]=n,t[6]=c);let l;t[7]===r?l=t[8]:(l=ce(r),t[7]=r,t[8]=l);let u;t[9]!==o||t[10]!==s||t[11]!==c||t[12]!==l.queryKey?(u={createOptimisticItem:Or,mutationFn:o,onError:s,onSuccess:c,queryKey:l.queryKey,successMessage:`Data source created successfully`},t[9]=o,t[10]=s,t[11]=c,t[12]=l.queryKey,t[13]=u):u=t[13];let d=ee(u),f;t[14]===d?f=t[15]:(f=e=>{d.mutate(e)},t[14]=d,t[15]=f);let p=f,m;t[16]!==a||t[17]!==p?(m=e=>{a.handleSubmit(p)(e)},t[16]=a,t[17]=p,t[18]=m):m=t[18];let h;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,q.jsx)(G,{htmlFor:`mongodb-name`,children:`Data Source Name`}),t[19]=h):h=t[19];let g;t[20]===a?g=t[21]:(g=a.register(`name`),t[20]=a,t[21]=g);let _;t[22]===g?_=t[23]:(_=(0,q.jsx)(W,{id:`mongodb-name`,placeholder:`MongoDB`,...g}),t[22]=g,t[23]=_);let v=a.formState.errors.name?.message,y;t[24]===v?y=t[25]:(y=(0,q.jsx)(Z,{message:v}),t[24]=v,t[25]=y);let b;t[26]!==_||t[27]!==y?(b=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[h,_,y]}),t[26]=_,t[27]=y,t[28]=b):b=t[28];let x;t[29]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,q.jsx)(G,{htmlFor:`mongodb-connection`,children:`Connection String`}),t[29]=x):x=t[29];let S;t[30]===a?S=t[31]:(S=a.register(`connectionString`),t[30]=a,t[31]=S);let C;t[32]===S?C=t[33]:(C=(0,q.jsx)(W,{id:`mongodb-connection`,placeholder:`mongodb+srv://user:pass@cluster0.example.mongodb.net/`,className:`font-mono text-sm`,...S}),t[32]=S,t[33]=C);let w=a.formState.errors.connectionString?.message,T;t[34]===w?T=t[35]:(T=(0,q.jsx)(Z,{message:w}),t[34]=w,t[35]=T);let E;t[36]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Include the database in the URL path or set it below.`}),t[36]=E):E=t[36];let D;t[37]!==C||t[38]!==T?(D=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[x,C,T,E]}),t[37]=C,t[38]=T,t[39]=D):D=t[39];let O;t[40]===Symbol.for(`react.memo_cache_sentinel`)?(O=(0,q.jsx)(G,{htmlFor:`mongodb-database`,children:`Default Database (optional)`}),t[40]=O):O=t[40];let k;t[41]===a?k=t[42]:(k=a.register(`database`),t[41]=a,t[42]=k);let A;t[43]===k?A=t[44]:(A=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[O,(0,q.jsx)(W,{id:`mongodb-database`,placeholder:`analytics`,...k})]}),t[43]=k,t[44]=A);let j;t[45]===Symbol.for(`react.memo_cache_sentinel`)?(j=(0,q.jsx)(G,{htmlFor:`mongodb-databases`,children:`Allowed Databases (optional)`}),t[45]=j):j=t[45];let M;t[46]===a?M=t[47]:(M=a.register(`databases`),t[46]=a,t[47]=M);let N;t[48]===M?N=t[49]:(N=(0,q.jsx)(pe,{id:`mongodb-databases`,placeholder:`analytics, app, reporting`,...M}),t[48]=M,t[49]=N);let P;t[50]===Symbol.for(`react.memo_cache_sentinel`)?(P=(0,q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Comma-separated list of databases the agent can access.`}),t[50]=P):P=t[50];let F;t[51]===N?F=t[52]:(F=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[j,N,P]}),t[51]=N,t[52]=F);let I;t[53]===d.isPending?I=t[54]:(I=(0,q.jsx)(Zt,{idleLabel:`Create Data Source`,isPending:d.isPending,pendingLabel:`Creating...`}),t[53]=d.isPending,t[54]=I);let L;return t[55]!==b||t[56]!==D||t[57]!==A||t[58]!==F||t[59]!==I||t[60]!==m?(L=(0,q.jsxs)(`form`,{onSubmit:m,className:`space-y-4`,children:[b,D,A,F,I]}),t[55]=b,t[56]=D,t[57]=A,t[58]=F,t[59]=I,t[60]=m,t[61]=L):L=t[61],L}function Or(e){return{id:`temp-${crypto.randomUUID()}`,provider:`mongodb`,name:e.name,status:`active`,errorMessage:null,lastUsedAt:null,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}}var kr=R({hostUrl:H().min(1,`Host URL is required`).pipe(z(`Invalid host URL`)),name:H().min(1,`Name is required`),personalApiKey:H().min(1,`Personal API Key is required`),projectId:H().min(1,`Project ID is required`)});function Ar(e){let t=(0,K.c)(67),{onSuccess:n,organizationId:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i={defaultValues:{name:``,projectId:``,personalApiKey:``,hostUrl:`https://us.posthog.com`},resolver:ge(kr)},t[0]=i):i=t[0];let a=he(i),o;t[1]===r?o=t[2]:(o=async e=>{let t={type:`posthog`,projectId:e.projectId,personalApiKey:e.personalApiKey,hostUrl:e.hostUrl.trim()};return oe({organizationId:r,provider:`posthog`,name:e.name,credentials:t})},t[1]=r,t[2]=o);let s;t[3]===a.setError?s=t[4]:(s=e=>{Qt(e,a.setError,`name`)},t[3]=a.setError,t[4]=s);let c;t[5]===n?c=t[6]:(c=e=>{n(e.dataSource.id)},t[5]=n,t[6]=c);let l;t[7]===r?l=t[8]:(l=ce(r),t[7]=r,t[8]=l);let u;t[9]!==o||t[10]!==s||t[11]!==c||t[12]!==l.queryKey?(u={createOptimisticItem:jr,mutationFn:o,onError:s,onSuccess:c,queryKey:l.queryKey,successMessage:`Data source created successfully`},t[9]=o,t[10]=s,t[11]=c,t[12]=l.queryKey,t[13]=u):u=t[13];let d=ee(u),f;t[14]!==a||t[15]!==d?(f=e=>{a.handleSubmit(e=>{d.mutate(e)})(e)},t[14]=a,t[15]=d,t[16]=f):f=t[16];let p;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,q.jsx)(G,{htmlFor:`posthog-name`,children:`Data Source Name`}),t[17]=p):p=t[17];let m;t[18]===a?m=t[19]:(m=a.register(`name`),t[18]=a,t[19]=m);let h;t[20]===m?h=t[21]:(h=(0,q.jsx)(W,{id:`posthog-name`,placeholder:`My PostHog`,...m}),t[20]=m,t[21]=h);let g=a.formState.errors.name?.message,_;t[22]===g?_=t[23]:(_=(0,q.jsx)(Z,{message:g}),t[22]=g,t[23]=_);let v;t[24]!==h||t[25]!==_?(v=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[p,h,_]}),t[24]=h,t[25]=_,t[26]=v):v=t[26];let y;t[27]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,q.jsx)(G,{htmlFor:`posthog-projectId`,children:`Project ID`}),t[27]=y):y=t[27];let b;t[28]===a?b=t[29]:(b=a.register(`projectId`),t[28]=a,t[29]=b);let x;t[30]===b?x=t[31]:(x=(0,q.jsx)(W,{id:`posthog-projectId`,placeholder:`Enter your PostHog Project ID`,...b}),t[30]=b,t[31]=x);let S=a.formState.errors.projectId?.message,C;t[32]===S?C=t[33]:(C=(0,q.jsx)(Z,{message:S}),t[32]=S,t[33]=C);let w;t[34]!==x||t[35]!==C?(w=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[y,x,C]}),t[34]=x,t[35]=C,t[36]=w):w=t[36];let T;t[37]===Symbol.for(`react.memo_cache_sentinel`)?(T=(0,q.jsx)(G,{htmlFor:`posthog-personalApiKey`,children:`Personal API Key`}),t[37]=T):T=t[37];let E;t[38]===a?E=t[39]:(E=a.register(`personalApiKey`),t[38]=a,t[39]=E);let D;t[40]===E?D=t[41]:(D=(0,q.jsx)(W,{id:`posthog-personalApiKey`,type:`password`,placeholder:`Enter your PostHog Personal API Key`,...E}),t[40]=E,t[41]=D);let O=a.formState.errors.personalApiKey?.message,k;t[42]===O?k=t[43]:(k=(0,q.jsx)(Z,{message:O}),t[42]=O,t[43]=k);let A;t[44]!==D||t[45]!==k?(A=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[T,D,k]}),t[44]=D,t[45]=k,t[46]=A):A=t[46];let j;t[47]===Symbol.for(`react.memo_cache_sentinel`)?(j=(0,q.jsx)(G,{htmlFor:`posthog-hostUrl`,children:`Host URL`}),t[47]=j):j=t[47];let M;t[48]===a?M=t[49]:(M=a.register(`hostUrl`),t[48]=a,t[49]=M);let N;t[50]===M?N=t[51]:(N=(0,q.jsx)(W,{id:`posthog-hostUrl`,placeholder:`https://us.posthog.com`,...M}),t[50]=M,t[51]=N);let P=a.formState.errors.hostUrl?.message,F;t[52]===P?F=t[53]:(F=(0,q.jsx)(Z,{message:P}),t[52]=P,t[53]=F);let I;t[54]===Symbol.for(`react.memo_cache_sentinel`)?(I=(0,q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:"Use `https://us.posthog.com`, `https://eu.posthog.com`, or your self-hosted base URL."}),t[54]=I):I=t[54];let L;t[55]!==N||t[56]!==F?(L=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[j,N,F,I]}),t[55]=N,t[56]=F,t[57]=L):L=t[57];let R;t[58]===d.isPending?R=t[59]:(R=(0,q.jsx)(Zt,{idleLabel:`Create Data Source`,isPending:d.isPending,pendingLabel:`Creating...`}),t[58]=d.isPending,t[59]=R);let z;return t[60]!==v||t[61]!==w||t[62]!==A||t[63]!==L||t[64]!==R||t[65]!==f?(z=(0,q.jsxs)(`form`,{onSubmit:f,className:`space-y-4`,children:[v,w,A,L,R]}),t[60]=v,t[61]=w,t[62]=A,t[63]=L,t[64]=R,t[65]=f,t[66]=z):z=t[66],z}function jr(e){return{id:`temp-${crypto.randomUUID()}`,provider:`posthog`,name:e.name,status:`active`,errorMessage:null,lastUsedAt:null,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}}var Mr=R({apiBaseUrl:B([L(``),z(`API base URL must be a valid URL`)]),authToken:H().min(1,`Auth token is required`),name:H().min(1,`Name is required`),organizationSlug:H().min(1,`Organization slug is required`),projectSlug:H().optional()});function Nr(e){let t=(0,K.c)(72),{onSuccess:n,organizationId:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i={defaultValues:{name:``,authToken:``,organizationSlug:``,projectSlug:``,apiBaseUrl:``},resolver:ge(Mr)},t[0]=i):i=t[0];let a=he(i),o;t[1]===r?o=t[2]:(o=async e=>{let t={type:`sentry`,authToken:e.authToken,organizationSlug:e.organizationSlug,projectSlug:e.projectSlug?.trim()||void 0,apiBaseUrl:e.apiBaseUrl.trim()||void 0};return oe({organizationId:r,provider:`sentry`,name:e.name,credentials:t})},t[1]=r,t[2]=o);let s;t[3]===a.setError?s=t[4]:(s=e=>{Qt(e,a.setError,`name`)},t[3]=a.setError,t[4]=s);let c;t[5]===n?c=t[6]:(c=e=>{n(e.dataSource.id)},t[5]=n,t[6]=c);let l;t[7]===r?l=t[8]:(l=ce(r),t[7]=r,t[8]=l);let u;t[9]!==o||t[10]!==s||t[11]!==c||t[12]!==l.queryKey?(u={createOptimisticItem:Pr,mutationFn:o,onError:s,onSuccess:c,queryKey:l.queryKey,successMessage:`Data source created successfully`},t[9]=o,t[10]=s,t[11]=c,t[12]=l.queryKey,t[13]=u):u=t[13];let d=ee(u),f;t[14]!==a||t[15]!==d?(f=e=>{a.handleSubmit(e=>{d.mutate(e)})(e)},t[14]=a,t[15]=d,t[16]=f):f=t[16];let p;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,q.jsx)(G,{htmlFor:`sentry-name`,children:`Data Source Name`}),t[17]=p):p=t[17];let m;t[18]===a?m=t[19]:(m=a.register(`name`),t[18]=a,t[19]=m);let h;t[20]===m?h=t[21]:(h=(0,q.jsx)(W,{id:`sentry-name`,placeholder:`My Sentry`,...m}),t[20]=m,t[21]=h);let g=a.formState.errors.name?.message,_;t[22]===g?_=t[23]:(_=(0,q.jsx)(Z,{message:g}),t[22]=g,t[23]=_);let v;t[24]!==h||t[25]!==_?(v=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[p,h,_]}),t[24]=h,t[25]=_,t[26]=v):v=t[26];let y;t[27]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,q.jsx)(G,{htmlFor:`sentry-organizationSlug`,children:`Organization Slug`}),t[27]=y):y=t[27];let b;t[28]===a?b=t[29]:(b=a.register(`organizationSlug`),t[28]=a,t[29]=b);let x;t[30]===b?x=t[31]:(x=(0,q.jsx)(W,{id:`sentry-organizationSlug`,placeholder:`acme`,...b}),t[30]=b,t[31]=x);let S=a.formState.errors.organizationSlug?.message,C;t[32]===S?C=t[33]:(C=(0,q.jsx)(Z,{message:S}),t[32]=S,t[33]=C);let w;t[34]!==x||t[35]!==C?(w=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[y,x,C]}),t[34]=x,t[35]=C,t[36]=w):w=t[36];let T;t[37]===Symbol.for(`react.memo_cache_sentinel`)?(T=(0,q.jsx)(G,{htmlFor:`sentry-projectSlug`,children:`Project Slug (optional)`}),t[37]=T):T=t[37];let E;t[38]===a?E=t[39]:(E=a.register(`projectSlug`),t[38]=a,t[39]=E);let D;t[40]===E?D=t[41]:(D=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[T,(0,q.jsx)(W,{id:`sentry-projectSlug`,placeholder:`frontend`,...E})]}),t[40]=E,t[41]=D);let O;t[42]===Symbol.for(`react.memo_cache_sentinel`)?(O=(0,q.jsx)(G,{htmlFor:`sentry-authToken`,children:`Auth Token`}),t[42]=O):O=t[42];let k;t[43]===a?k=t[44]:(k=a.register(`authToken`),t[43]=a,t[44]=k);let A;t[45]===k?A=t[46]:(A=(0,q.jsx)(W,{id:`sentry-authToken`,type:`password`,placeholder:`sntrys_...`,...k}),t[45]=k,t[46]=A);let j=a.formState.errors.authToken?.message,M;t[47]===j?M=t[48]:(M=(0,q.jsx)(Z,{message:j}),t[47]=j,t[48]=M);let N;t[49]!==A||t[50]!==M?(N=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[O,A,M]}),t[49]=A,t[50]=M,t[51]=N):N=t[51];let P;t[52]===Symbol.for(`react.memo_cache_sentinel`)?(P=(0,q.jsx)(G,{htmlFor:`sentry-apiBaseUrl`,children:`API Base URL (optional)`}),t[52]=P):P=t[52];let F;t[53]===a?F=t[54]:(F=a.register(`apiBaseUrl`),t[53]=a,t[54]=F);let I;t[55]===F?I=t[56]:(I=(0,q.jsx)(W,{id:`sentry-apiBaseUrl`,placeholder:`https://sentry.io/api/0`,...F}),t[55]=F,t[56]=I);let L=a.formState.errors.apiBaseUrl?.message,R;t[57]===L?R=t[58]:(R=(0,q.jsx)(Z,{message:L}),t[57]=L,t[58]=R);let z;t[59]!==I||t[60]!==R?(z=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[P,I,R]}),t[59]=I,t[60]=R,t[61]=z):z=t[61];let B;t[62]===d.isPending?B=t[63]:(B=(0,q.jsx)(Zt,{idleLabel:`Create Data Source`,isPending:d.isPending,pendingLabel:`Creating...`}),t[62]=d.isPending,t[63]=B);let V;return t[64]!==v||t[65]!==w||t[66]!==D||t[67]!==N||t[68]!==z||t[69]!==B||t[70]!==f?(V=(0,q.jsxs)(`form`,{onSubmit:f,className:`space-y-4`,children:[v,w,D,N,z,B]}),t[64]=v,t[65]=w,t[66]=D,t[67]=N,t[68]=z,t[69]=B,t[70]=f,t[71]=V):V=t[71],V}function Pr(e){return{id:`temp-${crypto.randomUUID()}`,provider:`sentry`,name:e.name,status:`active`,errorMessage:null,lastUsedAt:null,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}}var Fr=R({account:H().min(1,`Account identifier is required`),database:H().min(1,`Database is required`),name:H().min(1,`Name is required`),password:H().min(1,`Password is required`),role:H().optional(),schema:H().optional(),username:H().min(1,`Username is required`),warehouse:H().min(1,`Warehouse is required`)});function Ir(e){return e?.trim()||void 0}function Lr(e){let t=(0,K.c)(108),{onSuccess:n,organizationId:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i={defaultValues:{account:``,database:``,name:``,password:``,role:``,schema:`PUBLIC`,username:``,warehouse:``},resolver:ge(Fr)},t[0]=i):i=t[0];let a=he(i),o;t[1]===r?o=t[2]:(o=async e=>{let t={account:e.account.trim(),database:e.database.trim(),password:e.password,role:Ir(e.role),schema:Ir(e.schema),type:`snowflake`,username:e.username.trim(),warehouse:e.warehouse.trim()};return oe({organizationId:r,provider:`snowflake`,name:e.name.trim(),credentials:t})},t[1]=r,t[2]=o);let s;t[3]===a.setError?s=t[4]:(s=e=>{Qt(e,a.setError,`name`)},t[3]=a.setError,t[4]=s);let c;t[5]===n?c=t[6]:(c=e=>{n(e.dataSource.id)},t[5]=n,t[6]=c);let l;t[7]===r?l=t[8]:(l=ce(r),t[7]=r,t[8]=l);let u;t[9]!==o||t[10]!==s||t[11]!==c||t[12]!==l.queryKey?(u={createOptimisticItem:Rr,mutationFn:o,onError:s,onSuccess:c,queryKey:l.queryKey,successMessage:`Data source created successfully`},t[9]=o,t[10]=s,t[11]=c,t[12]=l.queryKey,t[13]=u):u=t[13];let d=ee(u),f;t[14]===d?f=t[15]:(f=e=>{d.mutate(e)},t[14]=d,t[15]=f);let p=f,m;t[16]!==a||t[17]!==p?(m=e=>{a.handleSubmit(p)(e)},t[16]=a,t[17]=p,t[18]=m):m=t[18];let h;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,q.jsx)(G,{htmlFor:`snowflake-name`,children:`Data Source Name`}),t[19]=h):h=t[19];let g;t[20]===a?g=t[21]:(g=a.register(`name`),t[20]=a,t[21]=g);let _;t[22]===g?_=t[23]:(_=(0,q.jsx)(W,{id:`snowflake-name`,placeholder:`Snowflake Production`,...g}),t[22]=g,t[23]=_);let v=a.formState.errors.name?.message,y;t[24]===v?y=t[25]:(y=(0,q.jsx)(Z,{message:v}),t[24]=v,t[25]=y);let b;t[26]!==_||t[27]!==y?(b=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[h,_,y]}),t[26]=_,t[27]=y,t[28]=b):b=t[28];let x;t[29]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,q.jsx)(G,{htmlFor:`snowflake-account`,children:`Account Identifier`}),t[29]=x):x=t[29];let S;t[30]===a?S=t[31]:(S=a.register(`account`),t[30]=a,t[31]=S);let C;t[32]===S?C=t[33]:(C=(0,q.jsx)(W,{id:`snowflake-account`,placeholder:`xy12345.us-east-1`,...S}),t[32]=S,t[33]=C);let w=a.formState.errors.account?.message,T;t[34]===w?T=t[35]:(T=(0,q.jsx)(Z,{message:w}),t[34]=w,t[35]=T);let E;t[36]!==C||t[37]!==T?(E=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[x,C,T]}),t[36]=C,t[37]=T,t[38]=E):E=t[38];let D;t[39]===Symbol.for(`react.memo_cache_sentinel`)?(D=(0,q.jsx)(G,{htmlFor:`snowflake-warehouse`,children:`Warehouse`}),t[39]=D):D=t[39];let O;t[40]===a?O=t[41]:(O=a.register(`warehouse`),t[40]=a,t[41]=O);let k;t[42]===O?k=t[43]:(k=(0,q.jsx)(W,{id:`snowflake-warehouse`,placeholder:`ANALYTICS_WH`,...O}),t[42]=O,t[43]=k);let A=a.formState.errors.warehouse?.message,j;t[44]===A?j=t[45]:(j=(0,q.jsx)(Z,{message:A}),t[44]=A,t[45]=j);let M;t[46]!==k||t[47]!==j?(M=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[D,k,j]}),t[46]=k,t[47]=j,t[48]=M):M=t[48];let N;t[49]===Symbol.for(`react.memo_cache_sentinel`)?(N=(0,q.jsx)(G,{htmlFor:`snowflake-database`,children:`Database`}),t[49]=N):N=t[49];let P;t[50]===a?P=t[51]:(P=a.register(`database`),t[50]=a,t[51]=P);let F;t[52]===P?F=t[53]:(F=(0,q.jsx)(W,{id:`snowflake-database`,placeholder:`ANALYTICS`,...P}),t[52]=P,t[53]=F);let I=a.formState.errors.database?.message,L;t[54]===I?L=t[55]:(L=(0,q.jsx)(Z,{message:I}),t[54]=I,t[55]=L);let R;t[56]!==F||t[57]!==L?(R=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[N,F,L]}),t[56]=F,t[57]=L,t[58]=R):R=t[58];let z;t[59]!==M||t[60]!==R?(z=(0,q.jsxs)(`div`,{className:`grid grid-cols-2 gap-4`,children:[M,R]}),t[59]=M,t[60]=R,t[61]=z):z=t[61];let B;t[62]===Symbol.for(`react.memo_cache_sentinel`)?(B=(0,q.jsx)(G,{htmlFor:`snowflake-schema`,children:`Schema`}),t[62]=B):B=t[62];let V;t[63]===a?V=t[64]:(V=a.register(`schema`),t[63]=a,t[64]=V);let H;t[65]===V?H=t[66]:(H=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[B,(0,q.jsx)(W,{id:`snowflake-schema`,placeholder:`PUBLIC`,...V})]}),t[65]=V,t[66]=H);let te;t[67]===Symbol.for(`react.memo_cache_sentinel`)?(te=(0,q.jsx)(G,{htmlFor:`snowflake-role`,children:`Role`}),t[67]=te):te=t[67];let ne;t[68]===a?ne=t[69]:(ne=a.register(`role`),t[68]=a,t[69]=ne);let U;t[70]===ne?U=t[71]:(U=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[te,(0,q.jsx)(W,{id:`snowflake-role`,placeholder:`ONEQUERY_READONLY`,...ne})]}),t[70]=ne,t[71]=U);let re;t[72]!==H||t[73]!==U?(re=(0,q.jsxs)(`div`,{className:`grid grid-cols-2 gap-4`,children:[H,U]}),t[72]=H,t[73]=U,t[74]=re):re=t[74];let ie;t[75]===Symbol.for(`react.memo_cache_sentinel`)?(ie=(0,q.jsx)(G,{htmlFor:`snowflake-username`,children:`Username`}),t[75]=ie):ie=t[75];let ae;t[76]===a?ae=t[77]:(ae=a.register(`username`),t[76]=a,t[77]=ae);let se;t[78]===ae?se=t[79]:(se=(0,q.jsx)(W,{id:`snowflake-username`,placeholder:`ONEQUERY_READER`,...ae}),t[78]=ae,t[79]=se);let le=a.formState.errors.username?.message,ue;t[80]===le?ue=t[81]:(ue=(0,q.jsx)(Z,{message:le}),t[80]=le,t[81]=ue);let de;t[82]!==se||t[83]!==ue?(de=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[ie,se,ue]}),t[82]=se,t[83]=ue,t[84]=de):de=t[84];let fe;t[85]===Symbol.for(`react.memo_cache_sentinel`)?(fe=(0,q.jsx)(G,{htmlFor:`snowflake-password`,children:`Password`}),t[85]=fe):fe=t[85];let pe;t[86]===a?pe=t[87]:(pe=a.register(`password`),t[86]=a,t[87]=pe);let me;t[88]===pe?me=t[89]:(me=(0,q.jsx)(W,{id:`snowflake-password`,type:`password`,...pe}),t[88]=pe,t[89]=me);let _e=a.formState.errors.password?.message,ve;t[90]===_e?ve=t[91]:(ve=(0,q.jsx)(Z,{message:_e}),t[90]=_e,t[91]=ve);let ye;t[92]!==me||t[93]!==ve?(ye=(0,q.jsxs)(`div`,{className:`space-y-2`,children:[fe,me,ve]}),t[92]=me,t[93]=ve,t[94]=ye):ye=t[94];let be;t[95]!==de||t[96]!==ye?(be=(0,q.jsxs)(`div`,{className:`grid grid-cols-2 gap-4`,children:[de,ye]}),t[95]=de,t[96]=ye,t[97]=be):be=t[97];let xe;t[98]===d.isPending?xe=t[99]:(xe=(0,q.jsx)(Zt,{idleLabel:`Create Data Source`,isPending:d.isPending,pendingLabel:`Creating...`}),t[98]=d.isPending,t[99]=xe);let Se;return t[100]!==b||t[101]!==E||t[102]!==z||t[103]!==re||t[104]!==be||t[105]!==xe||t[106]!==m?(Se=(0,q.jsxs)(`form`,{onSubmit:m,className:`space-y-4`,children:[b,E,z,re,be,xe]}),t[100]=b,t[101]=E,t[102]=z,t[103]=re,t[104]=be,t[105]=xe,t[106]=m,t[107]=Se):Se=t[107],Se}function Rr(e){return{id:`temp-${crypto.randomUUID()}`,provider:`snowflake`,name:e.name,status:`active`,useAsDataSource:!0,errorMessage:null,lastUsedAt:null,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}}function zr(e){return e.requestedProvider&&e.providerIds.includes(e.requestedProvider)?e.requestedProvider:e.initialProvider&&e.providerIds.includes(e.initialProvider)?e.initialProvider:e.providerIds.includes(`postgres`)?Ht:e.providerIds[0]??``}function Br(e){return e===`ga`||e===`bigquery`}function Vr(e){let{organizationId:t,onSuccess:n,provider:r}=e,i=r.id,a={organizationId:t,onSuccess:n};switch(r.dashboardCredentialForm){case`database`:if(er(i))return(0,q.jsx)(lr,{...a,provider:i},i);break;case`mongodb`:return(0,q.jsx)(Dr,{...a},i);case`snowflake`:return(0,q.jsx)(Lr,{...a},i);case`google_service_account`:if(Br(i))return(0,q.jsx)(qn,{...a,provider:i},i);break;case`amplitude`:return(0,q.jsx)(nn,{...a},i);case`laminar`:return(0,q.jsx)(vr,{...a},i);case`cloudflare_workers_observability`:return(0,q.jsx)(an,{...a},i);case`aws_athena_connector`:return(0,q.jsx)(cn,{...a},i);case`mixpanel`:return(0,q.jsx)(Cr,{...a},i);case`sentry`:return(0,q.jsx)(Nr,{...a},i);case`posthog`:return(0,q.jsx)(Ar,{...a},i);case`github`:return(0,q.jsx)(fr,{...a},i)}return(0,q.jsx)(gr,{provider:r,organizationId:t,onSuccess:n},i)}function Hr(e){let t=(0,K.c)(58),[n,r]=(0,X.useState)(null),i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=se(),t[0]=i):i=t[0];let a=D(i),o,s,c,l,u,d,f,p,m,v,b,x;if(t[1]!==e.className||t[2]!==e.initialProvider||t[3]!==a.data?.providers||t[4]!==a.error||t[5]!==a.isError||t[6]!==a.isPending||t[7]!==n){x=Symbol.for(`react.early_return_sentinel`);bb0:{let i=a.data?.providers??[],S=Ut(i),C=zr({initialProvider:e.initialProvider,requestedProvider:n,providerIds:S.map(Wr)});c=S.find(e=>e.id===C);let w=e=>{e&&Wt(e,i)&&r(e)},T=e.className?`space-y-4 ${e.className}`:`space-y-4`;if(a.isPending){let e;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Loading source providers...`}),t[20]=e):e=t[20];let n;t[21]===T?n=t[22]:(n=(0,q.jsx)(`div`,{className:T,children:e}),t[21]=T,t[22]=n),x=n;break bb0}if(a.isError){let e;t[23]===a.error.message?e=t[24]:(e=(0,q.jsx)(`p`,{className:`text-sm text-destructive`,children:a.error.message}),t[23]=a.error.message,t[24]=e);let n;t[25]!==T||t[26]!==e?(n=(0,q.jsx)(`div`,{className:T,children:e}),t[25]=T,t[26]=e,t[27]=n):n=t[27],x=n;break bb0}if(!c){let e;t[28]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No connectable source providers are available.`}),t[28]=e):e=t[28];let n;t[29]===T?n=t[30]:(n=(0,q.jsx)(`div`,{className:T,children:e}),t[29]=T,t[30]=n),x=n;break bb0}b=T,m=`space-y-2`,t[31]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,q.jsx)(G,{htmlFor:`type`,children:`Type`}),t[31]=v):v=t[31],s=y,u=[...S],d=C,f=w,t[32]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,q.jsx)(g,{id:`type`,children:(0,q.jsx)(h,{})}),t[32]=p):p=t[32],o=_,l=S.map(Ur)}t[1]=e.className,t[2]=e.initialProvider,t[3]=a.data?.providers,t[4]=a.error,t[5]=a.isError,t[6]=a.isPending,t[7]=n,t[8]=o,t[9]=s,t[10]=c,t[11]=l,t[12]=u,t[13]=d,t[14]=f,t[15]=p,t[16]=m,t[17]=v,t[18]=b,t[19]=x}else o=t[8],s=t[9],c=t[10],l=t[11],u=t[12],d=t[13],f=t[14],p=t[15],m=t[16],v=t[17],b=t[18],x=t[19];if(x!==Symbol.for(`react.early_return_sentinel`))return x;let S;t[33]!==o||t[34]!==l?(S=(0,q.jsx)(o,{children:l}),t[33]=o,t[34]=l,t[35]=S):S=t[35];let C;t[36]!==s||t[37]!==S||t[38]!==u||t[39]!==d||t[40]!==f||t[41]!==p?(C=(0,q.jsxs)(s,{items:u,value:d,onValueChange:f,children:[p,S]}),t[36]=s,t[37]=S,t[38]=u,t[39]=d,t[40]=f,t[41]=p,t[42]=C):C=t[42];let w;t[43]!==C||t[44]!==m||t[45]!==v?(w=(0,q.jsxs)(`div`,{className:m,children:[v,C]}),t[43]=C,t[44]=m,t[45]=v,t[46]=w):w=t[46];let T;t[47]===c?T=t[48]:(T=(0,q.jsx)(Vt,{provider:c}),t[47]=c,t[48]=T);let E;t[49]!==e.onSuccess||t[50]!==e.organizationId||t[51]!==c?(E=Vr({provider:c,organizationId:e.organizationId,onSuccess:e.onSuccess}),t[49]=e.onSuccess,t[50]=e.organizationId,t[51]=c,t[52]=E):E=t[52];let ee;return t[53]!==w||t[54]!==T||t[55]!==E||t[56]!==b?(ee=(0,q.jsxs)(`div`,{className:b,children:[w,T,E]}),t[53]=w,t[54]=T,t[55]=E,t[56]=b,t[57]=ee):ee=t[57],ee}function Ur(e){return(0,q.jsx)(v,{value:e.value,children:(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(e.icon,{className:`h-4 w-4`}),(0,q.jsx)(`span`,{children:e.label})]})},e.value)}function Wr(e){return e.id}export{dt as a,Gt as i,Ut as n,mt as o,Kt as r,Hr as t};