@plumile/backoffice-react 0.1.143 → 0.1.145
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.
- package/lib/esm/auth/AuthRefreshNotice.js.map +1 -1
- package/lib/esm/auth/TotpQrCode.js.map +1 -1
- package/lib/esm/auth/authRefreshNotice.css.js +1 -1
- package/lib/esm/auth/login/AuthPanel.js.map +1 -1
- package/lib/esm/auth/login/EmailCapturePanel.js.map +1 -1
- package/lib/esm/auth/login/LoginFlow.js.map +1 -1
- package/lib/esm/auth/login/MethodChooser.js.map +1 -1
- package/lib/esm/auth/login/MfaChallengeForm.js.map +1 -1
- package/lib/esm/auth/login/OidcButtons.js.map +1 -1
- package/lib/esm/auth/login/PasskeyLoginForm.js.map +1 -1
- package/lib/esm/auth/login/PasswordLoginPanel.js.map +1 -1
- package/lib/esm/auth/login/loginPage.css.js +1 -1
- package/lib/esm/auth/login/loginPage.css.js.map +1 -1
- package/lib/esm/auth/login/synchronizeAuthStatusQuery.js.map +1 -1
- package/lib/esm/auth/pages/AcceptInvitationScreen.js.map +1 -1
- package/lib/esm/auth/pages/PasswordResetCompleteScreen.js.map +1 -1
- package/lib/esm/auth/pages/PasswordResetRequestScreen.js.map +1 -1
- package/lib/esm/auth/pages/VerifyEmailScreen.js.map +1 -1
- package/lib/esm/components/backoffice/actions/BackofficeEntityActionFormDialog.js +14 -14
- package/lib/esm/components/backoffice/actions/BackofficeEntityActionFormDialog.js.map +1 -1
- package/lib/esm/components/backoffice/actions/LazyBackofficeEntityActionFormDialog.js.map +1 -1
- package/lib/esm/components/backoffice/actions/backofficeEntityActionFormDialog.css.js +1 -1
- package/lib/esm/components/backoffice/actions/toastViewAction.js.map +1 -1
- package/lib/esm/components/backoffice/billing/BackofficeBillingUsageChart.js +1 -1
- package/lib/esm/components/backoffice/billing/BackofficeBillingUsageChart.js.map +1 -1
- package/lib/esm/components/backoffice/billing/backofficeBillingUsageChart.css.js +1 -1
- package/lib/esm/components/backoffice/columns/buildDataTableColumns.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailBadgeRow.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailErrorList.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailRelationLink.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailRelationList.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailRelationListBlock.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailTaggedValue.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeEntitySummaryHeader.js +6 -6
- package/lib/esm/components/backoffice/detail/BackofficeEntitySummaryHeader.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeEnumLabel.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeLifecycleTimelineSection.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeReferenceValue.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeRelationsSummaryGrid.js +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeRelationsSummaryGrid.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeStatusGroup.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeStatusMetaBadge.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeTokenUsageBreakdown.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeUsageCostBreakdown.js +13 -13
- package/lib/esm/components/backoffice/detail/BackofficeUsageCostBreakdown.js.map +1 -1
- package/lib/esm/components/backoffice/detail/backofficeDetailBadgeRow.css.js +1 -1
- package/lib/esm/components/backoffice/detail/backofficeDetailErrorList.css.js +1 -1
- package/lib/esm/components/backoffice/detail/backofficeDetailLayout.css.js +1 -1
- package/lib/esm/components/backoffice/detail/backofficeDetailRelationLink.css.js +2 -1
- package/lib/esm/components/backoffice/detail/backofficeDetailRelationList.css.js +1 -1
- package/lib/esm/components/backoffice/detail/backofficeEntitySummaryHeader.css.js +1 -1
- package/lib/esm/components/backoffice/detail/backofficeRelationsSummaryGrid.css.js +1 -1
- package/lib/esm/components/backoffice/detail/backofficeUsageCostBreakdown.css.js +1 -1
- package/lib/esm/components/backoffice/detail/createBackofficeEntityLinkProps.js.map +1 -1
- package/lib/esm/components/backoffice/detail/detailPayloadUtils.js.map +1 -1
- package/lib/esm/components/backoffice/errors/BackofficeErrorBoundary.js.map +1 -1
- package/lib/esm/components/backoffice/filters/BackofficeFilterAction.js.map +1 -1
- package/lib/esm/components/backoffice/filters/DeferredFilterSearchInput.js.map +1 -1
- package/lib/esm/components/backoffice/filters/EntityFilterValue.js.map +1 -1
- package/lib/esm/components/backoffice/filters/EntityIdFilterField.js +1 -1
- package/lib/esm/components/backoffice/filters/EntityIdFilterField.js.map +1 -1
- package/lib/esm/components/backoffice/filters/backofficeFilterAction.css.js +1 -1
- package/lib/esm/components/backoffice/filters/backofficeFilterAction.css.js.map +1 -1
- package/lib/esm/components/backoffice/filters/deferredFilterSearchInput.css.js +1 -1
- package/lib/esm/components/backoffice/filters/entityIdFilterField.css.js +1 -1
- package/lib/esm/components/backoffice/hub/BackofficeHubTemplate.js +5 -5
- package/lib/esm/components/backoffice/hub/BackofficeHubTemplate.js.map +1 -1
- package/lib/esm/components/backoffice/hub/backofficeHubTemplate.css.js +1 -1
- package/lib/esm/components/backoffice/layout/BackofficePermissionsContext.js.map +1 -1
- package/lib/esm/components/backoffice/layout/backofficeSidebarActions.css.js +1 -1
- package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeRightPageLayout.js.map +1 -1
- package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarBreadcrumb.js +2 -2
- package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarBreadcrumb.js.map +1 -1
- package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarPortal.js.map +1 -1
- package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarPortalContext.js.map +1 -1
- package/lib/esm/components/backoffice/layout/breadcrumb/assertValidBreadcrumb.js.map +1 -1
- package/lib/esm/components/backoffice/layout/breadcrumb/backofficeTopbarBreadcrumb.css.js +1 -2
- package/lib/esm/components/backoffice/layout/breadcrumb/buildBreadcrumbs.js.map +1 -1
- package/lib/esm/components/backoffice/layout/buildSidebarSections.js.map +1 -1
- package/lib/esm/components/backoffice/layout/mapViewerToSidebarProfileView.js.map +1 -1
- package/lib/esm/components/backoffice/layout/sidebarUtils.js.map +1 -1
- package/lib/esm/components/backoffice/links/BackofficeInlineLink.js.map +1 -1
- package/lib/esm/components/backoffice/links/BackofficeLink.js.map +1 -1
- package/lib/esm/components/backoffice/links/BackofficeLinkContent.js +1 -1
- package/lib/esm/components/backoffice/links/BackofficeLinkContent.js.map +1 -1
- package/lib/esm/components/backoffice/links/BackofficeLinkLabel.js.map +1 -1
- package/lib/esm/components/backoffice/links/backofficeLink.css.js +1 -1
- package/lib/esm/components/backoffice/links/resolveBackofficeLink.js.map +1 -1
- package/lib/esm/components/backoffice/links/resolveBackofficeTargetIcon.js.map +1 -1
- package/lib/esm/components/backoffice/links/useBackofficeLink.js.map +1 -1
- package/lib/esm/components/backoffice/list/RowFlagsCell.css.js +1 -1
- package/lib/esm/components/backoffice/list/RowFlagsCell.js.map +1 -1
- package/lib/esm/components/backoffice/overview/BackofficeOverviewLayout.js.map +1 -1
- package/lib/esm/components/backoffice/overview/backofficeOverviewLayout.css.js +1 -1
- package/lib/esm/components/backoffice/overview/backofficeOverviewLayout.css.js.map +1 -1
- package/lib/esm/components/backoffice/pickers/EntityIdPickerDialog.js.map +1 -1
- package/lib/esm/components/backoffice/pickers/entityIdPickerDialog.css.js +1 -1
- package/lib/esm/components/backoffice/refs/BackofficeEntityIdRef.js.map +1 -1
- package/lib/esm/components/backoffice/refs/BackofficeEntityLink.js.map +1 -1
- package/lib/esm/components/backoffice/refs/BackofficeRelatedCountLink.js.map +1 -1
- package/lib/esm/components/backoffice/refs/backofficeEntityIdRef.css.js +1 -1
- package/lib/esm/components/backoffice/refs/backofficeRelatedCountLink.css.js +1 -1
- package/lib/esm/components/backoffice/routing/BackofficeContentBoundary.js.map +1 -1
- package/lib/esm/components/backoffice/routing/BackofficeContentError.js.map +1 -1
- package/lib/esm/components/backoffice/routing/BackofficeContentFallback.js.map +1 -1
- package/lib/esm/components/backoffice/routing/BackofficeRouteFallback.js.map +1 -1
- package/lib/esm/components/backoffice/routing/BackofficeRoutePendingBar.js.map +1 -1
- package/lib/esm/components/backoffice/routing/backofficeContentBoundary.css.js +1 -1
- package/lib/esm/components/backoffice/routing/backofficeContentError.css.js +1 -1
- package/lib/esm/components/backoffice/routing/backofficeContentFallback.css.js +1 -1
- package/lib/esm/components/backoffice/routing/backofficeRouteFallback.css.js +1 -1
- package/lib/esm/components/backoffice/routing/backofficeRoutePendingBar.css.js +1 -1
- package/lib/esm/components/backoffice/routing/backofficeRoutePendingBar.css.js.map +1 -1
- package/lib/esm/components/backoffice/scaffolds/BackofficeEntityDetailScaffold.js.map +1 -1
- package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js.map +1 -1
- package/lib/esm/components/backoffice/scaffolds/BackofficeListFilterContext.js.map +1 -1
- package/lib/esm/components/backoffice/scaffolds/BackofficeTabbedDetailShell.js.map +1 -1
- package/lib/esm/components/backoffice/scaffolds/backofficeEntityListScaffold.css.js +1 -1
- package/lib/esm/components/backoffice/scaffolds/backofficeTabbedDetailShell.css.js +1 -1
- package/lib/esm/components/backoffice/shared/BackofficeFilterableCell.js.map +1 -1
- package/lib/esm/components/backoffice/shared/BackofficeFormattedCurrency.js.map +1 -1
- package/lib/esm/components/backoffice/shared/BackofficeFormattedNumber.js.map +1 -1
- package/lib/esm/components/backoffice/shared/BackofficeInlineFilterRow.js.map +1 -1
- package/lib/esm/components/backoffice/shared/backofficeFilterableCell.css.js +5 -5
- package/lib/esm/components/backoffice/shared/backofficeFilterableCell.css.js.map +1 -1
- package/lib/esm/components/backoffice/shared/backofficeInlineFilterRow.css.js +1 -1
- package/lib/esm/components/backoffice/tools/BackofficeToolsDocPanel.js +1 -1
- package/lib/esm/components/backoffice/tools/BackofficeToolsDocPanel.js.map +1 -1
- package/lib/esm/components/backoffice/tools/BackofficeToolsErrorFallback.js.map +1 -1
- package/lib/esm/components/backoffice/tools/BackofficeToolsJsonForm.js.map +1 -1
- package/lib/esm/components/backoffice/tools/BackofficeToolsQueryBoundary.js.map +1 -1
- package/lib/esm/components/backoffice/tools/backofficeToolsDocPanel.css.js +1 -1
- package/lib/esm/components/backoffice/tools/backofficeToolsDocPanel.css.js.map +1 -1
- package/lib/esm/components/backoffice/tools/backofficeToolsForm.css.js +1 -1
- package/lib/esm/components/backoffice/tools/backofficeToolsJsonForm.css.js +1 -1
- package/lib/esm/components/backoffice/tools/parseToolJson.js.map +1 -1
- package/lib/esm/filters/filterHelpers.js.map +1 -1
- package/lib/esm/hooks/useAuth.js.map +1 -1
- package/lib/esm/hooks/useBackofficeAuth.js.map +1 -1
- package/lib/esm/hooks/useBackofficeInfiniteScrollSentinel.js.map +1 -1
- package/lib/esm/hooks/useBackofficeListRefetch.js.map +1 -1
- package/lib/esm/hooks/useBackofficeListUrlState.js.map +1 -1
- package/lib/esm/hooks/useBackofficeLoadMore.js.map +1 -1
- package/lib/esm/hooks/useBackofficeSessionAuth.js.map +1 -1
- package/lib/esm/hooks/useBackofficeSidebarPins.js.map +1 -1
- package/lib/esm/hooks/useConditionalSubscription.js.map +1 -1
- package/lib/esm/hooks/useCopyToClipboard.js.map +1 -1
- package/lib/esm/hooks/useInfiniteConnection.js.map +1 -1
- package/lib/esm/hooks/useRefetchNeededReload.js.map +1 -1
- package/lib/esm/hooks/useSidebarGroupCollapse.js.map +1 -1
- package/lib/esm/i18n/createI18nInstance.js.map +1 -1
- package/lib/esm/i18n/mergeResourceLanguages.js.map +1 -1
- package/lib/esm/i18n/resources.js.map +1 -1
- package/lib/esm/i18n/useBackofficeFormats.js.map +1 -1
- package/lib/esm/i18n/useBackofficeReactTranslation.js.map +1 -1
- package/lib/esm/i18n/useReviewStatusLabel.js.map +1 -1
- package/lib/esm/modules/base64.js.map +1 -1
- package/lib/esm/modules/formatFileSize.js.map +1 -1
- package/lib/esm/modules/webauthn.js.map +1 -1
- package/lib/esm/node_modules/@babel/runtime/helpers/arrayLikeToArray.js.map +1 -1
- package/lib/esm/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js.map +1 -1
- package/lib/esm/node_modules/@babel/runtime/helpers/defineProperty.js.map +1 -1
- package/lib/esm/node_modules/@babel/runtime/helpers/interopRequireDefault.js.map +1 -1
- package/lib/esm/node_modules/@babel/runtime/helpers/iterableToArray.js.map +1 -1
- package/lib/esm/node_modules/@babel/runtime/helpers/nonIterableSpread.js.map +1 -1
- package/lib/esm/node_modules/@babel/runtime/helpers/objectSpread2.js.map +1 -1
- package/lib/esm/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js.map +1 -1
- package/lib/esm/node_modules/@babel/runtime/helpers/toConsumableArray.js.map +1 -1
- package/lib/esm/node_modules/@babel/runtime/helpers/toPrimitive.js.map +1 -1
- package/lib/esm/node_modules/@babel/runtime/helpers/toPropertyKey.js.map +1 -1
- package/lib/esm/node_modules/@babel/runtime/helpers/typeof.js.map +1 -1
- package/lib/esm/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js.map +1 -1
- package/lib/esm/node_modules/@vanilla-extract/recipes/dist/createRuntimeFn-62c9670f.esm.js.map +1 -1
- package/lib/esm/node_modules/fbjs/lib/areEqual.js.map +1 -1
- package/lib/esm/node_modules/invariant/browser.js.map +1 -1
- package/lib/esm/node_modules/relay-test-utils/index.js.map +1 -1
- package/lib/esm/node_modules/relay-test-utils/lib/RelayMockPayloadGenerator.js.map +1 -1
- package/lib/esm/node_modules/relay-test-utils/lib/RelayModernMockEnvironment.js.map +1 -1
- package/lib/esm/node_modules/relay-test-utils/lib/RelayResolverTestUtils.js.map +1 -1
- package/lib/esm/node_modules/relay-test-utils/lib/index.js.map +1 -1
- package/lib/esm/node_modules/relay-test-utils/lib/unwrapContainer.js.map +1 -1
- package/lib/esm/pages/BackofficeAcceptInvitationPage.js.map +1 -1
- package/lib/esm/pages/BackofficeDashboardPage.helpers.js.map +1 -1
- package/lib/esm/pages/BackofficeDashboardPage.js.map +1 -1
- package/lib/esm/pages/BackofficeEntityDetailLayoutPage.js.map +1 -1
- package/lib/esm/pages/BackofficeEntityDetailPage.helpers.js.map +1 -1
- package/lib/esm/pages/BackofficeEntityDetailPage.js +2 -2
- package/lib/esm/pages/BackofficeEntityDetailPage.js.map +1 -1
- package/lib/esm/pages/BackofficeEntityDetailPage.view-helpers.js.map +1 -1
- package/lib/esm/pages/BackofficeEntityDetailUnknownPageRedirect.js.map +1 -1
- package/lib/esm/pages/BackofficeEntityListPage.helpers.js.map +1 -1
- package/lib/esm/pages/BackofficeEntityListPage.js.map +1 -1
- package/lib/esm/pages/BackofficeHubPage.js.map +1 -1
- package/lib/esm/pages/BackofficeLayoutPage.js.map +1 -1
- package/lib/esm/pages/BackofficeLoginPage.js.map +1 -1
- package/lib/esm/pages/BackofficePasswordResetCompletePage.js.map +1 -1
- package/lib/esm/pages/BackofficePasswordResetRequestPage.js.map +1 -1
- package/lib/esm/pages/BackofficeVerifyEmailPage.js.map +1 -1
- package/lib/esm/pages/backofficeDashboardPage.css.js +1 -1
- package/lib/esm/pages/backofficeEntityDetailPage.css.js +1 -1
- package/lib/esm/pages/backofficeEntityListPage.css.js +1 -1
- package/lib/esm/pages/detail/BackofficeEntityDetailLayoutContext.js.map +1 -1
- package/lib/esm/pages/detail/buildTabsItems.js.map +1 -1
- package/lib/esm/pages/detail/pageResolution.js.map +1 -1
- package/lib/esm/provider/BackofficeConfigContext.js.map +1 -1
- package/lib/esm/provider/BackofficeProvider.js.map +1 -1
- package/lib/esm/provider/dashboardRegistrations.js.map +1 -1
- package/lib/esm/provider/entityRegistry.js.map +1 -1
- package/lib/esm/provider/lazyValue.js.map +1 -1
- package/lib/esm/provider/useBackofficeEntityLoader.js.map +1 -1
- package/lib/esm/provider/useBackofficeLazyValue.js.map +1 -1
- package/lib/esm/relay/RelayProvider.js.map +1 -1
- package/lib/esm/relay/connectionUtils.js.map +1 -1
- package/lib/esm/relay/createInlineReader.js.map +1 -1
- package/lib/esm/relay/envHelpers.js.map +1 -1
- package/lib/esm/relay/environment.js.map +1 -1
- package/lib/esm/relay/mutationResult.js.map +1 -1
- package/lib/esm/router/backofficeAuthPaths.js.map +1 -1
- package/lib/esm/router/createBackofficeRoutes.js.map +1 -1
- package/lib/esm/storybook/relay/RelayStory.css.js +1 -1
- package/lib/esm/storybook/relay/RelayStory.js.map +1 -1
- package/lib/esm/storybook/relay/mockResolvers.js.map +1 -1
- package/lib/esm/style.css +1 -1
- package/lib/esm/subscriptions/useCursorResumableSubscription.js.map +1 -1
- package/lib/types/components/backoffice/errors/BackofficeErrorBoundary.stories.d.ts +1 -1
- package/lib/types/components/backoffice/errors/BackofficeErrorBoundary.stories.d.ts.map +1 -1
- package/lib/types/components/backoffice/overview/backofficeOverviewLayout.css.d.ts.map +1 -1
- package/lib/types/components/backoffice/tools/backofficeToolsDocPanel.css.d.ts.map +1 -1
- package/package.json +16 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeEntitySummaryHeader.js","names":[],"sources":["../../../../../src/components/backoffice/detail/BackofficeEntitySummaryHeader.tsx"],"sourcesContent":["import { type JSX, type ReactNode } from 'react';\nimport { Button } from '@plumile/ui/atomic/atoms/button/Button.js';\nimport { CopyableText } from '@plumile/ui/backoffice/atoms/copyable_text/CopyableText.js';\nimport { Tag } from '@plumile/ui/backoffice/atoms/tag/Tag.js';\n\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\nimport {\n BackofficeStatusMetaBadge,\n type BackofficeStatusMetaTone,\n} from './BackofficeStatusMetaBadge.js';\nimport * as styles from './backofficeEntitySummaryHeader.css.js';\n\nexport type BackofficeEntitySummaryHeaderTone = BackofficeStatusMetaTone;\n\nexport type BackofficeEntitySummaryHeaderMetaItem = {\n readonly id: string;\n readonly label: string;\n readonly value: ReactNode;\n readonly copyValue?: string;\n readonly tone?: BackofficeEntitySummaryHeaderTone;\n};\n\nexport type BackofficeEntitySummaryHeaderAction = {\n readonly id: string;\n readonly label: string;\n readonly icon?: ReactNode;\n readonly disabled?: boolean;\n readonly loading?: boolean;\n readonly tone?: 'neutral' | 'primary' | 'danger';\n readonly onPress: () => void;\n};\n\nexport type BackofficeEntitySummaryHeaderProps = {\n readonly title: ReactNode;\n readonly entityLabel: string;\n readonly subtitle?: ReactNode;\n readonly status?: {\n readonly label: string;\n readonly tone: BackofficeEntitySummaryHeaderTone;\n };\n readonly meta?: readonly BackofficeEntitySummaryHeaderMetaItem[];\n readonly primaryActions?: readonly BackofficeEntitySummaryHeaderAction[];\n readonly secondaryActions?: readonly BackofficeEntitySummaryHeaderAction[];\n};\n\nconst resolveActionVariant = (\n tone: BackofficeEntitySummaryHeaderAction['tone'],\n): 'primary' | 'secondary' | 'danger' => {\n if (tone === 'danger') {\n return 'danger';\n }\n if (tone === 'neutral') {\n return 'secondary';\n }\n return 'primary';\n};\n\nconst renderAction = (\n action: BackofficeEntitySummaryHeaderAction,\n): JSX.Element => {\n return (\n <Button\n key={action.id}\n type=\"button\"\n variant={resolveActionVariant(action.tone)}\n size=\"small\"\n leftIcon={action.icon}\n disabled={action.disabled}\n isLoading={action.loading}\n onClick={action.onPress}\n >\n {action.label}\n </Button>\n );\n};\n\nexport const BackofficeEntitySummaryHeader = ({\n title,\n entityLabel,\n subtitle,\n status,\n meta,\n primaryActions,\n secondaryActions,\n}: BackofficeEntitySummaryHeaderProps): JSX.Element => {\n const { t } = useBackofficeReactTranslation();\n const actions = [...(primaryActions ?? []), ...(secondaryActions ?? [])];\n\n return (\n <header className={styles.root}>\n <div className={styles.top}>\n <div className={styles.identity}>\n <div className={styles.titleRow}>\n <h1 className={styles.title}>{title}</h1>\n <Tag tone=\"neutral\">{entityLabel}</Tag>\n {status != null && <BackofficeStatusMetaBadge status={status} />}\n </div>\n {subtitle != null && (\n <div className={styles.subtitle}>{subtitle}</div>\n )}\n </div>\n {actions.length > 0 && (\n <div className={styles.actions}>{actions.map(renderAction)}</div>\n )}\n </div>\n {meta != null && meta.length > 0 && (\n <div className={styles.meta}>\n {meta.map((item) => {\n let valueNode = item.value;\n if (item.copyValue != null && item.copyValue !== '') {\n valueNode = (\n <CopyableText\n value={item.copyValue}\n copyValue={item.copyValue}\n truncate={false}\n copyLabel={t('common.actions.copy')}\n copiedLabel={t('common.actions.copied')}\n />\n );\n }\n\n return (\n <div key={item.id} className={styles.metaItem}>\n <span className={styles.metaLabel}>{item.label}</span>\n <span className={styles.metaValue}>{valueNode}</span>\n </div>\n );\n })}\n </div>\n )}\n </header>\n );\n};\n\nexport default BackofficeEntitySummaryHeader;\n"],"mappings":";;;;;;;;AA6CA,IAAM,KACJ,MAEI,MAAS,WACJ,WAEL,MAAS,YACJ,cAEF,WAGH,KACJ,MAGE,kBAAC,GAAD;CAEE,MAAK;CACL,SAAS,EAAqB,EAAO,
|
|
1
|
+
{"version":3,"file":"BackofficeEntitySummaryHeader.js","names":[],"sources":["../../../../../src/components/backoffice/detail/BackofficeEntitySummaryHeader.tsx"],"sourcesContent":["import { type JSX, type ReactNode } from 'react';\nimport { Button } from '@plumile/ui/atomic/atoms/button/Button.js';\nimport { CopyableText } from '@plumile/ui/backoffice/atoms/copyable_text/CopyableText.js';\nimport { Tag } from '@plumile/ui/backoffice/atoms/tag/Tag.js';\n\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\nimport {\n BackofficeStatusMetaBadge,\n type BackofficeStatusMetaTone,\n} from './BackofficeStatusMetaBadge.js';\nimport * as styles from './backofficeEntitySummaryHeader.css.js';\n\nexport type BackofficeEntitySummaryHeaderTone = BackofficeStatusMetaTone;\n\nexport type BackofficeEntitySummaryHeaderMetaItem = {\n readonly id: string;\n readonly label: string;\n readonly value: ReactNode;\n readonly copyValue?: string;\n readonly tone?: BackofficeEntitySummaryHeaderTone;\n};\n\nexport type BackofficeEntitySummaryHeaderAction = {\n readonly id: string;\n readonly label: string;\n readonly icon?: ReactNode;\n readonly disabled?: boolean;\n readonly loading?: boolean;\n readonly tone?: 'neutral' | 'primary' | 'danger';\n readonly onPress: () => void;\n};\n\nexport type BackofficeEntitySummaryHeaderProps = {\n readonly title: ReactNode;\n readonly entityLabel: string;\n readonly subtitle?: ReactNode;\n readonly status?: {\n readonly label: string;\n readonly tone: BackofficeEntitySummaryHeaderTone;\n };\n readonly meta?: readonly BackofficeEntitySummaryHeaderMetaItem[];\n readonly primaryActions?: readonly BackofficeEntitySummaryHeaderAction[];\n readonly secondaryActions?: readonly BackofficeEntitySummaryHeaderAction[];\n};\n\nconst resolveActionVariant = (\n tone: BackofficeEntitySummaryHeaderAction['tone'],\n): 'primary' | 'secondary' | 'danger' => {\n if (tone === 'danger') {\n return 'danger';\n }\n if (tone === 'neutral') {\n return 'secondary';\n }\n return 'primary';\n};\n\nconst renderAction = (\n action: BackofficeEntitySummaryHeaderAction,\n): JSX.Element => {\n return (\n <Button\n key={action.id}\n type=\"button\"\n variant={resolveActionVariant(action.tone)}\n size=\"small\"\n leftIcon={action.icon}\n disabled={action.disabled}\n isLoading={action.loading}\n onClick={action.onPress}\n >\n {action.label}\n </Button>\n );\n};\n\nexport const BackofficeEntitySummaryHeader = ({\n title,\n entityLabel,\n subtitle,\n status,\n meta,\n primaryActions,\n secondaryActions,\n}: BackofficeEntitySummaryHeaderProps): JSX.Element => {\n const { t } = useBackofficeReactTranslation();\n const actions = [...(primaryActions ?? []), ...(secondaryActions ?? [])];\n\n return (\n <header className={styles.root}>\n <div className={styles.top}>\n <div className={styles.identity}>\n <div className={styles.titleRow}>\n <h1 className={styles.title}>{title}</h1>\n <Tag tone=\"neutral\">{entityLabel}</Tag>\n {status != null && <BackofficeStatusMetaBadge status={status} />}\n </div>\n {subtitle != null && (\n <div className={styles.subtitle}>{subtitle}</div>\n )}\n </div>\n {actions.length > 0 && (\n <div className={styles.actions}>{actions.map(renderAction)}</div>\n )}\n </div>\n {meta != null && meta.length > 0 && (\n <div className={styles.meta}>\n {meta.map((item) => {\n let valueNode = item.value;\n if (item.copyValue != null && item.copyValue !== '') {\n valueNode = (\n <CopyableText\n value={item.copyValue}\n copyValue={item.copyValue}\n truncate={false}\n copyLabel={t('common.actions.copy')}\n copiedLabel={t('common.actions.copied')}\n />\n );\n }\n\n return (\n <div key={item.id} className={styles.metaItem}>\n <span className={styles.metaLabel}>{item.label}</span>\n <span className={styles.metaValue}>{valueNode}</span>\n </div>\n );\n })}\n </div>\n )}\n </header>\n );\n};\n\nexport default BackofficeEntitySummaryHeader;\n"],"mappings":";;;;;;;;AA6CA,IAAM,KACJ,MAEI,MAAS,WACJ,WAEL,MAAS,YACJ,cAEF,WAGH,KACJ,MAGE,kBAAC,GAAD;CAEE,MAAK;CACL,SAAS,EAAqB,EAAO,IAAI;CACzC,MAAK;CACL,UAAU,EAAO;CACjB,UAAU,EAAO;CACjB,WAAW,EAAO;CAClB,SAAS,EAAO;WAEf,EAAO;AACF,GAVD,EAAO,EAUN,GAIC,KAAiC,EAC5C,OAAA,GACA,gBACA,UAAA,GACA,WACA,MAAA,GACA,mBACA,0BACqD;CACrD,IAAM,EAAE,SAAM,EAA8B,GACtC,IAAU,CAAC,GAAI,KAAkB,CAAC,GAAI,GAAI,KAAoB,CAAC,CAAE;CAEvE,OACE,kBAAC,UAAD;EAAQ,WAAW;YAAnB,CACE,kBAAC,OAAD;GAAK,WAAW;aAAhB,CACE,kBAAC,OAAD;IAAK,WAAW;cAAhB,CACE,kBAAC,OAAD;KAAK,WAAW;eAAhB;MACE,kBAAC,MAAD;OAAI,WAAW;iBAAe;MAAU,CAAA;MACxC,kBAAC,GAAD;OAAK,MAAK;iBAAW;MAAiB,CAAA;MACrC,KAAU,QAAQ,kBAAC,GAAD,EAAmC,UAAS,CAAA;KAC5D;QACJ,KAAY,QACX,kBAAC,OAAD;KAAK,WAAW;eAAkB;IAAc,CAAA,CAE/C;OACJ,EAAQ,SAAS,KAChB,kBAAC,OAAD;IAAK,WAAW;cAAiB,EAAQ,IAAI,CAAY;GAAO,CAAA,CAE/D;MACJ,KAAQ,QAAQ,EAAK,SAAS,KAC7B,kBAAC,OAAD;GAAK,WAAW;aACb,EAAK,KAAK,MAAS;IAClB,IAAI,IAAY,EAAK;IAarB,OAZI,EAAK,aAAa,QAAQ,EAAK,cAAc,OAC/C,IACE,kBAAC,GAAD;KACE,OAAO,EAAK;KACZ,WAAW,EAAK;KAChB,UAAU;KACV,WAAW,EAAE,qBAAqB;KAClC,aAAa,EAAE,uBAAuB;IACvC,CAAA,IAKH,kBAAC,OAAD;KAAmB,WAAW;eAA9B,CACE,kBAAC,QAAD;MAAM,WAAW;gBAAmB,EAAK;KAAY,CAAA,GACrD,kBAAC,QAAD;MAAM,WAAW;gBAAmB;KAAgB,CAAA,CACjD;OAHK,EAAK,EAGV;GAET,CAAC;EACE,CAAA,CAED;;AAEZ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeEnumLabel.js","names":[],"sources":["../../../../../src/components/backoffice/detail/BackofficeEnumLabel.tsx"],"sourcesContent":["import { type JSX } from 'react';\nimport { BackofficeEnumLabel as UiBackofficeEnumLabel } from '@plumile/ui/backoffice/molecules/backoffice_enum_label/BackofficeEnumLabel.js';\n\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\n\nexport type BackofficeEnumLabelProps<TValue extends string> = {\n readonly value: TValue | null | undefined;\n readonly getLabel: (value: TValue) => string;\n readonly emptyLabel?: string;\n};\n\nexport const BackofficeEnumLabel = <TValue extends string>({\n value,\n getLabel,\n emptyLabel,\n}: BackofficeEnumLabelProps<TValue>): JSX.Element => {\n const { t } = useBackofficeReactTranslation();\n\n return (\n <UiBackofficeEnumLabel\n value={value}\n getLabel={getLabel}\n emptyLabel={emptyLabel ?? t('common.notAvailable')}\n />\n );\n};\n\nexport default BackofficeEnumLabel;\n"],"mappings":";;;;AAWA,IAAa,KAA8C,EACzD,UACA,aACA,oBACmD;CACnD,IAAM,EAAE,SAAM,
|
|
1
|
+
{"version":3,"file":"BackofficeEnumLabel.js","names":[],"sources":["../../../../../src/components/backoffice/detail/BackofficeEnumLabel.tsx"],"sourcesContent":["import { type JSX } from 'react';\nimport { BackofficeEnumLabel as UiBackofficeEnumLabel } from '@plumile/ui/backoffice/molecules/backoffice_enum_label/BackofficeEnumLabel.js';\n\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\n\nexport type BackofficeEnumLabelProps<TValue extends string> = {\n readonly value: TValue | null | undefined;\n readonly getLabel: (value: TValue) => string;\n readonly emptyLabel?: string;\n};\n\nexport const BackofficeEnumLabel = <TValue extends string>({\n value,\n getLabel,\n emptyLabel,\n}: BackofficeEnumLabelProps<TValue>): JSX.Element => {\n const { t } = useBackofficeReactTranslation();\n\n return (\n <UiBackofficeEnumLabel\n value={value}\n getLabel={getLabel}\n emptyLabel={emptyLabel ?? t('common.notAvailable')}\n />\n );\n};\n\nexport default BackofficeEnumLabel;\n"],"mappings":";;;;AAWA,IAAa,KAA8C,EACzD,UACA,aACA,oBACmD;CACnD,IAAM,EAAE,SAAM,EAA8B;CAE5C,OACE,kBAAC,GAAD;EACS;EACG;EACV,YAAY,KAAc,EAAE,qBAAqB;CAClD,CAAA;AAEL"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeLifecycleTimelineSection.js","names":[],"sources":["../../../../../src/components/backoffice/detail/BackofficeLifecycleTimelineSection.tsx"],"sourcesContent":["import { type JSX, type ReactNode } from 'react';\nimport { BackofficeDetailSection } from '@plumile/ui/backoffice/molecules/backoffice_detail_section/BackofficeDetailSection.js';\nimport { AuditTimeline } from '@plumile/ui/backoffice/organisms/audit_timeline/AuditTimeline.js';\n\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\n\nexport type BackofficeLifecycleEventTone =\n | 'neutral'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger';\n\nexport type BackofficeLifecycleEvent = {\n readonly id: string;\n readonly label: string;\n readonly timestamp?: ReactNode;\n readonly description?: ReactNode;\n readonly actor?: ReactNode;\n readonly tone?: BackofficeLifecycleEventTone;\n readonly payload?: ReactNode;\n};\n\nexport type BackofficeLifecycleTimelineSectionProps = {\n readonly title: string;\n readonly description?: string;\n readonly events: readonly BackofficeLifecycleEvent[];\n readonly emptyLabel?: string;\n};\n\nexport const BackofficeLifecycleTimelineSection = ({\n title,\n description,\n events,\n emptyLabel,\n}: BackofficeLifecycleTimelineSectionProps): JSX.Element => {\n const { t } = useBackofficeReactTranslation();\n\n if (events.length === 0) {\n return (\n <BackofficeDetailSection title={title} description={description}>\n {emptyLabel ?? t('common.notAvailable')}\n </BackofficeDetailSection>\n );\n }\n\n return (\n <BackofficeDetailSection title={title} description={description}>\n <AuditTimeline\n events={events.map((event) => {\n return {\n id: event.id,\n title: event.label,\n time: event.timestamp,\n description: event.description,\n actor: event.actor,\n details: event.payload,\n tone: event.tone,\n };\n })}\n />\n </BackofficeDetailSection>\n );\n};\n\nexport default BackofficeLifecycleTimelineSection;\n"],"mappings":";;;;;AA8BA,IAAa,KAAsC,EACjD,UACA,gBACA,WACA,oBAC0D;CAC1D,IAAM,EAAE,SAAM,
|
|
1
|
+
{"version":3,"file":"BackofficeLifecycleTimelineSection.js","names":[],"sources":["../../../../../src/components/backoffice/detail/BackofficeLifecycleTimelineSection.tsx"],"sourcesContent":["import { type JSX, type ReactNode } from 'react';\nimport { BackofficeDetailSection } from '@plumile/ui/backoffice/molecules/backoffice_detail_section/BackofficeDetailSection.js';\nimport { AuditTimeline } from '@plumile/ui/backoffice/organisms/audit_timeline/AuditTimeline.js';\n\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\n\nexport type BackofficeLifecycleEventTone =\n | 'neutral'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger';\n\nexport type BackofficeLifecycleEvent = {\n readonly id: string;\n readonly label: string;\n readonly timestamp?: ReactNode;\n readonly description?: ReactNode;\n readonly actor?: ReactNode;\n readonly tone?: BackofficeLifecycleEventTone;\n readonly payload?: ReactNode;\n};\n\nexport type BackofficeLifecycleTimelineSectionProps = {\n readonly title: string;\n readonly description?: string;\n readonly events: readonly BackofficeLifecycleEvent[];\n readonly emptyLabel?: string;\n};\n\nexport const BackofficeLifecycleTimelineSection = ({\n title,\n description,\n events,\n emptyLabel,\n}: BackofficeLifecycleTimelineSectionProps): JSX.Element => {\n const { t } = useBackofficeReactTranslation();\n\n if (events.length === 0) {\n return (\n <BackofficeDetailSection title={title} description={description}>\n {emptyLabel ?? t('common.notAvailable')}\n </BackofficeDetailSection>\n );\n }\n\n return (\n <BackofficeDetailSection title={title} description={description}>\n <AuditTimeline\n events={events.map((event) => {\n return {\n id: event.id,\n title: event.label,\n time: event.timestamp,\n description: event.description,\n actor: event.actor,\n details: event.payload,\n tone: event.tone,\n };\n })}\n />\n </BackofficeDetailSection>\n );\n};\n\nexport default BackofficeLifecycleTimelineSection;\n"],"mappings":";;;;;AA8BA,IAAa,KAAsC,EACjD,UACA,gBACA,WACA,oBAC0D;CAC1D,IAAM,EAAE,SAAM,EAA8B;CAU5C,OARI,EAAO,WAAW,IAElB,kBAAC,GAAD;EAAgC;EAAoB;YACjD,KAAc,EAAE,qBAAqB;CACf,CAAA,IAK3B,kBAAC,GAAD;EAAgC;EAAoB;YAClD,kBAAC,GAAD,EACE,QAAQ,EAAO,KAAK,OACX;GACL,IAAI,EAAM;GACV,OAAO,EAAM;GACb,MAAM,EAAM;GACZ,aAAa,EAAM;GACnB,OAAO,EAAM;GACb,SAAS,EAAM;GACf,MAAM,EAAM;EACd,EACD,EACF,CAAA;CACsB,CAAA;AAE7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeReferenceValue.js","names":[],"sources":["../../../../../src/components/backoffice/detail/BackofficeReferenceValue.tsx"],"sourcesContent":["import { type JSX, type ReactNode } from 'react';\nimport { BackofficeReferenceValue as UiBackofficeReferenceValue } from '@plumile/ui/backoffice/molecules/backoffice_reference_value/BackofficeReferenceValue.js';\n\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\n\nexport type BackofficeReferenceValueProps = {\n readonly kind: string;\n readonly value: ReactNode | null | undefined;\n readonly emptyLabel?: string;\n readonly className?: string;\n};\n\nexport const BackofficeReferenceValue = ({\n kind,\n value,\n emptyLabel,\n className,\n}: BackofficeReferenceValueProps): JSX.Element => {\n const { t } = useBackofficeReactTranslation();\n\n return (\n <UiBackofficeReferenceValue\n kind={kind}\n value={value}\n emptyLabel={emptyLabel ?? t('common.notAvailable')}\n className={className}\n />\n );\n};\n\nexport default BackofficeReferenceValue;\n"],"mappings":";;;;AAYA,IAAa,KAA4B,EACvC,SACA,UACA,eACA,mBACgD;CAChD,IAAM,EAAE,SAAM,
|
|
1
|
+
{"version":3,"file":"BackofficeReferenceValue.js","names":[],"sources":["../../../../../src/components/backoffice/detail/BackofficeReferenceValue.tsx"],"sourcesContent":["import { type JSX, type ReactNode } from 'react';\nimport { BackofficeReferenceValue as UiBackofficeReferenceValue } from '@plumile/ui/backoffice/molecules/backoffice_reference_value/BackofficeReferenceValue.js';\n\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\n\nexport type BackofficeReferenceValueProps = {\n readonly kind: string;\n readonly value: ReactNode | null | undefined;\n readonly emptyLabel?: string;\n readonly className?: string;\n};\n\nexport const BackofficeReferenceValue = ({\n kind,\n value,\n emptyLabel,\n className,\n}: BackofficeReferenceValueProps): JSX.Element => {\n const { t } = useBackofficeReactTranslation();\n\n return (\n <UiBackofficeReferenceValue\n kind={kind}\n value={value}\n emptyLabel={emptyLabel ?? t('common.notAvailable')}\n className={className}\n />\n );\n};\n\nexport default BackofficeReferenceValue;\n"],"mappings":";;;;AAYA,IAAa,KAA4B,EACvC,SACA,UACA,eACA,mBACgD;CAChD,IAAM,EAAE,SAAM,EAA8B;CAE5C,OACE,kBAAC,GAAD;EACQ;EACC;EACP,YAAY,KAAc,EAAE,qBAAqB;EACtC;CACZ,CAAA;AAEL"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeRelationsSummaryGrid.js","names":[],"sources":["../../../../../src/components/backoffice/detail/BackofficeRelationsSummaryGrid.tsx"],"sourcesContent":["import { type JSX, type ReactNode } from 'react';\nimport Link from '@plumile/router/routing/Link.js';\nimport { BackofficeDetailSection } from '@plumile/ui/backoffice/molecules/backoffice_detail_section/BackofficeDetailSection.js';\nimport type { MetricTone } from '@plumile/ui/components/dashboard/metric_card/MetricCard.js';\n\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\nimport * as styles from './backofficeRelationsSummaryGrid.css.js';\n\nexport type BackofficeRelationSummaryItem = {\n readonly id: string;\n readonly label: string;\n readonly count?: number | null;\n readonly href?: string;\n readonly description?: ReactNode;\n readonly tone?: MetricTone;\n};\n\nexport type BackofficeRelationsSummaryGridProps = {\n readonly title: string;\n readonly items: readonly BackofficeRelationSummaryItem[];\n};\n\nexport const BackofficeRelationsSummaryGrid = ({\n title,\n items,\n}: BackofficeRelationsSummaryGridProps): JSX.Element | null => {\n const { t } = useBackofficeReactTranslation();\n\n if (items.length === 0) {\n return null;\n }\n\n return (\n <BackofficeDetailSection title={title}>\n <div className={styles.grid}>\n {items.map((item) => {\n const countNode = item.count ?? t('common.notAvailable');\n const content = (\n <>\n <span className={styles.label}>{item.label}</span>\n <span className={styles.count}>{countNode}</span>\n {item.description != null && (\n <span className={styles.description}>{item.description}</span>\n )}\n </>\n );\n\n if (item.href == null) {\n return (\n <div className={styles.item} key={item.id}>\n {content}\n </div>\n );\n }\n\n return (\n <Link className={styles.item} key={item.id} to={item.href}>\n {content}\n </Link>\n );\n })}\n </div>\n </BackofficeDetailSection>\n );\n};\n\nexport default BackofficeRelationsSummaryGrid;\n"],"mappings":";;;;;;AAsBA,IAAa,KAAkC,EAC7C,UACA,eAC6D;CAC7D,IAAM,EAAE,SAAM,
|
|
1
|
+
{"version":3,"file":"BackofficeRelationsSummaryGrid.js","names":[],"sources":["../../../../../src/components/backoffice/detail/BackofficeRelationsSummaryGrid.tsx"],"sourcesContent":["import { type JSX, type ReactNode } from 'react';\nimport Link from '@plumile/router/routing/Link.js';\nimport { BackofficeDetailSection } from '@plumile/ui/backoffice/molecules/backoffice_detail_section/BackofficeDetailSection.js';\nimport type { MetricTone } from '@plumile/ui/components/dashboard/metric_card/MetricCard.js';\n\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\nimport * as styles from './backofficeRelationsSummaryGrid.css.js';\n\nexport type BackofficeRelationSummaryItem = {\n readonly id: string;\n readonly label: string;\n readonly count?: number | null;\n readonly href?: string;\n readonly description?: ReactNode;\n readonly tone?: MetricTone;\n};\n\nexport type BackofficeRelationsSummaryGridProps = {\n readonly title: string;\n readonly items: readonly BackofficeRelationSummaryItem[];\n};\n\nexport const BackofficeRelationsSummaryGrid = ({\n title,\n items,\n}: BackofficeRelationsSummaryGridProps): JSX.Element | null => {\n const { t } = useBackofficeReactTranslation();\n\n if (items.length === 0) {\n return null;\n }\n\n return (\n <BackofficeDetailSection title={title}>\n <div className={styles.grid}>\n {items.map((item) => {\n const countNode = item.count ?? t('common.notAvailable');\n const content = (\n <>\n <span className={styles.label}>{item.label}</span>\n <span className={styles.count}>{countNode}</span>\n {item.description != null && (\n <span className={styles.description}>{item.description}</span>\n )}\n </>\n );\n\n if (item.href == null) {\n return (\n <div className={styles.item} key={item.id}>\n {content}\n </div>\n );\n }\n\n return (\n <Link className={styles.item} key={item.id} to={item.href}>\n {content}\n </Link>\n );\n })}\n </div>\n </BackofficeDetailSection>\n );\n};\n\nexport default BackofficeRelationsSummaryGrid;\n"],"mappings":";;;;;;AAsBA,IAAa,KAAkC,EAC7C,UACA,eAC6D;CAC7D,IAAM,EAAE,SAAM,EAA8B;CAM5C,OAJI,EAAM,WAAW,IACZ,OAIP,kBAAC,GAAD;EAAgC;YAC9B,kBAAC,OAAD;GAAK,WAAW;aACb,EAAM,KAAK,MAAS;IACnB,IAAM,IAAY,EAAK,SAAS,EAAE,qBAAqB,GACjD,IACJ,kBAAA,GAAA,EAAA,UAAA;KACE,kBAAC,QAAD;MAAM,WAAW;gBAAe,EAAK;KAAY,CAAA;KACjD,kBAAC,QAAD;MAAM,WAAW;gBAAe;KAAgB,CAAA;KAC/C,EAAK,eAAe,QACnB,kBAAC,QAAD;MAAM,WAAW;gBAAqB,EAAK;KAAkB,CAAA;IAE/D,EAAA,CAAA;IAWJ,OARI,EAAK,QAAQ,OAEb,kBAAC,OAAD;KAAK,WAAW;eACb;IACE,GAF6B,EAAK,EAElC,IAKP,kBAAC,GAAD;KAAM,WAAW;KAA2B,IAAI,EAAK;eAClD;IACG,GAF6B,EAAK,EAElC;GAEV,CAAC;EACE,CAAA;CACkB,CAAA;AAE7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeStatusGroup.js","names":[],"sources":["../../../../../src/components/backoffice/detail/BackofficeStatusGroup.tsx"],"sourcesContent":["import { type JSX } from 'react';\nimport { BackofficeStatusGroup as UiBackofficeStatusGroup } from '@plumile/ui/backoffice/molecules/backoffice_status_group/BackofficeStatusGroup.js';\n\nimport { type BackofficeStatusMeta } from './BackofficeStatusMetaBadge.js';\n\nexport type BackofficeStatusGroupProps = {\n readonly statuses: readonly BackofficeStatusMeta[];\n};\n\nexport const BackofficeStatusGroup = ({\n statuses,\n}: BackofficeStatusGroupProps): JSX.Element => {\n return <UiBackofficeStatusGroup statuses={statuses} />;\n};\n\nexport default BackofficeStatusGroup;\n"],"mappings":";;;AASA,IAAa,KAAyB,EACpC,kBAEO,kBAAC,GAAD,EAAmC,
|
|
1
|
+
{"version":3,"file":"BackofficeStatusGroup.js","names":[],"sources":["../../../../../src/components/backoffice/detail/BackofficeStatusGroup.tsx"],"sourcesContent":["import { type JSX } from 'react';\nimport { BackofficeStatusGroup as UiBackofficeStatusGroup } from '@plumile/ui/backoffice/molecules/backoffice_status_group/BackofficeStatusGroup.js';\n\nimport { type BackofficeStatusMeta } from './BackofficeStatusMetaBadge.js';\n\nexport type BackofficeStatusGroupProps = {\n readonly statuses: readonly BackofficeStatusMeta[];\n};\n\nexport const BackofficeStatusGroup = ({\n statuses,\n}: BackofficeStatusGroupProps): JSX.Element => {\n return <UiBackofficeStatusGroup statuses={statuses} />;\n};\n\nexport default BackofficeStatusGroup;\n"],"mappings":";;;AASA,IAAa,KAAyB,EACpC,kBAEO,kBAAC,GAAD,EAAmC,YAAW,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeStatusMetaBadge.js","names":[],"sources":["../../../../../src/components/backoffice/detail/BackofficeStatusMetaBadge.tsx"],"sourcesContent":["import { type JSX } from 'react';\nimport {\n BackofficeStatusMetaBadge as UiBackofficeStatusMetaBadge,\n type BackofficeStatusMeta,\n type BackofficeStatusMetaTone,\n} from '@plumile/ui/backoffice/molecules/backoffice_status_meta_badge/BackofficeStatusMetaBadge.js';\n\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\n\nexport type { BackofficeStatusMeta, BackofficeStatusMetaTone };\n\nexport type BackofficeStatusMetaBadgeProps = {\n readonly status: BackofficeStatusMeta | null | undefined;\n readonly emptyLabel?: string;\n readonly className?: string;\n};\n\nexport const BackofficeStatusMetaBadge = ({\n status,\n emptyLabel,\n className,\n}: BackofficeStatusMetaBadgeProps): JSX.Element => {\n const { t } = useBackofficeReactTranslation();\n\n return (\n <UiBackofficeStatusMetaBadge\n status={status}\n emptyLabel={emptyLabel ?? t('common.notAvailable')}\n className={className}\n />\n );\n};\n\nexport default BackofficeStatusMetaBadge;\n"],"mappings":";;;;AAiBA,IAAa,KAA6B,EACxC,WACA,eACA,mBACiD;CACjD,IAAM,EAAE,SAAM,
|
|
1
|
+
{"version":3,"file":"BackofficeStatusMetaBadge.js","names":[],"sources":["../../../../../src/components/backoffice/detail/BackofficeStatusMetaBadge.tsx"],"sourcesContent":["import { type JSX } from 'react';\nimport {\n BackofficeStatusMetaBadge as UiBackofficeStatusMetaBadge,\n type BackofficeStatusMeta,\n type BackofficeStatusMetaTone,\n} from '@plumile/ui/backoffice/molecules/backoffice_status_meta_badge/BackofficeStatusMetaBadge.js';\n\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\n\nexport type { BackofficeStatusMeta, BackofficeStatusMetaTone };\n\nexport type BackofficeStatusMetaBadgeProps = {\n readonly status: BackofficeStatusMeta | null | undefined;\n readonly emptyLabel?: string;\n readonly className?: string;\n};\n\nexport const BackofficeStatusMetaBadge = ({\n status,\n emptyLabel,\n className,\n}: BackofficeStatusMetaBadgeProps): JSX.Element => {\n const { t } = useBackofficeReactTranslation();\n\n return (\n <UiBackofficeStatusMetaBadge\n status={status}\n emptyLabel={emptyLabel ?? t('common.notAvailable')}\n className={className}\n />\n );\n};\n\nexport default BackofficeStatusMetaBadge;\n"],"mappings":";;;;AAiBA,IAAa,KAA6B,EACxC,WACA,eACA,mBACiD;CACjD,IAAM,EAAE,SAAM,EAA8B;CAE5C,OACE,kBAAC,GAAD;EACU;EACR,YAAY,KAAc,EAAE,qBAAqB;EACtC;CACZ,CAAA;AAEL"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeTokenUsageBreakdown.js","names":[],"sources":["../../../../../src/components/backoffice/detail/BackofficeTokenUsageBreakdown.tsx"],"sourcesContent":["import { type JSX, type ReactNode } from 'react';\nimport { MetricCard } from '@plumile/ui/components/dashboard/metric_card/MetricCard.js';\nimport { MetricTileGroup } from '@plumile/ui/components/dashboard/metric_tile_group/MetricTileGroup.js';\n\nexport type BackofficeTokenUsageBreakdownProps = {\n readonly title: string;\n readonly total?: ReactNode;\n readonly input?: ReactNode;\n readonly cachedInput?: ReactNode;\n readonly output?: ReactNode;\n readonly reasoning?: ReactNode;\n readonly labels: {\n readonly input: string;\n readonly cachedInput: string;\n readonly output: string;\n readonly reasoning: string;\n };\n};\n\nexport const BackofficeTokenUsageBreakdown = ({\n title,\n total,\n input,\n cachedInput,\n output,\n reasoning,\n labels,\n}: BackofficeTokenUsageBreakdownProps): JSX.Element => {\n const items = [\n { id: 'total', label: title, value: total },\n { id: 'input', label: labels.input, value: input },\n { id: 'cached-input', label: labels.cachedInput, value: cachedInput },\n { id: 'output', label: labels.output, value: output },\n { id: 'reasoning', label: labels.reasoning, value: reasoning },\n ].filter((item) => {\n return item.value != null;\n });\n\n if (items.length === 0) {\n return <></>;\n }\n\n return (\n <MetricTileGroup density=\"compact\" minColumn=\"180\">\n {items.map((item) => {\n return (\n <MetricCard\n key={item.id}\n label={item.label}\n value={item.value}\n density=\"compact\"\n tone=\"neutral\"\n />\n );\n })}\n </MetricTileGroup>\n );\n};\n\nexport default BackofficeTokenUsageBreakdown;\n"],"mappings":";;;;AAmBA,IAAa,KAAiC,EAC5C,UACA,UACA,UACA,gBACA,WACA,cACA,gBACqD;CACrD,IAAM,IAAQ;EACZ;GAAE,IAAI;GAAS,OAAO;GAAO,OAAO;
|
|
1
|
+
{"version":3,"file":"BackofficeTokenUsageBreakdown.js","names":[],"sources":["../../../../../src/components/backoffice/detail/BackofficeTokenUsageBreakdown.tsx"],"sourcesContent":["import { type JSX, type ReactNode } from 'react';\nimport { MetricCard } from '@plumile/ui/components/dashboard/metric_card/MetricCard.js';\nimport { MetricTileGroup } from '@plumile/ui/components/dashboard/metric_tile_group/MetricTileGroup.js';\n\nexport type BackofficeTokenUsageBreakdownProps = {\n readonly title: string;\n readonly total?: ReactNode;\n readonly input?: ReactNode;\n readonly cachedInput?: ReactNode;\n readonly output?: ReactNode;\n readonly reasoning?: ReactNode;\n readonly labels: {\n readonly input: string;\n readonly cachedInput: string;\n readonly output: string;\n readonly reasoning: string;\n };\n};\n\nexport const BackofficeTokenUsageBreakdown = ({\n title,\n total,\n input,\n cachedInput,\n output,\n reasoning,\n labels,\n}: BackofficeTokenUsageBreakdownProps): JSX.Element => {\n const items = [\n { id: 'total', label: title, value: total },\n { id: 'input', label: labels.input, value: input },\n { id: 'cached-input', label: labels.cachedInput, value: cachedInput },\n { id: 'output', label: labels.output, value: output },\n { id: 'reasoning', label: labels.reasoning, value: reasoning },\n ].filter((item) => {\n return item.value != null;\n });\n\n if (items.length === 0) {\n return <></>;\n }\n\n return (\n <MetricTileGroup density=\"compact\" minColumn=\"180\">\n {items.map((item) => {\n return (\n <MetricCard\n key={item.id}\n label={item.label}\n value={item.value}\n density=\"compact\"\n tone=\"neutral\"\n />\n );\n })}\n </MetricTileGroup>\n );\n};\n\nexport default BackofficeTokenUsageBreakdown;\n"],"mappings":";;;;AAmBA,IAAa,KAAiC,EAC5C,UACA,UACA,UACA,gBACA,WACA,cACA,gBACqD;CACrD,IAAM,IAAQ;EACZ;GAAE,IAAI;GAAS,OAAO;GAAO,OAAO;EAAM;EAC1C;GAAE,IAAI;GAAS,OAAO,EAAO;GAAO,OAAO;EAAM;EACjD;GAAE,IAAI;GAAgB,OAAO,EAAO;GAAa,OAAO;EAAY;EACpE;GAAE,IAAI;GAAU,OAAO,EAAO;GAAQ,OAAO;EAAO;EACpD;GAAE,IAAI;GAAa,OAAO,EAAO;GAAW,OAAO;EAAU;CAC/D,EAAE,QAAQ,MACD,EAAK,SAAS,IACtB;CAMD,OAJI,EAAM,WAAW,IACZ,kBAAA,GAAA,CAAI,CAAA,IAIX,kBAAC,GAAD;EAAiB,SAAQ;EAAU,WAAU;YAC1C,EAAM,KAAK,MAER,kBAAC,GAAD;GAEE,OAAO,EAAK;GACZ,OAAO,EAAK;GACZ,SAAQ;GACR,MAAK;EACN,GALM,EAAK,EAKX,CAEJ;CACc,CAAA;AAErB"}
|
|
@@ -35,52 +35,52 @@ var c = ({ title: c, rows: l, totals: u, emptyLabel: d, columnLabels: f }) => {
|
|
|
35
35
|
copiedLabel: p("common.actions.copied")
|
|
36
36
|
}, e.id))
|
|
37
37
|
}), l.length > 0 && /* @__PURE__ */ i("div", {
|
|
38
|
-
className: "
|
|
38
|
+
className: "txvbqbfq0 txvbqbhdl",
|
|
39
39
|
children: [/* @__PURE__ */ i("div", {
|
|
40
|
-
className: "_13200uy0
|
|
40
|
+
className: "_13200uy0 txvbqbfq0 txvbqbhdy txvbqbey",
|
|
41
41
|
children: [
|
|
42
42
|
/* @__PURE__ */ r("span", {
|
|
43
|
-
className: "txvbqb96 txvbqb6a
|
|
43
|
+
className: "txvbqb96 txvbqb6a txvbqbmw7 txvbqb1bg3",
|
|
44
44
|
children: h.name
|
|
45
45
|
}),
|
|
46
46
|
/* @__PURE__ */ r("span", {
|
|
47
|
-
className: "txvbqb96 txvbqb6a
|
|
47
|
+
className: "txvbqb96 txvbqb6a txvbqbmw7 txvbqb1bg3",
|
|
48
48
|
children: h.rawCost
|
|
49
49
|
}),
|
|
50
50
|
/* @__PURE__ */ r("span", {
|
|
51
|
-
className: "txvbqb96 txvbqb6a
|
|
51
|
+
className: "txvbqb96 txvbqb6a txvbqbmw7 txvbqb1bg3",
|
|
52
52
|
children: h.markup
|
|
53
53
|
}),
|
|
54
54
|
/* @__PURE__ */ r("span", {
|
|
55
|
-
className: "txvbqb96 txvbqb6a
|
|
55
|
+
className: "txvbqb96 txvbqb6a txvbqbmw7 txvbqb1bg3",
|
|
56
56
|
children: h.charged
|
|
57
57
|
}),
|
|
58
58
|
/* @__PURE__ */ r("span", {
|
|
59
|
-
className: "txvbqb96 txvbqb6a
|
|
59
|
+
className: "txvbqb96 txvbqb6a txvbqbmw7 txvbqb1bg3",
|
|
60
60
|
children: h.events
|
|
61
61
|
})
|
|
62
62
|
]
|
|
63
63
|
}), l.map((e) => /* @__PURE__ */ i("div", {
|
|
64
|
-
className: "_13200uy0
|
|
64
|
+
className: "_13200uy0 txvbqbfq0 txvbqbhdy txvbqbey",
|
|
65
65
|
children: [
|
|
66
66
|
/* @__PURE__ */ r("span", {
|
|
67
|
-
className: n("txvbqb9j
|
|
67
|
+
className: n("txvbqb9j txvbqb1bg1 txvbqbws9", "txvbqbhb2"),
|
|
68
68
|
children: e.label
|
|
69
69
|
}),
|
|
70
70
|
/* @__PURE__ */ r("span", {
|
|
71
|
-
className: "txvbqb9j
|
|
71
|
+
className: "txvbqb9j txvbqb1bg1 txvbqbws9",
|
|
72
72
|
children: e.rawCost ?? m
|
|
73
73
|
}),
|
|
74
74
|
/* @__PURE__ */ r("span", {
|
|
75
|
-
className: "txvbqb9j
|
|
75
|
+
className: "txvbqb9j txvbqb1bg1 txvbqbws9",
|
|
76
76
|
children: e.markup ?? m
|
|
77
77
|
}),
|
|
78
78
|
/* @__PURE__ */ r("span", {
|
|
79
|
-
className: "txvbqb9j
|
|
79
|
+
className: "txvbqb9j txvbqb1bg1 txvbqbws9",
|
|
80
80
|
children: e.charged ?? m
|
|
81
81
|
}),
|
|
82
82
|
/* @__PURE__ */ r("span", {
|
|
83
|
-
className: "txvbqb9j
|
|
83
|
+
className: "txvbqb9j txvbqb1bg1 txvbqbws9",
|
|
84
84
|
children: e.eventsCount ?? e.quantity ?? m
|
|
85
85
|
})
|
|
86
86
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeUsageCostBreakdown.js","names":[],"sources":["../../../../../src/components/backoffice/detail/BackofficeUsageCostBreakdown.tsx"],"sourcesContent":["import { type JSX, type ReactNode } from 'react';\nimport { BackofficeDetailSection } from '@plumile/ui/backoffice/molecules/backoffice_detail_section/BackofficeDetailSection.js';\nimport {\n MetricCard,\n type MetricTone,\n} from '@plumile/ui/components/dashboard/metric_card/MetricCard.js';\nimport { MetricTileGroup } from '@plumile/ui/components/dashboard/metric_tile_group/MetricTileGroup.js';\nimport { cx } from '@plumile/ui/theme/tools.js';\n\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\nimport * as styles from './backofficeUsageCostBreakdown.css.js';\n\nexport type BackofficeMoneyValue = {\n readonly amount: string | number;\n readonly currency: string;\n};\n\nexport type BackofficeUsageCostBreakdownRow = {\n readonly id: string;\n readonly label: string;\n readonly rawCost?: ReactNode;\n readonly markup?: ReactNode;\n readonly charged?: ReactNode;\n readonly eventsCount?: ReactNode;\n readonly quantity?: ReactNode;\n};\n\nexport type BackofficeUsageCostBreakdownTotal = {\n readonly id: string;\n readonly label: string;\n readonly value: ReactNode;\n readonly hint?: ReactNode;\n readonly tone?: MetricTone;\n readonly copyValue?: string;\n};\n\nexport type BackofficeUsageCostBreakdownProps = {\n readonly title: string;\n readonly rows: readonly BackofficeUsageCostBreakdownRow[];\n readonly totals?: readonly BackofficeUsageCostBreakdownTotal[];\n readonly emptyLabel?: string;\n readonly columnLabels?: {\n readonly name: string;\n readonly rawCost: string;\n readonly markup: string;\n readonly charged: string;\n readonly events: string;\n };\n};\n\nexport const BackofficeUsageCostBreakdown = ({\n title,\n rows,\n totals,\n emptyLabel,\n columnLabels,\n}: BackofficeUsageCostBreakdownProps): JSX.Element => {\n const { t } = useBackofficeReactTranslation();\n const missing = t('common.notAvailable');\n const labels = columnLabels ?? {\n name: t('detail.columns.name'),\n rawCost: t('detail.columns.rawCost'),\n markup: t('detail.columns.markup'),\n charged: t('detail.columns.charged'),\n events: t('detail.columns.events'),\n };\n\n if (rows.length === 0 && (totals == null || totals.length === 0)) {\n return (\n <BackofficeDetailSection title={title}>\n {emptyLabel ?? missing}\n </BackofficeDetailSection>\n );\n }\n\n return (\n <BackofficeDetailSection title={title}>\n <div className={styles.content}>\n {totals != null && totals.length > 0 && (\n <MetricTileGroup density=\"compact\" minColumn=\"180\">\n {totals.map((total) => {\n return (\n <MetricCard\n key={total.id}\n label={total.label}\n value={total.value}\n hint={total.hint}\n tone={total.tone ?? 'neutral'}\n density=\"compact\"\n copyValue={total.copyValue}\n copyLabel={t('common.actions.copy')}\n copiedLabel={t('common.actions.copied')}\n />\n );\n })}\n </MetricTileGroup>\n )}\n {rows.length > 0 && (\n <div className={styles.table}>\n <div className={styles.row}>\n <span className={styles.header}>{labels.name}</span>\n <span className={styles.header}>{labels.rawCost}</span>\n <span className={styles.header}>{labels.markup}</span>\n <span className={styles.header}>{labels.charged}</span>\n <span className={styles.header}>{labels.events}</span>\n </div>\n {rows.map((row) => {\n return (\n <div className={styles.row} key={row.id}>\n <span className={cx(styles.cell, styles.label)}>\n {row.label}\n </span>\n <span className={styles.cell}>{row.rawCost ?? missing}</span>\n <span className={styles.cell}>{row.markup ?? missing}</span>\n <span className={styles.cell}>{row.charged ?? missing}</span>\n <span className={styles.cell}>\n {row.eventsCount ?? row.quantity ?? missing}\n </span>\n </div>\n );\n })}\n </div>\n )}\n </div>\n </BackofficeDetailSection>\n );\n};\n\nexport default BackofficeUsageCostBreakdown;\n"],"mappings":";;;;;;;;AAkDA,IAAa,KAAgC,EAC3C,UACA,SACA,WACA,eACA,sBACoD;CACpD,IAAM,EAAE,SAAM,
|
|
1
|
+
{"version":3,"file":"BackofficeUsageCostBreakdown.js","names":[],"sources":["../../../../../src/components/backoffice/detail/BackofficeUsageCostBreakdown.tsx"],"sourcesContent":["import { type JSX, type ReactNode } from 'react';\nimport { BackofficeDetailSection } from '@plumile/ui/backoffice/molecules/backoffice_detail_section/BackofficeDetailSection.js';\nimport {\n MetricCard,\n type MetricTone,\n} from '@plumile/ui/components/dashboard/metric_card/MetricCard.js';\nimport { MetricTileGroup } from '@plumile/ui/components/dashboard/metric_tile_group/MetricTileGroup.js';\nimport { cx } from '@plumile/ui/theme/tools.js';\n\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\nimport * as styles from './backofficeUsageCostBreakdown.css.js';\n\nexport type BackofficeMoneyValue = {\n readonly amount: string | number;\n readonly currency: string;\n};\n\nexport type BackofficeUsageCostBreakdownRow = {\n readonly id: string;\n readonly label: string;\n readonly rawCost?: ReactNode;\n readonly markup?: ReactNode;\n readonly charged?: ReactNode;\n readonly eventsCount?: ReactNode;\n readonly quantity?: ReactNode;\n};\n\nexport type BackofficeUsageCostBreakdownTotal = {\n readonly id: string;\n readonly label: string;\n readonly value: ReactNode;\n readonly hint?: ReactNode;\n readonly tone?: MetricTone;\n readonly copyValue?: string;\n};\n\nexport type BackofficeUsageCostBreakdownProps = {\n readonly title: string;\n readonly rows: readonly BackofficeUsageCostBreakdownRow[];\n readonly totals?: readonly BackofficeUsageCostBreakdownTotal[];\n readonly emptyLabel?: string;\n readonly columnLabels?: {\n readonly name: string;\n readonly rawCost: string;\n readonly markup: string;\n readonly charged: string;\n readonly events: string;\n };\n};\n\nexport const BackofficeUsageCostBreakdown = ({\n title,\n rows,\n totals,\n emptyLabel,\n columnLabels,\n}: BackofficeUsageCostBreakdownProps): JSX.Element => {\n const { t } = useBackofficeReactTranslation();\n const missing = t('common.notAvailable');\n const labels = columnLabels ?? {\n name: t('detail.columns.name'),\n rawCost: t('detail.columns.rawCost'),\n markup: t('detail.columns.markup'),\n charged: t('detail.columns.charged'),\n events: t('detail.columns.events'),\n };\n\n if (rows.length === 0 && (totals == null || totals.length === 0)) {\n return (\n <BackofficeDetailSection title={title}>\n {emptyLabel ?? missing}\n </BackofficeDetailSection>\n );\n }\n\n return (\n <BackofficeDetailSection title={title}>\n <div className={styles.content}>\n {totals != null && totals.length > 0 && (\n <MetricTileGroup density=\"compact\" minColumn=\"180\">\n {totals.map((total) => {\n return (\n <MetricCard\n key={total.id}\n label={total.label}\n value={total.value}\n hint={total.hint}\n tone={total.tone ?? 'neutral'}\n density=\"compact\"\n copyValue={total.copyValue}\n copyLabel={t('common.actions.copy')}\n copiedLabel={t('common.actions.copied')}\n />\n );\n })}\n </MetricTileGroup>\n )}\n {rows.length > 0 && (\n <div className={styles.table}>\n <div className={styles.row}>\n <span className={styles.header}>{labels.name}</span>\n <span className={styles.header}>{labels.rawCost}</span>\n <span className={styles.header}>{labels.markup}</span>\n <span className={styles.header}>{labels.charged}</span>\n <span className={styles.header}>{labels.events}</span>\n </div>\n {rows.map((row) => {\n return (\n <div className={styles.row} key={row.id}>\n <span className={cx(styles.cell, styles.label)}>\n {row.label}\n </span>\n <span className={styles.cell}>{row.rawCost ?? missing}</span>\n <span className={styles.cell}>{row.markup ?? missing}</span>\n <span className={styles.cell}>{row.charged ?? missing}</span>\n <span className={styles.cell}>\n {row.eventsCount ?? row.quantity ?? missing}\n </span>\n </div>\n );\n })}\n </div>\n )}\n </div>\n </BackofficeDetailSection>\n );\n};\n\nexport default BackofficeUsageCostBreakdown;\n"],"mappings":";;;;;;;;AAkDA,IAAa,KAAgC,EAC3C,UACA,SACA,WACA,eACA,sBACoD;CACpD,IAAM,EAAE,SAAM,EAA8B,GACtC,IAAU,EAAE,qBAAqB,GACjC,IAAS,KAAgB;EAC7B,MAAM,EAAE,qBAAqB;EAC7B,SAAS,EAAE,wBAAwB;EACnC,QAAQ,EAAE,uBAAuB;EACjC,SAAS,EAAE,wBAAwB;EACnC,QAAQ,EAAE,uBAAuB;CACnC;CAUA,OARI,EAAK,WAAW,MAAM,KAAU,QAAQ,EAAO,WAAW,KAE1D,kBAAC,GAAD;EAAgC;YAC7B,KAAc;CACQ,CAAA,IAK3B,kBAAC,GAAD;EAAgC;YAC9B,kBAAC,OAAD;GAAK,WAAW;aAAhB,CACG,KAAU,QAAQ,EAAO,SAAS,KACjC,kBAAC,GAAD;IAAiB,SAAQ;IAAU,WAAU;cAC1C,EAAO,KAAK,MAET,kBAAC,GAAD;KAEE,OAAO,EAAM;KACb,OAAO,EAAM;KACb,MAAM,EAAM;KACZ,MAAM,EAAM,QAAQ;KACpB,SAAQ;KACR,WAAW,EAAM;KACjB,WAAW,EAAE,qBAAqB;KAClC,aAAa,EAAE,uBAAuB;IACvC,GATM,EAAM,EASZ,CAEJ;GACc,CAAA,GAElB,EAAK,SAAS,KACb,kBAAC,OAAD;IAAK,WAAW;cAAhB,CACE,kBAAC,OAAD;KAAK,WAAW;eAAhB;MACE,kBAAC,QAAD;OAAM,WAAW;iBAAgB,EAAO;MAAW,CAAA;MACnD,kBAAC,QAAD;OAAM,WAAW;iBAAgB,EAAO;MAAc,CAAA;MACtD,kBAAC,QAAD;OAAM,WAAW;iBAAgB,EAAO;MAAa,CAAA;MACrD,kBAAC,QAAD;OAAM,WAAW;iBAAgB,EAAO;MAAc,CAAA;MACtD,kBAAC,QAAD;OAAM,WAAW;iBAAgB,EAAO;MAAa,CAAA;KAClD;QACJ,EAAK,KAAK,MAEP,kBAAC,OAAD;KAAK,WAAW;eAAhB;MACE,kBAAC,QAAD;OAAM,WAAW,EAAG,iCAAa,WAAY;iBAC1C,EAAI;MACD,CAAA;MACN,kBAAC,QAAD;OAAM,WAAW;iBAAc,EAAI,WAAW;MAAc,CAAA;MAC5D,kBAAC,QAAD;OAAM,WAAW;iBAAc,EAAI,UAAU;MAAc,CAAA;MAC3D,kBAAC,QAAD;OAAM,WAAW;iBAAc,EAAI,WAAW;MAAc,CAAA;MAC5D,kBAAC,QAAD;OAAM,WAAW;iBACd,EAAI,eAAe,EAAI,YAAY;MAChC,CAAA;KACH;OAV4B,EAAI,EAUhC,CAER,CACE;KAEJ;;CACkB,CAAA;AAE7B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* empty css */
|
|
2
2
|
//#region src/components/backoffice/detail/backofficeDetailErrorList.css.ts
|
|
3
|
-
var e = "
|
|
3
|
+
var e = "txvbqbfpn txvbqbh4x txvbqbheb", t = "txvbqbfpn txvbqbh4x txvbqbhdl txvbqbwwl txvbqb2up", n = "txvbqb28o txvbqb2sj txvbqb1d9 txvbqb1b83", r = "txvbqbfpn txvbqbh4x txvbqbhd8", i = "txvbqbh99 txvbqb9j txvbqb1bg5", a = "txvbqbhbf", o = "txvbqb9j";
|
|
4
4
|
//#endregion
|
|
5
5
|
export { i as code, o as details, r as header, t as item, n as itemSurface, e as list, a as message };
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* empty css */
|
|
2
2
|
//#region src/components/backoffice/detail/backofficeDetailLayout.css.ts
|
|
3
|
-
var e = "
|
|
3
|
+
var e = "txvbqbfq0 txvbqbj68 txvbqbj5y txvbqbheb txvbqbel txvbqbv7x", t = "txvbqbfpn txvbqbh4x txvbqbheb txvbqbv7x", n = "txvbqbfpn txvbqbh4x txvbqbheb txvbqbv7x", r = "txvbqbfpn txvbqbh4x txvbqbheb";
|
|
4
4
|
//#endregion
|
|
5
5
|
export { e as layout, t as primary, n as secondary, r as stacked };
|
|
6
6
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
/* empty css */
|
|
1
2
|
/* empty css */
|
|
2
3
|
//#region src/components/backoffice/detail/backofficeDetailRelationLink.css.ts
|
|
3
|
-
var e = "_93gupm0 qbwcueg qbwcuee
|
|
4
|
+
var e = "_93gupm0 qbwcueg qbwcuee txvbqb2tz txvbqb1bg1 txvbqb3f txvbqb7g txvbqb76 txvbqb7t qbwcuef txvbqb1ct1 txvbqb1dsd qbwcue0 txvbqb1ffs txvbqb1ga0 txvbqb10mx txvbqb11ki txvbqb12hq txvbqbxtt txvbqb7h txvbqb75 txvbqbfpn txvbqblt7 txvbqbhdy txvbqb28o txvbqb2sj txvbqbik txvbqb1b4r txvbqbey txvbqbem txvbqbh4k txvbqbh4y txvbqb1ct4 txvbqb1dsg", t = "txvbqb9j txvbqbhb2 txvbqbv7x txvbqbws9", n = "txvbqbfqq txvbqbey txvbqbhd8 txvbqbh6d txvbqbv7x", r = "txvbqb96 txvbqb1bg3 txvbqbws9 txvbqb18e2", i = "txvbqbfqq txvbqbey txvbqbls4 txvbqb1bg5 txvbqb9j txvbqbmzg";
|
|
4
5
|
//#endregion
|
|
5
6
|
export { n as action, i as chevron, t as label, e as link, r as meta };
|
|
6
7
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* empty css */
|
|
2
2
|
//#region src/components/backoffice/detail/backofficeEntitySummaryHeader.css.ts
|
|
3
|
-
var e = "
|
|
3
|
+
var e = "txvbqbfpn txvbqbh4x txvbqbheb txvbqbwwy txvbqb2uc txvbqb1b7z txvbqb28o txvbqb2sj txvbqb1dz", t = "txvbqbfpn txvbqblt7 txvbqbel txvbqbheb txvbqbh7g", n = "txvbqbfpn txvbqbh4x txvbqbhdl txvbqbv7x", r = "txvbqbfpn txvbqbey txvbqbhdl txvbqbh7g", i = "txvbqbaz txvbqbo4z txvbqbhbf txvbqb1bg1 txvbqbws9", a = "txvbqb9j txvbqb1bg3 txvbqbws9", o = "txvbqbfpn txvbqbey txvbqblsh txvbqbhdl txvbqbh7g", s = "txvbqbfq0 txvbqbhdy txvbqbjcq", c = "txvbqbfpn txvbqbh4x txvbqbhd8 txvbqbv7x", l = "txvbqb96 txvbqb6a txvbqbmw7 txvbqb1bg3", u = "txvbqb9j txvbqb1bg1 txvbqbws9";
|
|
4
4
|
//#endregion
|
|
5
5
|
export { o as actions, n as identity, s as meta, c as metaItem, l as metaLabel, u as metaValue, e as root, a as subtitle, i as title, r as titleRow, t as top };
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* empty css */
|
|
2
2
|
//#region src/components/backoffice/detail/backofficeRelationsSummaryGrid.css.ts
|
|
3
|
-
var e = "
|
|
3
|
+
var e = "txvbqbfq0 txvbqbhdy txvbqbjcq", t = "txvbqbfpn txvbqbh4x txvbqbhd8 txvbqbwwl txvbqb2tz txvbqb1b7z txvbqb28o txvbqb2sj txvbqb1dz txvbqbv7x", n = "txvbqb96 txvbqb6a txvbqbmw7 txvbqb1bg3", r = "txvbqbam txvbqbhbf txvbqb1bg1", i = "txvbqb9j txvbqb1bg3 txvbqbws9";
|
|
4
4
|
//#endregion
|
|
5
5
|
export { r as count, i as description, e as grid, t as item, n as label };
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* empty css */
|
|
2
2
|
//#region src/components/backoffice/detail/backofficeUsageCostBreakdown.css.ts
|
|
3
|
-
var e = "
|
|
3
|
+
var e = "txvbqbfpn txvbqbh4x txvbqbhdy", t = "txvbqbfq0 txvbqbhdl", n = "_13200uy0 txvbqbfq0 txvbqbhdy txvbqbey", r = "txvbqb96 txvbqb6a txvbqbmw7 txvbqb1bg3", i = "txvbqb9j txvbqb1bg1 txvbqbws9", a = "txvbqbhb2";
|
|
4
4
|
//#endregion
|
|
5
5
|
export { i as cell, e as content, r as header, a as label, n as row, t as table };
|
|
6
6
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createBackofficeEntityLinkProps.js","names":[],"sources":["../../../../../src/components/backoffice/detail/createBackofficeEntityLinkProps.ts"],"sourcesContent":["import type { ReactNode } from 'react';\nimport type { BackofficeRuntimeResolvedListFacetConfig } from '@plumile/backoffice-core/types.js';\n\nexport type BackofficeEntityLinkValue = {\n readonly id: string;\n readonly label?: ReactNode;\n readonly filterValue?: string | null;\n};\n\nexport type CreateBackofficeEntityLinkPropsOptions<TNode> = {\n readonly entity: string;\n readonly node: TNode | null | undefined;\n readonly getId: (node: TNode) => string | null | undefined;\n readonly getLabel: (node: TNode) => ReactNode;\n readonly filterWhereKey?: string;\n readonly getFilterValue?: (node: TNode) => string | null | undefined;\n readonly filterPath?: readonly string[];\n readonly filterLabel?: string;\n readonly listConfig?: BackofficeRuntimeResolvedListFacetConfig;\n};\n\nexport type BackofficeResolvedEntityLinkProps = {\n readonly entity: string;\n readonly id: string;\n readonly label?: string;\n readonly filterWhereKey?: string;\n readonly filterValue?: string;\n readonly filterPath?: readonly string[];\n readonly filterLabel?: string;\n readonly listConfig?: BackofficeRuntimeResolvedListFacetConfig;\n};\n\nexport const createBackofficeEntityLinkProps = <TNode>({\n entity,\n node,\n getId,\n getLabel,\n filterWhereKey,\n getFilterValue,\n filterPath,\n filterLabel,\n listConfig,\n}: CreateBackofficeEntityLinkPropsOptions<TNode>): BackofficeResolvedEntityLinkProps | null => {\n if (node == null) {\n return null;\n }\n\n const id = getId(node)?.trim();\n if (id == null || id === '') {\n return null;\n }\n\n const label = getLabel(node);\n const filterValue = getFilterValue?.(node) ?? undefined;\n let resolvedLabel: string | undefined;\n if (typeof label === 'string') {\n resolvedLabel = label;\n }\n\n return {\n entity,\n id,\n label: resolvedLabel,\n filterWhereKey,\n filterValue: filterValue ?? undefined,\n filterPath,\n filterLabel,\n listConfig,\n };\n};\n"],"mappings":";AAgCA,IAAa,KAA0C,EACrD,WACA,SACA,UACA,aACA,mBACA,mBACA,eACA,gBACA,oBAC6F;CAC7F,IAAI,KAAQ,MACV,OAAO;CAGT,IAAM,IAAK,EAAM,
|
|
1
|
+
{"version":3,"file":"createBackofficeEntityLinkProps.js","names":[],"sources":["../../../../../src/components/backoffice/detail/createBackofficeEntityLinkProps.ts"],"sourcesContent":["import type { ReactNode } from 'react';\nimport type { BackofficeRuntimeResolvedListFacetConfig } from '@plumile/backoffice-core/types.js';\n\nexport type BackofficeEntityLinkValue = {\n readonly id: string;\n readonly label?: ReactNode;\n readonly filterValue?: string | null;\n};\n\nexport type CreateBackofficeEntityLinkPropsOptions<TNode> = {\n readonly entity: string;\n readonly node: TNode | null | undefined;\n readonly getId: (node: TNode) => string | null | undefined;\n readonly getLabel: (node: TNode) => ReactNode;\n readonly filterWhereKey?: string;\n readonly getFilterValue?: (node: TNode) => string | null | undefined;\n readonly filterPath?: readonly string[];\n readonly filterLabel?: string;\n readonly listConfig?: BackofficeRuntimeResolvedListFacetConfig;\n};\n\nexport type BackofficeResolvedEntityLinkProps = {\n readonly entity: string;\n readonly id: string;\n readonly label?: string;\n readonly filterWhereKey?: string;\n readonly filterValue?: string;\n readonly filterPath?: readonly string[];\n readonly filterLabel?: string;\n readonly listConfig?: BackofficeRuntimeResolvedListFacetConfig;\n};\n\nexport const createBackofficeEntityLinkProps = <TNode>({\n entity,\n node,\n getId,\n getLabel,\n filterWhereKey,\n getFilterValue,\n filterPath,\n filterLabel,\n listConfig,\n}: CreateBackofficeEntityLinkPropsOptions<TNode>): BackofficeResolvedEntityLinkProps | null => {\n if (node == null) {\n return null;\n }\n\n const id = getId(node)?.trim();\n if (id == null || id === '') {\n return null;\n }\n\n const label = getLabel(node);\n const filterValue = getFilterValue?.(node) ?? undefined;\n let resolvedLabel: string | undefined;\n if (typeof label === 'string') {\n resolvedLabel = label;\n }\n\n return {\n entity,\n id,\n label: resolvedLabel,\n filterWhereKey,\n filterValue: filterValue ?? undefined,\n filterPath,\n filterLabel,\n listConfig,\n };\n};\n"],"mappings":";AAgCA,IAAa,KAA0C,EACrD,WACA,SACA,UACA,aACA,mBACA,mBACA,eACA,gBACA,oBAC6F;CAC7F,IAAI,KAAQ,MACV,OAAO;CAGT,IAAM,IAAK,EAAM,CAAI,GAAG,KAAK;CAC7B,IAAI,KAAM,QAAQ,MAAO,IACvB,OAAO;CAGT,IAAM,IAAQ,EAAS,CAAI,GACrB,IAAc,IAAiB,CAAI,KAAK,KAAA,GAC1C;CAKJ,OAJI,OAAO,KAAU,aACnB,IAAgB,IAGX;EACL;EACA;EACA,OAAO;EACP;EACA,aAAa,KAAe,KAAA;EAC5B;EACA;EACA;CACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detailPayloadUtils.js","names":[],"sources":["../../../../../src/components/backoffice/detail/detailPayloadUtils.ts"],"sourcesContent":["/**\n * Formats a list of strings as a Markdown bullet list.\n */\nexport function formatListAsMarkdown(items: readonly string[]): string {\n if (items.length === 0) {\n return '';\n }\n return items\n .map((item) => {\n return `- ${item}`;\n })\n .join('\\n');\n}\n"],"mappings":";AAGA,SAAgB,EAAqB,GAAkC;CAIrE,OAHI,EAAM,WAAW,IACZ,KAEF,EACJ,KAAK,MACG,KAAK,
|
|
1
|
+
{"version":3,"file":"detailPayloadUtils.js","names":[],"sources":["../../../../../src/components/backoffice/detail/detailPayloadUtils.ts"],"sourcesContent":["/**\n * Formats a list of strings as a Markdown bullet list.\n */\nexport function formatListAsMarkdown(items: readonly string[]): string {\n if (items.length === 0) {\n return '';\n }\n return items\n .map((item) => {\n return `- ${item}`;\n })\n .join('\\n');\n}\n"],"mappings":";AAGA,SAAgB,EAAqB,GAAkC;CAIrE,OAHI,EAAM,WAAW,IACZ,KAEF,EACJ,KAAK,MACG,KAAK,GACb,EACA,KAAK,IAAI;AACd"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeErrorBoundary.js","names":[],"sources":["../../../../../src/components/backoffice/errors/BackofficeErrorBoundary.tsx"],"sourcesContent":["import { Component, type ReactNode } from 'react';\n\nexport type BackofficeErrorBoundaryProps = {\n children: ReactNode;\n fallback: (args: { error: unknown; reset: () => void }) => ReactNode;\n};\n\ntype State = { error: unknown };\n\nexport class BackofficeErrorBoundary extends Component<\n BackofficeErrorBoundaryProps,\n State\n> {\n public state: State = { error: null };\n\n public static getDerivedStateFromError(error: unknown): State {\n return { error };\n }\n\n public reset = (): void => {\n this.setState({ error: null });\n };\n\n public render(): ReactNode {\n if (this.state.error != null) {\n return this.props.fallback({\n error: this.state.error,\n reset: this.reset,\n });\n }\n return this.props.children;\n }\n}\n\nexport default BackofficeErrorBoundary;\n"],"mappings":";;AASA,IAAa,IAAb,cAA6C,EAG3C;CACA,QAAsB,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"BackofficeErrorBoundary.js","names":[],"sources":["../../../../../src/components/backoffice/errors/BackofficeErrorBoundary.tsx"],"sourcesContent":["import { Component, type ReactNode } from 'react';\n\nexport type BackofficeErrorBoundaryProps = {\n children: ReactNode;\n fallback: (args: { error: unknown; reset: () => void }) => ReactNode;\n};\n\ntype State = { error: unknown };\n\nexport class BackofficeErrorBoundary extends Component<\n BackofficeErrorBoundaryProps,\n State\n> {\n public state: State = { error: null };\n\n public static getDerivedStateFromError(error: unknown): State {\n return { error };\n }\n\n public reset = (): void => {\n this.setState({ error: null });\n };\n\n public render(): ReactNode {\n if (this.state.error != null) {\n return this.props.fallback({\n error: this.state.error,\n reset: this.reset,\n });\n }\n return this.props.children;\n }\n}\n\nexport default BackofficeErrorBoundary;\n"],"mappings":";;AASA,IAAa,IAAb,cAA6C,EAG3C;CACA,QAAsB,EAAE,OAAO,KAAK;CAEpC,OAAc,yBAAyB,GAAuB;EAC5D,OAAO,EAAE,SAAM;CACjB;CAEA,cAA2B;EACzB,KAAK,SAAS,EAAE,OAAO,KAAK,CAAC;CAC/B;CAEA,SAA2B;EAOzB,OANI,KAAK,MAAM,SAAS,OAMjB,KAAK,MAAM,WALT,KAAK,MAAM,SAAS;GACzB,OAAO,KAAK,MAAM;GAClB,OAAO,KAAK;EACd,CAAC;CAGL;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeFilterAction.js","names":[],"sources":["../../../../../src/components/backoffice/filters/BackofficeFilterAction.tsx"],"sourcesContent":["import { type JSX } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Link from '@plumile/router/routing/Link.js';\nimport { SidebarSearchSvg } from '@plumile/ui/icons/SidebarSearchSvg.js';\n\nimport type {\n BackofficeRuntimeResolvedListFacetConfig,\n I18nLabel,\n} from '@plumile/backoffice-core/types.js';\nimport type { TFunction } from 'i18next';\nimport { buildBackofficeListLink } from '@plumile/backoffice-core/state/buildListHref.js';\nimport { setWhereValue } from '@plumile/backoffice-core/filters/where.js';\n\nimport {\n canFilterValue,\n resolveFilterForColumn,\n resolveFilterForWhereKey,\n} from '../../../filters/filterHelpers.js';\nimport { useBackofficeConfig } from '../../../provider/BackofficeConfigContext.js';\nimport { useBackofficeListFilterContext } from '../scaffolds/BackofficeListFilterContext.js';\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\n\nimport * as styles from './backofficeFilterAction.css.js';\n\nexport type BackofficeFilterActionProps = {\n whereKey: string;\n value: unknown;\n path?: readonly string[];\n label?: string;\n listConfig?: BackofficeRuntimeResolvedListFacetConfig;\n};\n\ntype ListFilterContext = {\n config: BackofficeRuntimeResolvedListFacetConfig;\n applyFilter: (\n whereKey: string,\n value: unknown,\n path?: readonly string[],\n ) => void;\n};\n\nconst resolveLabel = (label: I18nLabel, tApp: TFunction): string => {\n return label(tApp);\n};\n\nexport const BackofficeFilterAction = (\n props: BackofficeFilterActionProps,\n): JSX.Element | null => {\n const { t: tApp } = useTranslation();\n const { t } = useBackofficeReactTranslation();\n const { filterColumnAliases } = useBackofficeConfig();\n const { whereKey, value, path, label, listConfig } = props;\n\n const getContext =\n useBackofficeListFilterContext as () => ListFilterContext | null;\n const context = getContext();\n let config: BackofficeRuntimeResolvedListFacetConfig | null = null;\n\n if (listConfig != null) {\n config = listConfig;\n } else if (context != null) {\n config = context.config;\n }\n\n if (config == null) {\n return null;\n }\n\n let filter = resolveFilterForWhereKey(config, whereKey, path);\n if (filter == null && path == null) {\n filter = resolveFilterForColumn(config, whereKey, filterColumnAliases);\n }\n if (filter == null || !canFilterValue(filter, value)) {\n return null;\n }\n\n const filterLabel = resolveLabel(filter.label, tApp);\n const actionLabel =\n label ??\n t('filters.actions.filterBy', {\n label: filterLabel,\n });\n const icon = (\n <SidebarSearchSvg\n width={14}\n height={14}\n className={styles.icon}\n aria-hidden=\"true\"\n />\n );\n\n if (context != null) {\n return (\n <button\n type=\"button\"\n className={styles.action}\n title={actionLabel}\n aria-label={actionLabel}\n onClick={() => {\n context.applyFilter(whereKey, value, path);\n }}\n >\n {icon}\n </button>\n );\n }\n\n const baseWhere =\n config.listDefaults?.where ?? config.list.defaultState?.where ?? null;\n const nextWhere = setWhereValue(baseWhere, whereKey, value, path);\n const to = buildBackofficeListLink(config, { where: nextWhere });\n\n return (\n <Link\n to={to}\n className={styles.action}\n title={actionLabel}\n aria-label={actionLabel}\n >\n {icon}\n </Link>\n );\n};\n\nexport default BackofficeFilterAction;\n"],"mappings":";;;;;;;;;;;;AAyCA,IAAM,KAAgB,GAAkB,MAC/B,EAAM,
|
|
1
|
+
{"version":3,"file":"BackofficeFilterAction.js","names":[],"sources":["../../../../../src/components/backoffice/filters/BackofficeFilterAction.tsx"],"sourcesContent":["import { type JSX } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Link from '@plumile/router/routing/Link.js';\nimport { SidebarSearchSvg } from '@plumile/ui/icons/SidebarSearchSvg.js';\n\nimport type {\n BackofficeRuntimeResolvedListFacetConfig,\n I18nLabel,\n} from '@plumile/backoffice-core/types.js';\nimport type { TFunction } from 'i18next';\nimport { buildBackofficeListLink } from '@plumile/backoffice-core/state/buildListHref.js';\nimport { setWhereValue } from '@plumile/backoffice-core/filters/where.js';\n\nimport {\n canFilterValue,\n resolveFilterForColumn,\n resolveFilterForWhereKey,\n} from '../../../filters/filterHelpers.js';\nimport { useBackofficeConfig } from '../../../provider/BackofficeConfigContext.js';\nimport { useBackofficeListFilterContext } from '../scaffolds/BackofficeListFilterContext.js';\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\n\nimport * as styles from './backofficeFilterAction.css.js';\n\nexport type BackofficeFilterActionProps = {\n whereKey: string;\n value: unknown;\n path?: readonly string[];\n label?: string;\n listConfig?: BackofficeRuntimeResolvedListFacetConfig;\n};\n\ntype ListFilterContext = {\n config: BackofficeRuntimeResolvedListFacetConfig;\n applyFilter: (\n whereKey: string,\n value: unknown,\n path?: readonly string[],\n ) => void;\n};\n\nconst resolveLabel = (label: I18nLabel, tApp: TFunction): string => {\n return label(tApp);\n};\n\nexport const BackofficeFilterAction = (\n props: BackofficeFilterActionProps,\n): JSX.Element | null => {\n const { t: tApp } = useTranslation();\n const { t } = useBackofficeReactTranslation();\n const { filterColumnAliases } = useBackofficeConfig();\n const { whereKey, value, path, label, listConfig } = props;\n\n const getContext =\n useBackofficeListFilterContext as () => ListFilterContext | null;\n const context = getContext();\n let config: BackofficeRuntimeResolvedListFacetConfig | null = null;\n\n if (listConfig != null) {\n config = listConfig;\n } else if (context != null) {\n config = context.config;\n }\n\n if (config == null) {\n return null;\n }\n\n let filter = resolveFilterForWhereKey(config, whereKey, path);\n if (filter == null && path == null) {\n filter = resolveFilterForColumn(config, whereKey, filterColumnAliases);\n }\n if (filter == null || !canFilterValue(filter, value)) {\n return null;\n }\n\n const filterLabel = resolveLabel(filter.label, tApp);\n const actionLabel =\n label ??\n t('filters.actions.filterBy', {\n label: filterLabel,\n });\n const icon = (\n <SidebarSearchSvg\n width={14}\n height={14}\n className={styles.icon}\n aria-hidden=\"true\"\n />\n );\n\n if (context != null) {\n return (\n <button\n type=\"button\"\n className={styles.action}\n title={actionLabel}\n aria-label={actionLabel}\n onClick={() => {\n context.applyFilter(whereKey, value, path);\n }}\n >\n {icon}\n </button>\n );\n }\n\n const baseWhere =\n config.listDefaults?.where ?? config.list.defaultState?.where ?? null;\n const nextWhere = setWhereValue(baseWhere, whereKey, value, path);\n const to = buildBackofficeListLink(config, { where: nextWhere });\n\n return (\n <Link\n to={to}\n className={styles.action}\n title={actionLabel}\n aria-label={actionLabel}\n >\n {icon}\n </Link>\n );\n};\n\nexport default BackofficeFilterAction;\n"],"mappings":";;;;;;;;;;;;AAyCA,IAAM,KAAgB,GAAkB,MAC/B,EAAM,CAAI,GAGN,KACX,MACuB;CACvB,IAAM,EAAE,GAAG,MAAS,EAAe,GAC7B,EAAE,SAAM,EAA8B,GACtC,EAAE,2BAAwB,EAAoB,GAC9C,EAAE,aAAU,UAAO,SAAM,UAAO,kBAAe,GAI/C,IAAU,EAAW,GACvB,IAA0D;CAQ9D,IANI,KAAc,OAEP,KAAW,SACpB,IAAS,EAAQ,UAFjB,IAAS,GAKP,KAAU,MACZ,OAAO;CAGT,IAAI,IAAS,EAAyB,GAAQ,GAAU,CAAI;CAI5D,IAHI,KAAU,QAAQ,KAAQ,SAC5B,IAAS,EAAuB,GAAQ,GAAU,CAAmB,IAEnE,KAAU,QAAQ,CAAC,EAAe,GAAQ,CAAK,GACjD,OAAO;CAGT,IAAM,IAAc,EAAa,EAAO,OAAO,CAAI,GAC7C,IACJ,KACA,EAAE,4BAA4B,EAC5B,OAAO,EACT,CAAC,GACG,IACJ,kBAAC,GAAD;EACE,OAAO;EACP,QAAQ;EACR,WAAW;EACX,eAAY;CACb,CAAA;CAGH,IAAI,KAAW,MACb,OACE,kBAAC,UAAD;EACE,MAAK;EACL,WAAW;EACX,OAAO;EACP,cAAY;EACZ,eAAe;GACb,EAAQ,YAAY,GAAU,GAAO,CAAI;EAC3C;YAEC;CACK,CAAA;CAMZ,IAAM,IAAY,EADhB,EAAO,cAAc,SAAS,EAAO,KAAK,cAAc,SAAS,MACxB,GAAU,GAAO,CAAI;CAGhE,OACE,kBAAC,GAAD;EACM,IAJG,EAAwB,GAAQ,EAAE,OAAO,EAAU,CAItD;EACJ,WAAW;EACX,OAAO;EACP,cAAY;YAEX;CACG,CAAA;AAEV"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeferredFilterSearchInput.js","names":[],"sources":["../../../../../src/components/backoffice/filters/DeferredFilterSearchInput.tsx"],"sourcesContent":["import {\n useEffect,\n useState,\n type FormEvent,\n type JSX,\n type KeyboardEvent,\n} from 'react';\n\nimport { Input } from '@plumile/ui/atomic/atoms/input/Input.js';\nimport { CheckSvg } from '@plumile/ui/icons/CheckSvg.js';\nimport { ModalCloseSvg } from '@plumile/ui/icons/ModalCloseSvg.js';\nimport { SidebarSearchSvg } from '@plumile/ui/icons/SidebarSearchSvg.js';\n\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\n\nimport * as styles from './deferredFilterSearchInput.css.js';\n\nexport type DeferredFilterSearchInputProps = {\n value: string;\n placeholder: string;\n ariaLabel?: string;\n className?: string;\n inputMode?: 'search' | 'numeric' | 'decimal';\n type?: 'search' | 'text' | 'number' | 'datetime-local';\n onApply: (value: string) => void;\n};\n\nexport const DeferredFilterSearchInput = ({\n value,\n placeholder,\n ariaLabel,\n className,\n inputMode = 'search',\n type = 'text',\n onApply,\n}: DeferredFilterSearchInputProps): JSX.Element => {\n const { t } = useBackofficeReactTranslation();\n const [draftValue, setDraftValue] = useState(value);\n\n useEffect(() => {\n setDraftValue(value);\n }, [value]);\n\n const normalizedDraft = draftValue.trim();\n const normalizedValue = value.trim();\n const hasDraft = normalizedDraft !== '';\n const hasPendingValue = normalizedDraft !== normalizedValue;\n const canClear = hasDraft || normalizedValue !== '';\n const inputLabel = ariaLabel ?? placeholder;\n const clearLabel = t('filters.actions.clearFilter', { label: inputLabel });\n const applyLabel = t('filters.actions.applyFilter', { label: inputLabel });\n\n const applyDraft = () => {\n if (!hasPendingValue) {\n return;\n }\n onApply(normalizedDraft);\n };\n\n const clearValue = () => {\n setDraftValue('');\n if (normalizedValue !== '') {\n onApply('');\n }\n };\n\n let clearActionNode: JSX.Element = (\n <span className={styles.actionButtonSpacer} aria-hidden=\"true\" />\n );\n if (canClear) {\n clearActionNode = (\n <button\n type=\"button\"\n className={styles.actionButton}\n aria-label={clearLabel}\n title={clearLabel}\n onClick={clearValue}\n >\n <ModalCloseSvg width={16} height={16} aria-hidden=\"true\" />\n </button>\n );\n }\n\n return (\n <form\n className={className}\n onSubmit={(event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n applyDraft();\n }}\n >\n <div className={styles.container}>\n <Input\n type={type}\n inputMode={inputMode}\n value={draftValue}\n onInput={(event: FormEvent<HTMLInputElement>) => {\n setDraftValue(event.currentTarget.value);\n }}\n onKeyDown={(event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n applyDraft();\n }\n if (event.key === 'Escape') {\n event.preventDefault();\n setDraftValue(value);\n }\n }}\n placeholder={placeholder}\n aria-label={inputLabel}\n size=\"small\"\n fullWidth\n leftIcon={\n <SidebarSearchSvg width={18} height={18} aria-hidden=\"true\" />\n }\n rightIconIsInteractive\n rightIcon={\n <span className={styles.actions}>\n {clearActionNode}\n <button\n type=\"submit\"\n className={styles.actionButton}\n aria-label={applyLabel}\n title={applyLabel}\n disabled={!hasPendingValue}\n >\n <CheckSvg width={16} height={16} aria-hidden=\"true\" />\n </button>\n </span>\n }\n />\n </div>\n </form>\n );\n};\n\nexport default DeferredFilterSearchInput;\n"],"mappings":";;;;;;;;;AA2BA,IAAa,KAA6B,EACxC,UACA,gBACA,cACA,cACA,eAAY,UACZ,UAAO,QACP,iBACiD;CACjD,IAAM,EAAE,SAAM,
|
|
1
|
+
{"version":3,"file":"DeferredFilterSearchInput.js","names":[],"sources":["../../../../../src/components/backoffice/filters/DeferredFilterSearchInput.tsx"],"sourcesContent":["import {\n useEffect,\n useState,\n type FormEvent,\n type JSX,\n type KeyboardEvent,\n} from 'react';\n\nimport { Input } from '@plumile/ui/atomic/atoms/input/Input.js';\nimport { CheckSvg } from '@plumile/ui/icons/CheckSvg.js';\nimport { ModalCloseSvg } from '@plumile/ui/icons/ModalCloseSvg.js';\nimport { SidebarSearchSvg } from '@plumile/ui/icons/SidebarSearchSvg.js';\n\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\n\nimport * as styles from './deferredFilterSearchInput.css.js';\n\nexport type DeferredFilterSearchInputProps = {\n value: string;\n placeholder: string;\n ariaLabel?: string;\n className?: string;\n inputMode?: 'search' | 'numeric' | 'decimal';\n type?: 'search' | 'text' | 'number' | 'datetime-local';\n onApply: (value: string) => void;\n};\n\nexport const DeferredFilterSearchInput = ({\n value,\n placeholder,\n ariaLabel,\n className,\n inputMode = 'search',\n type = 'text',\n onApply,\n}: DeferredFilterSearchInputProps): JSX.Element => {\n const { t } = useBackofficeReactTranslation();\n const [draftValue, setDraftValue] = useState(value);\n\n useEffect(() => {\n setDraftValue(value);\n }, [value]);\n\n const normalizedDraft = draftValue.trim();\n const normalizedValue = value.trim();\n const hasDraft = normalizedDraft !== '';\n const hasPendingValue = normalizedDraft !== normalizedValue;\n const canClear = hasDraft || normalizedValue !== '';\n const inputLabel = ariaLabel ?? placeholder;\n const clearLabel = t('filters.actions.clearFilter', { label: inputLabel });\n const applyLabel = t('filters.actions.applyFilter', { label: inputLabel });\n\n const applyDraft = () => {\n if (!hasPendingValue) {\n return;\n }\n onApply(normalizedDraft);\n };\n\n const clearValue = () => {\n setDraftValue('');\n if (normalizedValue !== '') {\n onApply('');\n }\n };\n\n let clearActionNode: JSX.Element = (\n <span className={styles.actionButtonSpacer} aria-hidden=\"true\" />\n );\n if (canClear) {\n clearActionNode = (\n <button\n type=\"button\"\n className={styles.actionButton}\n aria-label={clearLabel}\n title={clearLabel}\n onClick={clearValue}\n >\n <ModalCloseSvg width={16} height={16} aria-hidden=\"true\" />\n </button>\n );\n }\n\n return (\n <form\n className={className}\n onSubmit={(event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n applyDraft();\n }}\n >\n <div className={styles.container}>\n <Input\n type={type}\n inputMode={inputMode}\n value={draftValue}\n onInput={(event: FormEvent<HTMLInputElement>) => {\n setDraftValue(event.currentTarget.value);\n }}\n onKeyDown={(event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n applyDraft();\n }\n if (event.key === 'Escape') {\n event.preventDefault();\n setDraftValue(value);\n }\n }}\n placeholder={placeholder}\n aria-label={inputLabel}\n size=\"small\"\n fullWidth\n leftIcon={\n <SidebarSearchSvg width={18} height={18} aria-hidden=\"true\" />\n }\n rightIconIsInteractive\n rightIcon={\n <span className={styles.actions}>\n {clearActionNode}\n <button\n type=\"submit\"\n className={styles.actionButton}\n aria-label={applyLabel}\n title={applyLabel}\n disabled={!hasPendingValue}\n >\n <CheckSvg width={16} height={16} aria-hidden=\"true\" />\n </button>\n </span>\n }\n />\n </div>\n </form>\n );\n};\n\nexport default DeferredFilterSearchInput;\n"],"mappings":";;;;;;;;;AA2BA,IAAa,KAA6B,EACxC,UACA,gBACA,cACA,cACA,eAAY,UACZ,UAAO,QACP,iBACiD;CACjD,IAAM,EAAE,SAAM,EAA8B,GACtC,CAAC,GAAY,KAAiB,EAAS,CAAK;CAElD,QAAgB;EACd,EAAc,CAAK;CACrB,GAAG,CAAC,CAAK,CAAC;CAEV,IAAM,IAAkB,EAAW,KAAK,GAClC,IAAkB,EAAM,KAAK,GAC7B,IAAW,MAAoB,IAC/B,IAAkB,MAAoB,GACtC,IAAW,KAAY,MAAoB,IAC3C,IAAa,KAAa,GAC1B,IAAa,EAAE,+BAA+B,EAAE,OAAO,EAAW,CAAC,GACnE,IAAa,EAAE,+BAA+B,EAAE,OAAO,EAAW,CAAC,GAEnE,UAAmB;EAClB,KAGL,EAAQ,CAAe;CACzB,GAEM,UAAmB;EAEvB,AADA,EAAc,EAAE,GACZ,MAAoB,MACtB,EAAQ,EAAE;CAEd,GAEI,IACF,kBAAC,QAAD;EAAM,WAAW;EAA2B,eAAY;CAAQ,CAAA;CAgBlE,OAdI,MACF,IACE,kBAAC,UAAD;EACE,MAAK;EACL,WAAW;EACX,cAAY;EACZ,OAAO;EACP,SAAS;YAET,kBAAC,GAAD;GAAe,OAAO;GAAI,QAAQ;GAAI,eAAY;EAAQ,CAAA;CACpD,CAAA,IAKV,kBAAC,QAAD;EACa;EACX,WAAW,MAAsC;GAE/C,AADA,EAAM,eAAe,GACrB,EAAW;EACb;YAEA,kBAAC,OAAD;GAAK,WAAW;aACd,kBAAC,GAAD;IACQ;IACK;IACX,OAAO;IACP,UAAU,MAAuC;KAC/C,EAAc,EAAM,cAAc,KAAK;IACzC;IACA,YAAY,MAA2C;KAKrD,AAJI,EAAM,QAAQ,YAChB,EAAM,eAAe,GACrB,EAAW,IAET,EAAM,QAAQ,aAChB,EAAM,eAAe,GACrB,EAAc,CAAK;IAEvB;IACa;IACb,cAAY;IACZ,MAAK;IACL,WAAA;IACA,UACE,kBAAC,GAAD;KAAkB,OAAO;KAAI,QAAQ;KAAI,eAAY;IAAQ,CAAA;IAE/D,wBAAA;IACA,WACE,kBAAC,QAAD;KAAM,WAAW;eAAjB,CACG,GACD,kBAAC,UAAD;MACE,MAAK;MACL,WAAW;MACX,cAAY;MACZ,OAAO;MACP,UAAU,CAAC;gBAEX,kBAAC,GAAD;OAAU,OAAO;OAAI,QAAQ;OAAI,eAAY;MAAQ,CAAA;KAC/C,CAAA,CACJ;;GAET,CAAA;EACE,CAAA;CACD,CAAA;AAEV"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityFilterValue.js","names":[],"sources":["../../../../../src/components/backoffice/filters/EntityFilterValue.tsx"],"sourcesContent":["import { Suspense, type JSX } from 'react';\nimport * as ReactRelay from 'react-relay';\nimport type { OperationType } from 'relay-runtime';\n\nimport type { BackofficePickerValueConfig } from '@plumile/backoffice-core/types.js';\n\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\nimport { useBackofficePickerEntityLoader } from '../../../provider/useBackofficeEntityLoader.js';\nimport { BackofficeErrorBoundary } from '../errors/BackofficeErrorBoundary.js';\n\nconst { useLazyLoadQuery } = ReactRelay;\n\ntype EntityFilterValueContentProps<RowRef, RowView> = {\n valueConfig: BackofficePickerValueConfig<RowRef, RowView>;\n id: string;\n children: EntityFilterValueTextChildren;\n};\n\nconst resolveTitle = (value: unknown): string | null => {\n if (value == null || typeof value !== 'object') {\n return null;\n }\n const { title } = value as { title?: unknown };\n if (typeof title !== 'string') {\n return null;\n }\n const trimmed = title.trim();\n if (trimmed === '') {\n return null;\n }\n return trimmed;\n};\n\nconst EntityFilterValueContent = <RowRef, RowView>({\n valueConfig,\n id,\n children,\n}: EntityFilterValueContentProps<RowRef, RowView>): JSX.Element => {\n const data = useLazyLoadQuery<OperationType>(valueConfig.query, { id });\n const rowRef = valueConfig.resolveRow(data);\n let row: RowView | null = null;\n if (rowRef != null) {\n row = valueConfig.toRow(rowRef);\n }\n const title = resolveTitle(row);\n let status: EntityFilterValueTextState['status'] = 'resolved';\n if (title == null) {\n status = 'unresolved';\n }\n\n return children(title, { status });\n};\n\nexport type EntityFilterValueTextState = {\n status: 'loading' | 'resolved' | 'unresolved' | 'unavailable' | 'error';\n};\n\nexport type EntityFilterValueTextChildren = (\n label: string | null,\n state?: EntityFilterValueTextState,\n) => JSX.Element;\n\nexport type EntityFilterValueTextProps = {\n entityId: string;\n id: string;\n children: EntityFilterValueTextChildren;\n};\n\nexport const EntityFilterValueText = ({\n entityId,\n id,\n children,\n}: EntityFilterValueTextProps): JSX.Element => {\n const resolvedId = id.trim();\n const pickerEntityState = useBackofficePickerEntityLoader(entityId, {\n enabled: resolvedId !== '',\n });\n\n if (resolvedId === '') {\n return children(null, { status: 'unavailable' });\n }\n\n let valueConfig: BackofficePickerValueConfig<unknown, unknown> | null = null;\n if (pickerEntityState.status === 'loaded') {\n valueConfig = pickerEntityState.module.config.picker.value ?? null;\n }\n\n const loadingFallback = children(null, { status: 'loading' });\n if (pickerEntityState.status === 'loading') {\n return loadingFallback;\n }\n\n let unavailableStatus: EntityFilterValueTextState['status'] = 'unavailable';\n if (pickerEntityState.status === 'error') {\n unavailableStatus = 'error';\n }\n const unavailableFallback = children(null, {\n status: unavailableStatus,\n });\n if (valueConfig == null) {\n return unavailableFallback;\n }\n\n return (\n <BackofficeErrorBoundary\n fallback={() => {\n return children(null, { status: 'error' });\n }}\n >\n <Suspense fallback={loadingFallback}>\n <EntityFilterValueContent valueConfig={valueConfig} id={id}>\n {children}\n </EntityFilterValueContent>\n </Suspense>\n </BackofficeErrorBoundary>\n );\n};\n\nexport type EntityFilterValueProps = {\n entityId: string;\n id: string;\n};\n\nexport const EntityFilterValue = ({\n entityId,\n id,\n}: EntityFilterValueProps): JSX.Element => {\n const { t } = useBackofficeReactTranslation();\n const resolvedId = id.trim();\n\n return (\n <EntityFilterValueText entityId={entityId} id={id}>\n {(label) => {\n let fallbackLabel = resolvedId;\n if (resolvedId === '') {\n fallbackLabel = t('filters.placeholders.unresolved');\n }\n return <span>{label ?? fallbackLabel}</span>;\n }}\n </EntityFilterValueText>\n );\n};\n\nexport default EntityFilterValue;\n"],"mappings":";;;;;;;AAUA,IAAM,EAAE,kBAAA,MAAqB,GAQvB,KAAgB,MAAkC;CACtD,IAAqB,OAAO,KAAU,aAAlC,GACF,OAAO;CAET,IAAM,EAAE,aAAU;CAClB,IAAI,OAAO,KAAU,UACnB,OAAO;CAET,IAAM,IAAU,EAAM,
|
|
1
|
+
{"version":3,"file":"EntityFilterValue.js","names":[],"sources":["../../../../../src/components/backoffice/filters/EntityFilterValue.tsx"],"sourcesContent":["import { Suspense, type JSX } from 'react';\nimport * as ReactRelay from 'react-relay';\nimport type { OperationType } from 'relay-runtime';\n\nimport type { BackofficePickerValueConfig } from '@plumile/backoffice-core/types.js';\n\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\nimport { useBackofficePickerEntityLoader } from '../../../provider/useBackofficeEntityLoader.js';\nimport { BackofficeErrorBoundary } from '../errors/BackofficeErrorBoundary.js';\n\nconst { useLazyLoadQuery } = ReactRelay;\n\ntype EntityFilterValueContentProps<RowRef, RowView> = {\n valueConfig: BackofficePickerValueConfig<RowRef, RowView>;\n id: string;\n children: EntityFilterValueTextChildren;\n};\n\nconst resolveTitle = (value: unknown): string | null => {\n if (value == null || typeof value !== 'object') {\n return null;\n }\n const { title } = value as { title?: unknown };\n if (typeof title !== 'string') {\n return null;\n }\n const trimmed = title.trim();\n if (trimmed === '') {\n return null;\n }\n return trimmed;\n};\n\nconst EntityFilterValueContent = <RowRef, RowView>({\n valueConfig,\n id,\n children,\n}: EntityFilterValueContentProps<RowRef, RowView>): JSX.Element => {\n const data = useLazyLoadQuery<OperationType>(valueConfig.query, { id });\n const rowRef = valueConfig.resolveRow(data);\n let row: RowView | null = null;\n if (rowRef != null) {\n row = valueConfig.toRow(rowRef);\n }\n const title = resolveTitle(row);\n let status: EntityFilterValueTextState['status'] = 'resolved';\n if (title == null) {\n status = 'unresolved';\n }\n\n return children(title, { status });\n};\n\nexport type EntityFilterValueTextState = {\n status: 'loading' | 'resolved' | 'unresolved' | 'unavailable' | 'error';\n};\n\nexport type EntityFilterValueTextChildren = (\n label: string | null,\n state?: EntityFilterValueTextState,\n) => JSX.Element;\n\nexport type EntityFilterValueTextProps = {\n entityId: string;\n id: string;\n children: EntityFilterValueTextChildren;\n};\n\nexport const EntityFilterValueText = ({\n entityId,\n id,\n children,\n}: EntityFilterValueTextProps): JSX.Element => {\n const resolvedId = id.trim();\n const pickerEntityState = useBackofficePickerEntityLoader(entityId, {\n enabled: resolvedId !== '',\n });\n\n if (resolvedId === '') {\n return children(null, { status: 'unavailable' });\n }\n\n let valueConfig: BackofficePickerValueConfig<unknown, unknown> | null = null;\n if (pickerEntityState.status === 'loaded') {\n valueConfig = pickerEntityState.module.config.picker.value ?? null;\n }\n\n const loadingFallback = children(null, { status: 'loading' });\n if (pickerEntityState.status === 'loading') {\n return loadingFallback;\n }\n\n let unavailableStatus: EntityFilterValueTextState['status'] = 'unavailable';\n if (pickerEntityState.status === 'error') {\n unavailableStatus = 'error';\n }\n const unavailableFallback = children(null, {\n status: unavailableStatus,\n });\n if (valueConfig == null) {\n return unavailableFallback;\n }\n\n return (\n <BackofficeErrorBoundary\n fallback={() => {\n return children(null, { status: 'error' });\n }}\n >\n <Suspense fallback={loadingFallback}>\n <EntityFilterValueContent valueConfig={valueConfig} id={id}>\n {children}\n </EntityFilterValueContent>\n </Suspense>\n </BackofficeErrorBoundary>\n );\n};\n\nexport type EntityFilterValueProps = {\n entityId: string;\n id: string;\n};\n\nexport const EntityFilterValue = ({\n entityId,\n id,\n}: EntityFilterValueProps): JSX.Element => {\n const { t } = useBackofficeReactTranslation();\n const resolvedId = id.trim();\n\n return (\n <EntityFilterValueText entityId={entityId} id={id}>\n {(label) => {\n let fallbackLabel = resolvedId;\n if (resolvedId === '') {\n fallbackLabel = t('filters.placeholders.unresolved');\n }\n return <span>{label ?? fallbackLabel}</span>;\n }}\n </EntityFilterValueText>\n );\n};\n\nexport default EntityFilterValue;\n"],"mappings":";;;;;;;AAUA,IAAM,EAAE,kBAAA,MAAqB,GAQvB,KAAgB,MAAkC;CACtD,IAAqB,OAAO,KAAU,aAAlC,GACF,OAAO;CAET,IAAM,EAAE,aAAU;CAClB,IAAI,OAAO,KAAU,UACnB,OAAO;CAET,IAAM,IAAU,EAAM,KAAK;CAI3B,OAHI,MAAY,KACP,OAEF;AACT,GAEM,KAA6C,EACjD,gBACA,OACA,kBACiE;CACjE,IAAM,IAAO,EAAgC,EAAY,OAAO,EAAE,MAAG,CAAC,GAChE,IAAS,EAAY,WAAW,CAAI,GACtC,IAAsB;CAC1B,AAAI,KAAU,SACZ,IAAM,EAAY,MAAM,CAAM;CAEhC,IAAM,IAAQ,EAAa,CAAG,GAC1B,IAA+C;CAKnD,OAJI,MACF,IAAS,eAGJ,EAAS,GAAO,EAAE,UAAO,CAAC;AACnC,GAiBa,KAAyB,EACpC,aACA,OACA,kBAC6C;CAC7C,IAAM,IAAa,EAAG,KAAK,GACrB,IAAoB,EAAgC,GAAU,EAClE,SAAS,MAAe,GAC1B,CAAC;CAED,IAAI,MAAe,IACjB,OAAO,EAAS,MAAM,EAAE,QAAQ,cAAc,CAAC;CAGjD,IAAI,IAAoE;CACxE,AAAI,EAAkB,WAAW,aAC/B,IAAc,EAAkB,OAAO,OAAO,OAAO,SAAS;CAGhE,IAAM,IAAkB,EAAS,MAAM,EAAE,QAAQ,UAAU,CAAC;CAC5D,IAAI,EAAkB,WAAW,WAC/B,OAAO;CAGT,IAAI,IAA0D;CAC9D,AAAI,EAAkB,WAAW,YAC/B,IAAoB;CAEtB,IAAM,IAAsB,EAAS,MAAM,EACzC,QAAQ,EACV,CAAC;CAKD,OAJI,KAAe,OACV,IAIP,kBAAC,GAAD;EACE,gBACS,EAAS,MAAM,EAAE,QAAQ,QAAQ,CAAC;YAG3C,kBAAC,GAAD;GAAU,UAAU;aAClB,kBAAC,GAAD;IAAuC;IAAiB;IACrD;GACuB,CAAA;EAClB,CAAA;CACa,CAAA;AAE7B,GAOa,KAAqB,EAChC,aACA,YACyC;CACzC,IAAM,EAAE,SAAM,EAA8B,GACtC,IAAa,EAAG,KAAK;CAE3B,OACE,kBAAC,GAAD;EAAiC;EAAc;aAC3C,MAAU;GACV,IAAI,IAAgB;GAIpB,OAHI,MAAe,OACjB,IAAgB,EAAE,iCAAiC,IAE9C,kBAAC,QAAD,EAAA,UAAO,KAAS,EAAoB,CAAA;EAC7C;CACqB,CAAA;AAE3B"}
|
|
@@ -82,7 +82,7 @@ var g = (g) => {
|
|
|
82
82
|
return /* @__PURE__ */ d("div", {
|
|
83
83
|
className: r,
|
|
84
84
|
children: B ?? /* @__PURE__ */ d("div", {
|
|
85
|
-
className: "
|
|
85
|
+
className: "txvbqbfvs txvbqbv7x txvbqbfpn txvbqbey txvbqbwr6",
|
|
86
86
|
children: F
|
|
87
87
|
})
|
|
88
88
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityIdFilterField.js","names":[],"sources":["../../../../../src/components/backoffice/filters/EntityIdFilterField.tsx"],"sourcesContent":["import { type JSX } from 'react';\n\nimport { ModalCloseSvg } from '@plumile/ui/icons/ModalCloseSvg.js';\nimport { BackofficeSidebarPenToolSvg } from '@plumile/ui/icons/backoffice/BackofficeSidebarPenToolSvg.js';\nimport { BackofficeSidebarSearchSvg } from '@plumile/ui/icons/backoffice/BackofficeSidebarSearchSvg.js';\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\n\nimport * as styles from './entityIdFilterField.css.js';\n\nexport type EntityIdFilterFieldProps = {\n id?: string;\n label: string;\n value: string | null;\n displayValue?: string | null;\n placeholder?: string;\n ariaDescribedBy?: string;\n ariaInvalid?: boolean;\n isResolving?: boolean;\n onPick?: () => void;\n onClear?: () => void;\n disabled?: boolean;\n};\n\nexport const EntityIdFilterField = (\n props: EntityIdFilterFieldProps,\n): JSX.Element => {\n const {\n disabled = false,\n id,\n label,\n value,\n displayValue,\n placeholder,\n ariaDescribedBy,\n ariaInvalid,\n isResolving = false,\n onPick,\n onClear,\n } = props;\n const { t } = useBackofficeReactTranslation();\n const normalizedValue = value?.trim() ?? '';\n const normalizedDisplayValue = displayValue?.trim() ?? '';\n const hasValue = normalizedValue !== '';\n const hasDisplayValue = normalizedDisplayValue !== '';\n\n const resolvedPlaceholder =\n placeholder ?? t('filters.placeholders.anyEntity', { label });\n const unresolvedPlaceholder = t('filters.placeholders.unresolved');\n\n let displayNode: JSX.Element;\n if (hasDisplayValue) {\n displayNode = (\n <span className={styles.valueText}>{normalizedDisplayValue}</span>\n );\n } else if (hasValue) {\n displayNode = (\n <span className={styles.placeholder}>{unresolvedPlaceholder}</span>\n );\n } else {\n displayNode = (\n <span className={styles.placeholder}>{resolvedPlaceholder}</span>\n );\n }\n\n let pickLabel = t('common.actions.pick');\n if (hasValue) {\n pickLabel = t('filters.actions.changeFilterValue', { label });\n }\n let pickAriaLabel = t('filters.actions.filterBy', { label });\n if (hasValue) {\n pickAriaLabel = pickLabel;\n }\n const clearAriaLabel = t('filters.actions.clearFilter', { label });\n\n let clearNode: JSX.Element | null = null;\n if (hasValue && onClear != null) {\n clearNode = (\n <button\n type=\"button\"\n className={styles.clearButton}\n aria-label={clearAriaLabel}\n disabled={disabled}\n onClick={(event) => {\n event.stopPropagation();\n onClear();\n }}\n >\n <ModalCloseSvg width={16} height={16} aria-hidden=\"true\" />\n </button>\n );\n }\n\n let pickerNode: JSX.Element | null = null;\n if (onPick != null) {\n let actionIcon = (\n <BackofficeSidebarSearchSvg\n className={styles.actionIcon}\n aria-hidden=\"true\"\n />\n );\n if (hasValue) {\n actionIcon = (\n <BackofficeSidebarPenToolSvg\n className={styles.actionIcon}\n aria-hidden=\"true\"\n />\n );\n }\n\n pickerNode = (\n <div className={styles.pickerControl}>\n <button\n id={id}\n type=\"button\"\n className={styles.pickerButton}\n aria-label={pickAriaLabel}\n aria-describedby={ariaDescribedBy}\n aria-invalid={ariaInvalid}\n aria-busy={isResolving || undefined}\n disabled={disabled}\n onClick={onPick}\n >\n <span className={styles.content}>\n <span className={styles.labelText}>{label}</span>\n {displayNode}\n </span>\n </button>\n <button\n type=\"button\"\n className={styles.pickActionButton}\n aria-label={pickAriaLabel}\n title={pickAriaLabel}\n disabled={disabled}\n onClick={onPick}\n >\n {actionIcon}\n </button>\n {clearNode}\n </div>\n );\n }\n\n return (\n <div className={styles.container}>\n {pickerNode ?? <div className={styles.valueBox}>{displayNode}</div>}\n </div>\n );\n};\n\nexport default EntityIdFilterField;\n"],"mappings":";;;;;;;AAuBA,IAAa,KACX,MACgB;CAChB,IAAM,EACJ,cAAW,IACX,OACA,UACA,UACA,iBACA,aAAA,GACA,oBACA,gBACA,iBAAc,IACd,WACA,eACE,GACE,EAAE,SAAM,
|
|
1
|
+
{"version":3,"file":"EntityIdFilterField.js","names":[],"sources":["../../../../../src/components/backoffice/filters/EntityIdFilterField.tsx"],"sourcesContent":["import { type JSX } from 'react';\n\nimport { ModalCloseSvg } from '@plumile/ui/icons/ModalCloseSvg.js';\nimport { BackofficeSidebarPenToolSvg } from '@plumile/ui/icons/backoffice/BackofficeSidebarPenToolSvg.js';\nimport { BackofficeSidebarSearchSvg } from '@plumile/ui/icons/backoffice/BackofficeSidebarSearchSvg.js';\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\n\nimport * as styles from './entityIdFilterField.css.js';\n\nexport type EntityIdFilterFieldProps = {\n id?: string;\n label: string;\n value: string | null;\n displayValue?: string | null;\n placeholder?: string;\n ariaDescribedBy?: string;\n ariaInvalid?: boolean;\n isResolving?: boolean;\n onPick?: () => void;\n onClear?: () => void;\n disabled?: boolean;\n};\n\nexport const EntityIdFilterField = (\n props: EntityIdFilterFieldProps,\n): JSX.Element => {\n const {\n disabled = false,\n id,\n label,\n value,\n displayValue,\n placeholder,\n ariaDescribedBy,\n ariaInvalid,\n isResolving = false,\n onPick,\n onClear,\n } = props;\n const { t } = useBackofficeReactTranslation();\n const normalizedValue = value?.trim() ?? '';\n const normalizedDisplayValue = displayValue?.trim() ?? '';\n const hasValue = normalizedValue !== '';\n const hasDisplayValue = normalizedDisplayValue !== '';\n\n const resolvedPlaceholder =\n placeholder ?? t('filters.placeholders.anyEntity', { label });\n const unresolvedPlaceholder = t('filters.placeholders.unresolved');\n\n let displayNode: JSX.Element;\n if (hasDisplayValue) {\n displayNode = (\n <span className={styles.valueText}>{normalizedDisplayValue}</span>\n );\n } else if (hasValue) {\n displayNode = (\n <span className={styles.placeholder}>{unresolvedPlaceholder}</span>\n );\n } else {\n displayNode = (\n <span className={styles.placeholder}>{resolvedPlaceholder}</span>\n );\n }\n\n let pickLabel = t('common.actions.pick');\n if (hasValue) {\n pickLabel = t('filters.actions.changeFilterValue', { label });\n }\n let pickAriaLabel = t('filters.actions.filterBy', { label });\n if (hasValue) {\n pickAriaLabel = pickLabel;\n }\n const clearAriaLabel = t('filters.actions.clearFilter', { label });\n\n let clearNode: JSX.Element | null = null;\n if (hasValue && onClear != null) {\n clearNode = (\n <button\n type=\"button\"\n className={styles.clearButton}\n aria-label={clearAriaLabel}\n disabled={disabled}\n onClick={(event) => {\n event.stopPropagation();\n onClear();\n }}\n >\n <ModalCloseSvg width={16} height={16} aria-hidden=\"true\" />\n </button>\n );\n }\n\n let pickerNode: JSX.Element | null = null;\n if (onPick != null) {\n let actionIcon = (\n <BackofficeSidebarSearchSvg\n className={styles.actionIcon}\n aria-hidden=\"true\"\n />\n );\n if (hasValue) {\n actionIcon = (\n <BackofficeSidebarPenToolSvg\n className={styles.actionIcon}\n aria-hidden=\"true\"\n />\n );\n }\n\n pickerNode = (\n <div className={styles.pickerControl}>\n <button\n id={id}\n type=\"button\"\n className={styles.pickerButton}\n aria-label={pickAriaLabel}\n aria-describedby={ariaDescribedBy}\n aria-invalid={ariaInvalid}\n aria-busy={isResolving || undefined}\n disabled={disabled}\n onClick={onPick}\n >\n <span className={styles.content}>\n <span className={styles.labelText}>{label}</span>\n {displayNode}\n </span>\n </button>\n <button\n type=\"button\"\n className={styles.pickActionButton}\n aria-label={pickAriaLabel}\n title={pickAriaLabel}\n disabled={disabled}\n onClick={onPick}\n >\n {actionIcon}\n </button>\n {clearNode}\n </div>\n );\n }\n\n return (\n <div className={styles.container}>\n {pickerNode ?? <div className={styles.valueBox}>{displayNode}</div>}\n </div>\n );\n};\n\nexport default EntityIdFilterField;\n"],"mappings":";;;;;;;AAuBA,IAAa,KACX,MACgB;CAChB,IAAM,EACJ,cAAW,IACX,OACA,UACA,UACA,iBACA,aAAA,GACA,oBACA,gBACA,iBAAc,IACd,WACA,eACE,GACE,EAAE,SAAM,EAA8B,GACtC,IAAkB,GAAO,KAAK,KAAK,IACnC,IAAyB,GAAc,KAAK,KAAK,IACjD,IAAW,MAAoB,IAC/B,IAAkB,MAA2B,IAE7C,IACJ,KAAe,EAAE,kCAAkC,EAAE,SAAM,CAAC,GACxD,IAAwB,EAAE,iCAAiC,GAE7D;CACJ,AASE,IATE,IAEA,kBAAC,QAAD;EAAM,WAAW;YAAmB;CAA6B,CAAA,IAE1D,IAEP,kBAAC,QAAD;EAAM,WAAW;YAAqB;CAA4B,CAAA,IAIlE,kBAAC,QAAD;EAAM,WAAW;YAAqB;CAA0B,CAAA;CAIpE,IAAI,IAAY,EAAE,qBAAqB;CACvC,AAAI,MACF,IAAY,EAAE,qCAAqC,EAAE,SAAM,CAAC;CAE9D,IAAI,IAAgB,EAAE,4BAA4B,EAAE,SAAM,CAAC;CAC3D,AAAI,MACF,IAAgB;CAElB,IAAM,IAAiB,EAAE,+BAA+B,EAAE,SAAM,CAAC,GAE7D,IAAgC;CACpC,AAAI,KAAY,KAAW,SACzB,IACE,kBAAC,UAAD;EACE,MAAK;EACL,WAAW;EACX,cAAY;EACF;EACV,UAAU,MAAU;GAElB,AADA,EAAM,gBAAgB,GACtB,EAAQ;EACV;YAEA,kBAAC,GAAD;GAAe,OAAO;GAAI,QAAQ;GAAI,eAAY;EAAQ,CAAA;CACpD,CAAA;CAIZ,IAAI,IAAiC;CACrC,IAAI,KAAU,MAAM;EAClB,IAAI,IACF,kBAAC,GAAD;GACE,WAAW;GACX,eAAY;EACb,CAAA;EAWH,AATI,MACF,IACE,kBAAC,GAAD;GACE,WAAW;GACX,eAAY;EACb,CAAA,IAIL,IACE,kBAAC,OAAD;GAAK,WAAW;aAAhB;IACE,kBAAC,UAAD;KACM;KACJ,MAAK;KACL,WAAW;KACX,cAAY;KACZ,oBAAkB;KAClB,gBAAc;KACd,aAAW,KAAe,KAAA;KAChB;KACV,SAAS;eAET,kBAAC,QAAD;MAAM,WAAW;gBAAjB,CACE,kBAAC,QAAD;OAAM,WAAW;iBAAmB;MAAY,CAAA,GAC/C,CACG;;IACA,CAAA;IACR,kBAAC,UAAD;KACE,MAAK;KACL,WAAW;KACX,cAAY;KACZ,OAAO;KACG;KACV,SAAS;eAER;IACK,CAAA;IACP;GACE;;CAET;CAEA,OACE,kBAAC,OAAD;EAAK,WAAW;YACb,KAAc,kBAAC,OAAD;GAAK,WAAW;aAAkB;EAAiB,CAAA;CAC/D,CAAA;AAET"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* empty css */
|
|
2
2
|
//#region src/components/backoffice/filters/backofficeFilterAction.css.ts
|
|
3
|
-
var e = "hwnq700
|
|
3
|
+
var e = "hwnq700 txvbqbfqq txvbqbey txvbqbls4 txvbqb19gp txvbqbjm4 txvbqbwvi txvbqb2tz txvbqb28o txvbqb2sj txvbqb1d9 txvbqb1b83 txvbqb1bhb txvbqbv txvbqb3f txvbqb7h txvbqb75 txvbqb7t txvbqb1eol txvbqb1czh txvbqb1dth qbwcue0 txvbqb1ffs txvbqb1ga0", t = "txvbqb19fm txvbqbjl1";
|
|
4
4
|
//#endregion
|
|
5
5
|
export { e as action, t as icon };
|
|
6
6
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backofficeFilterAction.css.js","names":[],"sources":["../../../../../src/components/backoffice/filters/backofficeFilterAction.css.ts"],"sourcesContent":["import { style } from '@vanilla-extract/css';\nimport { sprinkles, stateSprinkles } from '@plumile/ui/theme/sprinkles.css.js';\nimport { focusRing } from '@plumile/ui/theme/styleRecipes.css.js';\n\nexport const action = style([\n sprinkles({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 7,\n height: 7,\n padding: 0,\n borderRadius: 'md',\n borderWidth: 'default',\n borderStyle: 'solid',\n borderColor: 'borderSubtle',\n backgroundColor: 'surfaceMuted',\n color: '
|
|
1
|
+
{"version":3,"file":"backofficeFilterAction.css.js","names":[],"sources":["../../../../../src/components/backoffice/filters/backofficeFilterAction.css.ts"],"sourcesContent":["import { style } from '@vanilla-extract/css';\nimport { sprinkles, stateSprinkles } from '@plumile/ui/theme/sprinkles.css.js';\nimport { focusRing } from '@plumile/ui/theme/styleRecipes.css.js';\n\nexport const action = style([\n sprinkles({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 7,\n height: 7,\n padding: 0,\n borderRadius: 'md',\n borderWidth: 'default',\n borderStyle: 'solid',\n borderColor: 'borderSubtle',\n backgroundColor: 'surfaceMuted',\n color: 'tonePrimaryText',\n cursor: 'pointer',\n textDecoration: 'none',\n transitionProperty: 'colors',\n transitionDuration: 120,\n transitionTimingFunction: 'ease',\n }),\n stateSprinkles({\n color: { hover: 'text' },\n backgroundColor: { hover: 'tonePrimarySurface' },\n borderColor: { hover: 'tonePrimaryBorder' },\n }),\n focusRing,\n]);\n\nexport const icon = sprinkles({\n width: 4,\n height: 4,\n});\n"],"mappings":""}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* empty css */
|
|
2
2
|
//#region src/components/backoffice/filters/deferredFilterSearchInput.css.ts
|
|
3
|
-
var e = "
|
|
3
|
+
var e = "txvbqb19uf", t = "ds2thc0 txvbqbfqq txvbqbey txvbqbi8a", n = "ds2thc1 txvbqb6 txvbqbfqq txvbqbey txvbqbls4 txvbqb19gp txvbqbjm4 txvbqbwvi txvbqb2tz txvbqb1tv txvbqb1b4r txvbqb1bg5 txvbqbv txvbqb7h txvbqb75 txvbqb7t", r = "txvbqbfqq txvbqb19gp txvbqbjm4 txvbqbh6d";
|
|
4
4
|
//#endregion
|
|
5
5
|
export { n as actionButton, r as actionButtonSpacer, t as actions, e as container };
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* empty css */
|
|
2
2
|
//#region src/components/backoffice/filters/entityIdFilterField.css.ts
|
|
3
|
-
var e = "
|
|
3
|
+
var e = "txvbqbfpn txvbqbey txvbqb19q3 txvbqbu4k txvbqbv7x", t = "oa1uye0 txvbqb10mx txvbqb11ki txvbqb13cs txvbqbyov txvbqbfq0 txvbqbey txvbqbfvs txvbqbv7x txvbqb2up txvbqb28o txvbqb2sj txvbqb1cw txvbqb1b7z txvbqb1bg1 txvbqb7g txvbqb76 txvbqb7t", n = "oa1uye1 txvbqb6 txvbqbfpn txvbqbh4x txvbqbls4 txvbqbv7x txvbqb19uf txvbqb18dc txvbqbv txvbqb1tv txvbqb1b4r txvbqb1bg1 txvbqbwvi", r = "txvbqbfpn txvbqbh4x txvbqbls4 txvbqbi8a txvbqbv7x txvbqb19uf txvbqbu4k", i = "txvbqbfvs txvbqbv7x txvbqbfpn txvbqbey txvbqbwr6", a = "txvbqbfox txvbqb1bg5 txvbqb96 txvbqbhb2 txvbqbv7x txvbqbwr6 txvbqb18ef txvbqb1avz", o = "txvbqbfox txvbqbv7x txvbqbwr6 txvbqb18ef txvbqb1avz txvbqb9j txvbqbhbf", s = "txvbqbfox txvbqbv7x txvbqbwr6 txvbqb18ef txvbqb1avz txvbqb1bg5 txvbqb9j", c = "oa1uye3 oa1uye2 txvbqb6 txvbqbfqq txvbqbey txvbqbgr txvbqbls4 txvbqb19gp txvbqbjm4 txvbqbwvi txvbqb2tz txvbqb1tv txvbqb1b4r txvbqb1bg5 txvbqbv txvbqb7h txvbqb75 txvbqb7t", l = "oa1uye4 oa1uye2 txvbqb6 txvbqbfqq txvbqbey txvbqbgr txvbqbls4 txvbqb19gp txvbqbjm4 txvbqbwvi txvbqb2tz txvbqb1tv txvbqb1b4r txvbqb1bg5 txvbqbv txvbqb7h txvbqb75 txvbqb7t", u = "txvbqb19fm txvbqbjl1";
|
|
4
4
|
//#endregion
|
|
5
5
|
export { u as actionIcon, l as clearButton, e as container, r as content, a as labelText, c as pickActionButton, n as pickerButton, t as pickerControl, s as placeholder, i as valueBox, o as valueText };
|
|
6
6
|
|