@datatechsolutions/ui 3.11.0 → 3.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/dist/astrlabe/index.js +108 -108
  2. package/dist/astrlabe/index.mjs +4 -4
  3. package/dist/astrlabe/workflow-canvas.js +4 -4
  4. package/dist/astrlabe/workflow-canvas.mjs +3 -3
  5. package/dist/{chunk-K4AJL4BH.mjs → chunk-3U3CIARA.mjs} +3 -3
  6. package/dist/{chunk-K4AJL4BH.mjs.map → chunk-3U3CIARA.mjs.map} +1 -1
  7. package/dist/{chunk-TCIK6WHT.mjs → chunk-7DZ2C5IN.mjs} +4 -4
  8. package/dist/{chunk-TCIK6WHT.mjs.map → chunk-7DZ2C5IN.mjs.map} +1 -1
  9. package/dist/{chunk-H475T2N7.js → chunk-APONR6ZM.js} +135 -135
  10. package/dist/{chunk-H475T2N7.js.map → chunk-APONR6ZM.js.map} +1 -1
  11. package/dist/{chunk-7MPIYSRH.js → chunk-BTMHQCDB.js} +36 -36
  12. package/dist/{chunk-7MPIYSRH.js.map → chunk-BTMHQCDB.js.map} +1 -1
  13. package/dist/{chunk-G52HXPSB.js → chunk-CLXEVSGB.js} +13 -13
  14. package/dist/{chunk-G52HXPSB.js.map → chunk-CLXEVSGB.js.map} +1 -1
  15. package/dist/{chunk-GTJGX7IZ.js → chunk-CVCMJJ56.js} +10 -10
  16. package/dist/{chunk-GTJGX7IZ.js.map → chunk-CVCMJJ56.js.map} +1 -1
  17. package/dist/{chunk-35O2X7WY.js → chunk-DPXCJVJT.js} +9 -9
  18. package/dist/{chunk-35O2X7WY.js.map → chunk-DPXCJVJT.js.map} +1 -1
  19. package/dist/{chunk-ZJMYLUZ2.mjs → chunk-E3NMVWRL.mjs} +4 -4
  20. package/dist/{chunk-ZJMYLUZ2.mjs.map → chunk-E3NMVWRL.mjs.map} +1 -1
  21. package/dist/{chunk-KTEEXEAX.mjs → chunk-I77TTBYO.mjs} +6 -6
  22. package/dist/{chunk-KTEEXEAX.mjs.map → chunk-I77TTBYO.mjs.map} +1 -1
  23. package/dist/{chunk-3US2QXEF.mjs → chunk-IHOCYBHM.mjs} +3 -3
  24. package/dist/{chunk-3US2QXEF.mjs.map → chunk-IHOCYBHM.mjs.map} +1 -1
  25. package/dist/{chunk-NM3YTQ26.mjs → chunk-K3LIDGMA.mjs} +3 -3
  26. package/dist/{chunk-NM3YTQ26.mjs.map → chunk-K3LIDGMA.mjs.map} +1 -1
  27. package/dist/{chunk-Z6FZQOTW.js → chunk-KDVZIDVF.js} +28 -28
  28. package/dist/{chunk-Z6FZQOTW.js.map → chunk-KDVZIDVF.js.map} +1 -1
  29. package/dist/{chunk-2AJ73ULK.mjs → chunk-LHAOIPYP.mjs} +3 -3
  30. package/dist/{chunk-2AJ73ULK.mjs.map → chunk-LHAOIPYP.mjs.map} +1 -1
  31. package/dist/{chunk-GKI74CPB.js → chunk-LM6BJOKX.js} +55 -55
  32. package/dist/{chunk-GKI74CPB.js.map → chunk-LM6BJOKX.js.map} +1 -1
  33. package/dist/{chunk-BO3RXG6M.js → chunk-MN777KLN.js} +45 -45
  34. package/dist/{chunk-BO3RXG6M.js.map → chunk-MN777KLN.js.map} +1 -1
  35. package/dist/{chunk-62BD4WLW.js → chunk-NW32BM3F.js} +34 -34
  36. package/dist/{chunk-62BD4WLW.js.map → chunk-NW32BM3F.js.map} +1 -1
  37. package/dist/{chunk-R3CGJK7D.mjs → chunk-O4DIKNNH.mjs} +3 -3
  38. package/dist/{chunk-R3CGJK7D.mjs.map → chunk-O4DIKNNH.mjs.map} +1 -1
  39. package/dist/{chunk-BCJATFZE.js → chunk-OD2AZBEX.js} +25 -25
  40. package/dist/{chunk-BCJATFZE.js.map → chunk-OD2AZBEX.js.map} +1 -1
  41. package/dist/{chunk-35P352JX.mjs → chunk-OKCEK7GH.mjs} +3 -3
  42. package/dist/{chunk-35P352JX.mjs.map → chunk-OKCEK7GH.mjs.map} +1 -1
  43. package/dist/{chunk-O2CUOJ74.js → chunk-OO4YMN4P.js} +4 -4
  44. package/dist/{chunk-O2CUOJ74.js.map → chunk-OO4YMN4P.js.map} +1 -1
  45. package/dist/{chunk-6TKCMQ75.js → chunk-OSXBMLZP.js} +68 -68
  46. package/dist/{chunk-6TKCMQ75.js.map → chunk-OSXBMLZP.js.map} +1 -1
  47. package/dist/{chunk-7V7WEXHS.mjs → chunk-Q6MMJYEG.mjs} +3 -3
  48. package/dist/{chunk-7V7WEXHS.mjs.map → chunk-Q6MMJYEG.mjs.map} +1 -1
  49. package/dist/{chunk-PHBZ3TXE.js → chunk-QASAHGLE.js} +4 -4
  50. package/dist/{chunk-PHBZ3TXE.js.map → chunk-QASAHGLE.js.map} +1 -1
  51. package/dist/{chunk-7D52TFVL.mjs → chunk-QDW3IJIL.mjs} +3 -3
  52. package/dist/{chunk-7D52TFVL.mjs.map → chunk-QDW3IJIL.mjs.map} +1 -1
  53. package/dist/{chunk-HUAWGBYL.mjs → chunk-QKWNQOJB.mjs} +3 -3
  54. package/dist/{chunk-HUAWGBYL.mjs.map → chunk-QKWNQOJB.mjs.map} +1 -1
  55. package/dist/{chunk-NRVV4PHB.mjs → chunk-S46LUR7O.mjs} +7 -7
  56. package/dist/{chunk-NRVV4PHB.mjs.map → chunk-S46LUR7O.mjs.map} +1 -1
  57. package/dist/{chunk-37FWIPYO.mjs → chunk-S4LHC5SF.mjs} +3 -3
  58. package/dist/{chunk-37FWIPYO.mjs.map → chunk-S4LHC5SF.mjs.map} +1 -1
  59. package/dist/{chunk-JTD3BBVI.js → chunk-SSKKTSMA.js} +35 -35
  60. package/dist/{chunk-JTD3BBVI.js.map → chunk-SSKKTSMA.js.map} +1 -1
  61. package/dist/{chunk-ZGVN23J4.js → chunk-TIJXCRM4.js} +3 -3
  62. package/dist/{chunk-ZGVN23J4.js.map → chunk-TIJXCRM4.js.map} +1 -1
  63. package/dist/{chunk-7KPMLHPR.mjs → chunk-VHU5FWFB.mjs} +3 -3
  64. package/dist/{chunk-7KPMLHPR.mjs.map → chunk-VHU5FWFB.mjs.map} +1 -1
  65. package/dist/index.js +663 -663
  66. package/dist/index.mjs +2 -2
  67. package/dist/platform/admin/index.js +10 -10
  68. package/dist/platform/admin/index.mjs +4 -4
  69. package/dist/platform/agents-workspace.js +7 -7
  70. package/dist/platform/agents-workspace.mjs +6 -6
  71. package/dist/platform/app-shell.js +4 -4
  72. package/dist/platform/app-shell.mjs +3 -3
  73. package/dist/platform/auth/index.js +22 -22
  74. package/dist/platform/auth/index.mjs +4 -4
  75. package/dist/platform/billing/index.js +4 -4
  76. package/dist/platform/billing/index.mjs +3 -3
  77. package/dist/platform/impersonation/index.js +4 -4
  78. package/dist/platform/impersonation/index.mjs +3 -3
  79. package/dist/platform/index.js +78 -78
  80. package/dist/platform/index.mjs +18 -18
  81. package/dist/platform/pages/index.js +471 -473
  82. package/dist/platform/pages/index.js.map +1 -1
  83. package/dist/platform/pages/index.mjs +173 -175
  84. package/dist/platform/pages/index.mjs.map +1 -1
  85. package/dist/platform/settings/index.js +7 -7
  86. package/dist/platform/settings/index.mjs +6 -6
  87. package/dist/platform/workflow-canvas-shell.js +5 -5
  88. package/dist/platform/workflow-canvas-shell.mjs +4 -4
  89. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/platform/pages/datasource-modal.tsx"],"names":["CircleStackIcon","ServerStackIcon","CloudIcon","ClockIcon","ShareIcon","KeyIcon","MagnifyingGlassIcon","jsx","jsxs","useState","Fragment","FormInput","ArrowLeftIcon","FormGrid","Button","CheckCircleIcon","XCircleIcon","GlassModal"],"mappings":"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","file":"chunk-62BD4WLW.js","sourcesContent":["import { useState, type FormEvent, type ReactNode } from 'react'\nimport {\n CircleStackIcon,\n ServerStackIcon,\n CloudIcon,\n ClockIcon,\n ShareIcon,\n KeyIcon,\n MagnifyingGlassIcon,\n ArrowLeftIcon,\n CheckCircleIcon,\n XCircleIcon,\n} from '@heroicons/react/24/outline'\nimport {\n GlassModal,\n FormGrid,\n FormInput,\n FormSelect,\n Button,\n} from '@ui/index'\n\n/* ─── Dialect catalog ─── */\n\ntype DialectCategory = {\n id: string\n labelKey: string\n icon: React.ComponentType<{ className?: string }>\n gradient: string\n dialects: DialectOption[]\n}\n\ntype DialectOption = {\n value: string\n label: string\n defaultPort?: number\n /** 'standard' = host/port/db, 'connection-string' = single URL, 'cloud' = project/dataset/key */\n formType: 'standard' | 'connection-string' | 'cloud-bigquery' | 'cloud-snowflake' | 'cloud-key' | 'vector-key'\n}\n\nconst DIALECT_CATEGORIES: DialectCategory[] = [\n {\n id: 'relational',\n labelKey: 'categoryRelational',\n icon: CircleStackIcon,\n gradient: 'from-blue-500 to-indigo-600',\n dialects: [\n { value: 'postgres', label: 'PostgreSQL', defaultPort: 5432, formType: 'standard' },\n { value: 'mysql', label: 'MySQL', defaultPort: 3306, formType: 'standard' },\n { value: 'mariadb', label: 'MariaDB', defaultPort: 3306, formType: 'standard' },\n { value: 'mssql', label: 'SQL Server', defaultPort: 1433, formType: 'standard' },\n { value: 'oracle', label: 'Oracle', defaultPort: 1521, formType: 'standard' },\n { value: 'db2', label: 'IBM Db2', defaultPort: 50000, formType: 'standard' },\n { value: 'cockroachdb', label: 'CockroachDB', defaultPort: 26257, formType: 'standard' },\n { value: 'timescaledb', label: 'TimescaleDB', defaultPort: 5432, formType: 'standard' },\n { value: 'sqlite', label: 'SQLite', formType: 'connection-string' },\n { value: 'duckdb', label: 'DuckDB', formType: 'connection-string' },\n ],\n },\n {\n id: 'nosql',\n labelKey: 'categoryNoSql',\n icon: ServerStackIcon,\n gradient: 'from-emerald-500 to-teal-600',\n dialects: [\n { value: 'mongodb', label: 'MongoDB', defaultPort: 27017, formType: 'connection-string' },\n { value: 'cassandra', label: 'Cassandra', defaultPort: 9042, formType: 'standard' },\n { value: 'scylladb', label: 'ScyllaDB', defaultPort: 9042, formType: 'standard' },\n { value: 'dynamodb', label: 'DynamoDB', formType: 'cloud-key' },\n { value: 'cosmosdb', label: 'CosmosDB', formType: 'connection-string' },\n { value: 'arangodb', label: 'ArangoDB', defaultPort: 8529, formType: 'standard' },\n ],\n },\n {\n id: 'warehouse',\n labelKey: 'categoryWarehouse',\n icon: CloudIcon,\n gradient: 'from-purple-500 to-violet-600',\n dialects: [\n { value: 'bigquery', label: 'BigQuery', formType: 'cloud-bigquery' },\n { value: 'snowflake', label: 'Snowflake', formType: 'cloud-snowflake' },\n { value: 'clickhouse', label: 'ClickHouse', defaultPort: 8123, formType: 'standard' },\n ],\n },\n {\n id: 'timeseries',\n labelKey: 'categoryTimeSeries',\n icon: ClockIcon,\n gradient: 'from-sky-500 to-cyan-600',\n dialects: [\n { value: 'influxdb', label: 'InfluxDB', formType: 'cloud-key' },\n { value: 'timestream', label: 'Timestream', formType: 'cloud-key' },\n ],\n },\n {\n id: 'graph',\n labelKey: 'categoryGraph',\n icon: ShareIcon,\n gradient: 'from-pink-500 to-rose-600',\n dialects: [\n { value: 'neo4j', label: 'Neo4j', defaultPort: 7687, formType: 'standard' },\n { value: 'neptune', label: 'Neptune', formType: 'connection-string' },\n ],\n },\n {\n id: 'keyvalue',\n labelKey: 'categoryKeyValue',\n icon: KeyIcon,\n gradient: 'from-red-500 to-orange-600',\n dialects: [\n { value: 'redis', label: 'Redis', defaultPort: 6379, formType: 'standard' },\n ],\n },\n {\n id: 'search',\n labelKey: 'categorySearch',\n icon: MagnifyingGlassIcon,\n gradient: 'from-amber-500 to-yellow-600',\n dialects: [\n { value: 'elasticsearch', label: 'Elasticsearch', defaultPort: 9200, formType: 'standard' },\n { value: 'opensearch', label: 'OpenSearch', defaultPort: 9200, formType: 'standard' },\n { value: 'pinecone', label: 'Pinecone', formType: 'vector-key' },\n { value: 'qdrant', label: 'Qdrant', defaultPort: 6333, formType: 'standard' },\n { value: 'weaviate', label: 'Weaviate', defaultPort: 8080, formType: 'standard' },\n { value: 'milvus', label: 'Milvus', defaultPort: 19530, formType: 'standard' },\n { value: 'chromadb', label: 'ChromaDB', defaultPort: 8000, formType: 'standard' },\n ],\n },\n]\n\nfunction findDialect(value: string): DialectOption | undefined {\n for (const category of DIALECT_CATEGORIES) {\n const found = category.dialects.find((d) => d.value === value)\n if (found) return found\n }\n return undefined\n}\n\nfunction findCategory(dialectValue: string): DialectCategory | undefined {\n return DIALECT_CATEGORIES.find((c) => c.dialects.some((d) => d.value === dialectValue))\n}\n\n/* ─── Types ─── */\n\nexport type DatasourceFormData = {\n name: string\n dialect: string\n host?: string\n port?: number\n database?: string\n username?: string\n password?: string\n schema?: string\n ssl?: boolean\n readOnly?: boolean\n connectionString?: string\n projectId?: string\n dataset?: string\n keyFile?: string\n account?: string\n warehouse?: string\n region?: string\n bucket?: string\n token?: string\n apiKey?: string\n environment?: string\n index?: string\n url?: string\n /** Whitelist of tables the engine is allowed to query. Empty/undef =\n * allow every table the credential can see. */\n allowedTables?: string[]\n /** Columns the engine MUST NOT surface to workflows. Applied at the\n * driver layer — trying to SELECT a blocked column still fails. */\n blockedColumns?: string[]\n /** Max concurrent connections in the org's cached pool (default 5). */\n maxPoolSize?: number\n /** Query/connect timeout in ms (default 5000). */\n timeoutMs?: number\n /** When true, the driver hashes / masks fields tagged as PII before\n * returning rows to the workflow. */\n maskPii?: boolean\n}\n\ntype Labels = Record<string, string>\n\nexport type DatasourceFormModalProps = {\n open: boolean\n onClose: () => void\n labels: Labels\n onSave: (data: DatasourceFormData) => void\n}\n\n/* ─── Step 1: Category + dialect picker ─── */\n\n// Brand SVG lookup — must stay in sync with the same map in\n// `datasources-page-view.tsx`. When the dialect has a brand SVG the chip\n// shows it; otherwise we fall back to the generic stacked-disks Heroicon.\n// Same source folder (`/public/logos/datasources/`) as the cards on\n// `/datasources` so a user sees the same logo here and in the list.\nconst DIALECT_LOGO_SRC: Record<string, string> = {\n bigquery: '/logos/datasources/bigquery.svg',\n postgres: '/logos/datasources/postgres.svg',\n postgresql: '/logos/datasources/postgres.svg',\n mysql: '/logos/datasources/mysql.svg',\n mariadb: '/logos/datasources/mariadb.svg',\n snowflake: '/logos/datasources/snowflake.svg',\n mongodb: '/logos/datasources/mongodb.svg',\n redis: '/logos/datasources/redis.svg',\n clickhouse: '/logos/datasources/clickhouse.svg',\n elasticsearch: '/logos/datasources/elasticsearch.svg',\n duckdb: '/logos/datasources/duckdb.svg',\n sqlite: '/logos/datasources/sqlite.svg',\n oracle: '/logos/datasources/oracle.svg',\n mssql: '/logos/datasources/mssql.svg',\n sqlserver: '/logos/datasources/mssql.svg',\n cassandra: '/logos/datasources/cassandra.svg',\n dynamodb: '/logos/datasources/dynamodb.svg',\n cockroach: '/logos/datasources/cockroachdb.svg',\n cockroachdb: '/logos/datasources/cockroachdb.svg',\n supabase: '/logos/datasources/supabase.svg',\n firebase: '/logos/datasources/firebase.svg',\n neo4j: '/logos/datasources/neo4j.svg',\n // AWS managed services (icepanel.io / official AWS Architecture Icons)\n neptune: '/logos/datasources/neptune.svg',\n timestream: '/logos/datasources/timestream.svg',\n opensearch: '/logos/datasources/opensearch.svg',\n}\n\nfunction DialectPicker({\n labels,\n onSelect,\n}: {\n labels: Labels\n onSelect: (dialect: string) => void\n}) {\n return (\n <div className=\"space-y-6\">\n {DIALECT_CATEGORIES.map((category) => (\n <div key={category.id}>\n <div className=\"mb-2 flex items-center gap-2\">\n <div className={`flex h-7 w-7 items-center justify-center rounded-lg bg-gradient-to-br ${category.gradient}`}>\n <category.icon className=\"h-4 w-4 text-white\" />\n </div>\n <span className=\"text-sm font-semibold text-slate-700 dark:text-slate-200\">\n {labels[category.labelKey] ?? category.id}\n </span>\n </div>\n <div className=\"grid grid-cols-2 gap-2 sm:grid-cols-3\">\n {category.dialects.map((dialect) => {\n const logoSrc = DIALECT_LOGO_SRC[dialect.value.toLowerCase()]\n return (\n <button\n key={dialect.value}\n type=\"button\"\n onClick={() => onSelect(dialect.value)}\n className=\"liquid-surface group flex items-center gap-2 rounded-xl px-3 py-2.5 text-left text-sm font-medium text-slate-700 transition-all hover:border-amber-400/60 hover:bg-amber-50/50 hover:text-amber-700 active:scale-[0.97] focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1 dark:text-slate-300 dark:hover:border-amber-400/40 dark:hover:bg-amber-500/10 dark:hover:text-amber-300\"\n >\n {logoSrc ? (\n <img\n src={logoSrc}\n alt={dialect.label}\n className=\"h-4 w-4 shrink-0 object-contain\"\n />\n ) : (\n <CircleStackIcon className=\"h-4 w-4 shrink-0 text-slate-400 transition-colors group-hover:text-amber-500 dark:text-slate-500\" />\n )}\n {dialect.label}\n </button>\n )\n })}\n </div>\n </div>\n ))}\n </div>\n )\n}\n\n/* ─── Step 2: Connection form ─── */\n\nfunction ConnectionForm({\n dialect,\n labels,\n onBack,\n onSubmit,\n}: {\n dialect: DialectOption\n labels: Labels\n onBack: () => void\n onSubmit: (data: DatasourceFormData) => void\n}) {\n const [testStatus, setTestStatus] = useState<'idle' | 'testing' | 'success' | 'failed'>('idle')\n const category = findCategory(dialect.value)\n\n function handleSubmit(event: FormEvent) {\n event.preventDefault()\n const formData = new FormData(event.currentTarget as HTMLFormElement)\n const data: DatasourceFormData = {\n name: String(formData.get('name') ?? '').trim(),\n dialect: dialect.value,\n }\n\n // Collect all possible fields\n for (const key of ['host', 'database', 'username', 'password', 'schema', 'connectionString', 'projectId', 'dataset', 'keyFile', 'account', 'warehouse', 'region', 'bucket', 'token', 'apiKey', 'environment', 'index', 'url'] as const) {\n const val = String(formData.get(key) ?? '').trim()\n if (val) (data as Record<string, unknown>)[key] = val\n }\n\n const port = String(formData.get('port') ?? '').trim()\n if (port) data.port = Number(port)\n\n data.ssl = formData.get('ssl') === 'on'\n data.readOnly = formData.get('readOnly') === 'on'\n\n // Advanced — pool size, timeout, allowlist/blocklist\n const maxPoolSize = String(formData.get('maxPoolSize') ?? '').trim()\n if (maxPoolSize) {\n const parsed = Number(maxPoolSize)\n if (Number.isFinite(parsed) && parsed > 0) data.maxPoolSize = parsed\n }\n const timeoutMs = String(formData.get('timeoutMs') ?? '').trim()\n if (timeoutMs) {\n const parsed = Number(timeoutMs)\n if (Number.isFinite(parsed) && parsed > 0) data.timeoutMs = parsed\n }\n const allowedTables = splitList(String(formData.get('allowedTables') ?? ''))\n if (allowedTables.length > 0) data.allowedTables = allowedTables\n const blockedColumns = splitList(String(formData.get('blockedColumns') ?? ''))\n if (blockedColumns.length > 0) data.blockedColumns = blockedColumns\n\n onSubmit(data)\n }\n\n function handleTestConnection() {\n setTestStatus('testing')\n // Simulate test connection — real implementation would call API\n setTimeout(() => {\n setTestStatus('success')\n setTimeout(() => setTestStatus('idle'), 3000)\n }, 1500)\n }\n\n function renderFields(): ReactNode {\n switch (dialect.formType) {\n case 'standard':\n return (\n <>\n <FormInput name=\"host\" label={labels.fieldHost} placeholder={labels.fieldHostPlaceholder} required />\n <FormInput name=\"port\" label={labels.fieldPort} type=\"number\" defaultValue={dialect.defaultPort} />\n <FormInput name=\"database\" label={labels.fieldDatabase} placeholder={labels.fieldDatabasePlaceholder} required />\n <FormInput name=\"username\" label={labels.fieldUsername} placeholder={labels.fieldUsernamePlaceholder} />\n <FormInput name=\"password\" label={labels.fieldPassword} type=\"password\" placeholder={labels.fieldPasswordPlaceholder} />\n <FormInput name=\"schema\" label={labels.fieldSchema} placeholder={labels.fieldSchemaPlaceholder} />\n </>\n )\n\n case 'connection-string':\n return (\n <div className=\"col-span-full\">\n <FormInput name=\"connectionString\" label={labels.fieldConnectionString} placeholder={labels.fieldConnectionStringPlaceholder} required />\n </div>\n )\n\n case 'cloud-bigquery':\n return (\n <>\n <FormInput name=\"projectId\" label={labels.fieldProjectId} placeholder={labels.fieldProjectIdPlaceholder} required />\n <FormInput name=\"dataset\" label={labels.fieldDataset} placeholder={labels.fieldDatasetPlaceholder} required />\n <div className=\"col-span-full\">\n <FormInput name=\"keyFile\" label={labels.fieldKeyFile} placeholder={labels.fieldKeyFilePlaceholder} />\n </div>\n </>\n )\n\n case 'cloud-snowflake':\n return (\n <>\n <FormInput name=\"account\" label={labels.fieldAccount} placeholder={labels.fieldAccountPlaceholder} required />\n <FormInput name=\"warehouse\" label={labels.fieldWarehouse} placeholder={labels.fieldWarehousePlaceholder} required />\n <FormInput name=\"database\" label={labels.fieldDatabase} placeholder={labels.fieldDatabasePlaceholder} required />\n <FormInput name=\"username\" label={labels.fieldUsername} placeholder={labels.fieldUsernamePlaceholder} required />\n <FormInput name=\"password\" label={labels.fieldPassword} type=\"password\" placeholder={labels.fieldPasswordPlaceholder} />\n <FormInput name=\"schema\" label={labels.fieldSchema} placeholder={labels.fieldSchemaPlaceholder} />\n </>\n )\n\n case 'cloud-key':\n return (\n <>\n <FormInput name=\"region\" label={labels.fieldRegion} placeholder={labels.fieldRegionPlaceholder} required />\n <FormInput name=\"token\" label={labels.fieldToken} type=\"password\" placeholder={labels.fieldTokenPlaceholder} required />\n <FormInput name=\"bucket\" label={labels.fieldBucket} placeholder={labels.fieldBucketPlaceholder} />\n </>\n )\n\n case 'vector-key':\n return (\n <>\n <FormInput name=\"apiKey\" label={labels.fieldApiKey} type=\"password\" placeholder={labels.fieldApiKeyPlaceholder} required />\n <FormInput name=\"environment\" label={labels.fieldEnvironment} placeholder={labels.fieldEnvironmentPlaceholder} required />\n <FormInput name=\"index\" label={labels.fieldIndex} placeholder={labels.fieldIndexPlaceholder} />\n </>\n )\n }\n }\n\n return (\n <form onSubmit={handleSubmit} className=\"space-y-6\">\n {/* Back button + dialect badge */}\n <div className=\"flex items-center gap-3\">\n <button\n type=\"button\"\n onClick={onBack}\n className=\"flex h-8 w-8 items-center justify-center rounded-lg text-slate-400 transition-colors hover:bg-white/45 hover:text-slate-700 dark:hover:bg-white/10 dark:hover:text-slate-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1\"\n >\n <ArrowLeftIcon className=\"h-4 w-4\" />\n </button>\n <div className=\"flex items-center gap-2\">\n <div className={`flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br ${category?.gradient ?? 'from-slate-400 to-slate-500'}`}>\n {category ? <category.icon className=\"h-4 w-4 text-white\" /> : <CircleStackIcon className=\"h-4 w-4 text-white\" />}\n </div>\n <div>\n <span className=\"text-sm font-semibold text-slate-900 dark:text-white\">{dialect.label}</span>\n <span className=\"ml-2 text-xs text-slate-500 dark:text-slate-400\">{labels[category?.labelKey ?? ''] ?? ''}</span>\n </div>\n </div>\n </div>\n\n {/* Name field — always present */}\n <FormInput name=\"name\" label={labels.fieldName} placeholder={labels.fieldNamePlaceholder} required />\n\n {/* Dynamic fields per dialect form type */}\n <FormGrid>\n {renderFields()}\n </FormGrid>\n\n {/* Toggles */}\n <div className=\"flex flex-wrap items-center gap-6 pt-2\">\n <label className=\"flex items-center gap-2 text-sm text-slate-700 dark:text-slate-300\">\n <input\n type=\"checkbox\"\n name=\"ssl\"\n defaultChecked\n className=\"h-4 w-4 rounded border-slate-300 text-amber-600 focus:ring-2 focus:ring-amber-500/70 focus:ring-offset-1 dark:border-white/15 dark:bg-white/[0.08]\"\n />\n {labels.fieldSsl}\n </label>\n <label className=\"flex items-center gap-2 text-sm text-slate-700 dark:text-slate-300\">\n <input\n type=\"checkbox\"\n name=\"readOnly\"\n defaultChecked\n className=\"h-4 w-4 rounded border-slate-300 text-amber-600 focus:ring-2 focus:ring-amber-500/70 focus:ring-offset-1 dark:border-white/15 dark:bg-white/[0.08]\"\n />\n {labels.fieldReadOnly}\n </label>\n </div>\n <p className=\"text-xs text-slate-500 dark:text-slate-400\">{labels.fieldReadOnlyHelp}</p>\n\n {/* Advanced — pool, timeout, table/column governance. Collapsed by\n default because the defaults (pool=5, timeout=5s, no allow/block)\n are correct for almost every datasource. Shown when an admin\n needs to lock down a specific table or raise the timeout for\n a slow analytic warehouse. */}\n <details className=\"liquid-surface rounded-xl p-3\">\n <summary className=\"cursor-pointer text-sm font-medium text-slate-700 dark:text-slate-300\">\n {labels.advancedToggle ?? 'Governance & performance'}\n </summary>\n <div className=\"mt-3 space-y-3\">\n <FormGrid>\n <FormInput\n name=\"maxPoolSize\"\n label={labels.fieldMaxPoolSize ?? 'Max pool size'}\n type=\"number\"\n min={1}\n max={100}\n placeholder=\"5\"\n />\n <FormInput\n name=\"timeoutMs\"\n label={labels.fieldTimeoutMs ?? 'Timeout (ms)'}\n type=\"number\"\n min={100}\n placeholder=\"5000\"\n />\n </FormGrid>\n <FormInput\n name=\"allowedTables\"\n label={labels.fieldAllowedTables ?? 'Allowed tables (comma-separated)'}\n placeholder=\"stations, current_prices, competitor_prices\"\n />\n <p className=\"text-xs text-slate-500 dark:text-slate-400\">\n {labels.fieldAllowedTablesHelp\n ?? 'Leave blank to allow every table the credential can see. Otherwise only the listed tables are queryable from workflows.'}\n </p>\n <FormInput\n name=\"blockedColumns\"\n label={labels.fieldBlockedColumns ?? 'Blocked columns (comma-separated)'}\n placeholder=\"customers.ssn, employees.salary\"\n />\n <p className=\"text-xs text-slate-500 dark:text-slate-400\">\n {labels.fieldBlockedColumnsHelp\n ?? 'Columns the driver must never surface, even if referenced by a workflow. Use table.column notation for specificity.'}\n </p>\n </div>\n </details>\n\n {/* Actions */}\n <div className=\"flex items-center gap-3 border-t liquid-divider pt-5\">\n <Button\n type=\"button\"\n size=\"sm\"\n color=\"zinc\"\n onClick={handleTestConnection}\n disabled={testStatus === 'testing'}\n >\n {testStatus === 'testing' ? labels.testing : labels.testConnection}\n </Button>\n\n {testStatus === 'success' && (\n <span className=\"flex items-center gap-1 text-xs font-medium text-emerald-600 dark:text-emerald-400\">\n <CheckCircleIcon className=\"h-4 w-4\" />\n {labels.connectionSuccess}\n </span>\n )}\n {testStatus === 'failed' && (\n <span className=\"flex items-center gap-1 text-xs font-medium text-red-600 dark:text-red-400\">\n <XCircleIcon className=\"h-4 w-4\" />\n {labels.connectionFailed}\n </span>\n )}\n\n <div className=\"flex-1\" />\n\n <Button type=\"submit\" size=\"sm\" color=\"amber\">\n {labels.save}\n </Button>\n </div>\n </form>\n )\n}\n\n/* ─── Form Modal ─── */\n\nexport function DatasourceFormModal({ open, onClose, labels, onSave }: DatasourceFormModalProps) {\n const [selectedDialect, setSelectedDialect] = useState<string | null>(null)\n const dialect = selectedDialect ? findDialect(selectedDialect) : null\n\n function handleClose() {\n setSelectedDialect(null)\n onClose()\n }\n\n function handleSave(data: DatasourceFormData) {\n onSave(data)\n handleClose()\n }\n\n return (\n <GlassModal\n open={open}\n onClose={handleClose}\n title={labels.createTitle}\n subtitle={dialect ? labels.stepConfigure : labels.stepSelectType}\n icon={<CircleStackIcon className=\"h-5 w-5\" />}\n gradient=\"from-amber-500 to-orange-600\"\n maxWidth=\"3xl\"\n >\n {dialect ? (\n <ConnectionForm\n dialect={dialect}\n labels={labels}\n onBack={() => setSelectedDialect(null)}\n onSubmit={handleSave}\n />\n ) : (\n <DialectPicker labels={labels} onSelect={setSelectedDialect} />\n )}\n </GlassModal>\n )\n}\n\n/* ─── Modal (for /datasources page) ─── */\n\nexport type DatasourceModalProps = {\n open: boolean\n onClose: () => void\n labels: Labels\n onSave: (data: DatasourceFormData) => void\n}\n\nexport function DatasourceModal({ open, onClose, labels, onSave }: DatasourceModalProps) {\n const [selectedDialect, setSelectedDialect] = useState<string | null>(null)\n const dialect = selectedDialect ? findDialect(selectedDialect) : null\n\n function handleClose() {\n setSelectedDialect(null)\n onClose()\n }\n\n function handleSave(data: DatasourceFormData) {\n onSave(data)\n handleClose()\n }\n\n return (\n <GlassModal\n open={open}\n onClose={handleClose}\n title={labels.createTitle}\n subtitle={dialect ? labels.stepConfigure : labels.stepSelectType}\n icon={<CircleStackIcon className=\"h-5 w-5\" />}\n gradient=\"from-amber-500 to-orange-600\"\n maxWidth=\"3xl\"\n >\n {dialect ? (\n <ConnectionForm\n dialect={dialect}\n labels={labels}\n onBack={() => setSelectedDialect(null)}\n onSubmit={handleSave}\n />\n ) : (\n <DialectPicker labels={labels} onSelect={setSelectedDialect} />\n )}\n </GlassModal>\n )\n}\n\nexport { DIALECT_CATEGORIES, findDialect, findCategory }\n\nfunction splitList(raw: string): string[] {\n return raw\n .split(',')\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0)\n}\n"]}
1
+ {"version":3,"sources":["../src/platform/pages/datasource-modal.tsx"],"names":["CircleStackIcon","ServerStackIcon","CloudIcon","ClockIcon","ShareIcon","KeyIcon","MagnifyingGlassIcon","jsx","jsxs","useState","Fragment","FormInput","ArrowLeftIcon","FormGrid","Button","CheckCircleIcon","XCircleIcon","GlassModal"],"mappings":"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","file":"chunk-NW32BM3F.js","sourcesContent":["import { useState, type FormEvent, type ReactNode } from 'react'\nimport {\n CircleStackIcon,\n ServerStackIcon,\n CloudIcon,\n ClockIcon,\n ShareIcon,\n KeyIcon,\n MagnifyingGlassIcon,\n ArrowLeftIcon,\n CheckCircleIcon,\n XCircleIcon,\n} from '@heroicons/react/24/outline'\nimport {\n GlassModal,\n FormGrid,\n FormInput,\n FormSelect,\n Button,\n} from '@ui/index'\n\n/* ─── Dialect catalog ─── */\n\ntype DialectCategory = {\n id: string\n labelKey: string\n icon: React.ComponentType<{ className?: string }>\n gradient: string\n dialects: DialectOption[]\n}\n\ntype DialectOption = {\n value: string\n label: string\n defaultPort?: number\n /** 'standard' = host/port/db, 'connection-string' = single URL, 'cloud' = project/dataset/key */\n formType: 'standard' | 'connection-string' | 'cloud-bigquery' | 'cloud-snowflake' | 'cloud-key' | 'vector-key'\n}\n\nconst DIALECT_CATEGORIES: DialectCategory[] = [\n {\n id: 'relational',\n labelKey: 'categoryRelational',\n icon: CircleStackIcon,\n gradient: 'from-blue-500 to-indigo-600',\n dialects: [\n { value: 'postgres', label: 'PostgreSQL', defaultPort: 5432, formType: 'standard' },\n { value: 'mysql', label: 'MySQL', defaultPort: 3306, formType: 'standard' },\n { value: 'mariadb', label: 'MariaDB', defaultPort: 3306, formType: 'standard' },\n { value: 'mssql', label: 'SQL Server', defaultPort: 1433, formType: 'standard' },\n { value: 'oracle', label: 'Oracle', defaultPort: 1521, formType: 'standard' },\n { value: 'db2', label: 'IBM Db2', defaultPort: 50000, formType: 'standard' },\n { value: 'cockroachdb', label: 'CockroachDB', defaultPort: 26257, formType: 'standard' },\n { value: 'timescaledb', label: 'TimescaleDB', defaultPort: 5432, formType: 'standard' },\n { value: 'sqlite', label: 'SQLite', formType: 'connection-string' },\n { value: 'duckdb', label: 'DuckDB', formType: 'connection-string' },\n ],\n },\n {\n id: 'nosql',\n labelKey: 'categoryNoSql',\n icon: ServerStackIcon,\n gradient: 'from-emerald-500 to-teal-600',\n dialects: [\n { value: 'mongodb', label: 'MongoDB', defaultPort: 27017, formType: 'connection-string' },\n { value: 'cassandra', label: 'Cassandra', defaultPort: 9042, formType: 'standard' },\n { value: 'scylladb', label: 'ScyllaDB', defaultPort: 9042, formType: 'standard' },\n { value: 'dynamodb', label: 'DynamoDB', formType: 'cloud-key' },\n { value: 'cosmosdb', label: 'CosmosDB', formType: 'connection-string' },\n { value: 'arangodb', label: 'ArangoDB', defaultPort: 8529, formType: 'standard' },\n ],\n },\n {\n id: 'warehouse',\n labelKey: 'categoryWarehouse',\n icon: CloudIcon,\n gradient: 'from-purple-500 to-violet-600',\n dialects: [\n { value: 'bigquery', label: 'BigQuery', formType: 'cloud-bigquery' },\n { value: 'snowflake', label: 'Snowflake', formType: 'cloud-snowflake' },\n { value: 'clickhouse', label: 'ClickHouse', defaultPort: 8123, formType: 'standard' },\n ],\n },\n {\n id: 'timeseries',\n labelKey: 'categoryTimeSeries',\n icon: ClockIcon,\n gradient: 'from-sky-500 to-cyan-600',\n dialects: [\n { value: 'influxdb', label: 'InfluxDB', formType: 'cloud-key' },\n { value: 'timestream', label: 'Timestream', formType: 'cloud-key' },\n ],\n },\n {\n id: 'graph',\n labelKey: 'categoryGraph',\n icon: ShareIcon,\n gradient: 'from-pink-500 to-rose-600',\n dialects: [\n { value: 'neo4j', label: 'Neo4j', defaultPort: 7687, formType: 'standard' },\n { value: 'neptune', label: 'Neptune', formType: 'connection-string' },\n ],\n },\n {\n id: 'keyvalue',\n labelKey: 'categoryKeyValue',\n icon: KeyIcon,\n gradient: 'from-red-500 to-orange-600',\n dialects: [\n { value: 'redis', label: 'Redis', defaultPort: 6379, formType: 'standard' },\n ],\n },\n {\n id: 'search',\n labelKey: 'categorySearch',\n icon: MagnifyingGlassIcon,\n gradient: 'from-amber-500 to-yellow-600',\n dialects: [\n { value: 'elasticsearch', label: 'Elasticsearch', defaultPort: 9200, formType: 'standard' },\n { value: 'opensearch', label: 'OpenSearch', defaultPort: 9200, formType: 'standard' },\n { value: 'pinecone', label: 'Pinecone', formType: 'vector-key' },\n { value: 'qdrant', label: 'Qdrant', defaultPort: 6333, formType: 'standard' },\n { value: 'weaviate', label: 'Weaviate', defaultPort: 8080, formType: 'standard' },\n { value: 'milvus', label: 'Milvus', defaultPort: 19530, formType: 'standard' },\n { value: 'chromadb', label: 'ChromaDB', defaultPort: 8000, formType: 'standard' },\n ],\n },\n]\n\nfunction findDialect(value: string): DialectOption | undefined {\n for (const category of DIALECT_CATEGORIES) {\n const found = category.dialects.find((d) => d.value === value)\n if (found) return found\n }\n return undefined\n}\n\nfunction findCategory(dialectValue: string): DialectCategory | undefined {\n return DIALECT_CATEGORIES.find((c) => c.dialects.some((d) => d.value === dialectValue))\n}\n\n/* ─── Types ─── */\n\nexport type DatasourceFormData = {\n name: string\n dialect: string\n host?: string\n port?: number\n database?: string\n username?: string\n password?: string\n schema?: string\n ssl?: boolean\n readOnly?: boolean\n connectionString?: string\n projectId?: string\n dataset?: string\n keyFile?: string\n account?: string\n warehouse?: string\n region?: string\n bucket?: string\n token?: string\n apiKey?: string\n environment?: string\n index?: string\n url?: string\n /** Whitelist of tables the engine is allowed to query. Empty/undef =\n * allow every table the credential can see. */\n allowedTables?: string[]\n /** Columns the engine MUST NOT surface to workflows. Applied at the\n * driver layer — trying to SELECT a blocked column still fails. */\n blockedColumns?: string[]\n /** Max concurrent connections in the org's cached pool (default 5). */\n maxPoolSize?: number\n /** Query/connect timeout in ms (default 5000). */\n timeoutMs?: number\n /** When true, the driver hashes / masks fields tagged as PII before\n * returning rows to the workflow. */\n maskPii?: boolean\n}\n\ntype Labels = Record<string, string>\n\nexport type DatasourceFormModalProps = {\n open: boolean\n onClose: () => void\n labels: Labels\n onSave: (data: DatasourceFormData) => void\n}\n\n/* ─── Step 1: Category + dialect picker ─── */\n\n// Brand SVG lookup — must stay in sync with the same map in\n// `datasources-page-view.tsx`. When the dialect has a brand SVG the chip\n// shows it; otherwise we fall back to the generic stacked-disks Heroicon.\n// Same source folder (`/public/logos/datasources/`) as the cards on\n// `/datasources` so a user sees the same logo here and in the list.\nconst DIALECT_LOGO_SRC: Record<string, string> = {\n bigquery: '/logos/datasources/bigquery.svg',\n postgres: '/logos/datasources/postgres.svg',\n postgresql: '/logos/datasources/postgres.svg',\n mysql: '/logos/datasources/mysql.svg',\n mariadb: '/logos/datasources/mariadb.svg',\n snowflake: '/logos/datasources/snowflake.svg',\n mongodb: '/logos/datasources/mongodb.svg',\n redis: '/logos/datasources/redis.svg',\n clickhouse: '/logos/datasources/clickhouse.svg',\n elasticsearch: '/logos/datasources/elasticsearch.svg',\n duckdb: '/logos/datasources/duckdb.svg',\n sqlite: '/logos/datasources/sqlite.svg',\n oracle: '/logos/datasources/oracle.svg',\n mssql: '/logos/datasources/mssql.svg',\n sqlserver: '/logos/datasources/mssql.svg',\n cassandra: '/logos/datasources/cassandra.svg',\n dynamodb: '/logos/datasources/dynamodb.svg',\n cockroach: '/logos/datasources/cockroachdb.svg',\n cockroachdb: '/logos/datasources/cockroachdb.svg',\n supabase: '/logos/datasources/supabase.svg',\n firebase: '/logos/datasources/firebase.svg',\n neo4j: '/logos/datasources/neo4j.svg',\n // AWS managed services (icepanel.io / official AWS Architecture Icons)\n neptune: '/logos/datasources/neptune.svg',\n timestream: '/logos/datasources/timestream.svg',\n opensearch: '/logos/datasources/opensearch.svg',\n}\n\nfunction DialectPicker({\n labels,\n onSelect,\n}: {\n labels: Labels\n onSelect: (dialect: string) => void\n}) {\n return (\n <div className=\"space-y-6\">\n {DIALECT_CATEGORIES.map((category) => (\n <div key={category.id}>\n <div className=\"mb-2 flex items-center gap-2\">\n <div className={`flex h-7 w-7 items-center justify-center rounded-lg bg-gradient-to-br ${category.gradient}`}>\n <category.icon className=\"h-4 w-4 text-white\" />\n </div>\n <span className=\"text-sm font-semibold text-slate-700 dark:text-slate-200\">\n {labels[category.labelKey] ?? category.id}\n </span>\n </div>\n <div className=\"grid grid-cols-2 gap-2 sm:grid-cols-3\">\n {category.dialects.map((dialect) => {\n const logoSrc = DIALECT_LOGO_SRC[dialect.value.toLowerCase()]\n return (\n <button\n key={dialect.value}\n type=\"button\"\n onClick={() => onSelect(dialect.value)}\n className=\"liquid-surface group flex items-center gap-2 rounded-xl px-3 py-2.5 text-left text-sm font-medium text-slate-700 transition-all hover:border-amber-400/60 hover:bg-amber-50/50 hover:text-amber-700 active:scale-[0.97] focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1 dark:text-slate-300 dark:hover:border-amber-400/40 dark:hover:bg-amber-500/10 dark:hover:text-amber-300\"\n >\n {logoSrc ? (\n <img\n src={logoSrc}\n alt={dialect.label}\n className=\"h-4 w-4 shrink-0 object-contain\"\n />\n ) : (\n <CircleStackIcon className=\"h-4 w-4 shrink-0 text-slate-400 transition-colors group-hover:text-amber-500 dark:text-slate-500\" />\n )}\n {dialect.label}\n </button>\n )\n })}\n </div>\n </div>\n ))}\n </div>\n )\n}\n\n/* ─── Step 2: Connection form ─── */\n\nfunction ConnectionForm({\n dialect,\n labels,\n onBack,\n onSubmit,\n}: {\n dialect: DialectOption\n labels: Labels\n onBack: () => void\n onSubmit: (data: DatasourceFormData) => void\n}) {\n const [testStatus, setTestStatus] = useState<'idle' | 'testing' | 'success' | 'failed'>('idle')\n const category = findCategory(dialect.value)\n\n function handleSubmit(event: FormEvent) {\n event.preventDefault()\n const formData = new FormData(event.currentTarget as HTMLFormElement)\n const data: DatasourceFormData = {\n name: String(formData.get('name') ?? '').trim(),\n dialect: dialect.value,\n }\n\n // Collect all possible fields\n for (const key of ['host', 'database', 'username', 'password', 'schema', 'connectionString', 'projectId', 'dataset', 'keyFile', 'account', 'warehouse', 'region', 'bucket', 'token', 'apiKey', 'environment', 'index', 'url'] as const) {\n const val = String(formData.get(key) ?? '').trim()\n if (val) (data as Record<string, unknown>)[key] = val\n }\n\n const port = String(formData.get('port') ?? '').trim()\n if (port) data.port = Number(port)\n\n data.ssl = formData.get('ssl') === 'on'\n data.readOnly = formData.get('readOnly') === 'on'\n\n // Advanced — pool size, timeout, allowlist/blocklist\n const maxPoolSize = String(formData.get('maxPoolSize') ?? '').trim()\n if (maxPoolSize) {\n const parsed = Number(maxPoolSize)\n if (Number.isFinite(parsed) && parsed > 0) data.maxPoolSize = parsed\n }\n const timeoutMs = String(formData.get('timeoutMs') ?? '').trim()\n if (timeoutMs) {\n const parsed = Number(timeoutMs)\n if (Number.isFinite(parsed) && parsed > 0) data.timeoutMs = parsed\n }\n const allowedTables = splitList(String(formData.get('allowedTables') ?? ''))\n if (allowedTables.length > 0) data.allowedTables = allowedTables\n const blockedColumns = splitList(String(formData.get('blockedColumns') ?? ''))\n if (blockedColumns.length > 0) data.blockedColumns = blockedColumns\n\n onSubmit(data)\n }\n\n function handleTestConnection() {\n setTestStatus('testing')\n // Simulate test connection — real implementation would call API\n setTimeout(() => {\n setTestStatus('success')\n setTimeout(() => setTestStatus('idle'), 3000)\n }, 1500)\n }\n\n function renderFields(): ReactNode {\n switch (dialect.formType) {\n case 'standard':\n return (\n <>\n <FormInput name=\"host\" label={labels.fieldHost} placeholder={labels.fieldHostPlaceholder} required />\n <FormInput name=\"port\" label={labels.fieldPort} type=\"number\" defaultValue={dialect.defaultPort} />\n <FormInput name=\"database\" label={labels.fieldDatabase} placeholder={labels.fieldDatabasePlaceholder} required />\n <FormInput name=\"username\" label={labels.fieldUsername} placeholder={labels.fieldUsernamePlaceholder} />\n <FormInput name=\"password\" label={labels.fieldPassword} type=\"password\" placeholder={labels.fieldPasswordPlaceholder} />\n <FormInput name=\"schema\" label={labels.fieldSchema} placeholder={labels.fieldSchemaPlaceholder} />\n </>\n )\n\n case 'connection-string':\n return (\n <div className=\"col-span-full\">\n <FormInput name=\"connectionString\" label={labels.fieldConnectionString} placeholder={labels.fieldConnectionStringPlaceholder} required />\n </div>\n )\n\n case 'cloud-bigquery':\n return (\n <>\n <FormInput name=\"projectId\" label={labels.fieldProjectId} placeholder={labels.fieldProjectIdPlaceholder} required />\n <FormInput name=\"dataset\" label={labels.fieldDataset} placeholder={labels.fieldDatasetPlaceholder} required />\n <div className=\"col-span-full\">\n <FormInput name=\"keyFile\" label={labels.fieldKeyFile} placeholder={labels.fieldKeyFilePlaceholder} />\n </div>\n </>\n )\n\n case 'cloud-snowflake':\n return (\n <>\n <FormInput name=\"account\" label={labels.fieldAccount} placeholder={labels.fieldAccountPlaceholder} required />\n <FormInput name=\"warehouse\" label={labels.fieldWarehouse} placeholder={labels.fieldWarehousePlaceholder} required />\n <FormInput name=\"database\" label={labels.fieldDatabase} placeholder={labels.fieldDatabasePlaceholder} required />\n <FormInput name=\"username\" label={labels.fieldUsername} placeholder={labels.fieldUsernamePlaceholder} required />\n <FormInput name=\"password\" label={labels.fieldPassword} type=\"password\" placeholder={labels.fieldPasswordPlaceholder} />\n <FormInput name=\"schema\" label={labels.fieldSchema} placeholder={labels.fieldSchemaPlaceholder} />\n </>\n )\n\n case 'cloud-key':\n return (\n <>\n <FormInput name=\"region\" label={labels.fieldRegion} placeholder={labels.fieldRegionPlaceholder} required />\n <FormInput name=\"token\" label={labels.fieldToken} type=\"password\" placeholder={labels.fieldTokenPlaceholder} required />\n <FormInput name=\"bucket\" label={labels.fieldBucket} placeholder={labels.fieldBucketPlaceholder} />\n </>\n )\n\n case 'vector-key':\n return (\n <>\n <FormInput name=\"apiKey\" label={labels.fieldApiKey} type=\"password\" placeholder={labels.fieldApiKeyPlaceholder} required />\n <FormInput name=\"environment\" label={labels.fieldEnvironment} placeholder={labels.fieldEnvironmentPlaceholder} required />\n <FormInput name=\"index\" label={labels.fieldIndex} placeholder={labels.fieldIndexPlaceholder} />\n </>\n )\n }\n }\n\n return (\n <form onSubmit={handleSubmit} className=\"space-y-6\">\n {/* Back button + dialect badge */}\n <div className=\"flex items-center gap-3\">\n <button\n type=\"button\"\n onClick={onBack}\n className=\"flex h-8 w-8 items-center justify-center rounded-lg text-slate-400 transition-colors hover:bg-white/45 hover:text-slate-700 dark:hover:bg-white/10 dark:hover:text-slate-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1\"\n >\n <ArrowLeftIcon className=\"h-4 w-4\" />\n </button>\n <div className=\"flex items-center gap-2\">\n <div className={`flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br ${category?.gradient ?? 'from-slate-400 to-slate-500'}`}>\n {category ? <category.icon className=\"h-4 w-4 text-white\" /> : <CircleStackIcon className=\"h-4 w-4 text-white\" />}\n </div>\n <div>\n <span className=\"text-sm font-semibold text-slate-900 dark:text-white\">{dialect.label}</span>\n <span className=\"ml-2 text-xs text-slate-500 dark:text-slate-400\">{labels[category?.labelKey ?? ''] ?? ''}</span>\n </div>\n </div>\n </div>\n\n {/* Name field — always present */}\n <FormInput name=\"name\" label={labels.fieldName} placeholder={labels.fieldNamePlaceholder} required />\n\n {/* Dynamic fields per dialect form type */}\n <FormGrid>\n {renderFields()}\n </FormGrid>\n\n {/* Toggles */}\n <div className=\"flex flex-wrap items-center gap-6 pt-2\">\n <label className=\"flex items-center gap-2 text-sm text-slate-700 dark:text-slate-300\">\n <input\n type=\"checkbox\"\n name=\"ssl\"\n defaultChecked\n className=\"h-4 w-4 rounded border-slate-300 text-amber-600 focus:ring-2 focus:ring-amber-500/70 focus:ring-offset-1 dark:border-white/15 dark:bg-white/[0.08]\"\n />\n {labels.fieldSsl}\n </label>\n <label className=\"flex items-center gap-2 text-sm text-slate-700 dark:text-slate-300\">\n <input\n type=\"checkbox\"\n name=\"readOnly\"\n defaultChecked\n className=\"h-4 w-4 rounded border-slate-300 text-amber-600 focus:ring-2 focus:ring-amber-500/70 focus:ring-offset-1 dark:border-white/15 dark:bg-white/[0.08]\"\n />\n {labels.fieldReadOnly}\n </label>\n </div>\n <p className=\"text-xs text-slate-500 dark:text-slate-400\">{labels.fieldReadOnlyHelp}</p>\n\n {/* Advanced — pool, timeout, table/column governance. Collapsed by\n default because the defaults (pool=5, timeout=5s, no allow/block)\n are correct for almost every datasource. Shown when an admin\n needs to lock down a specific table or raise the timeout for\n a slow analytic warehouse. */}\n <details className=\"liquid-surface rounded-xl p-3\">\n <summary className=\"cursor-pointer text-sm font-medium text-slate-700 dark:text-slate-300\">\n {labels.advancedToggle ?? 'Governance & performance'}\n </summary>\n <div className=\"mt-3 space-y-3\">\n <FormGrid>\n <FormInput\n name=\"maxPoolSize\"\n label={labels.fieldMaxPoolSize ?? 'Max pool size'}\n type=\"number\"\n min={1}\n max={100}\n placeholder=\"5\"\n />\n <FormInput\n name=\"timeoutMs\"\n label={labels.fieldTimeoutMs ?? 'Timeout (ms)'}\n type=\"number\"\n min={100}\n placeholder=\"5000\"\n />\n </FormGrid>\n <FormInput\n name=\"allowedTables\"\n label={labels.fieldAllowedTables ?? 'Allowed tables (comma-separated)'}\n placeholder=\"stations, current_prices, competitor_prices\"\n />\n <p className=\"text-xs text-slate-500 dark:text-slate-400\">\n {labels.fieldAllowedTablesHelp\n ?? 'Leave blank to allow every table the credential can see. Otherwise only the listed tables are queryable from workflows.'}\n </p>\n <FormInput\n name=\"blockedColumns\"\n label={labels.fieldBlockedColumns ?? 'Blocked columns (comma-separated)'}\n placeholder=\"customers.ssn, employees.salary\"\n />\n <p className=\"text-xs text-slate-500 dark:text-slate-400\">\n {labels.fieldBlockedColumnsHelp\n ?? 'Columns the driver must never surface, even if referenced by a workflow. Use table.column notation for specificity.'}\n </p>\n </div>\n </details>\n\n {/* Actions */}\n <div className=\"flex items-center gap-3 border-t liquid-divider pt-5\">\n <Button\n type=\"button\"\n size=\"sm\"\n color=\"zinc\"\n onClick={handleTestConnection}\n disabled={testStatus === 'testing'}\n >\n {testStatus === 'testing' ? labels.testing : labels.testConnection}\n </Button>\n\n {testStatus === 'success' && (\n <span className=\"flex items-center gap-1 text-xs font-medium text-emerald-600 dark:text-emerald-400\">\n <CheckCircleIcon className=\"h-4 w-4\" />\n {labels.connectionSuccess}\n </span>\n )}\n {testStatus === 'failed' && (\n <span className=\"flex items-center gap-1 text-xs font-medium text-red-600 dark:text-red-400\">\n <XCircleIcon className=\"h-4 w-4\" />\n {labels.connectionFailed}\n </span>\n )}\n\n <div className=\"flex-1\" />\n\n <Button type=\"submit\" size=\"sm\" color=\"amber\">\n {labels.save}\n </Button>\n </div>\n </form>\n )\n}\n\n/* ─── Form Modal ─── */\n\nexport function DatasourceFormModal({ open, onClose, labels, onSave }: DatasourceFormModalProps) {\n const [selectedDialect, setSelectedDialect] = useState<string | null>(null)\n const dialect = selectedDialect ? findDialect(selectedDialect) : null\n\n function handleClose() {\n setSelectedDialect(null)\n onClose()\n }\n\n function handleSave(data: DatasourceFormData) {\n onSave(data)\n handleClose()\n }\n\n return (\n <GlassModal\n open={open}\n onClose={handleClose}\n title={labels.createTitle}\n subtitle={dialect ? labels.stepConfigure : labels.stepSelectType}\n icon={<CircleStackIcon className=\"h-5 w-5\" />}\n gradient=\"from-amber-500 to-orange-600\"\n maxWidth=\"3xl\"\n >\n {dialect ? (\n <ConnectionForm\n dialect={dialect}\n labels={labels}\n onBack={() => setSelectedDialect(null)}\n onSubmit={handleSave}\n />\n ) : (\n <DialectPicker labels={labels} onSelect={setSelectedDialect} />\n )}\n </GlassModal>\n )\n}\n\n/* ─── Modal (for /datasources page) ─── */\n\nexport type DatasourceModalProps = {\n open: boolean\n onClose: () => void\n labels: Labels\n onSave: (data: DatasourceFormData) => void\n}\n\nexport function DatasourceModal({ open, onClose, labels, onSave }: DatasourceModalProps) {\n const [selectedDialect, setSelectedDialect] = useState<string | null>(null)\n const dialect = selectedDialect ? findDialect(selectedDialect) : null\n\n function handleClose() {\n setSelectedDialect(null)\n onClose()\n }\n\n function handleSave(data: DatasourceFormData) {\n onSave(data)\n handleClose()\n }\n\n return (\n <GlassModal\n open={open}\n onClose={handleClose}\n title={labels.createTitle}\n subtitle={dialect ? labels.stepConfigure : labels.stepSelectType}\n icon={<CircleStackIcon className=\"h-5 w-5\" />}\n gradient=\"from-amber-500 to-orange-600\"\n maxWidth=\"3xl\"\n >\n {dialect ? (\n <ConnectionForm\n dialect={dialect}\n labels={labels}\n onBack={() => setSelectedDialect(null)}\n onSubmit={handleSave}\n />\n ) : (\n <DialectPicker labels={labels} onSelect={setSelectedDialect} />\n )}\n </GlassModal>\n )\n}\n\nexport { DIALECT_CATEGORIES, findDialect, findCategory }\n\nfunction splitList(raw: string): string[] {\n return raw\n .split(',')\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0)\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { Workspace } from './chunk-3US2QXEF.mjs';
2
+ import { Workspace } from './chunk-IHOCYBHM.mjs';
3
3
  import { useLocale } from './chunk-7VJ7CMMT.mjs';
4
4
  import { jsx } from 'react/jsx-runtime';
5
5
 
@@ -16,5 +16,5 @@ function WorkflowCanvasShell({ graph, messages }) {
16
16
  }
17
17
 
18
18
  export { WorkflowCanvasShell };
19
- //# sourceMappingURL=chunk-R3CGJK7D.mjs.map
20
- //# sourceMappingURL=chunk-R3CGJK7D.mjs.map
19
+ //# sourceMappingURL=chunk-O4DIKNNH.mjs.map
20
+ //# sourceMappingURL=chunk-O4DIKNNH.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/platform/workflow-canvas-shell.tsx"],"names":[],"mappings":";;;;AAkBO,SAAS,mBAAA,CAAoB,EAAE,KAAA,EAAO,QAAA,EAAS,EAAU;AAC9D,EAAA,MAAM,SAAS,SAAA,EAAU;AACzB,EAAA,uBACE,GAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAc,KAAA;AAAA,MACd,MAAA;AAAA,MACC,GAAI,QAAA,GAAW,EAAE,QAAA,KAAa;AAAC;AAAA,GAClC;AAEJ","file":"chunk-R3CGJK7D.mjs","sourcesContent":["import { useLocale } from '@ui/lib/i18n-context'\nimport { Workspace } from '@ui/astrlabe/workflow-canvas'\nimport type { WorkflowGraph as UiWorkflowGraph } from '@ui/astrlabe'\nimport type { WorkflowCanvasShellProps } from '@datatechsolutions/shared-domain/common'\n\n/**\n * Workflow canvas shell with optional message bundle override.\n *\n * Most apps wrap their tree in `<I18nProvider>` and let the canvas read\n * messages from context — in that case `messages` can be omitted. Apps\n * that need to inject a precomputed bundle (e.g. for tests or app-specific\n * overrides not shipped with shared-domain) can pass it explicitly.\n */\ntype Props = WorkflowCanvasShellProps & {\n /** Optional override for the messages catalog passed into the canvas. */\n messages?: Record<string, unknown>\n}\n\nexport function WorkflowCanvasShell({ graph, messages }: Props) {\n const locale = useLocale()\n return (\n <Workspace\n initialGraph={graph as unknown as UiWorkflowGraph}\n locale={locale}\n {...(messages ? { messages } : {})}\n />\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/platform/workflow-canvas-shell.tsx"],"names":[],"mappings":";;;;AAkBO,SAAS,mBAAA,CAAoB,EAAE,KAAA,EAAO,QAAA,EAAS,EAAU;AAC9D,EAAA,MAAM,SAAS,SAAA,EAAU;AACzB,EAAA,uBACE,GAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAc,KAAA;AAAA,MACd,MAAA;AAAA,MACC,GAAI,QAAA,GAAW,EAAE,QAAA,KAAa;AAAC;AAAA,GAClC;AAEJ","file":"chunk-O4DIKNNH.mjs","sourcesContent":["import { useLocale } from '@ui/lib/i18n-context'\nimport { Workspace } from '@ui/astrlabe/workflow-canvas'\nimport type { WorkflowGraph as UiWorkflowGraph } from '@ui/astrlabe'\nimport type { WorkflowCanvasShellProps } from '@datatechsolutions/shared-domain/common'\n\n/**\n * Workflow canvas shell with optional message bundle override.\n *\n * Most apps wrap their tree in `<I18nProvider>` and let the canvas read\n * messages from context — in that case `messages` can be omitted. Apps\n * that need to inject a precomputed bundle (e.g. for tests or app-specific\n * overrides not shipped with shared-domain) can pass it explicitly.\n */\ntype Props = WorkflowCanvasShellProps & {\n /** Optional override for the messages catalog passed into the canvas. */\n messages?: Record<string, unknown>\n}\n\nexport function WorkflowCanvasShell({ graph, messages }: Props) {\n const locale = useLocale()\n return (\n <Workspace\n initialGraph={graph as unknown as UiWorkflowGraph}\n locale={locale}\n {...(messages ? { messages } : {})}\n />\n )\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkZGVN23J4_js = require('./chunk-ZGVN23J4.js');
4
+ var chunkTIJXCRM4_js = require('./chunk-TIJXCRM4.js');
5
5
  var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
6
6
  var chunkBHOT22QL_js = require('./chunk-BHOT22QL.js');
7
7
  var chunkUZ3CMNUJ_js = require('./chunk-UZ3CMNUJ.js');
@@ -62,13 +62,13 @@ function MembersTabContent({
62
62
  };
63
63
  if (isLoading) {
64
64
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-2 p-8 text-sm text-gray-500 dark:text-gray-400", children: [
65
- /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.InlineSpinner, {}),
65
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.InlineSpinner, {}),
66
66
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: t("admin.organizationDetail.members.loading") })
67
67
  ] });
68
68
  }
69
69
  if (members.length === 0) {
70
70
  return /* @__PURE__ */ jsxRuntime.jsx(
71
- chunkZGVN23J4_js.EmptyState,
71
+ chunkTIJXCRM4_js.EmptyState,
72
72
  {
73
73
  message: t("admin.organizationDetail.members.emptyMessage"),
74
74
  description: t("admin.organizationDetail.members.emptyDescription"),
@@ -78,11 +78,11 @@ function MembersTabContent({
78
78
  );
79
79
  }
80
80
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
81
- /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.ListCard, { children: members.map((member) => /* @__PURE__ */ jsxRuntime.jsx(
82
- chunkZGVN23J4_js.ListCardItem,
81
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.ListCard, { children: members.map((member) => /* @__PURE__ */ jsxRuntime.jsx(
82
+ chunkTIJXCRM4_js.ListCardItem,
83
83
  {
84
84
  leading: /* @__PURE__ */ jsxRuntime.jsx(
85
- chunkZGVN23J4_js.Avatar,
85
+ chunkTIJXCRM4_js.Avatar,
86
86
  {
87
87
  src: member.image,
88
88
  initials: (member.name ?? member.email).slice(0, 2).toUpperCase(),
@@ -111,7 +111,7 @@ function MembersTabContent({
111
111
  member.id
112
112
  )) }),
113
113
  /* @__PURE__ */ jsxRuntime.jsx(
114
- chunkZGVN23J4_js.DynamicIslandConfirm,
114
+ chunkTIJXCRM4_js.DynamicIslandConfirm,
115
115
  {
116
116
  open: removeTarget !== null,
117
117
  onClose: handleRemoveCancel,
@@ -196,7 +196,7 @@ function InvitationsTabContent({
196
196
  const roleOptions = ["viewer", "member", "admin", "owner"];
197
197
  if (isLoading) {
198
198
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-2 p-8 text-sm text-gray-500 dark:text-gray-400", children: [
199
- /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.InlineSpinner, {}),
199
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.InlineSpinner, {}),
200
200
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: t("admin.organizationDetail.invitations.loading") })
201
201
  ] });
202
202
  }
@@ -215,15 +215,15 @@ function InvitationsTabContent({
215
215
  }
216
216
  ),
217
217
  invitations.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(
218
- chunkZGVN23J4_js.EmptyState,
218
+ chunkTIJXCRM4_js.EmptyState,
219
219
  {
220
220
  message: t("admin.organizationDetail.invitations.emptyMessage"),
221
221
  description: t("admin.organizationDetail.invitations.emptyDescription"),
222
222
  icon: outline.EnvelopeIcon,
223
223
  variant: "card"
224
224
  }
225
- ) : /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.ListCard, { children: invitations.map((invitation) => /* @__PURE__ */ jsxRuntime.jsx(
226
- chunkZGVN23J4_js.ListCardItem,
225
+ ) : /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.ListCard, { children: invitations.map((invitation) => /* @__PURE__ */ jsxRuntime.jsx(
226
+ chunkTIJXCRM4_js.ListCardItem,
227
227
  {
228
228
  leading: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-9 w-9 items-center justify-center rounded-xl bg-gradient-to-br from-amber-500 to-orange-600 shadow-sm", children: /* @__PURE__ */ jsxRuntime.jsx(outline.EnvelopeIcon, { className: "h-5 w-5 text-white" }) }),
229
229
  trailing: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: statusBadgeColor(invitation.status), children: invitation.status }),
@@ -243,7 +243,7 @@ function InvitationsTabContent({
243
243
  )) })
244
244
  ] }),
245
245
  /* @__PURE__ */ jsxRuntime.jsx(
246
- chunkZGVN23J4_js.Sheet,
246
+ chunkTIJXCRM4_js.Sheet,
247
247
  {
248
248
  open: isInviteSheetOpen,
249
249
  onClose: handleCloseInviteSheet,
@@ -252,7 +252,7 @@ function InvitationsTabContent({
252
252
  size: "md",
253
253
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4 p-4 sm:p-6", children: [
254
254
  /* @__PURE__ */ jsxRuntime.jsx(
255
- chunkZGVN23J4_js.Input,
255
+ chunkTIJXCRM4_js.Input,
256
256
  {
257
257
  label: t("admin.organizationDetail.invitations.emailLabel"),
258
258
  type: "email",
@@ -367,7 +367,7 @@ function DomainsTabContent({
367
367
  }, [client, organizationId, fetchDomains]);
368
368
  if (isLoading) {
369
369
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-2 p-8 text-sm text-gray-500 dark:text-gray-400", children: [
370
- /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.InlineSpinner, {}),
370
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.InlineSpinner, {}),
371
371
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: t("admin.organizationDetail.domains.loading") })
372
372
  ] });
373
373
  }
@@ -386,15 +386,15 @@ function DomainsTabContent({
386
386
  }
387
387
  ),
388
388
  domains.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(
389
- chunkZGVN23J4_js.EmptyState,
389
+ chunkTIJXCRM4_js.EmptyState,
390
390
  {
391
391
  message: t("admin.organizationDetail.domains.emptyMessage"),
392
392
  description: t("admin.organizationDetail.domains.emptyDescription"),
393
393
  icon: outline.GlobeAltIcon,
394
394
  variant: "card"
395
395
  }
396
- ) : /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.ListCard, { children: domains.map((domain) => /* @__PURE__ */ jsxRuntime.jsx(
397
- chunkZGVN23J4_js.ListCardItem,
396
+ ) : /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.ListCard, { children: domains.map((domain) => /* @__PURE__ */ jsxRuntime.jsx(
397
+ chunkTIJXCRM4_js.ListCardItem,
398
398
  {
399
399
  leading: /* @__PURE__ */ jsxRuntime.jsx("div", { className: `flex h-9 w-9 items-center justify-center rounded-xl shadow-sm ${domain.verified ? "bg-gradient-to-br from-emerald-500 to-green-600" : "bg-gradient-to-br from-amber-500 to-orange-600"}`, children: domain.verified ? /* @__PURE__ */ jsxRuntime.jsx(outline.CheckCircleIcon, { className: "h-5 w-5 text-white" }) : /* @__PURE__ */ jsxRuntime.jsx(outline.GlobeAltIcon, { className: "h-5 w-5 text-white" }) }),
400
400
  trailing: !domain.verified ? /* @__PURE__ */ jsxRuntime.jsxs(
@@ -410,7 +410,7 @@ function DomainsTabContent({
410
410
  t("admin.organizationDetail.domains.verifyButton")
411
411
  ]
412
412
  }
413
- ) : /* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.StatusBadge, { status: "active", label: t("admin.organizationDetail.domains.verifiedLabel"), size: "sm" }),
413
+ ) : /* @__PURE__ */ jsxRuntime.jsx(chunkTIJXCRM4_js.StatusBadge, { status: "active", label: t("admin.organizationDetail.domains.verifiedLabel"), size: "sm" }),
414
414
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
415
415
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium text-gray-900 dark:text-white", children: domain.domain }),
416
416
  domain.autoJoinEnabled && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-0.5 text-xs text-gray-500 dark:text-gray-400", children: t("admin.organizationDetail.domains.autoJoinEnabled") })
@@ -420,7 +420,7 @@ function DomainsTabContent({
420
420
  )) })
421
421
  ] }),
422
422
  /* @__PURE__ */ jsxRuntime.jsx(
423
- chunkZGVN23J4_js.Sheet,
423
+ chunkTIJXCRM4_js.Sheet,
424
424
  {
425
425
  open: isAddSheetOpen,
426
426
  onClose: handleCloseAddSheet,
@@ -429,7 +429,7 @@ function DomainsTabContent({
429
429
  size: "md",
430
430
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4 p-4 sm:p-6", children: [
431
431
  /* @__PURE__ */ jsxRuntime.jsx(
432
- chunkZGVN23J4_js.Input,
432
+ chunkTIJXCRM4_js.Input,
433
433
  {
434
434
  label: t("admin.organizationDetail.domains.domainLabel"),
435
435
  value: newDomain,
@@ -467,7 +467,7 @@ function AdminOrganizationDetail({
467
467
  label: t(`admin.organizationDetail.tabs.${tab}`)
468
468
  }));
469
469
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-6", children: /* @__PURE__ */ jsxRuntime.jsx(
470
- chunkZGVN23J4_js.SectionCard,
470
+ chunkTIJXCRM4_js.SectionCard,
471
471
  {
472
472
  header: {
473
473
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.UsersIcon, { className: "h-5 w-5 text-white" }),
@@ -475,7 +475,7 @@ function AdminOrganizationDetail({
475
475
  subtitle: organization.description ?? t("admin.organizationDetail.defaultSubtitle"),
476
476
  gradient: "from-emerald-500 via-teal-500 to-cyan-500",
477
477
  rightContent: /* @__PURE__ */ jsxRuntime.jsx(
478
- chunkZGVN23J4_js.StatusBadge,
478
+ chunkTIJXCRM4_js.StatusBadge,
479
479
  {
480
480
  status: organization.enabled ? "active" : "inactive",
481
481
  label: organization.enabled ? t("admin.organizationDetail.statusEnabled") : t("admin.organizationDetail.statusDisabled"),
@@ -485,7 +485,7 @@ function AdminOrganizationDetail({
485
485
  },
486
486
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
487
487
  /* @__PURE__ */ jsxRuntime.jsx(
488
- chunkZGVN23J4_js.SegmentedControl,
488
+ chunkTIJXCRM4_js.SegmentedControl,
489
489
  {
490
490
  segments,
491
491
  value: activeTab,
@@ -502,5 +502,5 @@ function AdminOrganizationDetail({
502
502
  }
503
503
 
504
504
  exports.AdminOrganizationDetail = AdminOrganizationDetail;
505
- //# sourceMappingURL=chunk-BCJATFZE.js.map
506
- //# sourceMappingURL=chunk-BCJATFZE.js.map
505
+ //# sourceMappingURL=chunk-OD2AZBEX.js.map
506
+ //# sourceMappingURL=chunk-OD2AZBEX.js.map