<script setup lang="ts">
import { useNuxtApp } from 'nuxt/app';

import NounsNav from './NounsNav.vue';

import { removeSuffix } from '#shared/helpers.ts';
import { numeri, symbolsByNumeri } from '#shared/nouns.ts';
import type { NounDeclension } from '#shared/nouns.ts';
import useSimpleHead from '~/composables/useSimpleHead.ts';

definePageMeta({
    translatedPaths: (config) => translatedPathForSingleLocale(config, 'pl', 'neutratywy'),
});

const { $translator: translator } = useNuxtApp();
const config = useConfig();

useSimpleHead({
    title: translator.translate('nouns.neuterNouns.header'),
    banner: `img/${config.locale}/flags/łoś.jpg`,
    description: translator.translate('nouns.neuterNouns.info')[0],
}, translator);

const neuterExtendedDeclension: NounDeclension = {
    singular: {
        m: ['to kosmiczne twórcze'],
        d: ['tego kosmicznego twórcza'],
        c: ['temu kosmicznemu twórczu'],
        b: ['to kosmiczne twórcze'],
        n: ['tym kosmicznym twórczem'],
        msc: ['tym kosmicznym twórczu'],
        w: ['to kosmiczne twórcze'],
    },
    plural: {
        m: ['te kosmiczne twórcza'],
        d: ['tych kosmicznych twórczy'],
        c: ['tym kosmicznym twórczom'],
        b: ['te kosmiczne twórcza'],
        n: ['tymi kosmicznymi twórczami'],
        msc: ['tych kosmicznych twórczach'],
        w: ['te kosmiczne twórcza'],
    },
};
const neuterAltDeclensionTemplates = [
    ['ono/jego'], // , 'vono/vego', 'ono/jejgo'],
    ['ono/jej'],
    ['ono/jeno'],
    ['ono/jenu'],
];
const neuterAltDeclension: Record<string, NounDeclension[]> = {
    księgowe: [
        {
            singular: {
                m: ['owe'],
                d: ['owego'],
                c: ['owemu'],
                b: ['owe'],
                msc: ['owem', 'owym'],
                w: ['owem', 'owym'],
            },
        },
        {
            singular: {
                m: ['owe'],
                d: ['owej'],
                c: ['owej'],
                b: ['owe'],
                msc: ['ową'],
                w: ['owej'],
            },
        },
        {
            singular: {
                m: ['owe'],
                d: ['oweno'],
                c: ['owenu'],
                b: ['owe', 'oweno'],
                msc: ['owem'],
                w: ['owem'],
            },
        },
        {
            singular: {
                m: ['owe'],
                d: ['owu'],
                c: ['owenu'],
                b: ['owe'],
                msc: ['owum'],
                w: ['owum'],
            },
        },
    ],
    pracownicze: [
        {
            singular: {
                m: ['cze'],
                d: ['cza'],
                c: ['czu'],
                b: ['cze'],
                msc: ['czem'],
                w: ['czu'],
            },
        },
        {
            singular: {
                m: ['cze'],
                d: ['czy'],
                c: ['czy'],
                b: ['czę'],
                msc: ['czą'],
                w: ['czy'],
            },
        },
        {
            singular: {
                m: ['cze'],
                d: ['cza'],
                c: ['czu'],
                b: ['cze'],
                msc: ['czem'],
                w: ['czu'],
            },
        },
        {
            singular: {
                m: ['cze'],
                d: ['ku'],
                c: ['ku'],
                b: ['cze'],
                msc: ['kum'],
                w: ['kum'],
            },
        },
    ],
    kochanie: [
        {
            singular: {
                m: ['nie'],
                d: ['nia'],
                c: ['niu'],
                b: ['nie'],
                msc: ['niem'],
                w: ['niu'],
            },
        },
        {
            singular: {
                m: ['nie'],
                d: ['ni'],
                c: ['ni'],
                b: ['nię'],
                msc: ['nią'],
                w: ['ni'],
            },
        },
        {
            singular: {
                m: ['nie'],
                d: ['nia'],
                c: ['niu'],
                b: ['nie'],
                msc: ['niem'],
                w: ['niu'],
            },
        },
        {
            singular: {
                m: ['nie'],
                d: ['niu'],
                c: ['niu'],
                b: ['nie'],
                msc: ['nium'],
                w: ['nium'],
            },
        },
    ],
    wnuczę: [
        {
            singular: {
                m: ['czę'],
                d: ['częcia'],
                c: ['częciu'],
                b: ['czę'],
                msc: ['częciem'],
                w: ['częciu'],
            },
        },
        {
            singular: {
                m: ['czę'],
                d: ['częty'],
                c: ['częcie'],
                b: ['czętę'],
                msc: ['czętą'],
                w: ['częcie'],
            },
        },
        {
            singular: {
                m: ['czę'],
                d: ['częcia'],
                c: ['częciu'],
                b: ['czę'],
                msc: ['częciem'],
                w: ['częciu'],
            },
        },
        {
            singular: {
                m: ['czę'],
                d: ['czu'],
                c: ['czu'],
                b: ['czę'],
                msc: ['czum'],
                w: ['czum'],
            },
        },
    ],
    Polko: [
        {
            singular: {
                m: ['ko'],
                d: ['ka'],
                c: ['ku'],
                b: ['ko'],
                msc: ['kiem'],
                w: ['ku'],
            },
        },
        {
            singular: {
                m: ['ko'],
                d: ['ki'],
                c: ['ce'],
                b: ['ko'],
                msc: ['ką'],
                w: ['ce'],
            },
        },
        {
            singular: {
                m: ['ko'],
                d: ['ka'],
                c: ['ku'],
                b: ['ko'],
                msc: ['kiem'],
                w: ['ku'],
            },
        },
        {
            singular: {
                m: ['ko'],
                d: ['ku'],
                c: ['ku'],
                b: ['ko'],
                msc: ['kum'],
                w: ['kum'],
            },
        },
    ],
    kociaro: [
        {
            singular: {
                m: ['ro'],
                d: ['ra'],
                c: ['rzu'],
                b: ['ro'],
                msc: ['rem'],
                w: ['rzu'],
            },
        },
        {
            singular: {
                m: ['ro'],
                d: ['ry'],
                c: ['rze'],
                b: ['rę'],
                msc: ['rą'],
                w: ['rze'],
            },
        },
        {
            singular: {
                m: ['ro'],
                d: ['ra'],
                c: ['rzu'],
                b: ['ro'],
                msc: ['rem'],
                w: ['rzu'],
            },
        },
        {
            singular: {
                m: ['ro'],
                d: ['ru'],
                c: ['ru'],
                b: ['ro'],
                msc: ['rum'],
                w: ['rum'],
            },
        },
    ],
};
</script>

<template>
    <Page>
        <NounsNav />

        <h2>
            <Icon v="deer" />
            <T>nouns.neuterNouns.header</T>
        </h2>

        <div class="d-flex flex-column flex-md-row">
            <div>
                <T>nouns.neuterNouns.info</T>
                <CensusStat type="nouns" item="neutratywy" colour="info" />
                <Share :title="$t('nouns.neuterNouns.header')" />
            </div>
            <figure>
                <img src="/img/pl/flags/neutratywy.svg" :alt="$t('nouns.neuterNouns.flag.alt')">
                <figcaption><T>nouns.neuterNouns.flag.caption</T></figcaption>

                <details class="small mt-3">
                    <summary>
                        <Icon v="user-friends" />
                        Autorstwo
                    </summary>
                    <ul>
                        <li>Oryginalny projekt: <nuxt-link to="/@ausir">@ausir</nuxt-link></li>
                        <li>Pomysł redesignu: <nuxt-link to="/@Śreżoga">@Śreżoga</nuxt-link></li>
                        <li>Realizacja redesignu: <nuxt-link to="/@andrea">@andrea</nuxt-link></li>
                        <li>Flaga osób niebinarych <a href="https://commons.wikimedia.org/wiki/File:Nonbinary_flag.svg" target="_blank" rel="noopener">Kye Rowan</a> (public domain)</li>
                        <li>Wektor łosia: <a href="https://commons.wikimedia.org/wiki/File:Coat_of_arms_of_Ontario,_Canada.svg" target="_blank" rel="noopener">Herb Ontario</a> (public domain)</li>
                        <li>Wektor łoma: <a href="https://www.vecteezy.com/free-vector/crowbar" target="_blank" rel="noopener">Vecteezy</a></li>
                    </ul>
                </details>
            </figure>
        </div>

        <section>
            <BlogEntriesList :posts="['etymologia-odmiana-neutratywów', 'neutratywy-zdrobnienia']" />
        </section>

        <details class="border mb-3">
            <summary class="bg-light p-3">
                <h4 class="h5 d-inline">
                    <T>nouns.neuterNouns.extended.header</T>
                </h4>
            </summary>
            <div class="border-top">
                <div class="d-flex flex-column flex-md-row">
                    <div v-for="numerus of numeri" :key="numerus" class="p-3">
                        <h5>{{ symbolsByNumeri[numerus] }} <T>nouns.{{ numerus }}</T></h5>
                        <NounsDeclension :word="{ spelling: '', declension: neuterExtendedDeclension }" :numerus />
                    </div>
                </div>
            </div>
        </details>

        <details class="border mb-3">
            <summary class="bg-light p-3">
                <h4 class="h5 d-inline">
                    <T>nouns.neuterNouns.alt.header</T>
                </h4>
            </summary>
            <div class="border-top">
                <div class="p-4 pb-0">
                    <T>nouns.neuterNouns.alt.info</T>
                </div>
                <div class="table-responsive">
                    <table class="table table-striped table-hover table-fixed-3">
                        <thead>
                            <tr>
                                <th v-for="templates in neuterAltDeclensionTemplates" class="text-nowrap">
                                    <ul class="list-inline mb-0">
                                        <li v-for="template in templates" class="list-inline-item">
                                            <nuxt-link :to="`/${template}`">
                                                {{ template }}
                                            </nuxt-link>
                                        </li>
                                    </ul>
                                </th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr v-for="(declensions, spelling) in neuterAltDeclension" :key="spelling">
                                <td v-for="declension in declensions">
                                    <NounsDeclension :word="{ spelling: removeSuffix(spelling, declension.singular!.m[0]), declension }" condense />
                                </td>
                            </tr>
                        </tbody>
                    </table>
                </div>
            </div>
        </details>

        <Separator icon="atom-alt" />

        <NounsDictionary load />
    </Page>
</template>

<style lang="scss" scoped>
    @import "../../../app/assets/variables";

    figure {
        width: 100%;
        max-width: 24rem;
        padding: $spacer;
        img {
            width: 100%;
        }
        figcaption {
            font-size: $small-font-size;
        }
    }
    @include media-breakpoint-up('md') {
        figure {
            min-width: 20rem;
        }
    }
</style>
