mirror of
https://github.com/modrinth/code.git
synced 2026-08-30 19:46:33 +00:00
* begin project disclosures * new project settings header * begin disclosure settings, edit content rules * togglecards * update phrasing of the rules, prepr * more disclosure settings structuring * add functionality toggle * implement functionality with staging api * improve project settings head titles * feat(labrinth): project disclosures model * feat(labrinth): project disclosures database model * feat(labrinth): project disclosures get endpoint * feat(labrinth): censor user ids if set by moderator * feat(labrinth): wrap disclosures in struct * feat(labrinth): edit project disclosures endpoint * style(labrinth): cargo fmt * style(labrinth): fix typo * feat(labrinth): add fields for ai content disclosure * fix(labrinth): field typo * chore(labrinth): update query cache * feat(labrinth): index disclosures in search * refactor(labrinth): use enum instead of bools * feat(labrinth): trigger incremental index on disclosure change * feat(labrinth): change archived status to disclosure * feat(labrinth): use disclosure for archival status * fix(labrinth): error type for deserialization * fix(labrinth): migration timestamp * fix(labrinth): add disclosures to elasticsearch schema * disclosures in search * update photosensitivity warning copy * update archiving, move general project settings to v3 (start redesign there), use project id lookups for stable cache keys, advanced in server search * blue archive banner * display AI use types * improve labels * add modrinth to link * add placeholder missing disclosure report type * add AI metadata checking to block image uploads with notice * update copy * update section 4 of rules * Update rule 6 layout * fix(labrinth): don't remove archival disclosure when changing status via v3 api * feat(labrinth): derive str for ai usages and telemtry consent * feat(labrinth): include ai usages and telemetry consent in disclosure types * Update moderation checklist (#7056) * fix: missing delphi severity (#7054) * Utils nav, new disclosures stage, ai button in rules * add prefix to collect * Finish up new disclosures stage * update r4 messages * new r4 msg, update showcase clarity message * fix: version upload failing to detect mrpack loader (#7063) * fix: mrpack exporting with zip64 (#7064) * fix: action bar max width (#7048) * fix: action bar max width * fix: width * changelog * Rule placeholders with subsections & anchors, update messages. * update new messages to account for new rule and placeholder layout * Add nag for content disclosures --------- Co-authored-by: ThatGravyBoat <gravy@thatgravyboat.tech> Co-authored-by: chyzman <chyzalt@gmail.com> Co-authored-by: Truman Gao <106889354+tdgao@users.noreply.github.com> Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com> * prepr * refactor(labrinth): move disclosure parsing to document creation * fix(labrinth): prevent removing moderator added archival disclosures * fix(labrinth): dedupe ai usages * fix(labrinth): auth logic on archived disclosure removal * feat(labrinth): add interactions field * style(labrinth): cargo fmt * feat(labrinth): granular disclosure locking * add 5.8, move 5.9, update messages and placeholders accordingly. * move disclosures stage earlier * include consent model info in telemetry disclosure msgs * prepr + update date * typo * qa pass * search suboptions * add empty state * checkboxes in column * persistent advanced filters * blog draft * prepr * support soft deletion * reload instead of optimistically updating * update blog * TOS update + minor verbiage adjustment * 45 day grace --------- Co-authored-by: sychic <47618543+Sychic@users.noreply.github.com> Co-authored-by: coolbot <76798835+coolbot100s@users.noreply.github.com> Co-authored-by: ThatGravyBoat <gravy@thatgravyboat.tech> Co-authored-by: chyzman <chyzalt@gmail.com> Co-authored-by: Truman Gao <106889354+tdgao@users.noreply.github.com>
90 lines
2.1 KiB
Vue
90 lines
2.1 KiB
Vue
<template>
|
|
<div class="smart-clickable" :class="{ 'smart-clickable--has-clickable': !!$slots.clickable }">
|
|
<slot name="clickable" />
|
|
<div
|
|
v-bind="$attrs"
|
|
class="smart-clickable__contents"
|
|
:class="{
|
|
'smart-clickable__contents--disabled': disabled,
|
|
'pointer-events-none': !!$slots.clickable && !disabled,
|
|
}"
|
|
>
|
|
<slot />
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
defineProps<{
|
|
disabled?: boolean
|
|
}>()
|
|
|
|
defineOptions({
|
|
inheritAttrs: false,
|
|
})
|
|
</script>
|
|
<style scoped lang="scss">
|
|
.smart-clickable {
|
|
display: grid;
|
|
|
|
> * {
|
|
grid-area: 1 / 1;
|
|
}
|
|
|
|
.smart-clickable__contents {
|
|
// Utility classes for contents
|
|
:deep(.smart-clickable\:allow-pointer-events) {
|
|
pointer-events: all;
|
|
}
|
|
|
|
:deep(.ease-brightness) {
|
|
opacity: 1;
|
|
transition: opacity 0.125s ease-out;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Only apply effects when a clickable is present
|
|
.smart-clickable.smart-clickable--has-clickable {
|
|
// Setup base styles for contents
|
|
.smart-clickable__contents {
|
|
transition: scale 0.125s ease-out;
|
|
}
|
|
|
|
// When clickable is being hovered or focus-visible, give contents an effect
|
|
:first-child:hover + .smart-clickable__contents,
|
|
:first-child:focus-visible + .smart-clickable__contents,
|
|
.smart-clickable__contents:hover {
|
|
// Utility classes for contents
|
|
:deep(.smart-clickable\:underline-on-hover) {
|
|
text-decoration: underline;
|
|
}
|
|
:deep(.smart-clickable\:highlight-on-hover) {
|
|
filter: brightness(var(--hover-brightness, 1.25));
|
|
}
|
|
:deep(.smart-clickable\:surface-4-on-hover) {
|
|
@apply bg-surface-4;
|
|
}
|
|
:deep(.smart-clickable\:surface-5-on-hover) {
|
|
@apply bg-surface-5;
|
|
}
|
|
:deep(.ease-brightness) {
|
|
opacity: 0.85;
|
|
transition: opacity 0.125s ease-out;
|
|
}
|
|
}
|
|
|
|
:first-child:focus-visible + .smart-clickable__contents {
|
|
// Utility classes for contents
|
|
:deep(.smart-clickable\:outline-on-focus) {
|
|
outline: 0.25rem solid var(--color-focus-ring);
|
|
}
|
|
}
|
|
|
|
// When clickable is being clicked, give contents an effect
|
|
:first-child:active + .smart-clickable__contents:not(.smart-clickable__contents--disabled) {
|
|
scale: 0.98;
|
|
}
|
|
}
|
|
</style>
|