@objectstack/platform-objects 14.8.0 → 15.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/pages/sys-organization.page.ts","../../src/pages/sys-user.page.ts","../../src/pages/sys-position.page.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport type { Page } from '@objectstack/spec/ui';\n\n/**\n * sys_organization — Record Detail Page (slotted)\n *\n * Adds Members / Invitations / Teams tabs to the organization detail\n * page so an admin can manage the membership graph from a single place\n * instead of switching between three separate Setup list views.\n *\n * The page is `kind: 'slotted'` and overrides only the `tabs` slot —\n * header, actions, highlights, details and discussion fall through to\n * the synthesized default, so the organization's own fields and the\n * existing record-header actions (Set Active, Edit, Delete, Leave) are\n * preserved.\n *\n * Each tab is a `record:related_list` over a child object that already\n * has `organization_id` as a `Field.lookup('sys_organization')` — the\n * renderer scopes the list to the current organization automatically\n * (the related-list runtime uses the parent record id from the page\n * context as the filter value for `relationshipField`). The per-row\n * actions defined on each child object (invite_user, cancel_invitation,\n * remove_member, transfer_ownership, create_team, …) are inherited\n * unchanged — no admin endpoint has to be re-declared here.\n *\n * Notable omissions:\n * - **OAuth Apps**: `sys_oauth_application` is owned by `user_id`, not\n * `organization_id`. They surface on the user's Account → Developer\n * section instead of the org detail.\n * - **SSO**: no `sys_sso*` object exists yet. When the SSO plugin lands,\n * add a fourth tab here.\n */\nexport const SysOrganizationDetailPage: Page = {\n name: 'sys_organization_detail',\n label: 'Organization',\n type: 'record',\n object: 'sys_organization',\n template: 'default',\n kind: 'slotted',\n isDefault: true,\n // `regions` is required by the Page schema even for slotted pages —\n // empty array lets the synthesizer fill in header/details/discussion\n // while the `slots.tabs` override below replaces the synthesized\n // tabs strip.\n regions: [],\n slots: {\n tabs: {\n type: 'page:tabs',\n properties: {\n type: 'line',\n position: 'top',\n items: [\n {\n label: { en: 'Members', 'zh-CN': '成员', 'ja-JP': 'メンバー', 'es-ES': 'Miembros' },\n icon: 'users',\n children: [\n {\n type: 'record:related_list',\n properties: {\n objectName: 'sys_member',\n relationshipField: 'organization_id',\n columns: ['user_id', 'role', 'created_at'],\n sort: [{ field: 'created_at', order: 'desc' }],\n limit: 25,\n showViewAll: true,\n title: { en: 'Members', 'zh-CN': '成员', 'ja-JP': 'メンバー', 'es-ES': 'Miembros' },\n },\n },\n ],\n },\n {\n label: { en: 'Invitations', 'zh-CN': '邀请', 'ja-JP': '招待', 'es-ES': 'Invitaciones' },\n icon: 'mail',\n children: [\n {\n type: 'record:related_list',\n properties: {\n objectName: 'sys_invitation',\n relationshipField: 'organization_id',\n columns: ['email', 'role', 'status', 'expires_at', 'inviter_id'],\n sort: [{ field: 'created_at', order: 'desc' }],\n limit: 25,\n showViewAll: true,\n title: { en: 'Invitations', 'zh-CN': '邀请', 'ja-JP': '招待', 'es-ES': 'Invitaciones' },\n },\n },\n ],\n },\n {\n label: { en: 'Teams', 'zh-CN': '团队', 'ja-JP': 'チーム', 'es-ES': 'Equipos' },\n icon: 'users-round',\n children: [\n {\n type: 'record:related_list',\n properties: {\n objectName: 'sys_team',\n relationshipField: 'organization_id',\n columns: ['name', 'created_at', 'updated_at'],\n sort: [{ field: 'name', order: 'asc' }],\n limit: 25,\n showViewAll: true,\n title: { en: 'Teams', 'zh-CN': '团队', 'ja-JP': 'チーム', 'es-ES': 'Equipos' },\n },\n },\n ],\n },\n ],\n },\n },\n },\n};\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport type { Page } from '@objectstack/spec/ui';\n\n/**\n * sys_user — Record Detail Page (slotted, default for ALL sys_user records)\n *\n * **Audience**: admins browsing user records from Setup.\n *\n * The Account App's \"Profile\" entry no longer routes here — it points at\n * the `account:profile_card` Console component for a settings-form-style\n * personal profile. This page therefore optimizes for the admin\n * use case: scanning a user's signals (email/verification/2FA/role),\n * reviewing related sessions/orgs/oauth/api-keys, and triggering\n * admin actions (ban / impersonate / set_role).\n *\n * Strategy\n * --------\n * - `kind: 'slotted'` + `isDefault: true`: overrides `highlights`,\n * `details`, `tabs` and `discussion`. Header / actions fall through\n * to the synthesizer so the object's declared actions\n * (`update_my_profile / change_my_password / resend_verification_email\n * / ban_user / set_user_role / impersonate_user / …`) still appear\n * in the header overflow menu automatically.\n * - `highlights` promotes the four signals worth scanning at the top:\n * email, verification state, 2FA, platform role. Highlight fields\n * are auto-dropped from the details grid below.\n * - `details` re-groups remaining fields into sections and hides\n * admin-internal audit columns. Banned / ban metadata is still\n * editable from the header actions — we just don't show it in\n * every user's body.\n * - `tabs` is **explicitly curated** to the 5 related lists that matter\n * on a user profile (Positions / Sessions / Linked Accounts / Organizations /\n * Personal OAuth Apps). Without this override, the synthesizer\n * auto-generates a tab per object that has a FK to sys_user\n * (sys_position.created_by, sys_email.updated_by, sys_user_preference,\n * sys_email_template.created_by, …) producing dozens of noisy\n * \"查看全部\" cards on every profile.\n * - `discussion: []` removes the Chatter feed — it has no business\n * on a personal profile.\n */\nexport const SysUserDetailPage: Page = {\n name: 'sys_user_detail',\n label: 'User',\n type: 'record',\n object: 'sys_user',\n template: 'default',\n kind: 'slotted',\n isDefault: true,\n\n regions: [],\n\n slots: {\n // ── Alert banners ─────────────────────────────────────────────\n // Conditional notices rendered between the page header and the\n // highlight strip. The unverified-email banner only shows for the\n // current user viewing their own profile (admins looking at other\n // users see nothing — they can use Setup actions instead).\n alerts: [\n {\n type: 'record:alert',\n properties: {\n severity: 'warning',\n icon: 'mail',\n // Inline-i18n object labels: the renderer resolves them with\n // pickLocalized (exact → base → default → en → first).\n title: {\n en: 'Email not verified',\n 'zh-CN': '邮箱未验证',\n 'ja-JP': 'メールが未認証です',\n 'es-ES': 'Correo no verificado',\n },\n body: {\n en: 'Verify your email to receive password resets and important system notifications.',\n 'zh-CN': '验证你的邮箱以接收密码重置和重要的系统通知。',\n 'ja-JP': 'パスワードリセットや重要なシステム通知を受け取るには、メールアドレスを認証してください。',\n 'es-ES': 'Verifica tu correo para recibir restablecimientos de contraseña y notificaciones importantes del sistema.',\n },\n visible: 'record.id == ctx.user.id && record.email_verified == false',\n dismissible: false,\n action: {\n actionName: 'resend_verification_email',\n label: {\n en: 'Resend verification email',\n 'zh-CN': '重新发送验证邮件',\n 'ja-JP': '認証メールを再送信',\n 'es-ES': 'Reenviar correo de verificación',\n },\n },\n },\n },\n ],\n\n // ── Highlight chips above the fold ────────────────────────────\n highlights: {\n type: 'record:highlights',\n properties: {\n fields: ['email', 'email_verified', 'two_factor_enabled', 'role'],\n },\n },\n\n // ── Body / details grid ───────────────────────────────────────\n details: {\n type: 'record:details',\n properties: {\n hideFields: [\n 'id',\n 'banned',\n 'ban_reason',\n 'ban_expires',\n // already promoted to highlights:\n 'email',\n 'email_verified',\n 'two_factor_enabled',\n 'role',\n ],\n sections: [\n {\n label: { en: 'Identity', 'zh-CN': '身份', 'ja-JP': 'アイデンティティ', 'es-ES': 'Identidad' },\n fields: ['name', 'image'],\n },\n {\n label: { en: 'Audit', 'zh-CN': '审计', 'ja-JP': '監査', 'es-ES': 'Auditoría' },\n fields: ['created_at', 'updated_at'],\n },\n ],\n },\n },\n\n // ── Tabs: curated related lists ───────────────────────────────\n // Only the 4 lists that are semantically about THIS user account.\n // Everything else (sys_position created_by, sys_email_template\n // updated_by, …) is incidental authorship metadata and would only\n // create noise.\n tabs: {\n type: 'page:tabs',\n properties: {\n type: 'line',\n position: 'top',\n items: [\n {\n label: { en: 'Positions', 'zh-CN': '岗位', 'ja-JP': 'ポジション', 'es-ES': 'Puestos' },\n icon: 'shield-check',\n children: [\n {\n // [ADR-0090 D3] Position assignments (岗位分派) — pure SDUI:\n // the Add picker creates sys_user_position rows storing the\n // position's MACHINE NAME (valueField: 'name'), and every\n // server-side rule (the D12 delegated-admin gate, audience-\n // anchor rejection) surfaces its error in the dialog.\n type: 'record:related_list',\n properties: {\n objectName: 'sys_user_position',\n relationshipField: 'user_id',\n columns: ['position', 'business_unit_id', 'granted_by', 'created_at'],\n sort: [{ field: 'created_at', order: 'desc' }],\n limit: 25,\n showViewAll: true,\n title: { en: 'Positions', 'zh-CN': '岗位', 'ja-JP': 'ポジション', 'es-ES': 'Puestos' },\n add: {\n picker: {\n object: 'sys_position',\n valueField: 'name',\n labelField: 'label',\n },\n linkField: 'position',\n label: {\n en: 'Assign position',\n 'zh-CN': '分配岗位',\n 'ja-JP': 'ポジションを割り当て',\n 'es-ES': 'Asignar puesto',\n },\n },\n },\n },\n ],\n },\n {\n label: { en: 'Sessions', 'zh-CN': '会话', 'ja-JP': 'セッション', 'es-ES': 'Sesiones' },\n icon: 'monitor',\n children: [\n {\n type: 'record:related_list',\n properties: {\n objectName: 'sys_session',\n relationshipField: 'user_id',\n columns: ['user_agent', 'ip_address', 'created_at', 'expires_at'],\n sort: [{ field: 'created_at', order: 'desc' }],\n limit: 25,\n showViewAll: true,\n title: { en: 'Sessions', 'zh-CN': '会话', 'ja-JP': 'セッション', 'es-ES': 'Sesiones' },\n },\n },\n ],\n },\n {\n label: { en: 'Linked Accounts', 'zh-CN': '关联账号', 'ja-JP': '連携アカウント', 'es-ES': 'Cuentas vinculadas' },\n icon: 'link',\n children: [\n {\n type: 'record:related_list',\n properties: {\n objectName: 'sys_account',\n relationshipField: 'user_id',\n columns: ['provider_id', 'account_id', 'created_at'],\n sort: [{ field: 'created_at', order: 'desc' }],\n limit: 25,\n showViewAll: true,\n title: { en: 'Linked Accounts', 'zh-CN': '关联账号', 'ja-JP': '連携アカウント', 'es-ES': 'Cuentas vinculadas' },\n },\n },\n ],\n },\n {\n label: { en: 'Organizations', 'zh-CN': '组织', 'ja-JP': '組織', 'es-ES': 'Organizaciones' },\n icon: 'building-2',\n children: [\n {\n type: 'record:related_list',\n properties: {\n objectName: 'sys_member',\n relationshipField: 'user_id',\n columns: ['organization_id', 'role', 'created_at'],\n sort: [{ field: 'created_at', order: 'desc' }],\n limit: 25,\n showViewAll: true,\n title: { en: 'Organizations', 'zh-CN': '组织', 'ja-JP': '組織', 'es-ES': 'Organizaciones' },\n },\n },\n ],\n },\n {\n label: { en: 'OAuth Apps', 'zh-CN': 'OAuth 应用', 'ja-JP': 'OAuth アプリ', 'es-ES': 'Aplicaciones OAuth' },\n icon: 'key-square',\n children: [\n {\n type: 'record:related_list',\n properties: {\n objectName: 'sys_oauth_application',\n relationshipField: 'user_id',\n columns: ['name', 'client_id', 'created_at'],\n sort: [{ field: 'created_at', order: 'desc' }],\n limit: 25,\n showViewAll: true,\n title: { en: 'OAuth Apps', 'zh-CN': 'OAuth 应用', 'ja-JP': 'OAuth アプリ', 'es-ES': 'Aplicaciones OAuth' },\n },\n },\n ],\n },\n // ── Security ──────────────────────────────────────────────\n // Grouped self-service security controls. Each `record:quick_actions`\n // pulls its actions by name from the sys_user object metadata\n // (DRY — definitions stay on the object) and filters by\n // `location: 'record_section'` so they only render here, not\n // in the global header row.\n {\n label: { en: 'Security', 'zh-CN': '安全', 'ja-JP': 'セキュリティ', 'es-ES': 'Seguridad' },\n icon: 'shield',\n children: [\n {\n type: 'element:text',\n properties: {\n variant: 'subheading',\n content: {\n en: 'Password & Sign-in',\n 'zh-CN': '密码与登录',\n 'ja-JP': 'パスワードとサインイン',\n 'es-ES': 'Contraseña e inicio de sesión',\n },\n },\n },\n {\n type: 'element:text',\n properties: {\n variant: 'caption',\n content: {\n en: 'Change your password or the email address associated with this account.',\n 'zh-CN': '修改密码或此账号绑定的邮箱地址。',\n 'ja-JP': 'パスワード、またはこのアカウントに関連付けられたメールアドレスを変更します。',\n 'es-ES': 'Cambia tu contraseña o la dirección de correo asociada a esta cuenta.',\n },\n },\n },\n {\n type: 'record:quick_actions',\n properties: {\n location: 'record_section',\n align: 'start',\n actionNames: ['change_my_password', 'change_my_email'],\n },\n },\n { type: 'element:divider' },\n {\n type: 'element:text',\n properties: {\n variant: 'subheading',\n content: {\n en: 'Two-Factor Authentication',\n 'zh-CN': '两步验证',\n 'ja-JP': '二要素認証',\n 'es-ES': 'Autenticación de dos factores',\n },\n },\n },\n {\n type: 'element:text',\n properties: {\n variant: 'caption',\n content: {\n en: 'Add a second layer of security using a TOTP authenticator app. Backup codes let you sign in if you lose your device.',\n 'zh-CN': '使用 TOTP 验证器应用添加第二层安全防护。备用验证码可在设备丢失时用于登录。',\n 'ja-JP': 'TOTP 認証アプリでセキュリティをもう一段強化します。バックアップコードがあれば、デバイスを紛失してもサインインできます。',\n 'es-ES': 'Añade una segunda capa de seguridad con una app de autenticación TOTP. Los códigos de respaldo te permiten iniciar sesión si pierdes tu dispositivo.',\n },\n },\n },\n {\n type: 'record:quick_actions',\n properties: {\n location: 'record_section',\n align: 'start',\n actionNames: ['enable_two_factor', 'disable_two_factor', 'generate_backup_codes'],\n },\n },\n { type: 'element:divider' },\n {\n type: 'element:text',\n properties: {\n variant: 'subheading',\n content: {\n en: 'Email Verification',\n 'zh-CN': '邮箱验证',\n 'ja-JP': 'メール認証',\n 'es-ES': 'Verificación de correo',\n },\n },\n },\n {\n type: 'element:text',\n properties: {\n variant: 'caption',\n content: {\n en: 'Verify your email so password resets and notifications reach you. The button appears only while verification is pending.',\n 'zh-CN': '验证你的邮箱,以便接收密码重置和系统通知。按钮仅在邮箱待验证时显示。',\n 'ja-JP': 'パスワードリセットや通知を受け取れるよう、メールアドレスを認証してください。ボタンは未認証の間のみ表示されます。',\n 'es-ES': 'Verifica tu correo para recibir restablecimientos de contraseña y notificaciones. El botón solo aparece mientras la verificación está pendiente.',\n },\n },\n },\n {\n type: 'record:quick_actions',\n properties: {\n location: 'record_section',\n align: 'start',\n actionNames: ['resend_verification_email'],\n },\n },\n { type: 'element:divider' },\n {\n type: 'element:text',\n properties: {\n variant: 'subheading',\n content: {\n en: 'Danger Zone',\n 'zh-CN': '危险操作',\n 'ja-JP': '危険な操作',\n 'es-ES': 'Zona de peligro',\n },\n },\n className: 'text-destructive',\n },\n {\n type: 'element:text',\n properties: {\n variant: 'caption',\n content: {\n en: 'Permanent. Once deleted, your account cannot be recovered.',\n 'zh-CN': '此操作不可逆,账号一经删除将无法恢复。',\n 'ja-JP': 'この操作は取り消せません。削除されたアカウントは復元できません。',\n 'es-ES': 'Permanente. Una vez eliminada, tu cuenta no se puede recuperar.',\n },\n },\n },\n {\n type: 'record:quick_actions',\n properties: {\n location: 'record_section',\n align: 'start',\n actionNames: ['delete_my_account'],\n },\n },\n ],\n },\n // ── API Keys ──────────────────────────────────────────────\n // Programmatic credentials issued for this user. Filtered by\n // user_id FK; the sys_api_key object's own list-item actions\n // (revoke / restore) handle row operations.\n {\n label: { en: 'API Keys', 'zh-CN': 'API 密钥', 'ja-JP': 'API キー', 'es-ES': 'Claves de API' },\n icon: 'key-round',\n children: [\n {\n type: 'record:related_list',\n properties: {\n objectName: 'sys_api_key',\n relationshipField: 'user_id',\n columns: ['name', 'prefix', 'expires_at', 'revoked', 'created_at'],\n sort: [{ field: 'created_at', order: 'desc' }],\n limit: 25,\n showViewAll: true,\n title: { en: 'API Keys', 'zh-CN': 'API 密钥', 'ja-JP': 'API キー', 'es-ES': 'Claves de API' },\n },\n },\n ],\n },\n ],\n },\n },\n\n // ── Suppress the Discussion / Chatter thread ──────────────────\n discussion: [],\n },\n};\n","// Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport type { Page } from '@objectstack/spec/ui';\n\n/**\n * sys_position — Record Detail Page (slotted, default for ALL sys_position\n * records)\n *\n * **Audience**: admins managing capability distribution from Setup.\n *\n * A position (岗位, ADR-0090 D3) is the flat distribution group: users hold\n * it (`sys_user_position`), and it binds permission sets\n * (`sys_position_permission_set`). This page makes both edges manageable\n * as PURE SDUI — two `record:related_list` tabs with Add pickers; no\n * bespoke React:\n *\n * - **Holders** — who holds this position. `sys_user_position.position`\n * stores the position's MACHINE NAME, so the list keys on\n * `relationshipValueField: 'name'` (the generic name-keyed-junction\n * affordance this page motivated). Assigning here inserts an ordinary\n * assignment row; the ADR-0090 D12 delegated-admin gate governs the\n * write and its denial reason surfaces in the Add dialog. The\n * `business_unit_id` column is the assignment-level BU anchor\n * (ADR-0090 Addendum); `valid_from`/`valid_until` columns join it when\n * ADR-0091 L1 lands.\n * - **Permission Sets** — what the position distributes\n * (`sys_position_permission_set`, ordinary id-keyed junction). Binding\n * is guarded by BOTH the audience-anchor gate (D5/D9 — high-privilege\n * sets never bind to everyone/guest) and the D12 gate.\n *\n * Header/actions fall through to the synthesizer, so the object's declared\n * row actions (activate/deactivate/clone/set-default) keep working.\n */\nexport const SysPositionDetailPage: Page = {\n name: 'sys_position_detail',\n label: 'Position',\n type: 'record',\n object: 'sys_position',\n template: 'default',\n kind: 'slotted',\n isDefault: true,\n\n regions: [],\n\n slots: {\n tabs: {\n type: 'page:tabs',\n properties: {\n type: 'line',\n position: 'top',\n items: [\n {\n label: { en: 'Holders', 'zh-CN': '任职人员', 'ja-JP': '在任者', 'es-ES': 'Titulares' },\n icon: 'users',\n children: [\n {\n type: 'record:related_list',\n properties: {\n objectName: 'sys_user_position',\n relationshipField: 'position',\n relationshipValueField: 'name',\n columns: ['user_id', 'business_unit_id', 'granted_by', 'created_at'],\n sort: [{ field: 'created_at', order: 'desc' }],\n limit: 25,\n showViewAll: true,\n title: { en: 'Holders', 'zh-CN': '任职人员', 'ja-JP': '在任者', 'es-ES': 'Titulares' },\n add: {\n picker: {\n object: 'sys_user',\n labelField: 'name',\n },\n linkField: 'user_id',\n label: { en: 'Assign user', 'zh-CN': '分配用户', 'ja-JP': 'ユーザーを割り当て', 'es-ES': 'Asignar usuario' },\n },\n },\n },\n ],\n },\n {\n label: { en: 'Permission Sets', 'zh-CN': '权限集', 'ja-JP': '権限セット', 'es-ES': 'Conjuntos de permisos' },\n icon: 'lock',\n children: [\n {\n type: 'record:related_list',\n properties: {\n objectName: 'sys_position_permission_set',\n relationshipField: 'position_id',\n columns: ['permission_set_id', 'created_at'],\n sort: [{ field: 'created_at', order: 'desc' }],\n limit: 25,\n showViewAll: true,\n title: { en: 'Permission Sets', 'zh-CN': '权限集', 'ja-JP': '権限セット', 'es-ES': 'Conjuntos de permisos' },\n add: {\n picker: {\n object: 'sys_permission_set',\n labelField: 'label',\n },\n linkField: 'permission_set_id',\n label: { en: 'Bind permission set', 'zh-CN': '绑定权限集', 'ja-JP': '権限セットをバインド', 'es-ES': 'Vincular conjunto de permisos' },\n },\n },\n },\n ],\n },\n ],\n },\n },\n\n // No Chatter feed on an RBAC primitive.\n discussion: [],\n },\n};\n"]}
1
+ {"version":3,"sources":["../../src/pages/sys-organization.page.ts","../../src/pages/sys-user.page.ts","../../src/pages/sys-position.page.ts"],"names":[],"mappings":";AAiCO,IAAM,yBAAA,GAAkC;AAAA,EAC7C,IAAA,EAAM,yBAAA;AAAA,EACN,KAAA,EAAO,cAAA;AAAA,EACP,IAAA,EAAM,QAAA;AAAA,EACN,MAAA,EAAQ,kBAAA;AAAA,EACR,QAAA,EAAU,SAAA;AAAA,EACV,IAAA,EAAM,SAAA;AAAA,EACN,SAAA,EAAW,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAKX,SAAS,EAAC;AAAA,EACV,KAAA,EAAO;AAAA,IACL,IAAA,EAAM;AAAA,MACJ,IAAA,EAAM,WAAA;AAAA,MACN,UAAA,EAAY;AAAA,QACV,IAAA,EAAM,MAAA;AAAA,QACN,QAAA,EAAU,KAAA;AAAA,QACV,KAAA,EAAO;AAAA,UACL;AAAA,YACE,KAAA,EAAO,EAAE,EAAA,EAAI,SAAA,EAAW,SAAS,cAAA,EAAM,OAAA,EAAS,0BAAA,EAAQ,OAAA,EAAS,UAAA,EAAW;AAAA,YAC5E,IAAA,EAAM,OAAA;AAAA,YACN,QAAA,EAAU;AAAA,cACR;AAAA,gBACE,IAAA,EAAM,qBAAA;AAAA,gBACN,UAAA,EAAY;AAAA,kBACV,UAAA,EAAY,YAAA;AAAA,kBACZ,iBAAA,EAAmB,iBAAA;AAAA,kBACnB,OAAA,EAAS,CAAC,SAAA,EAAW,MAAA,EAAQ,YAAY,CAAA;AAAA,kBACzC,MAAM,CAAC,EAAE,OAAO,YAAA,EAAc,KAAA,EAAO,QAAQ,CAAA;AAAA,kBAC7C,KAAA,EAAO,EAAA;AAAA,kBACP,WAAA,EAAa,IAAA;AAAA,kBACb,KAAA,EAAO,EAAE,EAAA,EAAI,SAAA,EAAW,SAAS,cAAA,EAAM,OAAA,EAAS,0BAAA,EAAQ,OAAA,EAAS,UAAA;AAAW;AAC9E;AACF;AACF,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,EAAA,EAAI,aAAA,EAAe,SAAS,cAAA,EAAM,OAAA,EAAS,cAAA,EAAM,OAAA,EAAS,cAAA,EAAe;AAAA,YAClF,IAAA,EAAM,MAAA;AAAA,YACN,QAAA,EAAU;AAAA,cACR;AAAA,gBACE,IAAA,EAAM,qBAAA;AAAA,gBACN,UAAA,EAAY;AAAA,kBACV,UAAA,EAAY,gBAAA;AAAA,kBACZ,iBAAA,EAAmB,iBAAA;AAAA,kBACnB,SAAS,CAAC,OAAA,EAAS,MAAA,EAAQ,QAAA,EAAU,cAAc,YAAY,CAAA;AAAA,kBAC/D,MAAM,CAAC,EAAE,OAAO,YAAA,EAAc,KAAA,EAAO,QAAQ,CAAA;AAAA,kBAC7C,KAAA,EAAO,EAAA;AAAA,kBACP,WAAA,EAAa,IAAA;AAAA,kBACb,KAAA,EAAO,EAAE,EAAA,EAAI,aAAA,EAAe,SAAS,cAAA,EAAM,OAAA,EAAS,cAAA,EAAM,OAAA,EAAS,cAAA;AAAe;AACpF;AACF;AACF,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,EAAA,EAAI,OAAA,EAAS,SAAS,cAAA,EAAM,OAAA,EAAS,oBAAA,EAAO,OAAA,EAAS,SAAA,EAAU;AAAA,YACxE,IAAA,EAAM,aAAA;AAAA,YACN,QAAA,EAAU;AAAA,cACR;AAAA,gBACE,IAAA,EAAM,qBAAA;AAAA,gBACN,UAAA,EAAY;AAAA,kBACV,UAAA,EAAY,UAAA;AAAA,kBACZ,iBAAA,EAAmB,iBAAA;AAAA,kBACnB,OAAA,EAAS,CAAC,MAAA,EAAQ,YAAA,EAAc,YAAY,CAAA;AAAA,kBAC5C,MAAM,CAAC,EAAE,OAAO,MAAA,EAAQ,KAAA,EAAO,OAAO,CAAA;AAAA,kBACtC,KAAA,EAAO,EAAA;AAAA,kBACP,WAAA,EAAa,IAAA;AAAA,kBACb,KAAA,EAAO,EAAE,EAAA,EAAI,OAAA,EAAS,SAAS,cAAA,EAAM,OAAA,EAAS,oBAAA,EAAO,OAAA,EAAS,SAAA;AAAU;AAC1E;AACF;AACF;AACF;AACF;AACF;AACF;AAEJ;;;ACtEO,IAAM,iBAAA,GAA0B;AAAA,EACrC,IAAA,EAAM,iBAAA;AAAA,EACN,KAAA,EAAO,MAAA;AAAA,EACP,IAAA,EAAM,QAAA;AAAA,EACN,MAAA,EAAQ,UAAA;AAAA,EACR,QAAA,EAAU,SAAA;AAAA,EACV,IAAA,EAAM,SAAA;AAAA,EACN,SAAA,EAAW,IAAA;AAAA,EAEX,SAAS,EAAC;AAAA,EAEV,KAAA,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAML,MAAA,EAAQ;AAAA,MACN;AAAA,QACE,IAAA,EAAM,cAAA;AAAA,QACN,UAAA,EAAY;AAAA,UACV,QAAA,EAAU,SAAA;AAAA,UACV,IAAA,EAAM,MAAA;AAAA;AAAA;AAAA,UAGN,KAAA,EAAO;AAAA,YACL,EAAA,EAAI,oBAAA;AAAA,YACJ,OAAA,EAAS,gCAAA;AAAA,YACT,OAAA,EAAS,wDAAA;AAAA,YACT,OAAA,EAAS;AAAA,WACX;AAAA,UACA,IAAA,EAAM;AAAA,YACJ,EAAA,EAAI,kFAAA;AAAA,YACJ,OAAA,EAAS,sIAAA;AAAA,YACT,OAAA,EAAS,0QAAA;AAAA,YACT,OAAA,EAAS;AAAA,WACX;AAAA,UACA,OAAA,EAAS,4DAAA;AAAA,UACT,WAAA,EAAa,KAAA;AAAA,UACb,MAAA,EAAQ;AAAA,YACN,UAAA,EAAY,2BAAA;AAAA,YACZ,KAAA,EAAO;AAAA,cACL,EAAA,EAAI,2BAAA;AAAA,cACJ,OAAA,EAAS,kDAAA;AAAA,cACT,OAAA,EAAS,wDAAA;AAAA,cACT,OAAA,EAAS;AAAA;AACX;AACF;AACF;AACF,KACF;AAAA;AAAA,IAGA,UAAA,EAAY;AAAA,MACV,IAAA,EAAM,mBAAA;AAAA,MACN,UAAA,EAAY;AAAA,QACV,MAAA,EAAQ,CAAC,OAAA,EAAS,gBAAA,EAAkB,sBAAsB,MAAM;AAAA;AAClE,KACF;AAAA;AAAA,IAGA,OAAA,EAAS;AAAA,MACP,IAAA,EAAM,gBAAA;AAAA,MACN,UAAA,EAAY;AAAA,QACV,UAAA,EAAY;AAAA,UACV,IAAA;AAAA,UACA,QAAA;AAAA,UACA,YAAA;AAAA,UACA,aAAA;AAAA;AAAA,UAEA,OAAA;AAAA,UACA,gBAAA;AAAA,UACA,oBAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAU;AAAA,UACR;AAAA,YACE,KAAA,EAAO,EAAE,EAAA,EAAI,UAAA,EAAY,SAAS,cAAA,EAAM,OAAA,EAAS,kDAAA,EAAY,OAAA,EAAS,WAAA,EAAY;AAAA,YAClF,MAAA,EAAQ,CAAC,MAAA,EAAQ,OAAO;AAAA,WAC1B;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,EAAA,EAAI,OAAA,EAAS,SAAS,cAAA,EAAM,OAAA,EAAS,cAAA,EAAM,OAAA,EAAS,cAAA,EAAY;AAAA,YACzE,MAAA,EAAQ,CAAC,YAAA,EAAc,YAAY;AAAA;AACrC;AACF;AACF,KACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,IAAA,EAAM;AAAA,MACJ,IAAA,EAAM,WAAA;AAAA,MACN,UAAA,EAAY;AAAA,QACV,IAAA,EAAM,MAAA;AAAA,QACN,QAAA,EAAU,KAAA;AAAA,QACV,KAAA,EAAO;AAAA,UACL;AAAA,YACE,KAAA,EAAO,EAAE,EAAA,EAAI,WAAA,EAAa,SAAS,cAAA,EAAM,OAAA,EAAS,gCAAA,EAAS,OAAA,EAAS,SAAA,EAAU;AAAA,YAC9E,IAAA,EAAM,cAAA;AAAA,YACN,QAAA,EAAU;AAAA,cACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAME,IAAA,EAAM,qBAAA;AAAA,gBACN,UAAA,EAAY;AAAA,kBACV,UAAA,EAAY,mBAAA;AAAA,kBACZ,iBAAA,EAAmB,SAAA;AAAA,kBACnB,OAAA,EAAS,CAAC,UAAA,EAAY,kBAAA,EAAoB,cAAc,YAAY,CAAA;AAAA,kBACpE,MAAM,CAAC,EAAE,OAAO,YAAA,EAAc,KAAA,EAAO,QAAQ,CAAA;AAAA,kBAC7C,KAAA,EAAO,EAAA;AAAA,kBACP,WAAA,EAAa,IAAA;AAAA,kBACb,KAAA,EAAO,EAAE,EAAA,EAAI,WAAA,EAAa,SAAS,cAAA,EAAM,OAAA,EAAS,gCAAA,EAAS,OAAA,EAAS,SAAA,EAAU;AAAA,kBAC9E,GAAA,EAAK;AAAA,oBACH,MAAA,EAAQ;AAAA,sBACN,MAAA,EAAQ,cAAA;AAAA,sBACR,UAAA,EAAY,MAAA;AAAA,sBACZ,UAAA,EAAY;AAAA,qBACd;AAAA,oBACA,SAAA,EAAW,UAAA;AAAA,oBACX,KAAA,EAAO;AAAA,sBACL,EAAA,EAAI,iBAAA;AAAA,sBACJ,OAAA,EAAS,0BAAA;AAAA,sBACT,OAAA,EAAS,8DAAA;AAAA,sBACT,OAAA,EAAS;AAAA;AACX;AACF;AACF;AACF;AACF,WACF;AAAA,UACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YASE,KAAA,EAAO,EAAE,EAAA,EAAI,iBAAA,EAAmB,SAAS,oBAAA,EAAO,OAAA,EAAS,gCAAA,EAAS,OAAA,EAAS,uBAAA,EAAwB;AAAA,YACnG,IAAA,EAAM,MAAA;AAAA,YACN,QAAA,EAAU;AAAA,cACR;AAAA,gBACE,IAAA,EAAM,qBAAA;AAAA,gBACN,UAAA,EAAY;AAAA,kBACV,UAAA,EAAY,yBAAA;AAAA,kBACZ,iBAAA,EAAmB,SAAA;AAAA,kBACnB,OAAA,EAAS,CAAC,mBAAA,EAAqB,iBAAA,EAAmB,cAAc,YAAY,CAAA;AAAA,kBAC5E,MAAM,CAAC,EAAE,OAAO,YAAA,EAAc,KAAA,EAAO,QAAQ,CAAA;AAAA,kBAC7C,KAAA,EAAO,EAAA;AAAA,kBACP,WAAA,EAAa,IAAA;AAAA,kBACb,KAAA,EAAO,EAAE,EAAA,EAAI,iBAAA,EAAmB,SAAS,oBAAA,EAAO,OAAA,EAAS,gCAAA,EAAS,OAAA,EAAS,uBAAA,EAAwB;AAAA,kBACnG,GAAA,EAAK;AAAA,oBACH,MAAA,EAAQ;AAAA,sBACN,MAAA,EAAQ,oBAAA;AAAA,sBACR,UAAA,EAAY;AAAA,qBACd;AAAA,oBACA,SAAA,EAAW,mBAAA;AAAA,oBACX,KAAA,EAAO;AAAA,sBACL,EAAA,EAAI,sBAAA;AAAA,sBACJ,OAAA,EAAS,gCAAA;AAAA,sBACT,OAAA,EAAS,kDAAA;AAAA,sBACT,OAAA,EAAS;AAAA;AACX;AACF;AACF;AACF;AACF,WACF;AAAA,UACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAQE,KAAA,EAAO,EAAE,EAAA,EAAI,gBAAA,EAAkB,SAAS,0BAAA,EAAQ,OAAA,EAAS,kDAAA,EAAY,OAAA,EAAS,qBAAA,EAAsB;AAAA,YACpG,IAAA,EAAM,SAAA;AAAA,YACN,QAAA,EAAU;AAAA,cACR;AAAA,gBACE,IAAA,EAAM,qBAAA;AAAA,gBACN,UAAA,EAAY;AAAA,kBACV,UAAA,EAAY,0BAAA;AAAA,kBACZ,iBAAA,EAAmB,SAAA;AAAA,kBACnB,OAAA,EAAS,CAAC,kBAAA,EAAoB,2BAAA,EAA6B,cAAc,YAAY,CAAA;AAAA,kBACrF,MAAM,CAAC,EAAE,OAAO,YAAA,EAAc,KAAA,EAAO,QAAQ,CAAA;AAAA,kBAC7C,KAAA,EAAO,EAAA;AAAA,kBACP,WAAA,EAAa,IAAA;AAAA,kBACb,KAAA,EAAO,EAAE,EAAA,EAAI,gBAAA,EAAkB,SAAS,0BAAA,EAAQ,OAAA,EAAS,kDAAA,EAAY,OAAA,EAAS,qBAAA,EAAsB;AAAA,kBACpG,GAAA,EAAK;AAAA,oBACH,MAAA,EAAQ;AAAA,sBACN,MAAA,EAAQ,mBAAA;AAAA,sBACR,UAAA,EAAY;AAAA,qBACd;AAAA,oBACA,SAAA,EAAW,kBAAA;AAAA,oBACX,KAAA,EAAO;AAAA,sBACL,EAAA,EAAI,sBAAA;AAAA,sBACJ,OAAA,EAAS,sCAAA;AAAA,sBACT,OAAA,EAAS,oEAAA;AAAA,sBACT,OAAA,EAAS;AAAA;AACX;AACF;AACF;AACF;AACF,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,EAAA,EAAI,UAAA,EAAY,SAAS,cAAA,EAAM,OAAA,EAAS,gCAAA,EAAS,OAAA,EAAS,UAAA,EAAW;AAAA,YAC9E,IAAA,EAAM,SAAA;AAAA,YACN,QAAA,EAAU;AAAA,cACR;AAAA,gBACE,IAAA,EAAM,qBAAA;AAAA,gBACN,UAAA,EAAY;AAAA,kBACV,UAAA,EAAY,aAAA;AAAA,kBACZ,iBAAA,EAAmB,SAAA;AAAA,kBACnB,OAAA,EAAS,CAAC,YAAA,EAAc,YAAA,EAAc,cAAc,YAAY,CAAA;AAAA,kBAChE,MAAM,CAAC,EAAE,OAAO,YAAA,EAAc,KAAA,EAAO,QAAQ,CAAA;AAAA,kBAC7C,KAAA,EAAO,EAAA;AAAA,kBACP,WAAA,EAAa,IAAA;AAAA,kBACb,KAAA,EAAO,EAAE,EAAA,EAAI,UAAA,EAAY,SAAS,cAAA,EAAM,OAAA,EAAS,gCAAA,EAAS,OAAA,EAAS,UAAA;AAAW;AAChF;AACF;AACF,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,EAAA,EAAI,iBAAA,EAAmB,SAAS,0BAAA,EAAQ,OAAA,EAAS,4CAAA,EAAW,OAAA,EAAS,oBAAA,EAAqB;AAAA,YACnG,IAAA,EAAM,MAAA;AAAA,YACN,QAAA,EAAU;AAAA,cACR;AAAA,gBACE,IAAA,EAAM,qBAAA;AAAA,gBACN,UAAA,EAAY;AAAA,kBACV,UAAA,EAAY,aAAA;AAAA,kBACZ,iBAAA,EAAmB,SAAA;AAAA,kBACnB,OAAA,EAAS,CAAC,aAAA,EAAe,YAAA,EAAc,YAAY,CAAA;AAAA,kBACnD,MAAM,CAAC,EAAE,OAAO,YAAA,EAAc,KAAA,EAAO,QAAQ,CAAA;AAAA,kBAC7C,KAAA,EAAO,EAAA;AAAA,kBACP,WAAA,EAAa,IAAA;AAAA,kBACb,KAAA,EAAO,EAAE,EAAA,EAAI,iBAAA,EAAmB,SAAS,0BAAA,EAAQ,OAAA,EAAS,4CAAA,EAAW,OAAA,EAAS,oBAAA;AAAqB;AACrG;AACF;AACF,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,EAAA,EAAI,eAAA,EAAiB,SAAS,cAAA,EAAM,OAAA,EAAS,cAAA,EAAM,OAAA,EAAS,gBAAA,EAAiB;AAAA,YACtF,IAAA,EAAM,YAAA;AAAA,YACN,QAAA,EAAU;AAAA,cACR;AAAA,gBACE,IAAA,EAAM,qBAAA;AAAA,gBACN,UAAA,EAAY;AAAA,kBACV,UAAA,EAAY,YAAA;AAAA,kBACZ,iBAAA,EAAmB,SAAA;AAAA,kBACnB,OAAA,EAAS,CAAC,iBAAA,EAAmB,MAAA,EAAQ,YAAY,CAAA;AAAA,kBACjD,MAAM,CAAC,EAAE,OAAO,YAAA,EAAc,KAAA,EAAO,QAAQ,CAAA;AAAA,kBAC7C,KAAA,EAAO,EAAA;AAAA,kBACP,WAAA,EAAa,IAAA;AAAA,kBACb,KAAA,EAAO,EAAE,EAAA,EAAI,eAAA,EAAiB,SAAS,cAAA,EAAM,OAAA,EAAS,cAAA,EAAM,OAAA,EAAS,gBAAA;AAAiB;AACxF;AACF;AACF,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,EAAA,EAAI,YAAA,EAAc,SAAS,oBAAA,EAAY,OAAA,EAAS,0BAAA,EAAa,OAAA,EAAS,oBAAA,EAAqB;AAAA,YACpG,IAAA,EAAM,YAAA;AAAA,YACN,QAAA,EAAU;AAAA,cACR;AAAA,gBACE,IAAA,EAAM,qBAAA;AAAA,gBACN,UAAA,EAAY;AAAA,kBACV,UAAA,EAAY,uBAAA;AAAA,kBACZ,iBAAA,EAAmB,SAAA;AAAA,kBACnB,OAAA,EAAS,CAAC,MAAA,EAAQ,WAAA,EAAa,YAAY,CAAA;AAAA,kBAC3C,MAAM,CAAC,EAAE,OAAO,YAAA,EAAc,KAAA,EAAO,QAAQ,CAAA;AAAA,kBAC7C,KAAA,EAAO,EAAA;AAAA,kBACP,WAAA,EAAa,IAAA;AAAA,kBACb,KAAA,EAAO,EAAE,EAAA,EAAI,YAAA,EAAc,SAAS,oBAAA,EAAY,OAAA,EAAS,0BAAA,EAAa,OAAA,EAAS,oBAAA;AAAqB;AACtG;AACF;AACF,WACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOA;AAAA,YACE,KAAA,EAAO,EAAE,EAAA,EAAI,UAAA,EAAY,SAAS,cAAA,EAAM,OAAA,EAAS,sCAAA,EAAU,OAAA,EAAS,WAAA,EAAY;AAAA,YAChF,IAAA,EAAM,QAAA;AAAA,YACN,QAAA,EAAU;AAAA,cACR;AAAA,gBACE,IAAA,EAAM,cAAA;AAAA,gBACN,UAAA,EAAY;AAAA,kBACV,OAAA,EAAS,YAAA;AAAA,kBACT,OAAA,EAAS;AAAA,oBACP,EAAA,EAAI,oBAAA;AAAA,oBACJ,OAAA,EAAS,gCAAA;AAAA,oBACT,OAAA,EAAS,oEAAA;AAAA,oBACT,OAAA,EAAS;AAAA;AACX;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAM,cAAA;AAAA,gBACN,UAAA,EAAY;AAAA,kBACV,OAAA,EAAS,SAAA;AAAA,kBACT,OAAA,EAAS;AAAA,oBACP,EAAA,EAAI,yEAAA;AAAA,oBACJ,OAAA,EAAS,kGAAA;AAAA,oBACT,OAAA,EAAS,sOAAA;AAAA,oBACT,OAAA,EAAS;AAAA;AACX;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAM,sBAAA;AAAA,gBACN,UAAA,EAAY;AAAA,kBACV,QAAA,EAAU,gBAAA;AAAA,kBACV,KAAA,EAAO,OAAA;AAAA,kBACP,WAAA,EAAa,CAAC,oBAAA,EAAsB,iBAAiB;AAAA;AACvD,eACF;AAAA,cACA,EAAE,MAAM,iBAAA,EAAkB;AAAA,cAC1B;AAAA,gBACE,IAAA,EAAM,cAAA;AAAA,gBACN,UAAA,EAAY;AAAA,kBACV,OAAA,EAAS,YAAA;AAAA,kBACT,OAAA,EAAS;AAAA,oBACP,EAAA,EAAI,2BAAA;AAAA,oBACJ,OAAA,EAAS,0BAAA;AAAA,oBACT,OAAA,EAAS,gCAAA;AAAA,oBACT,OAAA,EAAS;AAAA;AACX;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAM,cAAA;AAAA,gBACN,UAAA,EAAY;AAAA,kBACV,OAAA,EAAS,SAAA;AAAA,kBACT,OAAA,EAAS;AAAA,oBACP,EAAA,EAAI,sHAAA;AAAA,oBACJ,OAAA,EAAS,oNAAA;AAAA,oBACT,OAAA,EAAS,6VAAA;AAAA,oBACT,OAAA,EAAS;AAAA;AACX;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAM,sBAAA;AAAA,gBACN,UAAA,EAAY;AAAA,kBACV,QAAA,EAAU,gBAAA;AAAA,kBACV,KAAA,EAAO,OAAA;AAAA,kBACP,WAAA,EAAa,CAAC,mBAAA,EAAqB,oBAAA,EAAsB,uBAAuB;AAAA;AAClF,eACF;AAAA,cACA,EAAE,MAAM,iBAAA,EAAkB;AAAA,cAC1B;AAAA,gBACE,IAAA,EAAM,cAAA;AAAA,gBACN,UAAA,EAAY;AAAA,kBACV,OAAA,EAAS,YAAA;AAAA,kBACT,OAAA,EAAS;AAAA,oBACP,EAAA,EAAI,oBAAA;AAAA,oBACJ,OAAA,EAAS,0BAAA;AAAA,oBACT,OAAA,EAAS,gCAAA;AAAA,oBACT,OAAA,EAAS;AAAA;AACX;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAM,cAAA;AAAA,gBACN,UAAA,EAAY;AAAA,kBACV,OAAA,EAAS,SAAA;AAAA,kBACT,OAAA,EAAS;AAAA,oBACP,EAAA,EAAI,0HAAA;AAAA,oBACJ,OAAA,EAAS,yMAAA;AAAA,oBACT,OAAA,EAAS,kVAAA;AAAA,oBACT,OAAA,EAAS;AAAA;AACX;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAM,sBAAA;AAAA,gBACN,UAAA,EAAY;AAAA,kBACV,QAAA,EAAU,gBAAA;AAAA,kBACV,KAAA,EAAO,OAAA;AAAA,kBACP,WAAA,EAAa,CAAC,2BAA2B;AAAA;AAC3C,eACF;AAAA,cACA,EAAE,MAAM,iBAAA,EAAkB;AAAA,cAC1B;AAAA,gBACE,IAAA,EAAM,cAAA;AAAA,gBACN,UAAA,EAAY;AAAA,kBACV,OAAA,EAAS,YAAA;AAAA,kBACT,OAAA,EAAS;AAAA,oBACP,EAAA,EAAI,aAAA;AAAA,oBACJ,OAAA,EAAS,0BAAA;AAAA,oBACT,OAAA,EAAS,gCAAA;AAAA,oBACT,OAAA,EAAS;AAAA;AACX,iBACF;AAAA,gBACA,SAAA,EAAW;AAAA,eACb;AAAA,cACA;AAAA,gBACE,IAAA,EAAM,cAAA;AAAA,gBACN,UAAA,EAAY;AAAA,kBACV,OAAA,EAAS,SAAA;AAAA,kBACT,OAAA,EAAS;AAAA,oBACP,EAAA,EAAI,4DAAA;AAAA,oBACJ,OAAA,EAAS,+GAAA;AAAA,oBACT,OAAA,EAAS,kMAAA;AAAA,oBACT,OAAA,EAAS;AAAA;AACX;AACF,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAM,sBAAA;AAAA,gBACN,UAAA,EAAY;AAAA,kBACV,QAAA,EAAU,gBAAA;AAAA,kBACV,KAAA,EAAO,OAAA;AAAA,kBACP,WAAA,EAAa,CAAC,mBAAmB;AAAA;AACnC;AACF;AACF,WACF;AAAA;AAAA;AAAA;AAAA;AAAA,UAKA;AAAA,YACE,KAAA,EAAO,EAAE,EAAA,EAAI,UAAA,EAAY,SAAS,kBAAA,EAAU,OAAA,EAAS,kBAAA,EAAU,OAAA,EAAS,eAAA,EAAgB;AAAA,YACxF,IAAA,EAAM,WAAA;AAAA,YACN,QAAA,EAAU;AAAA,cACR;AAAA,gBACE,IAAA,EAAM,qBAAA;AAAA,gBACN,UAAA,EAAY;AAAA,kBACV,UAAA,EAAY,aAAA;AAAA,kBACZ,iBAAA,EAAmB,SAAA;AAAA,kBACnB,SAAS,CAAC,MAAA,EAAQ,QAAA,EAAU,YAAA,EAAc,WAAW,YAAY,CAAA;AAAA,kBACjE,MAAM,CAAC,EAAE,OAAO,YAAA,EAAc,KAAA,EAAO,QAAQ,CAAA;AAAA,kBAC7C,KAAA,EAAO,EAAA;AAAA,kBACP,WAAA,EAAa,IAAA;AAAA,kBACb,KAAA,EAAO,EAAE,EAAA,EAAI,UAAA,EAAY,SAAS,kBAAA,EAAU,OAAA,EAAS,kBAAA,EAAU,OAAA,EAAS,eAAA;AAAgB;AAC1F;AACF;AACF;AACF;AACF;AACF,KACF;AAAA;AAAA,IAGA,YAAY;AAAC;AAEjB;;;ACldO,IAAM,qBAAA,GAA8B;AAAA,EACzC,IAAA,EAAM,qBAAA;AAAA,EACN,KAAA,EAAO,UAAA;AAAA,EACP,IAAA,EAAM,QAAA;AAAA,EACN,MAAA,EAAQ,cAAA;AAAA,EACR,QAAA,EAAU,SAAA;AAAA,EACV,IAAA,EAAM,SAAA;AAAA,EACN,SAAA,EAAW,IAAA;AAAA,EAEX,SAAS,EAAC;AAAA,EAEV,KAAA,EAAO;AAAA,IACL,IAAA,EAAM;AAAA,MACJ,IAAA,EAAM,WAAA;AAAA,MACN,UAAA,EAAY;AAAA,QACV,IAAA,EAAM,MAAA;AAAA,QACN,QAAA,EAAU,KAAA;AAAA,QACV,KAAA,EAAO;AAAA,UACL;AAAA,YACE,KAAA,EAAO,EAAE,EAAA,EAAI,SAAA,EAAW,SAAS,0BAAA,EAAQ,OAAA,EAAS,oBAAA,EAAO,OAAA,EAAS,WAAA,EAAY;AAAA,YAC9E,IAAA,EAAM,OAAA;AAAA,YACN,QAAA,EAAU;AAAA,cACR;AAAA,gBACE,IAAA,EAAM,qBAAA;AAAA,gBACN,UAAA,EAAY;AAAA,kBACV,UAAA,EAAY,mBAAA;AAAA,kBACZ,iBAAA,EAAmB,UAAA;AAAA,kBACnB,sBAAA,EAAwB,MAAA;AAAA,kBACxB,OAAA,EAAS,CAAC,SAAA,EAAW,kBAAA,EAAoB,cAAc,YAAY,CAAA;AAAA,kBACnE,MAAM,CAAC,EAAE,OAAO,YAAA,EAAc,KAAA,EAAO,QAAQ,CAAA;AAAA,kBAC7C,KAAA,EAAO,EAAA;AAAA,kBACP,WAAA,EAAa,IAAA;AAAA,kBACb,KAAA,EAAO,EAAE,EAAA,EAAI,SAAA,EAAW,SAAS,0BAAA,EAAQ,OAAA,EAAS,oBAAA,EAAO,OAAA,EAAS,WAAA,EAAY;AAAA,kBAC9E,GAAA,EAAK;AAAA,oBACH,MAAA,EAAQ;AAAA,sBACN,MAAA,EAAQ,UAAA;AAAA,sBACR,UAAA,EAAY;AAAA,qBACd;AAAA,oBACA,SAAA,EAAW,SAAA;AAAA,oBACX,KAAA,EAAO,EAAE,EAAA,EAAI,aAAA,EAAe,SAAS,0BAAA,EAAQ,OAAA,EAAS,wDAAA,EAAa,OAAA,EAAS,iBAAA;AAAkB;AAChG;AACF;AACF;AACF,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,EAAA,EAAI,iBAAA,EAAmB,SAAS,oBAAA,EAAO,OAAA,EAAS,gCAAA,EAAS,OAAA,EAAS,uBAAA,EAAwB;AAAA,YACnG,IAAA,EAAM,MAAA;AAAA,YACN,QAAA,EAAU;AAAA,cACR;AAAA,gBACE,IAAA,EAAM,qBAAA;AAAA,gBACN,UAAA,EAAY;AAAA,kBACV,UAAA,EAAY,6BAAA;AAAA,kBACZ,iBAAA,EAAmB,aAAA;AAAA,kBACnB,OAAA,EAAS,CAAC,mBAAA,EAAqB,YAAY,CAAA;AAAA,kBAC3C,MAAM,CAAC,EAAE,OAAO,YAAA,EAAc,KAAA,EAAO,QAAQ,CAAA;AAAA,kBAC7C,KAAA,EAAO,EAAA;AAAA,kBACP,WAAA,EAAa,IAAA;AAAA,kBACb,KAAA,EAAO,EAAE,EAAA,EAAI,iBAAA,EAAmB,SAAS,oBAAA,EAAO,OAAA,EAAS,gCAAA,EAAS,OAAA,EAAS,uBAAA,EAAwB;AAAA,kBACnG,GAAA,EAAK;AAAA,oBACH,MAAA,EAAQ;AAAA,sBACN,MAAA,EAAQ,oBAAA;AAAA,sBACR,UAAA,EAAY;AAAA,qBACd;AAAA,oBACA,SAAA,EAAW,mBAAA;AAAA,oBACX,KAAA,EAAO,EAAE,EAAA,EAAI,qBAAA,EAAuB,SAAS,gCAAA,EAAS,OAAA,EAAS,8DAAA,EAAc,OAAA,EAAS,+BAAA;AAAgC;AACxH;AACF;AACF;AACF;AACF;AACF;AACF,KACF;AAAA;AAAA,IAGA,YAAY;AAAC;AAEjB","file":"index.mjs","sourcesContent":["// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport type { Page } from '@objectstack/spec/ui';\n\n/**\n * sys_organization — Record Detail Page (slotted)\n *\n * Adds Members / Invitations / Teams tabs to the organization detail\n * page so an admin can manage the membership graph from a single place\n * instead of switching between three separate Setup list views.\n *\n * The page is `kind: 'slotted'` and overrides only the `tabs` slot —\n * header, actions, highlights, details and discussion fall through to\n * the synthesized default, so the organization's own fields and the\n * existing record-header actions (Set Active, Edit, Delete, Leave) are\n * preserved.\n *\n * Each tab is a `record:related_list` over a child object that already\n * has `organization_id` as a `Field.lookup('sys_organization')` — the\n * renderer scopes the list to the current organization automatically\n * (the related-list runtime uses the parent record id from the page\n * context as the filter value for `relationshipField`). The per-row\n * actions defined on each child object (invite_user, cancel_invitation,\n * remove_member, transfer_ownership, create_team, …) are inherited\n * unchanged — no admin endpoint has to be re-declared here.\n *\n * Notable omissions:\n * - **OAuth Apps**: `sys_oauth_application` is owned by `user_id`, not\n * `organization_id`. They surface on the user's Account → Developer\n * section instead of the org detail.\n * - **SSO**: no `sys_sso*` object exists yet. When the SSO plugin lands,\n * add a fourth tab here.\n */\nexport const SysOrganizationDetailPage: Page = {\n name: 'sys_organization_detail',\n label: 'Organization',\n type: 'record',\n object: 'sys_organization',\n template: 'default',\n kind: 'slotted',\n isDefault: true,\n // `regions` is required by the Page schema even for slotted pages —\n // empty array lets the synthesizer fill in header/details/discussion\n // while the `slots.tabs` override below replaces the synthesized\n // tabs strip.\n regions: [],\n slots: {\n tabs: {\n type: 'page:tabs',\n properties: {\n type: 'line',\n position: 'top',\n items: [\n {\n label: { en: 'Members', 'zh-CN': '成员', 'ja-JP': 'メンバー', 'es-ES': 'Miembros' },\n icon: 'users',\n children: [\n {\n type: 'record:related_list',\n properties: {\n objectName: 'sys_member',\n relationshipField: 'organization_id',\n columns: ['user_id', 'role', 'created_at'],\n sort: [{ field: 'created_at', order: 'desc' }],\n limit: 25,\n showViewAll: true,\n title: { en: 'Members', 'zh-CN': '成员', 'ja-JP': 'メンバー', 'es-ES': 'Miembros' },\n },\n },\n ],\n },\n {\n label: { en: 'Invitations', 'zh-CN': '邀请', 'ja-JP': '招待', 'es-ES': 'Invitaciones' },\n icon: 'mail',\n children: [\n {\n type: 'record:related_list',\n properties: {\n objectName: 'sys_invitation',\n relationshipField: 'organization_id',\n columns: ['email', 'role', 'status', 'expires_at', 'inviter_id'],\n sort: [{ field: 'created_at', order: 'desc' }],\n limit: 25,\n showViewAll: true,\n title: { en: 'Invitations', 'zh-CN': '邀请', 'ja-JP': '招待', 'es-ES': 'Invitaciones' },\n },\n },\n ],\n },\n {\n label: { en: 'Teams', 'zh-CN': '团队', 'ja-JP': 'チーム', 'es-ES': 'Equipos' },\n icon: 'users-round',\n children: [\n {\n type: 'record:related_list',\n properties: {\n objectName: 'sys_team',\n relationshipField: 'organization_id',\n columns: ['name', 'created_at', 'updated_at'],\n sort: [{ field: 'name', order: 'asc' }],\n limit: 25,\n showViewAll: true,\n title: { en: 'Teams', 'zh-CN': '团队', 'ja-JP': 'チーム', 'es-ES': 'Equipos' },\n },\n },\n ],\n },\n ],\n },\n },\n },\n};\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport type { Page } from '@objectstack/spec/ui';\n\n/**\n * sys_user — Record Detail Page (slotted, default for ALL sys_user records)\n *\n * **Audience**: admins browsing user records from Setup.\n *\n * The Account App's \"Profile\" entry no longer routes here — it points at\n * the `account:profile_card` Console component for a settings-form-style\n * personal profile. This page therefore optimizes for the admin\n * use case: scanning a user's signals (email/verification/2FA/role),\n * reviewing related sessions/orgs/oauth/api-keys, and triggering\n * admin actions (ban / impersonate / set_role).\n *\n * Strategy\n * --------\n * - `kind: 'slotted'` + `isDefault: true`: overrides `highlights`,\n * `details`, `tabs` and `discussion`. Header / actions fall through\n * to the synthesizer so the object's declared actions\n * (`update_my_profile / change_my_password / resend_verification_email\n * / ban_user / set_user_role / impersonate_user / …`) still appear\n * in the header overflow menu automatically.\n * - `highlights` promotes the four signals worth scanning at the top:\n * email, verification state, 2FA, platform role. Highlight fields\n * are auto-dropped from the details grid below.\n * - `details` re-groups remaining fields into sections and hides\n * admin-internal audit columns. Banned / ban metadata is still\n * editable from the header actions — we just don't show it in\n * every user's body.\n * - `tabs` is **explicitly curated** to the 5 related lists that matter\n * on a user profile (Positions / Sessions / Linked Accounts / Organizations /\n * Personal OAuth Apps). Without this override, the synthesizer\n * auto-generates a tab per object that has a FK to sys_user\n * (sys_position.created_by, sys_email.updated_by, sys_user_preference,\n * sys_email_template.created_by, …) producing dozens of noisy\n * \"查看全部\" cards on every profile.\n * - `discussion: []` removes the Chatter feed — it has no business\n * on a personal profile.\n */\nexport const SysUserDetailPage: Page = {\n name: 'sys_user_detail',\n label: 'User',\n type: 'record',\n object: 'sys_user',\n template: 'default',\n kind: 'slotted',\n isDefault: true,\n\n regions: [],\n\n slots: {\n // ── Alert banners ─────────────────────────────────────────────\n // Conditional notices rendered between the page header and the\n // highlight strip. The unverified-email banner only shows for the\n // current user viewing their own profile (admins looking at other\n // users see nothing — they can use Setup actions instead).\n alerts: [\n {\n type: 'record:alert',\n properties: {\n severity: 'warning',\n icon: 'mail',\n // Inline-i18n object labels: the renderer resolves them with\n // pickLocalized (exact → base → default → en → first).\n title: {\n en: 'Email not verified',\n 'zh-CN': '邮箱未验证',\n 'ja-JP': 'メールが未認証です',\n 'es-ES': 'Correo no verificado',\n },\n body: {\n en: 'Verify your email to receive password resets and important system notifications.',\n 'zh-CN': '验证你的邮箱以接收密码重置和重要的系统通知。',\n 'ja-JP': 'パスワードリセットや重要なシステム通知を受け取るには、メールアドレスを認証してください。',\n 'es-ES': 'Verifica tu correo para recibir restablecimientos de contraseña y notificaciones importantes del sistema.',\n },\n visible: 'record.id == ctx.user.id && record.email_verified == false',\n dismissible: false,\n action: {\n actionName: 'resend_verification_email',\n label: {\n en: 'Resend verification email',\n 'zh-CN': '重新发送验证邮件',\n 'ja-JP': '認証メールを再送信',\n 'es-ES': 'Reenviar correo de verificación',\n },\n },\n },\n },\n ],\n\n // ── Highlight chips above the fold ────────────────────────────\n highlights: {\n type: 'record:highlights',\n properties: {\n fields: ['email', 'email_verified', 'two_factor_enabled', 'role'],\n },\n },\n\n // ── Body / details grid ───────────────────────────────────────\n details: {\n type: 'record:details',\n properties: {\n hideFields: [\n 'id',\n 'banned',\n 'ban_reason',\n 'ban_expires',\n // already promoted to highlights:\n 'email',\n 'email_verified',\n 'two_factor_enabled',\n 'role',\n ],\n sections: [\n {\n label: { en: 'Identity', 'zh-CN': '身份', 'ja-JP': 'アイデンティティ', 'es-ES': 'Identidad' },\n fields: ['name', 'image'],\n },\n {\n label: { en: 'Audit', 'zh-CN': '审计', 'ja-JP': '監査', 'es-ES': 'Auditoría' },\n fields: ['created_at', 'updated_at'],\n },\n ],\n },\n },\n\n // ── Tabs: curated related lists ───────────────────────────────\n // Only the 4 lists that are semantically about THIS user account.\n // Everything else (sys_position created_by, sys_email_template\n // updated_by, …) is incidental authorship metadata and would only\n // create noise.\n tabs: {\n type: 'page:tabs',\n properties: {\n type: 'line',\n position: 'top',\n items: [\n {\n label: { en: 'Positions', 'zh-CN': '岗位', 'ja-JP': 'ポジション', 'es-ES': 'Puestos' },\n icon: 'shield-check',\n children: [\n {\n // [ADR-0090 D3] Position assignments (岗位分派) — pure SDUI:\n // the Add picker creates sys_user_position rows storing the\n // position's MACHINE NAME (valueField: 'name'), and every\n // server-side rule (the D12 delegated-admin gate, audience-\n // anchor rejection) surfaces its error in the dialog.\n type: 'record:related_list',\n properties: {\n objectName: 'sys_user_position',\n relationshipField: 'user_id',\n columns: ['position', 'business_unit_id', 'granted_by', 'created_at'],\n sort: [{ field: 'created_at', order: 'desc' }],\n limit: 25,\n showViewAll: true,\n title: { en: 'Positions', 'zh-CN': '岗位', 'ja-JP': 'ポジション', 'es-ES': 'Puestos' },\n add: {\n picker: {\n object: 'sys_position',\n valueField: 'name',\n labelField: 'label',\n },\n linkField: 'position',\n label: {\n en: 'Assign position',\n 'zh-CN': '分配岗位',\n 'ja-JP': 'ポジションを割り当て',\n 'es-ES': 'Asignar puesto',\n },\n },\n },\n },\n ],\n },\n {\n // [ADR-0091 D1] Direct permission-set grants (直接授权) — pure SDUI.\n // sys_user_permission_set is an ordinary id-keyed junction:\n // user_id / permission_set_id are lookups keyed by record id, so\n // the list keys on `relationshipField: 'user_id'` (no\n // relationshipValueField). The Add picker binds a permission set by\n // its id (linkField: 'permission_set_id'); server-side gates\n // (audience-anchor D5/D9, delegated-admin D12) surface their denial\n // reason in the Add dialog.\n label: { en: 'Permission Sets', 'zh-CN': '权限集', 'ja-JP': '権限セット', 'es-ES': 'Conjuntos de permisos' },\n icon: 'lock',\n children: [\n {\n type: 'record:related_list',\n properties: {\n objectName: 'sys_user_permission_set',\n relationshipField: 'user_id',\n columns: ['permission_set_id', 'organization_id', 'granted_by', 'created_at'],\n sort: [{ field: 'created_at', order: 'desc' }],\n limit: 25,\n showViewAll: true,\n title: { en: 'Permission Sets', 'zh-CN': '权限集', 'ja-JP': '権限セット', 'es-ES': 'Conjuntos de permisos' },\n add: {\n picker: {\n object: 'sys_permission_set',\n labelField: 'label',\n },\n linkField: 'permission_set_id',\n label: {\n en: 'Grant permission set',\n 'zh-CN': '授予权限集',\n 'ja-JP': '権限セットを付与',\n 'es-ES': 'Otorgar conjunto de permisos',\n },\n },\n },\n },\n ],\n },\n {\n // Business-unit membership (业务单元归属) — pure SDUI.\n // sys_business_unit_member is an id-keyed junction: user_id /\n // business_unit_id are lookups keyed by record id, so the list keys\n // on `relationshipField: 'user_id'` (no relationshipValueField).\n // The Add picker binds a BU by its id (linkField: 'business_unit_id');\n // sys_business_unit has no `label` field so the picker labels rows by\n // its display field `name`.\n label: { en: 'Business Units', 'zh-CN': '业务单元', 'ja-JP': 'ビジネスユニット', 'es-ES': 'Unidades de negocio' },\n icon: 'network',\n children: [\n {\n type: 'record:related_list',\n properties: {\n objectName: 'sys_business_unit_member',\n relationshipField: 'user_id',\n columns: ['business_unit_id', 'function_in_business_unit', 'is_primary', 'created_at'],\n sort: [{ field: 'created_at', order: 'desc' }],\n limit: 25,\n showViewAll: true,\n title: { en: 'Business Units', 'zh-CN': '业务单元', 'ja-JP': 'ビジネスユニット', 'es-ES': 'Unidades de negocio' },\n add: {\n picker: {\n object: 'sys_business_unit',\n labelField: 'name',\n },\n linkField: 'business_unit_id',\n label: {\n en: 'Add to business unit',\n 'zh-CN': '加入业务单元',\n 'ja-JP': 'ビジネスユニットに追加',\n 'es-ES': 'Añadir a unidad de negocio',\n },\n },\n },\n },\n ],\n },\n {\n label: { en: 'Sessions', 'zh-CN': '会话', 'ja-JP': 'セッション', 'es-ES': 'Sesiones' },\n icon: 'monitor',\n children: [\n {\n type: 'record:related_list',\n properties: {\n objectName: 'sys_session',\n relationshipField: 'user_id',\n columns: ['user_agent', 'ip_address', 'created_at', 'expires_at'],\n sort: [{ field: 'created_at', order: 'desc' }],\n limit: 25,\n showViewAll: true,\n title: { en: 'Sessions', 'zh-CN': '会话', 'ja-JP': 'セッション', 'es-ES': 'Sesiones' },\n },\n },\n ],\n },\n {\n label: { en: 'Linked Accounts', 'zh-CN': '关联账号', 'ja-JP': '連携アカウント', 'es-ES': 'Cuentas vinculadas' },\n icon: 'link',\n children: [\n {\n type: 'record:related_list',\n properties: {\n objectName: 'sys_account',\n relationshipField: 'user_id',\n columns: ['provider_id', 'account_id', 'created_at'],\n sort: [{ field: 'created_at', order: 'desc' }],\n limit: 25,\n showViewAll: true,\n title: { en: 'Linked Accounts', 'zh-CN': '关联账号', 'ja-JP': '連携アカウント', 'es-ES': 'Cuentas vinculadas' },\n },\n },\n ],\n },\n {\n label: { en: 'Organizations', 'zh-CN': '组织', 'ja-JP': '組織', 'es-ES': 'Organizaciones' },\n icon: 'building-2',\n children: [\n {\n type: 'record:related_list',\n properties: {\n objectName: 'sys_member',\n relationshipField: 'user_id',\n columns: ['organization_id', 'role', 'created_at'],\n sort: [{ field: 'created_at', order: 'desc' }],\n limit: 25,\n showViewAll: true,\n title: { en: 'Organizations', 'zh-CN': '组织', 'ja-JP': '組織', 'es-ES': 'Organizaciones' },\n },\n },\n ],\n },\n {\n label: { en: 'OAuth Apps', 'zh-CN': 'OAuth 应用', 'ja-JP': 'OAuth アプリ', 'es-ES': 'Aplicaciones OAuth' },\n icon: 'key-square',\n children: [\n {\n type: 'record:related_list',\n properties: {\n objectName: 'sys_oauth_application',\n relationshipField: 'user_id',\n columns: ['name', 'client_id', 'created_at'],\n sort: [{ field: 'created_at', order: 'desc' }],\n limit: 25,\n showViewAll: true,\n title: { en: 'OAuth Apps', 'zh-CN': 'OAuth 应用', 'ja-JP': 'OAuth アプリ', 'es-ES': 'Aplicaciones OAuth' },\n },\n },\n ],\n },\n // ── Security ──────────────────────────────────────────────\n // Grouped self-service security controls. Each `record:quick_actions`\n // pulls its actions by name from the sys_user object metadata\n // (DRY — definitions stay on the object) and filters by\n // `location: 'record_section'` so they only render here, not\n // in the global header row.\n {\n label: { en: 'Security', 'zh-CN': '安全', 'ja-JP': 'セキュリティ', 'es-ES': 'Seguridad' },\n icon: 'shield',\n children: [\n {\n type: 'element:text',\n properties: {\n variant: 'subheading',\n content: {\n en: 'Password & Sign-in',\n 'zh-CN': '密码与登录',\n 'ja-JP': 'パスワードとサインイン',\n 'es-ES': 'Contraseña e inicio de sesión',\n },\n },\n },\n {\n type: 'element:text',\n properties: {\n variant: 'caption',\n content: {\n en: 'Change your password or the email address associated with this account.',\n 'zh-CN': '修改密码或此账号绑定的邮箱地址。',\n 'ja-JP': 'パスワード、またはこのアカウントに関連付けられたメールアドレスを変更します。',\n 'es-ES': 'Cambia tu contraseña o la dirección de correo asociada a esta cuenta.',\n },\n },\n },\n {\n type: 'record:quick_actions',\n properties: {\n location: 'record_section',\n align: 'start',\n actionNames: ['change_my_password', 'change_my_email'],\n },\n },\n { type: 'element:divider' },\n {\n type: 'element:text',\n properties: {\n variant: 'subheading',\n content: {\n en: 'Two-Factor Authentication',\n 'zh-CN': '两步验证',\n 'ja-JP': '二要素認証',\n 'es-ES': 'Autenticación de dos factores',\n },\n },\n },\n {\n type: 'element:text',\n properties: {\n variant: 'caption',\n content: {\n en: 'Add a second layer of security using a TOTP authenticator app. Backup codes let you sign in if you lose your device.',\n 'zh-CN': '使用 TOTP 验证器应用添加第二层安全防护。备用验证码可在设备丢失时用于登录。',\n 'ja-JP': 'TOTP 認証アプリでセキュリティをもう一段強化します。バックアップコードがあれば、デバイスを紛失してもサインインできます。',\n 'es-ES': 'Añade una segunda capa de seguridad con una app de autenticación TOTP. Los códigos de respaldo te permiten iniciar sesión si pierdes tu dispositivo.',\n },\n },\n },\n {\n type: 'record:quick_actions',\n properties: {\n location: 'record_section',\n align: 'start',\n actionNames: ['enable_two_factor', 'disable_two_factor', 'generate_backup_codes'],\n },\n },\n { type: 'element:divider' },\n {\n type: 'element:text',\n properties: {\n variant: 'subheading',\n content: {\n en: 'Email Verification',\n 'zh-CN': '邮箱验证',\n 'ja-JP': 'メール認証',\n 'es-ES': 'Verificación de correo',\n },\n },\n },\n {\n type: 'element:text',\n properties: {\n variant: 'caption',\n content: {\n en: 'Verify your email so password resets and notifications reach you. The button appears only while verification is pending.',\n 'zh-CN': '验证你的邮箱,以便接收密码重置和系统通知。按钮仅在邮箱待验证时显示。',\n 'ja-JP': 'パスワードリセットや通知を受け取れるよう、メールアドレスを認証してください。ボタンは未認証の間のみ表示されます。',\n 'es-ES': 'Verifica tu correo para recibir restablecimientos de contraseña y notificaciones. El botón solo aparece mientras la verificación está pendiente.',\n },\n },\n },\n {\n type: 'record:quick_actions',\n properties: {\n location: 'record_section',\n align: 'start',\n actionNames: ['resend_verification_email'],\n },\n },\n { type: 'element:divider' },\n {\n type: 'element:text',\n properties: {\n variant: 'subheading',\n content: {\n en: 'Danger Zone',\n 'zh-CN': '危险操作',\n 'ja-JP': '危険な操作',\n 'es-ES': 'Zona de peligro',\n },\n },\n className: 'text-destructive',\n },\n {\n type: 'element:text',\n properties: {\n variant: 'caption',\n content: {\n en: 'Permanent. Once deleted, your account cannot be recovered.',\n 'zh-CN': '此操作不可逆,账号一经删除将无法恢复。',\n 'ja-JP': 'この操作は取り消せません。削除されたアカウントは復元できません。',\n 'es-ES': 'Permanente. Una vez eliminada, tu cuenta no se puede recuperar.',\n },\n },\n },\n {\n type: 'record:quick_actions',\n properties: {\n location: 'record_section',\n align: 'start',\n actionNames: ['delete_my_account'],\n },\n },\n ],\n },\n // ── API Keys ──────────────────────────────────────────────\n // Programmatic credentials issued for this user. Filtered by\n // user_id FK; the sys_api_key object's own list-item actions\n // (revoke / restore) handle row operations.\n {\n label: { en: 'API Keys', 'zh-CN': 'API 密钥', 'ja-JP': 'API キー', 'es-ES': 'Claves de API' },\n icon: 'key-round',\n children: [\n {\n type: 'record:related_list',\n properties: {\n objectName: 'sys_api_key',\n relationshipField: 'user_id',\n columns: ['name', 'prefix', 'expires_at', 'revoked', 'created_at'],\n sort: [{ field: 'created_at', order: 'desc' }],\n limit: 25,\n showViewAll: true,\n title: { en: 'API Keys', 'zh-CN': 'API 密钥', 'ja-JP': 'API キー', 'es-ES': 'Claves de API' },\n },\n },\n ],\n },\n ],\n },\n },\n\n // ── Suppress the Discussion / Chatter thread ──────────────────\n discussion: [],\n },\n};\n","// Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport type { Page } from '@objectstack/spec/ui';\n\n/**\n * sys_position — Record Detail Page (slotted, default for ALL sys_position\n * records)\n *\n * **Audience**: admins managing capability distribution from Setup.\n *\n * A position (岗位, ADR-0090 D3) is the flat distribution group: users hold\n * it (`sys_user_position`), and it binds permission sets\n * (`sys_position_permission_set`). This page makes both edges manageable\n * as PURE SDUI — two `record:related_list` tabs with Add pickers; no\n * bespoke React:\n *\n * - **Holders** — who holds this position. `sys_user_position.position`\n * stores the position's MACHINE NAME, so the list keys on\n * `relationshipValueField: 'name'` (the generic name-keyed-junction\n * affordance this page motivated). Assigning here inserts an ordinary\n * assignment row; the ADR-0090 D12 delegated-admin gate governs the\n * write and its denial reason surfaces in the Add dialog. The\n * `business_unit_id` column is the assignment-level BU anchor\n * (ADR-0090 Addendum); `valid_from`/`valid_until` columns join it when\n * ADR-0091 L1 lands.\n * - **Permission Sets** — what the position distributes\n * (`sys_position_permission_set`, ordinary id-keyed junction). Binding\n * is guarded by BOTH the audience-anchor gate (D5/D9 — high-privilege\n * sets never bind to everyone/guest) and the D12 gate.\n *\n * Header/actions fall through to the synthesizer, so the object's declared\n * row actions (activate/deactivate/clone/set-default) keep working.\n */\nexport const SysPositionDetailPage: Page = {\n name: 'sys_position_detail',\n label: 'Position',\n type: 'record',\n object: 'sys_position',\n template: 'default',\n kind: 'slotted',\n isDefault: true,\n\n regions: [],\n\n slots: {\n tabs: {\n type: 'page:tabs',\n properties: {\n type: 'line',\n position: 'top',\n items: [\n {\n label: { en: 'Holders', 'zh-CN': '任职人员', 'ja-JP': '在任者', 'es-ES': 'Titulares' },\n icon: 'users',\n children: [\n {\n type: 'record:related_list',\n properties: {\n objectName: 'sys_user_position',\n relationshipField: 'position',\n relationshipValueField: 'name',\n columns: ['user_id', 'business_unit_id', 'granted_by', 'created_at'],\n sort: [{ field: 'created_at', order: 'desc' }],\n limit: 25,\n showViewAll: true,\n title: { en: 'Holders', 'zh-CN': '任职人员', 'ja-JP': '在任者', 'es-ES': 'Titulares' },\n add: {\n picker: {\n object: 'sys_user',\n labelField: 'name',\n },\n linkField: 'user_id',\n label: { en: 'Assign user', 'zh-CN': '分配用户', 'ja-JP': 'ユーザーを割り当て', 'es-ES': 'Asignar usuario' },\n },\n },\n },\n ],\n },\n {\n label: { en: 'Permission Sets', 'zh-CN': '权限集', 'ja-JP': '権限セット', 'es-ES': 'Conjuntos de permisos' },\n icon: 'lock',\n children: [\n {\n type: 'record:related_list',\n properties: {\n objectName: 'sys_position_permission_set',\n relationshipField: 'position_id',\n columns: ['permission_set_id', 'created_at'],\n sort: [{ field: 'created_at', order: 'desc' }],\n limit: 25,\n showViewAll: true,\n title: { en: 'Permission Sets', 'zh-CN': '权限集', 'ja-JP': '権限セット', 'es-ES': 'Conjuntos de permisos' },\n add: {\n picker: {\n object: 'sys_permission_set',\n labelField: 'label',\n },\n linkField: 'permission_set_id',\n label: { en: 'Bind permission set', 'zh-CN': '绑定权限集', 'ja-JP': '権限セットをバインド', 'es-ES': 'Vincular conjunto de permisos' },\n },\n },\n },\n ],\n },\n ],\n },\n },\n\n // No Chatter feed on an RBAC primitive.\n discussion: [],\n },\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@objectstack/platform-objects",
3
- "version": "14.8.0",
3
+ "version": "15.0.0",
4
4
  "license": "Apache-2.0",
5
5
  "description": "Core platform object schemas for ObjectStack — identity, security, audit, tenant, and metadata objects",
6
6
  "main": "dist/index.js",
@@ -63,8 +63,8 @@
63
63
  }
64
64
  },
65
65
  "dependencies": {
66
- "@objectstack/metadata-core": "14.8.0",
67
- "@objectstack/spec": "14.8.0"
66
+ "@objectstack/metadata-core": "15.0.0",
67
+ "@objectstack/spec": "15.0.0"
68
68
  },
69
69
  "devDependencies": {
70
70
  "@types/node": "^26.1.1",