diff --git a/src/frontend/components/PkpAccordion/PkpAccordion.vue b/src/frontend/components/PkpAccordion/PkpAccordion.vue index 7d15fcbad..db50b5fd5 100644 --- a/src/frontend/components/PkpAccordion/PkpAccordion.vue +++ b/src/frontend/components/PkpAccordion/PkpAccordion.vue @@ -63,7 +63,7 @@ const accordionClass = computed(() => ['pkpAccordion']); width: 100%; padding: var(--pkp-spacing-2) var(--pkp-spacing-3); background-color: var(--pkp-background-color-tertiary); - color: var(--pkp-text-color-secondary); + color: var(--pkp-text-color-heading); font: var(--pkp-font-base-bold); border: none; cursor: pointer; diff --git a/src/frontend/components/PkpButton/PkpButton.vue b/src/frontend/components/PkpButton/PkpButton.vue index f0d58f61c..eafd119ba 100644 --- a/src/frontend/components/PkpButton/PkpButton.vue +++ b/src/frontend/components/PkpButton/PkpButton.vue @@ -13,12 +13,15 @@ const props = defineProps({ type: Boolean, default: false, }, + /** Use when this button represents an action such as delete, go back, revert or cancel. */ + isWarnable: Boolean, }); const buttonClass = computed(() => { return [ 'pkpButton', props.isSecondary ? 'pkpButton--secondary' : 'pkpButton--primary', + props.isWarnable ? 'pkpButton--warnable' : '', ]; }); @@ -73,4 +76,17 @@ const buttonClass = computed(() => { border-color: var(--pkp-text-color-disabled); color: var(--pkp-text-color-disabled); } + +.pkpButton--warnable { + color: var(--pkp-color-negative); + border-color: var(--pkp-border-color-light); + background-color: var(--pkp-background-color-secondary); +} + +.pkpButton--warnable:disabled { + color: var(--pkp-text-color-disabled); +} +.pkpButton--warnable:hover { + background-color: var(--pkp-background-color-secondary); +} diff --git a/src/frontend/components/PkpIcon/PkpIcon.vue b/src/frontend/components/PkpIcon/PkpIcon.vue index de46669b5..7b15a3bfa 100644 --- a/src/frontend/components/PkpIcon/PkpIcon.vue +++ b/src/frontend/components/PkpIcon/PkpIcon.vue @@ -2,10 +2,19 @@ import {computed} from 'vue'; import Cancel from './icons/Cancel.vue'; import MoreOptions from './icons/MoreOptions.vue'; - +import Error from './icons/Error.vue'; +import Help from './icons/Help.vue'; +import User from './icons/User.vue'; +import Orcid from '@/frontend/components/PkpIcon/icons/Orcid.vue'; +import OrcidUnauthenticated from '@/frontend/components/PkpIcon/icons/OrcidUnauthenticated.vue'; const svgIcons = { Cancel, MoreOptions, + Error, + Help, + User, + Orcid, + OrcidUnauthenticated, }; const props = defineProps({ diff --git a/src/frontend/components/PkpIcon/icons/Error.vue b/src/frontend/components/PkpIcon/icons/Error.vue new file mode 100644 index 000000000..9c74baf94 --- /dev/null +++ b/src/frontend/components/PkpIcon/icons/Error.vue @@ -0,0 +1,8 @@ + diff --git a/src/frontend/components/PkpIcon/icons/Help.vue b/src/frontend/components/PkpIcon/icons/Help.vue new file mode 100644 index 000000000..707dad45e --- /dev/null +++ b/src/frontend/components/PkpIcon/icons/Help.vue @@ -0,0 +1,27 @@ + diff --git a/src/frontend/components/PkpIcon/icons/Orcid.vue b/src/frontend/components/PkpIcon/icons/Orcid.vue new file mode 100644 index 000000000..01fe1647c --- /dev/null +++ b/src/frontend/components/PkpIcon/icons/Orcid.vue @@ -0,0 +1,19 @@ + diff --git a/src/frontend/components/PkpIcon/icons/OrcidUnauthenticated.vue b/src/frontend/components/PkpIcon/icons/OrcidUnauthenticated.vue new file mode 100644 index 000000000..8bfb03fd6 --- /dev/null +++ b/src/frontend/components/PkpIcon/icons/OrcidUnauthenticated.vue @@ -0,0 +1,27 @@ + diff --git a/src/frontend/components/PkpIcon/icons/User.vue b/src/frontend/components/PkpIcon/icons/User.vue new file mode 100644 index 000000000..41180c75d --- /dev/null +++ b/src/frontend/components/PkpIcon/icons/User.vue @@ -0,0 +1,10 @@ + diff --git a/src/frontend/components/PkpModal/PkpDialog.vue b/src/frontend/components/PkpModal/PkpDialog.vue index 19bf0dab6..4bac55330 100644 --- a/src/frontend/components/PkpModal/PkpDialog.vue +++ b/src/frontend/components/PkpModal/PkpDialog.vue @@ -67,6 +67,9 @@ import { DialogTitle, } from 'reka-ui'; import PkpIcon from '@/frontend/components/PkpIcon/PkpIcon.vue'; +import {usePkpLocalize} from '@/frontend/composables/usePkpLocalize'; + +const {t} = usePkpLocalize(); const props = defineProps({ /** Used only internally, don't pass this prop via openDialog */ diff --git a/src/frontend/components/PkpModal/PkpModalBody.vue b/src/frontend/components/PkpModal/PkpModalBody.vue index 71fe0edb4..abcc87235 100644 --- a/src/frontend/components/PkpModal/PkpModalBody.vue +++ b/src/frontend/components/PkpModal/PkpModalBody.vue @@ -41,7 +41,7 @@
@@ -78,8 +78,8 @@ import PkpIcon from '@/frontend/components/PkpIcon/PkpIcon.vue'; import {focusFirstHeading} from '@/components/Modal/modalHelpers'; const containerId = useId(); -import {useLocalize} from '@/composables/useLocalize'; -const {t} = useLocalize(); +import {usePkpLocalize} from '@/frontend/composables/usePkpLocalize'; +const {t} = usePkpLocalize(); const closeModal = inject('closeModal'); const closeModalButton = inject('closeModalButton'); /* Initial focus */ @@ -230,6 +230,7 @@ function handleAutoFocus(event) { position: relative; outline: none; background-color: var(--pkp-background-color-secondary); + cursor: pointer; } .pkpModalBody__close:hover { diff --git a/src/frontend/components/PkpTextarea/PkpTextarea.vue b/src/frontend/components/PkpTextarea/PkpTextarea.vue index 11a1889e5..8667f0e9e 100644 --- a/src/frontend/components/PkpTextarea/PkpTextarea.vue +++ b/src/frontend/components/PkpTextarea/PkpTextarea.vue @@ -1,6 +1,10 @@