mirror of
https://github.com/misode/misode.github.io.git
synced 2026-04-25 16:16:50 +00:00
Refactor how partner generators work + prefix generator translation keys
This commit is contained in:
@@ -5,7 +5,7 @@ import '../styles/nodes.css'
|
||||
import { Analytics } from './Analytics.js'
|
||||
import { cleanUrl } from './Utils.js'
|
||||
import { Header } from './components/index.js'
|
||||
import { Changelog, Customized, Generator, Generators, Guide, Guides, Home, Partners, Sounds, Transformation, Versions, WhatsNew, Worldgen } from './pages/index.js'
|
||||
import { Changelog, Customized, Generator, Generators, Guide, Guides, Home, LegacyPartners, Partners, Sounds, Transformation, Versions, WhatsNew, Worldgen } from './pages/index.js'
|
||||
|
||||
export function App() {
|
||||
const changeRoute = (e: RouterOnChangeArgs) => {
|
||||
@@ -21,6 +21,7 @@ export function App() {
|
||||
<Generators path="/generators" />
|
||||
<Worldgen path="/worldgen" />
|
||||
<Partners path="/partners" />
|
||||
<LegacyPartners path="/partners/:id" />
|
||||
<Sounds path="/sounds" />
|
||||
<Changelog path="/changelog" />
|
||||
<Versions path="/versions" />
|
||||
|
||||
@@ -28,7 +28,7 @@ export function Header() {
|
||||
{config.generators
|
||||
.filter(g => g.tags?.[0] === gen?.tags?.[0] && checkVersion(version, g.minVersion))
|
||||
.map(g =>
|
||||
<Btn label={locale(g.partner ? `partner.${g.partner}.${g.id}` : g.id)} active={g.id === gen.id} onClick={() => route(cleanUrl(g.url))} />
|
||||
<Btn label={locale(`generator.${g.id}`)} active={g.id === gen.id} onClick={() => route(cleanUrl(g.url))} />
|
||||
)}
|
||||
</BtnMenu>}
|
||||
{!gen && url.match(/\/?project\/?$/) && <BtnMenu icon="chevron_down" tooltip={locale('switch_project')}>
|
||||
|
||||
@@ -24,7 +24,7 @@ export function GeneratorCard({ id, minimal }: Props) {
|
||||
return gen
|
||||
}, [id])
|
||||
|
||||
const title = locale(gen.partner ? `partner.${gen.partner}.${gen.id}` : gen.id)
|
||||
const title = locale(`generator.${gen.id}`)
|
||||
|
||||
const icon = Object.keys(Icons).includes(id) ? id as keyof typeof Icons : undefined
|
||||
|
||||
@@ -53,7 +53,7 @@ export function GeneratorCard({ id, minimal }: Props) {
|
||||
return []
|
||||
}, [gen])
|
||||
|
||||
return <Card title={<>{title}{icon && Icons[icon]}</>} overlay={gen.partner ? locale(`partner.${gen.partner}`) : versionText} link={cleanUrl(gen.url)}>
|
||||
return <Card title={<>{title}{icon && Icons[icon]}</>} overlay={gen.tags?.includes('partners') ? locale(`partner.${gen.id.substring(0, gen.id.indexOf('.'))}`) : versionText} link={cleanUrl(gen.url)}>
|
||||
{!gen.noPath && <p class="card-subtitle">/{gen.path ?? gen.id}</p>}
|
||||
{tags.length > 0 && <div class="badges-list">
|
||||
{tags.sort().map(tag => <Badge label={tag} />)}
|
||||
|
||||
@@ -28,7 +28,7 @@ export function GeneratorList({ predicate }: Props) {
|
||||
const filteredGenerators = useMemo(() => {
|
||||
const query = search.split(' ').map(q => q.trim().toLowerCase()).filter(q => q.length > 0)
|
||||
return versionedGenerators.filter(gen => {
|
||||
const content = `${gen.id} ${gen.tags?.join(' ') ?? ''} ${gen.path ?? ''} ${gen.partner ?? ''} ${locale(gen.id).toLowerCase()}`
|
||||
const content = `${gen.id} ${gen.tags?.join(' ') ?? ''} ${gen.path ?? ''} ${locale(`generator.${gen.id}`).toLowerCase()}`
|
||||
return query.every(q => {
|
||||
if (q.startsWith('!')) {
|
||||
return q.length === 1 || !content.includes(q.slice(1))
|
||||
|
||||
@@ -315,7 +315,7 @@ export function SchemaGenerator({ gen, allowedVersions }: Props) {
|
||||
|
||||
return <>
|
||||
<main class={`generator${previewShown ? ' has-preview' : ''}${projectShown ? ' has-project' : ''}`}>
|
||||
{!gen.partner && <Ad id="data-pack-generator" type="text" />}
|
||||
{!gen.tags?.includes('partners') && <Ad id="data-pack-generator" type="text" />}
|
||||
<div class="controls generator-controls">
|
||||
{gen.wiki && <a class="btn btn-link tooltipped tip-se" aria-label={locale('learn_on_the_wiki')} href={`https://minecraft.wiki/w/${gen.wiki}`} target="_blank">
|
||||
{Octicon.mortar_board}
|
||||
@@ -336,7 +336,7 @@ export function SchemaGenerator({ gen, allowedVersions }: Props) {
|
||||
</div>
|
||||
{error && <ErrorPanel error={error} onDismiss={() => setError(null)} />}
|
||||
<Tree {...{model, version, blockStates}} onError={setError} />
|
||||
<Footer donate={!gen.partner} />
|
||||
<Footer donate={!gen.tags?.includes('partners')} />
|
||||
</main>
|
||||
<div class="popup-actions right-actions" style={`--offset: -${8 + actionsShown * 50}px;`}>
|
||||
<div class={`popup-action action-preview${hasPreview ? ' shown' : ''} tooltipped tip-nw`} aria-label={locale(previewShown ? 'hide_preview' : 'show_preview')} onClick={togglePreview}>
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import { getCurrentUrl, route } from 'preact-router'
|
||||
import { useMemo } from 'preact/hooks'
|
||||
import config from '../Config.js'
|
||||
import { getGenerator } from '../Utils.js'
|
||||
import { SchemaGenerator } from '../components/generator/SchemaGenerator.jsx'
|
||||
import { ErrorPanel, Octicon } from '../components/index.js'
|
||||
import config from '../Config.js'
|
||||
import { useLocale, useTitle, useVersion } from '../contexts/index.js'
|
||||
import type { VersionId } from '../services/index.js'
|
||||
import { checkVersion } from '../services/index.js'
|
||||
import { getGenerator } from '../Utils.js'
|
||||
|
||||
export const SHARE_KEY = 'share'
|
||||
|
||||
@@ -29,7 +29,7 @@ export function Generator({}: Props) {
|
||||
.reverse()
|
||||
}, [gen.minVersion, gen.maxVersion])
|
||||
|
||||
useTitle(locale('title.generator', locale(gen.partner ? `partner.${gen.partner}.${gen.id}` : gen.id)), allowedVersions)
|
||||
useTitle(locale('title.generator', locale(`generator.${gen.id}`)), allowedVersions)
|
||||
|
||||
if (!checkVersion(version, gen.minVersion, gen.maxVersion)) {
|
||||
const lower = !checkVersion(version, gen.minVersion)
|
||||
|
||||
@@ -10,7 +10,7 @@ export function Generators({}: Props) {
|
||||
|
||||
return <main>
|
||||
<div class="legacy-container">
|
||||
<GeneratorList predicate={gen => !gen.partner} />
|
||||
<GeneratorList predicate={gen => !gen.tags?.includes('partners')} />
|
||||
</div>
|
||||
<Footer />
|
||||
</main>
|
||||
|
||||
@@ -24,20 +24,27 @@ export function Home({}: Props) {
|
||||
return <main>
|
||||
<div class="legacy-container">
|
||||
<div class="card-group">
|
||||
<div class="card-column">
|
||||
{smallScreen ? /* mobile */ <>
|
||||
<PopularGenerators />
|
||||
{smallScreen && <FavoriteGenerators />}
|
||||
{smallScreen && <WhatsNew />}
|
||||
<Changelog />
|
||||
<Versions />
|
||||
{smallScreen && <Tools />}
|
||||
<Guides />
|
||||
</div>
|
||||
{!smallScreen && <div class="card-column">
|
||||
<FavoriteGenerators />
|
||||
<WhatsNew />
|
||||
<Changelog />
|
||||
<Versions />
|
||||
<Tools />
|
||||
</div>}
|
||||
<Guides />
|
||||
</> : /* desktop */ <>
|
||||
<div class="card-column">
|
||||
<PopularGenerators />
|
||||
<Changelog />
|
||||
<Versions />
|
||||
<Guides />
|
||||
</div>
|
||||
{!smallScreen && <div class="card-column">
|
||||
<FavoriteGenerators />
|
||||
<WhatsNew />
|
||||
<Tools />
|
||||
</div>}
|
||||
</>}
|
||||
</div>
|
||||
<Contributors />
|
||||
<Giscus />
|
||||
@@ -54,6 +61,7 @@ function PopularGenerators() {
|
||||
<GeneratorCard minimal id="predicate" />
|
||||
<ToolCard title={locale('worldgen')} link="/worldgen/" titleIcon="worldgen" />
|
||||
<ToolCard title={locale('generators.all')} link="/generators/" titleIcon="arrow_right" />
|
||||
<ToolCard title={locale('generators.partners')} link="/partners/" titleIcon="arrow_right" />
|
||||
</ToolGroup>
|
||||
}
|
||||
|
||||
|
||||
10
src/app/pages/LegacyPartners.tsx
Normal file
10
src/app/pages/LegacyPartners.tsx
Normal file
@@ -0,0 +1,10 @@
|
||||
import { route } from 'preact-router'
|
||||
|
||||
interface Props {
|
||||
path: string
|
||||
}
|
||||
export function LegacyPartners({ path }: Props) {
|
||||
route(path.replace('/partners/', '/'))
|
||||
|
||||
return null
|
||||
}
|
||||
@@ -10,7 +10,7 @@ export function Partners({}: Props) {
|
||||
|
||||
return <main>
|
||||
<div class="legacy-container">
|
||||
<GeneratorList predicate={gen => gen.partner !== undefined} />
|
||||
<GeneratorList predicate={gen => gen.tags?.includes('partners')} />
|
||||
</div>
|
||||
<Footer donate={false} />
|
||||
</main>
|
||||
|
||||
@@ -5,6 +5,7 @@ export * from './Generators.jsx'
|
||||
export * from './Guide.js'
|
||||
export * from './Guides.js'
|
||||
export * from './Home.js'
|
||||
export * from './LegacyPartners.jsx'
|
||||
export * from './Partners.js'
|
||||
export * from './Sounds.js'
|
||||
export * from './Transformation.jsx'
|
||||
|
||||
Reference in New Issue
Block a user