Files
Gnuboard7/templates/_bundled/sirsoft-admin_basic/layouts/admin_user_detail.json
T
2026-07-01 10:30:32 +09:00

1272 lines
49 KiB
JSON

{
"version": "1.0.0",
"layout_name": "admin_user_detail",
"permissions": [
"core.users.read"
],
"extends": "_admin_base",
"meta": {
"title": "$t:admin.users.detail.page_title",
"description": "$t:admin.users.detail.page_description"
},
"data_sources": [
{
"id": "user",
"label_key": "$t:editor.data_source.user",
"type": "api",
"endpoint": "/api/admin/users/{{route?.id}}",
"method": "GET",
"auto_fetch": true,
"auth_required": true
}
],
"errorHandling": {
"403": {
"handler": "showErrorPage",
"params": {
"target": "content"
}
},
"404": {
"handler": "showErrorPage",
"params": {
"target": "content"
}
}
},
"state": {
"activeTab": "basic_info"
},
"slots": {
"content": [
{
"id": "user_detail_content",
"type": "basic",
"name": "Div",
"props": {
"className": "admin-page-content"
},
"children": [
{
"id": "page_header",
"type": "basic",
"name": "Div",
"props": {
"className": "page-header-fullbleed"
},
"children": [
{
"type": "basic",
"name": "Div",
"props": {
"className": "flex-between"
},
"children": [
{
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "H1",
"props": {
"className": "page-title"
},
"text": "$t:admin.users.detail.page_title"
},
{
"type": "basic",
"name": "P",
"props": {
"className": "page-description"
},
"text": "$t:admin.users.detail.page_description_with_info|name={{user?.data?.name ?? ''}}|email={{user?.data?.email ?? ''}}"
}
]
},
{
"type": "basic",
"name": "Div",
"props": {
"className": "flex-center gap-2"
},
"children": [
{
"id": "header_back_button",
"type": "basic",
"name": "Button",
"props": {
"className": "flex-center gap-2 btn btn-secondary"
},
"actions": [
{
"type": "click",
"handler": "navigateBack"
}
],
"children": [
{
"type": "basic",
"name": "Icon",
"props": {
"name": "arrow-left",
"className": "w-4 h-4"
}
},
{
"type": "basic",
"name": "Span",
"text": "$t:common.back"
}
]
},
{
"id": "header_edit_button",
"type": "basic",
"name": "Button",
"props": {
"disabled": "{{user?.data?.abilities?.can_update !== true}}",
"className": "flex-center gap-2 px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 font-medium transition-colors disabled:opacity-50 disabled:cursor-not-allowed"
},
"actions": [
{
"type": "click",
"handler": "navigate",
"params": {
"path": "/admin/users/{{route?.id}}/edit"
}
}
],
"children": [
{
"type": "basic",
"name": "Icon",
"props": {
"name": "pencil",
"className": "w-4 h-4"
}
},
{
"type": "basic",
"name": "Span",
"text": "$t:admin.users.detail.edit"
}
]
}
]
}
]
}
]
},
{
"id": "user_detail_tabs",
"type": "composite",
"name": "TabNavigationScroll",
"props": {
"className": "sticky-tab-nav tab-nav-default",
"activeTabId": "{{_local.activeTab ?? 'basic_info'}}",
"enableScrollSpy": true,
"scrollSpyOffset": 56,
"sectionIdPrefix": "",
"tabs": [
{
"id": "basic_info",
"label": "$t:admin.users.detail.tabs.basic_info"
},
{
"id": "contact_info",
"label": "$t:admin.users.detail.tabs.contact_info"
},
{
"id": "location_info",
"label": "$t:admin.users.detail.tabs.location_info"
},
{
"id": "profile_memo",
"label": "$t:admin.users.detail.tabs.profile_memo"
},
{
"id": "activity_info",
"label": "$t:admin.users.detail.tabs.activity_info"
},
{
"id": "consent_info",
"label": "$t:admin.users.detail.tabs.consent_info"
}
]
},
"actions": [
{
"type": "change",
"handler": "setState",
"params": {
"target": "local",
"activeTab": "{{$event.value}}"
}
}
]
},
{
"id": "user_api_error",
"type": "basic",
"name": "Div",
"if": "{{_dataSourceErrors?.user}}",
"props": {
"className": "alert-danger"
},
"children": [
{
"type": "basic",
"name": "Div",
"props": {
"className": "flex-center gap-3"
},
"children": [
{
"type": "basic",
"name": "Icon",
"props": {
"name": "triangle-exclamation",
"className": "w-5 h-5 text-red-600 dark:text-red-400 flex-shrink-0"
}
},
{
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "H3",
"props": {
"className": "text-error-strong"
},
"text": "$t:admin.users.detail.error_loading_user"
},
{
"type": "basic",
"name": "P",
"props": {
"className": "text-error-soft mt-1"
},
"text": "{{_dataSourceErrors?.user?.message ?? '$t:common.error_occurred'}}"
}
]
}
]
}
]
},
{
"id": "section_basic_info",
"type": "basic",
"name": "Div",
"props": {
"id": "basic_info",
"className": "admin-card"
},
"children": [
{
"type": "basic",
"name": "Div",
"props": {
"className": "flex-center gap-2 mb-4"
},
"children": [
{
"type": "basic",
"name": "Icon",
"props": {
"name": "user",
"className": "text-secondary w-5 h-5"
}
},
{
"type": "basic",
"name": "H3",
"props": {
"className": "section-heading"
},
"text": "$t:admin.users.form.sections.basic_info"
}
]
},
{
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Div",
"props": {
"className": "row-stack"
},
"children": [
{
"type": "basic",
"name": "Div",
"props": {
"className": "grid-2col-responsive"
},
"children": [
{
"id": "field_uuid",
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Label",
"props": {
"className": "text-label-subtle block font-medium mb-1"
},
"text": "UUID"
},
{
"type": "basic",
"name": "Div",
"props": {
"className": "text-primary text-sm font-mono"
},
"text": "{{user?.data?.uuid ?? '-'}}"
}
]
},
{
"id": "field_name",
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Label",
"props": {
"className": "text-label-subtle block font-medium mb-1"
},
"text": "$t:admin.users.form.fields.name"
},
{
"type": "basic",
"name": "Div",
"props": {
"className": "text-primary text-sm"
},
"text": "{{user?.data?.name ?? '-'}}"
}
]
}
]
},
{
"type": "basic",
"name": "Div",
"props": {
"className": "grid-2col-responsive"
},
"children": [
{
"id": "field_nickname",
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Label",
"props": {
"className": "text-label-subtle block font-medium mb-1"
},
"text": "$t:admin.users.form.fields.nickname"
},
{
"type": "basic",
"name": "Div",
"props": {
"className": "text-primary text-sm"
},
"text": "{{user?.data?.nickname ?? '-'}}"
}
]
},
{
"id": "field_roles",
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Label",
"props": {
"className": "text-label-subtle block font-medium mb-1"
},
"text": "$t:admin.users.form.fields.role"
},
{
"type": "basic",
"name": "Div",
"props": {
"className": "flex flex-wrap gap-1"
},
"children": [
{
"type": "basic",
"name": "Span",
"iteration": {
"source": "user?.data?.roles ?? []",
"item_var": "role"
},
"props": {
"className": "inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200"
},
"text": "{{role.name}}"
}
]
}
]
}
]
},
{
"type": "basic",
"name": "Div",
"props": {
"className": "grid-2col-responsive"
},
"children": [
{
"id": "field_status",
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Label",
"props": {
"className": "text-label-subtle block font-medium mb-1"
},
"text": "$t:admin.users.form.fields.status"
},
{
"type": "basic",
"name": "Span",
"props": {
"className": "{{user?.data?.status_variant === 'success' ? 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200' : user?.data?.status_variant === 'secondary' ? 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-gray-200' : user?.data?.status_variant === 'danger' ? 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200' : 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200'}}"
},
"text": "{{user?.data?.status_label ?? '-'}}"
}
]
},
{
"id": "field_email_verified",
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Label",
"props": {
"className": "text-label-subtle block font-medium mb-1"
},
"text": "$t:admin.users.detail.email_verification"
},
{
"type": "basic",
"name": "Div",
"props": {
"className": "flex-center gap-1"
},
"children": [
{
"type": "basic",
"name": "Icon",
"condition": "{{user?.data?.email_verified_at}}",
"props": {
"name": "check-circle",
"className": "w-4 h-4 text-green-500"
}
},
{
"type": "basic",
"name": "Span",
"props": {
"className": "text-primary text-sm"
},
"text": "{{user?.data?.email_verified_at ? '$t:admin.users.form.fields.email_verified' : '$t:admin.users.detail.not_verified'}}"
}
]
}
]
}
]
}
]
}
]
}
]
},
{
"id": "section_contact_info",
"type": "basic",
"name": "Div",
"props": {
"id": "contact_info",
"className": "admin-card"
},
"children": [
{
"type": "basic",
"name": "Div",
"props": {
"className": "flex-center gap-2 mb-4"
},
"children": [
{
"type": "basic",
"name": "Icon",
"props": {
"name": "envelope",
"className": "text-secondary w-5 h-5"
}
},
{
"type": "basic",
"name": "H3",
"props": {
"className": "section-heading"
},
"text": "$t:admin.users.form.sections.contact_info"
}
]
},
{
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Div",
"props": {
"className": "row-stack"
},
"children": [
{
"type": "basic",
"name": "Div",
"props": {
"className": "grid-2col-responsive"
},
"children": [
{
"id": "field_email",
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Label",
"props": {
"className": "text-label-subtle block font-medium mb-1"
},
"text": "$t:admin.users.form.fields.email"
},
{
"type": "basic",
"name": "Div",
"props": {
"className": "text-primary text-sm"
},
"text": "{{user?.data?.email ?? '-'}}"
}
]
},
{
"id": "field_homepage",
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Label",
"props": {
"className": "text-label-subtle block font-medium mb-1"
},
"text": "$t:admin.users.form.fields.homepage"
},
{
"type": "basic",
"name": "Div",
"props": {
"className": "text-primary text-sm"
},
"text": "{{user?.data?.homepage ?? '-'}}"
}
]
}
]
},
{
"type": "basic",
"name": "Div",
"props": {
"className": "grid-2col-responsive"
},
"children": [
{
"id": "field_mobile",
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Label",
"props": {
"className": "text-label-subtle block font-medium mb-1"
},
"text": "$t:admin.users.form.fields.mobile"
},
{
"type": "basic",
"name": "Div",
"props": {
"className": "text-primary text-sm"
},
"text": "{{user?.data?.mobile ?? '-'}}"
}
]
},
{
"id": "field_phone",
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Label",
"props": {
"className": "text-label-subtle block font-medium mb-1"
},
"text": "$t:admin.users.form.fields.phone"
},
{
"type": "basic",
"name": "Div",
"props": {
"className": "text-primary text-sm"
},
"text": "{{user?.data?.phone ?? '-'}}"
}
]
}
]
}
]
}
]
}
]
},
{
"id": "section_location_info",
"type": "basic",
"name": "Div",
"props": {
"id": "location_info",
"className": "admin-card"
},
"children": [
{
"type": "basic",
"name": "Div",
"props": {
"className": "flex-center gap-2 mb-4"
},
"children": [
{
"type": "basic",
"name": "Icon",
"props": {
"name": "map-pin",
"className": "text-secondary w-5 h-5"
}
},
{
"type": "basic",
"name": "H3",
"props": {
"className": "section-heading"
},
"text": "$t:admin.users.form.sections.location_info"
}
]
},
{
"type": "basic",
"name": "Div",
"props": {
"className": "row-stack"
},
"children": [
{
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Div",
"props": {
"className": "grid-2col-responsive"
},
"children": [
{
"id": "field_country",
"if": false,
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Label",
"props": {
"className": "text-label-subtle block font-medium mb-1"
},
"text": "$t:admin.users.form.fields.country"
},
{
"type": "basic",
"name": "Div",
"props": {
"className": "text-primary text-sm"
},
"text": "{{user?.data?.country_name ?? user?.data?.country ?? '-'}}"
}
]
},
{
"id": "field_language",
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Label",
"props": {
"className": "text-label-subtle block font-medium mb-1"
},
"text": "$t:admin.users.form.fields.language"
},
{
"type": "basic",
"name": "Span",
"if": "{{user?.data?.language}}",
"props": {
"className": "inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-indigo-100 text-indigo-800 dark:bg-indigo-900 dark:text-indigo-200"
},
"text": "{{user?.data?.language_label ?? user?.data?.language ?? '-'}}"
},
{
"type": "basic",
"name": "Span",
"if": "{{!user?.data?.language}}",
"props": {
"className": "text-primary text-sm"
},
"text": "-"
}
]
}
]
}
]
}
]
},
{
"id": "field_timezone",
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Label",
"props": {
"className": "text-label-subtle block font-medium mb-1"
},
"text": "$t:admin.users.form.fields.timezone"
},
{
"type": "basic",
"name": "Div",
"props": {
"className": "text-primary text-sm"
},
"text": "{{user?.data?.timezone ?? '-'}}"
}
]
},
{
"id": "field_address",
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Label",
"props": {
"className": "text-label-subtle block font-medium mb-1"
},
"text": "$t:admin.users.form.fields.address"
},
{
"type": "basic",
"name": "Div",
"props": {
"className": "text-primary text-sm"
},
"text": "{{user?.data?.zipcode || user?.data?.address || user?.data?.address_detail ? ((user?.data?.zipcode ? '(' + user.data.zipcode + ') ' : '') + (user?.data?.address ?? '') + (user?.data?.address_detail ? ' ' + user.data.address_detail : '')) : '-'}}"
}
]
}
]
}
]
},
{
"id": "section_profile_memo",
"type": "basic",
"name": "Div",
"props": {
"id": "profile_memo",
"className": "admin-card"
},
"children": [
{
"type": "basic",
"name": "Div",
"props": {
"className": "flex-center gap-2 mb-4"
},
"children": [
{
"type": "basic",
"name": "Icon",
"props": {
"name": "user-circle",
"className": "text-secondary w-5 h-5"
}
},
{
"type": "basic",
"name": "H3",
"props": {
"className": "section-heading"
},
"text": "$t:admin.users.form.sections.profile_memo"
}
]
},
{
"type": "basic",
"name": "Div",
"props": {
"className": "row-stack"
},
"children": [
{
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Div",
"props": {
"className": "grid-2col-responsive"
},
"children": [
{
"id": "field_signature",
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Label",
"props": {
"className": "text-label-subtle block font-medium mb-1"
},
"text": "$t:admin.users.form.fields.signature"
},
{
"type": "basic",
"name": "Div",
"props": {
"className": "text-primary text-sm"
},
"text": "{{user?.data?.signature ?? '-'}}"
}
]
},
{
"id": "field_bio",
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Label",
"props": {
"className": "text-label-subtle block font-medium mb-1"
},
"text": "$t:admin.users.form.fields.bio"
},
{
"type": "basic",
"name": "Div",
"props": {
"className": "text-primary text-sm whitespace-pre-line"
},
"text": "{{user?.data?.bio ?? '-'}}"
}
]
}
]
}
]
}
]
},
{
"id": "field_admin_memo",
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Label",
"props": {
"className": "text-label-subtle block font-medium mb-1"
},
"text": "$t:admin.users.form.fields.admin_memo"
},
{
"type": "basic",
"name": "Div",
"props": {
"className": "text-primary text-sm whitespace-pre-line"
},
"text": "{{user?.data?.admin_memo ?? '-'}}"
}
]
}
]
}
]
},
{
"id": "section_activity_info",
"type": "basic",
"name": "Div",
"props": {
"id": "activity_info",
"className": "admin-card"
},
"children": [
{
"type": "basic",
"name": "Div",
"props": {
"className": "flex-center gap-2 mb-4"
},
"children": [
{
"type": "basic",
"name": "Icon",
"props": {
"name": "clock",
"className": "text-secondary w-5 h-5"
}
},
{
"type": "basic",
"name": "H3",
"props": {
"className": "section-heading"
},
"text": "$t:admin.users.form.sections.activity_info"
}
]
},
{
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Div",
"props": {
"className": "row-stack"
},
"children": [
{
"type": "basic",
"name": "Div",
"props": {
"className": "grid-2col-responsive"
},
"children": [
{
"id": "field_created_at",
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Label",
"props": {
"className": "text-label-subtle block font-medium mb-1"
},
"text": "$t:admin.users.form.fields.created_at"
},
{
"type": "basic",
"name": "Div",
"props": {
"className": "text-primary text-sm"
},
"text": "{{user?.data?.created_at ?? '-'}}"
}
]
},
{
"id": "field_last_login_at",
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Label",
"props": {
"className": "text-label-subtle block font-medium mb-1"
},
"text": "$t:admin.users.form.fields.last_login_at"
},
{
"type": "basic",
"name": "Div",
"props": {
"className": "text-primary text-sm"
},
"text": "{{user?.data?.last_login_at ?? '-'}}"
}
]
}
]
},
{
"type": "basic",
"name": "Div",
"props": {
"className": "grid-2col-responsive"
},
"children": [
{
"id": "field_ip_address",
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Label",
"props": {
"className": "text-label-subtle block font-medium mb-1"
},
"text": "$t:admin.users.form.fields.ip_address"
},
{
"type": "basic",
"name": "Div",
"props": {
"className": "text-primary text-sm"
},
"text": "{{user?.data?.ip_address ?? '-'}}"
}
]
},
{
"id": "field_withdrawn_at",
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Label",
"props": {
"className": "text-label-subtle block font-medium mb-1"
},
"text": "$t:admin.users.detail.withdrawn_at"
},
{
"type": "basic",
"name": "Div",
"props": {
"className": "text-primary text-sm"
},
"text": "{{user?.data?.withdrawn_at ?? '-'}}"
}
]
}
]
},
{
"id": "field_blocked_at",
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Label",
"props": {
"className": "text-label-subtle block font-medium mb-1"
},
"text": "$t:admin.users.detail.blocked_at"
},
{
"type": "basic",
"name": "Div",
"props": {
"className": "text-primary text-sm"
},
"text": "{{user?.data?.blocked_at ?? '-'}}"
}
]
}
]
}
]
}
]
},
{
"id": "section_consent_info",
"type": "basic",
"name": "Div",
"props": {
"id": "consent_info",
"className": "admin-card"
},
"children": [
{
"type": "basic",
"name": "Div",
"props": {
"className": "flex-center gap-2 mb-4"
},
"children": [
{
"type": "basic",
"name": "Icon",
"props": {
"name": "file-contract",
"className": "text-secondary w-5 h-5"
}
},
{
"type": "basic",
"name": "H3",
"props": {
"className": "section-heading"
},
"text": "$t:admin.users.detail.consent_history"
}
]
},
{
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Div",
"props": {
"className": "grid-2col-responsive"
},
"children": [
{
"id": "field_terms_consent",
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Label",
"props": {
"className": "text-label-subtle block font-medium mb-1"
},
"text": "$t:admin.users.detail.consent_type.terms"
},
{
"type": "basic",
"name": "Span",
"props": {
"className": "text-primary text-sm"
},
"text": "{{user?.data?.terms_consent?.agreed_at ?? '-'}}"
}
]
},
{
"id": "field_privacy_consent",
"type": "basic",
"name": "Div",
"children": [
{
"type": "basic",
"name": "Label",
"props": {
"className": "text-label-subtle block font-medium mb-1"
},
"text": "$t:admin.users.detail.consent_type.privacy"
},
{
"type": "basic",
"name": "Span",
"props": {
"className": "text-primary text-sm"
},
"text": "{{user?.data?.privacy_consent?.agreed_at ?? '-'}}"
}
]
}
]
}
]
}
]
},
{
"id": "extension_tab_content",
"type": "basic",
"name": "Div",
"props": {
"className": "tab-content mt-6"
},
"comment": "확장(모듈/플러그인)이 inject_props로 탭을 추가하고 append_child로 섹션 콘텐츠를 주입하는 영역"
}
]
}
]
},
"transition_overlay": {
"wait_for": [
"user"
]
}
}