diff --git a/web/src/admin/applications/ApplicationCheckAccessForm.ts b/web/src/admin/applications/ApplicationCheckAccessForm.ts index 59292e17d..7f1c18e17 100644 --- a/web/src/admin/applications/ApplicationCheckAccessForm.ts +++ b/web/src/admin/applications/ApplicationCheckAccessForm.ts @@ -1,5 +1,5 @@ import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; -import { PFColor } from "@goauthentik/elements/Label"; +import "@goauthentik/components/ak-status-label"; import { Form } from "@goauthentik/elements/forms/Form"; import "@goauthentik/elements/forms/HorizontalFormElement"; import "@goauthentik/elements/forms/SearchSelect"; @@ -57,9 +57,7 @@ export class ApplicationCheckAccessForm extends Form<{ forUser: number }> {
- - ${this.result?.passing ? msg("Yes") : msg("No")} - +
diff --git a/web/src/admin/blueprints/BlueprintListPage.ts b/web/src/admin/blueprints/BlueprintListPage.ts index f038cc957..188bb4be5 100644 --- a/web/src/admin/blueprints/BlueprintListPage.ts +++ b/web/src/admin/blueprints/BlueprintListPage.ts @@ -2,7 +2,7 @@ import "@goauthentik/admin/blueprints/BlueprintForm"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { EVENT_REFRESH } from "@goauthentik/common/constants"; import { uiConfig } from "@goauthentik/common/ui/config"; -import { PFColor } from "@goauthentik/elements/Label"; +import "@goauthentik/components/ak-status-label"; import "@goauthentik/elements/buttons/ActionButton"; import "@goauthentik/elements/buttons/SpinnerButton"; import "@goauthentik/elements/forms/DeleteBulkForm"; @@ -144,9 +144,7 @@ export class BlueprintListPage extends TablePage { ${description ? html`${description}` : html``}`, html`${BlueprintStatus(item)}`, html`${item.lastApplied.toLocaleString()}`, - html` - ${item.enabled ? msg("Yes") : msg("No")} - `, + html``, html` ${msg("Update")} ${msg("Update Blueprint")} diff --git a/web/src/admin/crypto/CertificateKeyPairListPage.ts b/web/src/admin/crypto/CertificateKeyPairListPage.ts index 990f3446e..c76feff3a 100644 --- a/web/src/admin/crypto/CertificateKeyPairListPage.ts +++ b/web/src/admin/crypto/CertificateKeyPairListPage.ts @@ -2,6 +2,7 @@ import "@goauthentik/admin/crypto/CertificateGenerateForm"; import "@goauthentik/admin/crypto/CertificateKeyPairForm"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { uiConfig } from "@goauthentik/common/ui/config"; +import "@goauthentik/components/ak-status-label"; import { PFColor } from "@goauthentik/elements/Label"; import "@goauthentik/elements/buttons/SpinnerButton"; import "@goauthentik/elements/forms/DeleteBulkForm"; @@ -117,11 +118,12 @@ export class CertificateKeyPairListPage extends TablePage { return [ html`
${item.name}
${item.managed ? html`${managedSubText}` : html``}`, - html` - ${item.privateKeyAvailable - ? msg(str`Yes (${item.privateKeyType?.toUpperCase()})`) - : msg("No")} - `, + html` + `, html` ${item.certExpiry?.toLocaleString()} `, html` ${msg("Update")} diff --git a/web/src/admin/flows/FlowImportForm.ts b/web/src/admin/flows/FlowImportForm.ts index d04f0c8e9..310269ff8 100644 --- a/web/src/admin/flows/FlowImportForm.ts +++ b/web/src/admin/flows/FlowImportForm.ts @@ -1,6 +1,6 @@ import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { SentryIgnoredError } from "@goauthentik/common/errors"; -import { PFColor } from "@goauthentik/elements/Label"; +import "@goauthentik/components/ak-status-label"; import { Form } from "@goauthentik/elements/forms/Form"; import "@goauthentik/elements/forms/HorizontalFormElement"; @@ -46,9 +46,7 @@ export class FlowImportForm extends Form {
- - ${this.result?.success ? msg("Yes") : msg("No")} - +
diff --git a/web/src/admin/groups/GroupListPage.ts b/web/src/admin/groups/GroupListPage.ts index f634b0378..c35f17f8c 100644 --- a/web/src/admin/groups/GroupListPage.ts +++ b/web/src/admin/groups/GroupListPage.ts @@ -1,7 +1,7 @@ import "@goauthentik/admin/groups/GroupForm"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { uiConfig } from "@goauthentik/common/ui/config"; -import { PFColor } from "@goauthentik/elements/Label"; +import "@goauthentik/components/ak-status-label"; import "@goauthentik/elements/buttons/SpinnerButton"; import "@goauthentik/elements/forms/DeleteBulkForm"; import "@goauthentik/elements/forms/ModalForm"; @@ -81,10 +81,8 @@ export class GroupListPage extends TablePage { html`${item.name}`, html`${item.parentName || msg("-")}`, html`${Array.from(item.users || []).length}`, - html` - ${item.isSuperuser ? msg("Yes") : msg("No")} - `, - html` + html``, + html` ${msg("Update")} ${msg("Update Group")} diff --git a/web/src/admin/groups/GroupViewPage.ts b/web/src/admin/groups/GroupViewPage.ts index 3e6cbddcb..a2f704363 100644 --- a/web/src/admin/groups/GroupViewPage.ts +++ b/web/src/admin/groups/GroupViewPage.ts @@ -3,10 +3,10 @@ import "@goauthentik/app/admin/groups/RelatedUserList"; import "@goauthentik/app/elements/rbac/ObjectPermissionsPage"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { EVENT_REFRESH } from "@goauthentik/common/constants"; +import "@goauthentik/components/ak-status-label"; import "@goauthentik/components/events/ObjectChangelog"; import { AKElement } from "@goauthentik/elements/Base"; import "@goauthentik/elements/CodeMirror"; -import { PFColor } from "@goauthentik/elements/Label"; import "@goauthentik/elements/PageHeader"; import "@goauthentik/elements/Tabs"; import "@goauthentik/elements/buttons/ActionButton"; @@ -116,11 +116,10 @@ export class GroupViewPage extends AKElement {
- +
diff --git a/web/src/admin/groups/MemberSelectModal.ts b/web/src/admin/groups/MemberSelectModal.ts index 1d5a53cc7..f573644b2 100644 --- a/web/src/admin/groups/MemberSelectModal.ts +++ b/web/src/admin/groups/MemberSelectModal.ts @@ -1,7 +1,7 @@ import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { uiConfig } from "@goauthentik/common/ui/config"; import { first } from "@goauthentik/common/utils"; -import { PFColor } from "@goauthentik/elements/Label"; +import "@goauthentik/components/ak-status-label"; import "@goauthentik/elements/buttons/SpinnerButton"; import { PaginatedResponse } from "@goauthentik/elements/table/Table"; import { TableColumn } from "@goauthentik/elements/table/Table"; @@ -48,9 +48,7 @@ export class MemberSelectTable extends TableModal { return [ html`
${item.username}
${item.name}`, - html` - ${item.isActive ? msg("Yes") : msg("No")} - `, + html` `, html`${first(item.lastLogin?.toLocaleString(), msg("-"))}`, ]; } diff --git a/web/src/admin/groups/RelatedGroupList.ts b/web/src/admin/groups/RelatedGroupList.ts index d0b965648..19adf1276 100644 --- a/web/src/admin/groups/RelatedGroupList.ts +++ b/web/src/admin/groups/RelatedGroupList.ts @@ -3,7 +3,7 @@ import "@goauthentik/admin/groups/GroupForm"; import "@goauthentik/admin/users/GroupSelectModal"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { uiConfig } from "@goauthentik/common/ui/config"; -import { PFColor } from "@goauthentik/elements/Label"; +import "@goauthentik/components/ak-status-label"; import "@goauthentik/elements/buttons/SpinnerButton"; import "@goauthentik/elements/forms/DeleteBulkForm"; import { Form } from "@goauthentik/elements/forms/Form"; @@ -145,9 +145,7 @@ export class RelatedGroupList extends Table { return [ html`${item.name}`, html`${item.parentName || msg("-")}`, - html` - ${item.isSuperuser ? msg("Yes") : msg("No")} - `, + html``, html` ${msg("Update")} ${msg("Update Group")} diff --git a/web/src/admin/groups/RelatedUserList.ts b/web/src/admin/groups/RelatedUserList.ts index 0023c5515..2474ee2fe 100644 --- a/web/src/admin/groups/RelatedUserList.ts +++ b/web/src/admin/groups/RelatedUserList.ts @@ -8,8 +8,8 @@ import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { MessageLevel } from "@goauthentik/common/messages"; import { uiConfig } from "@goauthentik/common/ui/config"; import { first } from "@goauthentik/common/utils"; +import "@goauthentik/components/ak-status-label"; import { rootInterface } from "@goauthentik/elements/Base"; -import { PFColor } from "@goauthentik/elements/Label"; import "@goauthentik/elements/buttons/ActionButton"; import "@goauthentik/elements/buttons/Dropdown"; import "@goauthentik/elements/forms/DeleteBulkForm"; @@ -195,9 +195,7 @@ export class RelatedUserList extends Table {
${item.username}
${item.name} `, - html` - ${item.isActive ? msg("Yes") : msg("No")} - `, + html``, html`${first(item.lastLogin?.toLocaleString(), msg("-"))}`, html` ${msg("Update")} diff --git a/web/src/admin/outposts/ServiceConnectionListPage.ts b/web/src/admin/outposts/ServiceConnectionListPage.ts index 49ef585a4..a212358f5 100644 --- a/web/src/admin/outposts/ServiceConnectionListPage.ts +++ b/web/src/admin/outposts/ServiceConnectionListPage.ts @@ -4,6 +4,7 @@ import "@goauthentik/admin/outposts/ServiceConnectionKubernetesForm"; import "@goauthentik/admin/outposts/ServiceConnectionWizard"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { uiConfig } from "@goauthentik/common/ui/config"; +import "@goauthentik/components/ak-status-label"; import { PFColor } from "@goauthentik/elements/Label"; import "@goauthentik/elements/buttons/SpinnerButton"; import "@goauthentik/elements/forms/DeleteBulkForm"; @@ -83,9 +84,7 @@ export class OutpostServiceConnectionListPage extends TablePage - ${item.local ? msg("Yes") : msg("No")} - `, + html``, html`${itemState?.healthy ? html`${ifDefined(itemState.version)}` : html`${msg("Unhealthy")}`}`, diff --git a/web/src/admin/policies/BoundPoliciesList.ts b/web/src/admin/policies/BoundPoliciesList.ts index b7470a422..c9e29bf67 100644 --- a/web/src/admin/policies/BoundPoliciesList.ts +++ b/web/src/admin/policies/BoundPoliciesList.ts @@ -4,7 +4,7 @@ import "@goauthentik/admin/policies/PolicyWizard"; import "@goauthentik/admin/users/UserForm"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { uiConfig } from "@goauthentik/common/ui/config"; -import { PFColor } from "@goauthentik/elements/Label"; +import "@goauthentik/components/ak-status-label"; import { PFSize } from "@goauthentik/elements/Spinner"; import "@goauthentik/elements/Tabs"; import "@goauthentik/elements/forms/DeleteBulkForm"; @@ -147,9 +147,7 @@ export class BoundPoliciesList extends Table { return [ html`
${item.order}
`, html`${this.getPolicyUserGroupRow(item)}`, - html` - ${item.enabled ? msg("Yes") : msg("No")} - `, + html``, html`${item.timeout}`, html` ${this.getObjectEditButton(item)} diff --git a/web/src/admin/policies/PolicyTestForm.ts b/web/src/admin/policies/PolicyTestForm.ts index aa874f37e..50771abbd 100644 --- a/web/src/admin/policies/PolicyTestForm.ts +++ b/web/src/admin/policies/PolicyTestForm.ts @@ -1,8 +1,8 @@ import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { first } from "@goauthentik/common/utils"; +import "@goauthentik/components/ak-status-label"; import "@goauthentik/elements/CodeMirror"; import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror"; -import { PFColor } from "@goauthentik/elements/Label"; import { Form } from "@goauthentik/elements/forms/Form"; import "@goauthentik/elements/forms/HorizontalFormElement"; import "@goauthentik/elements/forms/SearchSelect"; @@ -58,9 +58,7 @@ export class PolicyTestForm extends Form {
- - ${this.result?.passing ? msg("Yes") : msg("No")} - +
diff --git a/web/src/admin/providers/proxy/ProxyProviderViewPage.ts b/web/src/admin/providers/proxy/ProxyProviderViewPage.ts index a0ce2792d..bdce04194 100644 --- a/web/src/admin/providers/proxy/ProxyProviderViewPage.ts +++ b/web/src/admin/providers/proxy/ProxyProviderViewPage.ts @@ -4,6 +4,7 @@ import "@goauthentik/app/elements/rbac/ObjectPermissionsPage"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { EVENT_REFRESH } from "@goauthentik/common/constants"; import { convertToSlug } from "@goauthentik/common/utils"; +import "@goauthentik/components/ak-status-label"; import "@goauthentik/components/events/ObjectChangelog"; import MDCaddyStandalone from "@goauthentik/docs/providers/proxy/_caddy_standalone.md"; import MDNginxIngress from "@goauthentik/docs/providers/proxy/_nginx_ingress.md"; @@ -15,7 +16,6 @@ import MDTraefikStandalone from "@goauthentik/docs/providers/proxy/_traefik_stan import MDHeaderAuthentication from "@goauthentik/docs/providers/proxy/header_authentication.md"; import { AKElement } from "@goauthentik/elements/Base"; import "@goauthentik/elements/CodeMirror"; -import { PFColor } from "@goauthentik/elements/Label"; import "@goauthentik/elements/Markdown"; import "@goauthentik/elements/Markdown"; import { Replacer } from "@goauthentik/elements/Markdown"; @@ -330,15 +330,10 @@ export class ProxyProviderViewPage extends AKElement {
- - ${this.provider.basicAuthEnabled - ? msg("Yes") - : msg("No")} - +
diff --git a/web/src/admin/tenants/TenantListPage.ts b/web/src/admin/tenants/TenantListPage.ts index 2edaeb2d4..1e4cd5d8a 100644 --- a/web/src/admin/tenants/TenantListPage.ts +++ b/web/src/admin/tenants/TenantListPage.ts @@ -1,7 +1,8 @@ import "@goauthentik/admin/tenants/TenantForm"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { uiConfig } from "@goauthentik/common/ui/config"; -import { PFColor } from "@goauthentik/elements/Label"; +import "@goauthentik/components/ak-status-label"; +import "@goauthentik/components/ak-status-label"; import "@goauthentik/elements/buttons/SpinnerButton"; import "@goauthentik/elements/forms/DeleteBulkForm"; import "@goauthentik/elements/forms/ModalForm"; @@ -82,9 +83,7 @@ export class TenantListPage extends TablePage { row(item: Tenant): TemplateResult[] { return [ html`${item.domain}`, - html` - ${item._default ? msg("Yes") : msg("No")} - `, + html``, html` ${msg("Update")} ${msg("Update Tenant")} diff --git a/web/src/admin/tokens/TokenListPage.ts b/web/src/admin/tokens/TokenListPage.ts index ec4d1018d..953cd17dd 100644 --- a/web/src/admin/tokens/TokenListPage.ts +++ b/web/src/admin/tokens/TokenListPage.ts @@ -2,7 +2,7 @@ import "@goauthentik/admin/tokens/TokenForm"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { intentToLabel } from "@goauthentik/common/labels"; import { uiConfig } from "@goauthentik/common/ui/config"; -import { PFColor } from "@goauthentik/elements/Label"; +import "@goauthentik/components/ak-status-label"; import "@goauthentik/elements/buttons/Dropdown"; import "@goauthentik/elements/buttons/TokenCopyButton"; import "@goauthentik/elements/forms/DeleteBulkForm"; @@ -109,9 +109,7 @@ export class TokenListPage extends TablePage { ? html`${msg("Token is managed by authentik.")}` : html``}`, html`${item.userObj?.username}`, - html` - ${item.expiring ? msg("Yes") : msg("No")} - `, + html``, html`${item.expiring ? item.expires?.toLocaleString() : msg("-")}`, html`${intentToLabel(item.intent ?? IntentEnum.Api)}`, html` diff --git a/web/src/admin/users/GroupSelectModal.ts b/web/src/admin/users/GroupSelectModal.ts index 350095c9b..eac99d4ae 100644 --- a/web/src/admin/users/GroupSelectModal.ts +++ b/web/src/admin/users/GroupSelectModal.ts @@ -1,6 +1,6 @@ import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { uiConfig } from "@goauthentik/common/ui/config"; -import { PFColor } from "@goauthentik/elements/Label"; +import "@goauthentik/components/ak-status-label"; import "@goauthentik/elements/buttons/SpinnerButton"; import { PaginatedResponse } from "@goauthentik/elements/table/Table"; import { TableColumn } from "@goauthentik/elements/table/Table"; @@ -54,9 +54,7 @@ export class GroupSelectModal extends TableModal { html`
${item.name}
`, - html` - ${item.isSuperuser ? msg("Yes") : msg("No")} - `, + html` `, html`${(item.users || []).length}`, ]; } diff --git a/web/src/admin/users/UserListPage.ts b/web/src/admin/users/UserListPage.ts index 266ebf438..1d861b568 100644 --- a/web/src/admin/users/UserListPage.ts +++ b/web/src/admin/users/UserListPage.ts @@ -10,8 +10,8 @@ import { userTypeToLabel } from "@goauthentik/common/labels"; import { MessageLevel } from "@goauthentik/common/messages"; import { DefaultUIConfig, uiConfig } from "@goauthentik/common/ui/config"; import { first } from "@goauthentik/common/utils"; +import "@goauthentik/components/ak-status-label"; import { rootInterface } from "@goauthentik/elements/Base"; -import { PFColor } from "@goauthentik/elements/Label"; import { PFSize } from "@goauthentik/elements/Spinner"; import "@goauthentik/elements/TreeView"; import "@goauthentik/elements/buttons/ActionButton"; @@ -251,9 +251,7 @@ export class UserListPage extends TablePage {
${item.username}
${item.name === "" ? msg("") : item.name}  ${userTypeToLabel(item.type)}`, - html` - ${item.isActive ? msg("Yes") : msg("No")} - `, + html``, html`${first(item.lastLogin?.toLocaleString(), msg("-"))}`, html` ${msg("Update")} diff --git a/web/src/admin/users/UserViewPage.ts b/web/src/admin/users/UserViewPage.ts index d752f645a..25915b64a 100644 --- a/web/src/admin/users/UserViewPage.ts +++ b/web/src/admin/users/UserViewPage.ts @@ -14,11 +14,11 @@ import "@goauthentik/app/elements/rbac/ObjectPermissionsPage"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { EVENT_REFRESH } from "@goauthentik/common/constants"; import { userTypeToLabel } from "@goauthentik/common/labels"; +import "@goauthentik/components/ak-status-label"; import "@goauthentik/components/events/ObjectChangelog"; import "@goauthentik/components/events/UserEvents"; import { AKElement, rootInterface } from "@goauthentik/elements/Base"; import "@goauthentik/elements/CodeMirror"; -import { PFColor } from "@goauthentik/elements/Label"; import "@goauthentik/elements/PageHeader"; import { PFSize } from "@goauthentik/elements/Spinner"; import "@goauthentik/elements/Tabs"; @@ -185,9 +185,10 @@ export class UserViewPage extends AKElement {
- +
@@ -207,9 +208,10 @@ export class UserViewPage extends AKElement {
- +
diff --git a/web/src/components/ak-status-label.ts b/web/src/components/ak-status-label.ts new file mode 100644 index 000000000..f2ff005bf --- /dev/null +++ b/web/src/components/ak-status-label.ts @@ -0,0 +1,116 @@ +import { AKElement } from "@goauthentik/elements/Base"; + +import { msg } from "@lit/localize"; +import { css, html } from "lit"; +import { customElement, property } from "lit/decorators.js"; +import { classMap } from "lit/directives/class-map.js"; + +import PFLabel from "@patternfly/patternfly/components/Label/label.css"; +import PFBase from "@patternfly/patternfly/patternfly-base.css"; + +const statusNames = ["error", "warning", "info"] as const; +type StatusName = (typeof statusNames)[number]; + +const statusToDetails = new Map([ + ["error", ["pf-m-red", "fa-times"]], + ["warning", ["pf-m-orange", "fa-exclamation-triangle"]], + ["info", ["pf-m-gray", "fa-info-circle"]], +]); + +const styles = css` + :host { + --pf-c-label--m-gray--BackgroundColor: var(--pf-global--palette--black-100); + --pf-c-label--m-gray__icon--Color: var(--pf-global--primary-color--100); + --pf-c-label--m-gray__content--Color: var(--pf-global--info-color--200); + --pf-c-label--m-gray__content--before--BorderColor: var(--pf-global--palette--black-400); + --pf-c-label--m-gray__content--link--hover--before--BorderColor: var( + --pf-global--primary-color--100 + ); + --pf-c-label--m-gray__content--link--focus--before--BorderColor: var( + --pf-global--primary-color--100 + ); + } + + .pf-c-label.pf-m-gray { + --pf-c-label--BackgroundColor: var(--pf-c-label--m-gray--BackgroundColor); + --pf-c-label__icon--Color: var(--pf-c-label--m-gray__icon--Color); + --pf-c-label__content--Color: var(--pf-c-label--m-gray__content--Color); + --pf-c-label__content--before--BorderColor: var( + --pf-c-label--m-gray__content--before--BorderColor + ); + --pf-c-label__content--link--hover--before--BorderColor: var( + --pf-c-label--m-gray__content--link--hover--before--BorderColor + ); + --pf-c-label__content--link--focus--before--BorderColor: var( + --pf-c-label--m-gray__content--link--focus--before--BorderColor + ); + } +`; + +/** + * A boolean status indicator + * + * Based on the Patternfly "label" pattern, this component exists to display "Yes" or "No", but this + * is configurable. + * + * When the boolean attribute `good` is present, the background will be green and the icon will be a + * ✓. If the `good` attribute is not present, the background will be a warning color and an + * alternative symbol. Which color and symbol depends on the `type` of the negative status we want + * to show: + * + * - type="error" (default): A Red ✖ + * - type="warning" An orange ⚠ + * - type="info" A grey ⓘ + * + * By default, the messages for "good" and "other" are "Yes" and "No" respectively, but these can be + * customized with the attributes `good-label` and `bad-label`. + */ + +@customElement("ak-status-label") +export class AkStatusLabel extends AKElement { + static get styles() { + return [PFBase, PFLabel, styles]; + } + + @property({ type: Boolean }) + good = false; + + @property({ type: String, attribute: "good-label" }) + goodLabel = msg("Yes"); + + @property({ type: String, attribute: "bad-label" }) + badLabel = msg("No"); + + @property({ type: Boolean }) + compact = false; + + @property({ type: String }) + type: StatusName = "error"; + + render() { + const details = statusToDetails.get(this.type); + if (!details) { + throw new Error(`Bad status type [${this.type}] passed to ak-status-label`); + } + + const [label, color, icon] = this.good + ? [this.goodLabel, "pf-m-green", "fa-check"] + : [this.badLabel, ...details]; + + const classes = { + "pf-c-label": true, + [color]: true, + "pf-m-compact": this.compact, + }; + + return html` + + + ${label} + + `; + } +} + +export default AkStatusLabel; diff --git a/web/src/components/stories/ak-status-label.stories.ts b/web/src/components/stories/ak-status-label.stories.ts new file mode 100644 index 000000000..ab525a20e --- /dev/null +++ b/web/src/components/stories/ak-status-label.stories.ts @@ -0,0 +1,101 @@ +import "@goauthentik/elements/messages/MessageContainer"; +import { Meta } from "@storybook/web-components"; + +import { TemplateResult, html } from "lit"; + +import "../ak-status-label"; +import AkStatusLabel from "../ak-status-label"; + +const metadata: Meta = { + title: "Components / App Status Label", + component: "ak-status-label", + parameters: { + docs: { + description: { + component: "A status label display", + }, + }, + }, +}; + +export default metadata; + +const container = (testItem: TemplateResult) => + html`
+ + ${testItem} +
`; + +export const AppIcon = () => { + // prettier-ignore + return container(html` +
+
Good
+ + + +
+
Bad (Default)
+ + + +
+
Programmatically Good
+ + + +
+
Programmatically Bad
+ + + +
+
Good Warning
+ + + +
+
Bad Warning
+ + + +
+
Good Info
+ + + +
+
Bad Info
+ + + +
+
Good With Alternative Message
+ + + +
+
Bad with Alternative Message
+ + + +
+
Good, Compact
+ + + +
+
Bad, Compact
+ + + +
+
+ `); +}; diff --git a/web/src/elements/oauth/UserRefreshList.ts b/web/src/elements/oauth/UserRefreshList.ts index 288bf032b..2c5915f74 100644 --- a/web/src/elements/oauth/UserRefreshList.ts +++ b/web/src/elements/oauth/UserRefreshList.ts @@ -1,6 +1,6 @@ import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { uiConfig } from "@goauthentik/common/ui/config"; -import { PFColor } from "@goauthentik/elements/Label"; +import "@goauthentik/components/ak-status-label"; import "@goauthentik/elements/forms/DeleteBulkForm"; import { PaginatedResponse } from "@goauthentik/elements/table/Table"; import { Table, TableColumn } from "@goauthentik/elements/table/Table"; @@ -85,9 +85,7 @@ export class UserOAuthRefreshList extends Table { row(item: TokenModel): TemplateResult[] { return [ html` ${item.provider?.name} `, - html` - ${item.revoked ? msg("Yes") : msg("No")} - `, + html``, html`${item.expires?.toLocaleString()}`, html`${item.scope.join(", ")}`, ]; diff --git a/web/src/user/user-settings/tokens/UserTokenList.ts b/web/src/user/user-settings/tokens/UserTokenList.ts index f32b06173..82cadeee1 100644 --- a/web/src/user/user-settings/tokens/UserTokenList.ts +++ b/web/src/user/user-settings/tokens/UserTokenList.ts @@ -2,7 +2,7 @@ import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { intentToLabel } from "@goauthentik/common/labels"; import { uiConfig } from "@goauthentik/common/ui/config"; import { me } from "@goauthentik/common/users"; -import { PFColor } from "@goauthentik/elements/Label"; +import "@goauthentik/components/ak-status-label"; import "@goauthentik/elements/buttons/Dropdown"; import "@goauthentik/elements/buttons/ModalButton"; import "@goauthentik/elements/buttons/TokenCopyButton"; @@ -97,9 +97,7 @@ export class UserTokenList extends Table {
- - ${item.expiring ? msg("Yes") : msg("No")} - +