Skip to content

Commit a0eff5f

Browse files
authored
Merge branch 'main' into main
2 parents cf61013 + 6383f8a commit a0eff5f

5 files changed

Lines changed: 66 additions & 25 deletions

File tree

app/components/Terminal/Install.vue

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -200,20 +200,19 @@ const copyCreateCommand = () => copyCreate(getFullCreateCommand())
200200
<span class="text-fg-subtle font-mono text-sm select-none"
201201
># {{ $t('package.create.title') }}</span
202202
>
203-
<NuxtLink
204-
:to="`/package/${createPackageInfo.packageName}`"
205-
class="text-fg-muted hover:text-fg text-xs transition-colors focus-visible:outline-accent/70 rounded"
206-
:title="$t('package.create.view', { packageName: createPackageInfo.packageName })"
203+
<TooltipApp
204+
:text="$t('package.create.view', { packageName: createPackageInfo.packageName })"
207205
>
208-
<TooltipApp
209-
:text="$t('package.create.view', { packageName: createPackageInfo.packageName })"
206+
<NuxtLink
207+
:to="`/package/${createPackageInfo.packageName}`"
208+
class="inline-flex items-center justify-center min-w-6 min-h-6 -m-1 p-1 text-fg-muted hover:text-fg text-xs transition-colors focus-visible:outline-2 focus-visible:outline-accent/70 rounded"
210209
>
211-
<span class="i-carbon:information w-3 h-3 mt-1" aria-hidden="true" />
212-
</TooltipApp>
213-
<span class="sr-only">{{
214-
$t('package.create.view', { packageName: createPackageInfo.packageName })
215-
}}</span>
216-
</NuxtLink>
210+
<span class="i-carbon:information w-3 h-3" aria-hidden="true" />
211+
<span class="sr-only">{{
212+
$t('package.create.view', { packageName: createPackageInfo.packageName })
213+
}}</span>
214+
</NuxtLink>
215+
</TooltipApp>
217216
</div>
218217

219218
<div

app/pages/package/[...package].vue

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -791,7 +791,7 @@ defineOgImageComponent('Package', {
791791

792792
<!-- Stats grid -->
793793
<dl
794-
class="grid grid-cols-2 sm:grid-cols-11 gap-3 sm:gap-4 py-4 sm:py-6 mt-4 sm:mt-6 border-t border-b border-border"
794+
class="grid grid-cols-2 sm:grid-cols-7 md:grid-cols-11 gap-3 sm:gap-4 py-4 sm:py-6 mt-4 sm:mt-6 border-t border-b border-border"
795795
>
796796
<div class="space-y-1 sm:col-span-2">
797797
<dt class="text-xs text-fg-subtle uppercase tracking-wider">
@@ -863,7 +863,12 @@ defineOgImageComponent('Package', {
863863
<dt class="text-xs text-fg-subtle uppercase tracking-wider flex items-center gap-1">
864864
{{ $t('package.stats.install_size') }}
865865
<TooltipApp :text="sizeTooltip">
866-
<span class="i-carbon:information w-3 h-3 text-fg-subtle" aria-hidden="true" />
866+
<span
867+
tabindex="0"
868+
class="inline-flex items-center justify-center min-w-6 min-h-6 -m-1 p-1 text-fg-subtle cursor-help focus-visible:outline-2 focus-visible:outline-accent/70 rounded"
869+
>
870+
<span class="i-carbon:information w-3 h-3" aria-hidden="true" />
871+
</span>
867872
</TooltipApp>
868873
</dt>
869874
<dd class="font-mono text-sm text-fg">

modules/og-image.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { defineNuxtModule, useNuxt } from 'nuxt/kit'
2+
3+
export default defineNuxtModule({
4+
meta: {
5+
name: 'og-image-tweaks',
6+
},
7+
setup() {
8+
const nuxt = useNuxt()
9+
10+
nuxt.hook('components:extend', components => {
11+
for (const component of [...components].toReversed()) {
12+
if (component.filePath.includes('og-image')) {
13+
components.splice(components.indexOf(component), 1)
14+
}
15+
}
16+
})
17+
},
18+
})

test/unit/uno-preset-rtl.spec.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import { afterEach, beforeEach, describe, expect, it, vi, type MockInstance } from 'vitest'
2-
import { presetRtl } from '../../uno-preset-rtl'
2+
import { presetRtl, resetRtlWarnings } from '../../uno-preset-rtl'
33
import { createGenerator } from 'unocss'
44

55
describe('uno-preset-rtl', () => {
66
let warnSpy: MockInstance
77

88
beforeEach(() => {
9+
resetRtlWarnings()
910
warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => {})
1011
})
1112

uno-preset-rtl.ts

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,22 @@
11
import type { CSSEntries, DynamicMatcher, Preset, RuleContext } from 'unocss'
22
import { cornerMap, directionSize, h } from '@unocss/preset-wind4/utils'
33

4+
// Track warnings to avoid duplicates
5+
const warnedClasses = new Set<string>()
6+
7+
function warnOnce(message: string, key: string) {
8+
if (!warnedClasses.has(key)) {
9+
warnedClasses.add(key)
10+
// oxlint-disable-next-line no-console -- warn logging
11+
console.warn(message)
12+
}
13+
}
14+
15+
/** Reset warning state (for testing) */
16+
export function resetRtlWarnings() {
17+
warnedClasses.clear()
18+
}
19+
420
const directionMap: Record<string, string[]> = {
521
'l': ['-left'],
622
'r': ['-right'],
@@ -30,9 +46,9 @@ function directionSizeRTL(
3046
const defaultMap = { l: 'is', r: 'ie' }
3147
const map = prefixMap || defaultMap
3248
const replacement = map[direction as 'l' | 'r']
33-
// oxlint-disable-next-line no-console -- warn logging
34-
console.warn(
49+
warnOnce(
3550
`[RTL] Avoid using '${match}'. Use '${match.replace(direction === 'l' ? 'l' : 'r', replacement)}' instead.`,
51+
match,
3652
)
3753
return matcher([match, replacement, size], context)
3854
}
@@ -83,9 +99,9 @@ export function presetRtl(): Preset {
8399
([, direction, size], context) => {
84100
if (!size) return undefined
85101
const replacement = direction === 'left' ? 'inset-is' : 'inset-ie'
86-
// oxlint-disable-next-line no-console -- warn logging
87-
console.warn(
102+
warnOnce(
88103
`[RTL] Avoid using '${direction}-${size}'. Use '${replacement}-${size}' instead.`,
104+
`${direction}-${size}`,
89105
)
90106
return directionSize('inset')(['', direction === 'left' ? 'is' : 'ie', size], context)
91107
},
@@ -95,8 +111,10 @@ export function presetRtl(): Preset {
95111
/^text-(left|right)$/,
96112
([, direction]) => {
97113
const replacement = direction === 'left' ? 'start' : 'end'
98-
// oxlint-disable-next-line no-console -- warn logging
99-
console.warn(`[RTL] Avoid using 'text-${direction}'. Use 'text-${replacement}' instead.`)
114+
warnOnce(
115+
`[RTL] Avoid using 'text-${direction}'. Use 'text-${replacement}' instead.`,
116+
`text-${direction}`,
117+
)
100118
return { 'text-align': replacement }
101119
},
102120
{ autocomplete: 'text-(left|right)' },
@@ -112,9 +130,9 @@ export function presetRtl(): Preset {
112130
}
113131
const replacement = replacementMap[direction]
114132
if (!replacement) return undefined
115-
// oxlint-disable-next-line no-console -- warn logging
116-
console.warn(
133+
warnOnce(
117134
`[RTL] Avoid using 'rounded-${direction}'. Use 'rounded-${replacement}' instead.`,
135+
`rounded-${direction}`,
118136
)
119137
return handlerRounded(['', replacement, size ?? 'DEFAULT'], context)
120138
},
@@ -124,9 +142,9 @@ export function presetRtl(): Preset {
124142
args => {
125143
const [_, direction, size] = args
126144
const replacement = direction === 'l' ? 'is' : 'ie'
127-
// oxlint-disable-next-line no-console -- warn logging
128-
console.warn(
145+
warnOnce(
129146
`[RTL] Avoid using 'border-${direction}'. Use 'border-${replacement}' instead.`,
147+
`border-${direction}`,
130148
)
131149
return handlerBorderSize(['', replacement, size || '1'])
132150
},

0 commit comments

Comments
 (0)