Release 202506031821
This commit is contained in:
@@ -8,6 +8,6 @@ I2P_ADDRESS="http://nti3rj4j4disjcm2kvp4eno7otcejbbxv3ggxwr5tpfk4jucah7q.b32.i2p
|
|||||||
RELEASE_NUMBER=123
|
RELEASE_NUMBER=123
|
||||||
RELEASE_DATE="2025-05-23T19:00:00.000Z"
|
RELEASE_DATE="2025-05-23T19:00:00.000Z"
|
||||||
# Generated with `npx web-push generate-vapid-keys`
|
# Generated with `npx web-push generate-vapid-keys`
|
||||||
VAPID_PUBLIC_KEY="<vapid-public-key-placeholder>"
|
VAPID_PUBLIC_KEY="BPmJbRXzG9zT181vyg1GlpyV8qu7rjVjfg6vkkOgtqeTZECyt6lR4MuzmlarEHSBF6gPpc77ZA0_tTVtmYh65iM"
|
||||||
VAPID_PRIVATE_KEY="<vapid-private-key-placeholder>"
|
VAPID_PRIVATE_KEY="eN_S2SMXDB2hpwVXbgDkDrPIPMqirllZaJcUgYTt9w0"
|
||||||
VAPID_SUBJECT="mailto:no-reply@kycnot.me"
|
VAPID_SUBJECT="mailto:no-reply@kycnot.me"
|
||||||
|
|||||||
@@ -2,13 +2,14 @@
|
|||||||
import { Icon } from 'astro-icon/components'
|
import { Icon } from 'astro-icon/components'
|
||||||
import { tv, type VariantProps } from 'tailwind-variants'
|
import { tv, type VariantProps } from 'tailwind-variants'
|
||||||
|
|
||||||
|
import type { AstroChildren } from '../lib/astro'
|
||||||
import type { Polymorphic } from 'astro/types'
|
import type { Polymorphic } from 'astro/types'
|
||||||
|
|
||||||
const badge = tv({
|
const badge = tv({
|
||||||
slots: {
|
slots: {
|
||||||
base: 'inline-flex h-4 items-center justify-center gap-0.75 rounded-full px-1.25 text-[10px] font-medium',
|
base: 'inline-flex h-4 items-center justify-center gap-0.75 rounded-full px-1.25 text-[10px] font-medium',
|
||||||
icon: 'size-3 shrink-0',
|
icon: 'size-3 shrink-0',
|
||||||
text: 'mx-0.25 overflow-hidden text-ellipsis whitespace-nowrap',
|
text: 'mx-0.25 overflow-hidden text-ellipsis whitespace-nowrap [&>a]:hover:underline [&>a]:focus-visible:underline',
|
||||||
},
|
},
|
||||||
variants: {
|
variants: {
|
||||||
color: {
|
color: {
|
||||||
@@ -122,18 +123,22 @@ const badge = tv({
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
type Props<Tag extends 'a' | 'div' | 'li' = 'div'> = Polymorphic<
|
type Props<
|
||||||
|
Tag extends 'a' | 'div' | 'li' = 'div',
|
||||||
|
Text extends string | undefined = string | undefined,
|
||||||
|
> = Polymorphic<
|
||||||
VariantProps<typeof badge> & {
|
VariantProps<typeof badge> & {
|
||||||
as: Tag
|
as: Tag
|
||||||
icon?: string
|
icon?: string
|
||||||
endIcon?: string
|
endIcon?: string
|
||||||
text: string
|
text?: Text
|
||||||
inlineIcon?: boolean
|
inlineIcon?: boolean
|
||||||
classNames?: {
|
classNames?: {
|
||||||
icon?: string
|
icon?: string
|
||||||
text?: string
|
text?: string
|
||||||
endIcon?: string
|
endIcon?: string
|
||||||
}
|
}
|
||||||
|
children?: Text extends string ? never : AstroChildren
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
|
||||||
@@ -161,7 +166,7 @@ const { base, icon: iconSlot, text: textSlot } = badge({ color, variant })
|
|||||||
<Icon name={iconName} class={iconSlot({ class: classNames?.icon })} is:inline={inlineIcon} />
|
<Icon name={iconName} class={iconSlot({ class: classNames?.icon })} is:inline={inlineIcon} />
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
<span class={textSlot({ class: classNames?.text })}>{textContent}</span>
|
<span class={textSlot({ class: classNames?.text })}>{textContent ?? <slot />}</span>
|
||||||
{
|
{
|
||||||
!!endIconName && (
|
!!endIconName && (
|
||||||
<Icon name={endIconName} class={iconSlot({ class: classNames?.endIcon })} is:inline={inlineIcon} />
|
<Icon name={endIconName} class={iconSlot({ class: classNames?.endIcon })} is:inline={inlineIcon} />
|
||||||
|
|||||||
@@ -243,13 +243,10 @@ const commentUrl = makeCommentUrl({ serviceSlug, commentId: comment.id, origin:
|
|||||||
comment.author.serviceAffiliations.map((affiliation) => {
|
comment.author.serviceAffiliations.map((affiliation) => {
|
||||||
const roleInfo = getServiceUserRoleInfo(affiliation.role)
|
const roleInfo = getServiceUserRoleInfo(affiliation.role)
|
||||||
return (
|
return (
|
||||||
<BadgeSmall
|
<BadgeSmall icon={roleInfo.icon} color={roleInfo.color} variant="faded" inlineIcon>
|
||||||
icon={roleInfo.icon}
|
{roleInfo.label} at
|
||||||
color={roleInfo.color}
|
<a href={`/service/${affiliation.service.slug}`}>{affiliation.service.name}</a>
|
||||||
text={`${roleInfo.label} at ${affiliation.service.name}`}
|
</BadgeSmall>
|
||||||
variant="faded"
|
|
||||||
inlineIcon
|
|
||||||
/>
|
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,7 +56,15 @@ const wasRecentlyAdded = isPast(listedDate) && differenceInDays(new Date(), list
|
|||||||
) : service.verificationStatus === 'COMMUNITY_CONTRIBUTED' ? (
|
) : service.verificationStatus === 'COMMUNITY_CONTRIBUTED' ? (
|
||||||
<div class="mb-3 flex items-center gap-2 rounded-md bg-yellow-600/30 p-2 text-sm text-yellow-200">
|
<div class="mb-3 flex items-center gap-2 rounded-md bg-yellow-600/30 p-2 text-sm text-yellow-200">
|
||||||
<Icon name="ri:alert-line" class="size-5 text-yellow-400" />
|
<Icon name="ri:alert-line" class="size-5 text-yellow-400" />
|
||||||
<span>Community-contributed. Information not reviewed.</span>
|
<span>
|
||||||
|
Community-contributed. Information not reviewed.
|
||||||
|
<a
|
||||||
|
href="/about#suggestion-review-process"
|
||||||
|
class="text-yellow-100 underline opacity-50 transition-opacity hover:opacity-100 focus-visible:opacity-100"
|
||||||
|
>
|
||||||
|
Learn more
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
) : wasRecentlyAdded ? (
|
) : wasRecentlyAdded ? (
|
||||||
<div class="mb-3 rounded-md bg-red-900/50 p-2 text-sm text-red-400">
|
<div class="mb-3 rounded-md bg-red-900/50 p-2 text-sm text-red-400">
|
||||||
@@ -64,11 +72,25 @@ const wasRecentlyAdded = isPast(listedDate) && differenceInDays(new Date(), list
|
|||||||
<TimeFormatted date={listedDate} daysUntilDate={RECENTLY_ADDED_DAYS} />
|
<TimeFormatted date={listedDate} daysUntilDate={RECENTLY_ADDED_DAYS} />
|
||||||
{service.verificationStatus !== 'VERIFICATION_SUCCESS' && ' and it is not verified'}. Proceed with
|
{service.verificationStatus !== 'VERIFICATION_SUCCESS' && ' and it is not verified'}. Proceed with
|
||||||
caution.
|
caution.
|
||||||
|
<a
|
||||||
|
href="/about#suggestion-review-process"
|
||||||
|
class="text-yellow-100 underline opacity-50 transition-opacity hover:opacity-100 focus-visible:opacity-100"
|
||||||
|
>
|
||||||
|
Learn more
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
) : service.verificationStatus !== 'VERIFICATION_SUCCESS' ? (
|
) : service.verificationStatus !== 'VERIFICATION_SUCCESS' ? (
|
||||||
<div class="mb-3 flex items-center gap-2 rounded-md bg-blue-600/30 p-2 text-sm text-blue-200">
|
<div class="mb-3 flex items-center gap-2 rounded-md bg-blue-600/30 p-2 text-sm text-blue-200">
|
||||||
<Icon name="ri:information-line" class="size-5 text-blue-400" />
|
<Icon name="ri:information-line" class="size-5 text-blue-400" />
|
||||||
<span>Basic checks passed, but not fully verified.</span>
|
<span>
|
||||||
|
Basic checks passed, but not fully verified.
|
||||||
|
<a
|
||||||
|
href="/about#suggestion-review-process"
|
||||||
|
class="text-yellow-100 underline opacity-50 transition-opacity hover:opacity-100 focus-visible:opacity-100"
|
||||||
|
>
|
||||||
|
Learn more
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
) : null
|
) : null
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
import { VerificationStepStatus, EventType, KycLevelClarification } from '@prisma/client'
|
import { VerificationStepStatus, EventType } from '@prisma/client'
|
||||||
import { Icon } from 'astro-icon/components'
|
import { Icon } from 'astro-icon/components'
|
||||||
import { Markdown } from 'astro-remote'
|
import { Markdown } from 'astro-remote'
|
||||||
import { Schema } from 'astro-seo-schema'
|
import { Schema } from 'astro-seo-schema'
|
||||||
@@ -1295,9 +1295,17 @@ const activeAlertOrWarningEvents = service.events.filter(
|
|||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h2 class="font-title border-day-500 text-day-200 mt-6 mb-3 border-b text-lg font-bold" id="verification">
|
<div class="border-day-500 mt-6 mb-3 flex items-center justify-between border-b" id="verification">
|
||||||
Verification
|
<h2 class="font-title text-day-100 text-lg font-bold">Verification</h2>
|
||||||
</h2>
|
<a
|
||||||
|
href="/about#suggestion-review-process"
|
||||||
|
class="text-day-500 hover:text-day-200 inline-flex items-center gap-1 text-xs leading-none transition-colors hover:underline"
|
||||||
|
>
|
||||||
|
Learn more
|
||||||
|
<Icon name="ri:arrow-right-s-line" class="size-4" />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class={cn('mb-6 rounded-lg p-4', statusInfo.classNames.containerBg)}>
|
<div class={cn('mb-6 rounded-lg p-4', statusInfo.classNames.containerBg)}>
|
||||||
<div class="flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between">
|
<div class="flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between">
|
||||||
<div class="flex-1">
|
<div class="flex-1">
|
||||||
|
|||||||
Reference in New Issue
Block a user