added header, footer, eslint/prettier, and typedoc

This commit is contained in:
2024-09-13 17:06:10 +09:00
parent 845418da60
commit a7dc8d6c8f
56 changed files with 16207 additions and 11147 deletions

29
.prettierignore Normal file
View File

@@ -0,0 +1,29 @@
# Nuxt dev/build outputs
.output
.data
.nuxt
.nitro
.cache
dist
# Node dependencies
node_modules
# Logs
logs
*.log
# Misc
.DS_Store
.fleet
.idea
# Local env files
.env
.env.*
!.env.example
src-manager
*.md
eslint.config.js
nuxt.config.ts

8
.prettierrc Normal file
View File

@@ -0,0 +1,8 @@
tabWidth: 4
semi: true
trailingComma: "es5"
bracketSpacing: true
bracketSameLine: false
arrowParens: "always"
vueIndentScriptAndStyle: false
endOfLine: "lf"

126
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,126 @@
# SERA ウェブサイトに貢献する方法
## 必要な知識
分からなかったらリストにはられているリンクを参照すること。
* HTML, CSS, JavaScriptの基本的な知識 [MDN Web Docs](https://developer.mozilla.org/ja/docs/Web)
* (Optional) TypeScript [The TypeScript Handbook](https://www.typescriptlang.org/docs/handbook/intro.html)
* フロントエンド([Vue.js](https://ja.vuejs.org/)/[Nuxt](https://nuxt.com), [htmx](https://htmx.org/))とバックエンド([sqlite](https://www.sqlite.org/), Nuxt, [Express](https://expressjs.com/))の基本的な知識
* GitとGitHubの基本的な知識 [GitHubとGitについて](https://docs.github.com/ja/get-started/start-your-journey/about-github-and-git)
* Markdownの基本的な知識 [Markdown記法一覧](https://qiita.com/oreo/items/82183bfbaac69971917f)
* 中学卒業レベル以上の英語力 [**頑張れ**](https://jstc.jma.or.jp/)
## レポジトリの構成
このレポジトリには2つのプロジェクトが存在する:
1. SERA Website: メインプロジェクト、ソースディレクトリ:`assets/ components/ layouts/ pages/ public/ server/`
2. Content Manager: ニュース等のためのデータベースの管理UI・API、ソースディレクトリ`src-manager/`
## 問題の報告・新仕様の提案
ウェブサイトで起こったバグの報告や新しい仕様の提案はIssueから行う。
### バグ報告
#### ISSUEテンプレート
```markdown
**タイトル:** [簡潔で明確に問題やリクエストを記述してください]
**説明:**
* **何をしようとしていましたか?** [文脈と行った手順を提供してください]
* **代わりに何が起こりましたか?** [予期しない動作またはエラーメッセージを記述してください]
* **どのような結果が望まれましたか?** [期待される結果を述べてください]
* **スクリーンショット/動画:** [問題を示すために関連するスクリーンショットまたはスクリーン録画を含めてください]
* **手順の再現 (該当する場合):**
1. [ステップ1]
2. [ステップ2]
3. [ステップ3]
...
* **ブラウザ/OS情報:** [使用しているブラウザChrome、Firefoxとバージョン、およびオペレーティングシステムWindows 10、macOS Big Surを指定してください]
* **関連するコードスニペット (該当する場合):** [問題に関連するコードスニペットを貼り付けてください]
**深刻度:**
* **重大:** [ウェブサイトが完全に使用できなくなったり、重要なセキュリティ脆弱性がある場合]
* **高:** [コア機能の動作を防ぐ重大な機能上の問題]
* **中:** [些細な不快感またはマイナーな機能の問題]
* **低:** [美的要素の問題や改善のための提案]
**ラベル:**
* 利用可能なオプションから最も関連性の高いラベルを選択してください。
```
### 新仕様の提案
## 変更の提案
変更を提案するときには以下に注意すること:
* フォークレポジトリで加えた変更の手案はプルリクエスト(PR)から
* 変更の内容の説明はなるべく簡潔で明確に
* 一つのIssueには一つのPRを
* PRには元となったIssueをリンクすること
* なるべく小規模の変更に留めること
* 変更が大規模の場合は他の貢献者にレビューを分担すること
* 最終的にプロジェクトマネージャーがPRのマージを認可する
### PRテンプレート
```markdown
```
## コーディング規約
ソースコードを書く際には可読性、保守性の確保のために以下の規約に従いましょう:
#### ファイル
* タブ・インデントは半角スペース4個分とし、タブ文字は使わないとする
* ファイルは**必ず**UTF-8で保存する
#### 変数、定数など
##### 命名規則
* 変数、定数、型名、関数名にローマ字を使用しない
* 変数、定数、型名、関数名での連番は極力避ける
* 変数、定数、型名、関数名には3文字以上の略称でない意味のある名前をつける
* 変数、定数、関数名にはcamelCase
* クラス名、型名、Vueコンポーネントファイル名・importにはPascalCase
* CSSクラス、id、`pages/`下のVueファイル・フォルダにはkebab-case
* 上記に該当しないものはcamelCaseで命名するものとする
##### その他
* (TypeScript): 関数名・クラス名から判断できる場合のみ型の明記を省略しても良い、それ以外は明記する必要がある
* 変数・定数定義以外でMagic Values(生の値)の使用は極力避け、代わりに列挙体や定数を使う
* 変数・定数には内容に合った型を明記する(TypeScript)
#### 括弧の使用について
* if文、for文、while文、関数定義、CSSのセレクターの中括弧は同じ行に書く
* if文、for文、while文の内容が行だけならば中括弧は省略しても良いとする
* JavaScript/TypeScriptでのネスティングは4段以上にしない(参照:[Why You Shouldn't Nest Your Code](https://www.youtube.com/watch?v=CFRhGnuXG-4))
#### プログラミングパラダイム
* JavaScript/TypeScriptでクラスを使用したい場合、継承を避け、合成を採用する。抽象化は冗長解消より本来のモの概念をソースに起こすことを優先する(参照:[The Flaws of Inheritance](https://www.youtube.com/watch?v=hxGOiiR9ZKg), [Abstracion Can Make Your Code Worse](https://www.youtube.com/watch?v=rQlMtztiAoA))
* 関数型言語の特徴を取り入れても良いとする
#### コメント・ドキュメンテーション
* コメントは英語、日本語どちらでも良い
* 無駄で間違ったコメントは書かない(参照:[Don't Write Comments](https://www.youtube.com/watch?v=Bf7vDBBOBUA&ab_channel=CodeAesthetic))
* 仕様、動作についてはコメントではなくドキュメンテーションに記載する
* APIには簡潔なドキュメンテーションを書く([JSdoc](https://www.typescriptlang.org/ja/docs/handbook/jsdoc-supported-types.html))
#### その他
* その他コーディング規約は`eslint.config.js`に記載されているものを使用する
* 車輪の再発明をせずになるべくライブラリー・フレームワークで提供されている関数・クラスを使う

View File

@@ -1,3 +1,21 @@
# sera-new-hp
更新が止まっているSERA HPを置き換えるよりモダンなHP
更新が止まっているSERA HPを置き換えるよりモダンなHP
## 使用言語、ライブラリー、フレームワーク、ツール
* JavaScript、TypeScript、Vue
* Nuxt
* node npm
* sqlite
## 開発を開始する
> 初めてこのプロジェクトに参加する際には`CONTRIBUTING.md`を***必ず***読んでおくこと
```bash
git clone https://git.kenryu.us/kenryuS/sera-new-hp.git # レポジトリをクローン
cd sera-new-hp # 移動して
npm install # 依存パッケージのインストール
npm run dev # デベロッパーモードでサイトを構築
```

30
app.vue
View File

@@ -1,23 +1,25 @@
<script setup lang="ts">
import SiteInfo from "assets/siteinfo.json";
useHead({
titleTemplate: (titleChunk: any) => {
return titleChunk ? `岐阜高専宇宙工学研究会 SERA - ${titleChunk}` : "岐阜高専宇宙工学研究会 SERA";
},
link: [
{rel: 'icon', type: 'image/svg+xml', href: '/favicon.svg'}
],
htmlAttrs: {
lang: 'ja'
}
titleTemplate: (titleChunk) => {
return titleChunk
? `${titleChunk} - 岐阜高専宇宙工学研究会 ${SiteInfo.clubNameAbbreviation}`
: `岐阜高専宇宙工学研究会 ${SiteInfo.clubNameAbbreviation}`;
},
link: [{ rel: "icon", type: "image/svg+xml", href: "/favicon.svg" }],
htmlAttrs: {
lang: "ja",
},
});
</script>
<template>
<div id="App">
<NuxtLayout>
<NuxtPage />
</NuxtLayout>
</div>
<div id="App">
<NuxtLayout>
<NuxtPage />
</NuxtLayout>
</div>
</template>
<style>

23
assets/siteinfo.json Normal file
View File

@@ -0,0 +1,23 @@
{
"clubNameAbbreviation": "SERA",
"clubNameLong": "Space Engineering Research Association",
"copyrightYear": 2024,
"memberDepartmentRatio": {
"date": "2023-3-31",
"mechanicalEng": 10,
"elecAndComp": 5,
"elecControl": 4,
"civilEng": 1,
"architecture": 2
},
"memberGradeRatio": {
"date": "2022-3-31",
"first": 7,
"second": 4,
"third": 5,
"fourth": 1,
"fifth": 5
},
"advisorName": "枝本雅史(えだもとまさふみ)",
"headOfClub": "4年機械工学科 櫻井晴生"
}

View File

@@ -1,13 +1,29 @@
@import "~/assets/styles/color-pallet.css";
@font-face {
font-family: "Noto Sans JP";
src: url('../fonts/NotoSansJP-VariableFont_wght.ttf') format('truetype');
font-family: "Noto Sans JP";
src: url("../fonts/NotoSansJP-VariableFont_wght.ttf") format("truetype");
}
* {
font-family: "Noto Sans JP";
}
#App {
display: grid;
font-family: "Noto Sans JP";
display: grid;
}
.page-enter-active,
.page-leave-active {
transition: all ease-in-out 0.6s;
}
.page-enter-from,
.page-leave-to {
opacity: 0;
transform: translateY(100%);
}
body {
margin: 0;
margin: 0;
}

View File

@@ -0,0 +1,12 @@
/* Colors form https://simplicable.com/colors/ */
:root {
--deep-space: #000001;
--moonlight: #f6eed5;
--andromeda: #abcdee;
--meteorite: #4a3b6a;
--astronaut: #214559;
--neptune1: #007dac;
--starlight: #efefe8;
--sunlight: #fff8df;
--ocean-blue: #009dc4;
}

165
components/DropDown.vue Normal file
View File

@@ -0,0 +1,165 @@
<script setup lang="ts">
import type { DropDownProperty } from "#imports";
const property = defineProps<DropDownProperty>();
const isOpen = ref<boolean>(false);
const showInMobile = ref<boolean>(property.showInMobile);
const { viewPortType } = useWindowDimensions();
const listAlignment = ref<typeof DropDownAlignment | number>(
property.alignment | DropDownAlignment.Left
);
const alignmentClass = computed(() => ({
"left-aligned-list": listAlignment.value === DropDownAlignment.Left,
"right-aligned-list": listAlignment.value === DropDownAlignment.Right,
}));
const handleMouseHoverEvent = (event: Event) => {
const eventType = event.type;
if (property.mode !== DropDownMode.onMouseHover) return;
if (eventType === "mouseover") {
isOpen.value = true;
} else if (eventType === "mouseleave") {
isOpen.value = false;
}
return;
};
const handleClickEvent = () => {
if (property.mode !== DropDownMode.onClick) return;
isOpen.value = !isOpen.value;
return;
};
const handleFocusOutEvent = () => {
if (property.mode !== DropDownMode.onClick) return;
isOpen.value = false;
return;
};
</script>
<template>
<div
class="dropdown-menu"
:class="alignmentClass"
v-on="{
mouseover: handleMouseHoverEvent,
mouseleave: handleMouseHoverEvent,
}"
v-if="
(showInMobile === true && viewPortType !== ViewPortType.DESKTOP) ||
(showInMobile === false && viewPortType !== ViewPortType.MOBILE)
"
>
<button
class="dropdown-label"
v-on="{
click: handleClickEvent,
focusout: handleFocusOutEvent,
}"
>
{{ property.label }}
</button>
<Transition name="dropdown-fade">
<div class="dropdown-item-list" v-if="isOpen">
<ul>
<li
v-for="entry in property.entries"
:key="property.entries.indexOf(entry)"
>
<NuxtLink :to="entry.link">{{ entry.text }}</NuxtLink>
</li>
</ul>
</div>
</Transition>
</div>
</template>
<style scoped>
.dropdown-fade-enter-active,
.dropdown-fade-leave-active {
transition: opacity 0.2s ease;
}
.dropdown-fade-enter-from,
.dropdown-fade-leave-to {
opacity: 0;
}
.dropdown-menu {
display: inline-block;
width: fit-content;
position: relative;
}
.dropdown-label {
background: none;
width: fit-content;
padding: 1rem 2rem;
border: transparent solid 3px;
font-size: 1em;
font-weight: bold;
color: var(--neptune1);
}
.dropdown-label:hover {
cursor: pointer;
color: var(--andromeda);
border-top: currentColor solid 3px;
transition: 0.2s linear;
}
.left-aligned-list {
text-align: left;
& .dropdown-item-list {
left: 0;
}
}
.right-aligned-list {
text-align: right;
& .dropdown-item-list {
right: 0;
text-align: left;
}
}
.dropdown-item-list {
display: block;
background: var(--neptune1);
color: var(--starlight);
font-weight: bold;
position: absolute;
top: auto;
min-width: 100%;
width: fit-content;
text-wrap: nowrap;
& ul {
list-style: none;
padding: 0 0.25rem;
}
& ul li {
margin: 0.5rem 0;
transition: 0.2s linear;
}
& ul li:first-child {
margin-top: 0;
}
& ul li:last-child {
margin-bottom: 0;
}
& ul li a {
display: block;
width: 100%;
text-decoration: none;
color: currentColor;
padding: 0 0.5rem;
}
& ul li:hover a {
text-decoration: currentColor underline dashed;
text-decoration-thickness: 2px;
}
}
</style>

View File

@@ -1,9 +1,7 @@
<script setup lang="ts"></script>
<template>
<div>
Component: newslist
</div>
<div>Component: newslist</div>
</template>
<style scoped></style>

View File

@@ -1,9 +1,274 @@
<script setup lang="ts"></script>
<script setup lang="ts">
import LogoSVG from "public/sera-logo-no-text.svg";
import SiteInfo from "assets/siteinfo.json";
const showTwitterIcon = ref<boolean>(false);
const getTimeRequest = await useFetch("/api/getTime");
const time: Date = new Date(getTimeRequest.data.value as number);
const timeGenerated: string = time.toLocaleString("ja-JP-u-ca-japanese", {
dateStyle: "medium",
timeStyle: "short",
});
const showThePast = (event: Event) => {
const eventType = event.type;
if (eventType === "mouseover") {
showTwitterIcon.value = true;
} else if (eventType === "mouseleave") {
showTwitterIcon.value = false;
}
};
</script>
<template>
<div>
Component: TheFooter
</div>
<footer>
<div class="footer-wrapper">
<div class="logo">
<LogoSVG />
</div>
<div class="top-column">
<div class="summary">
<h3>{{ SiteInfo.clubNameLong }}</h3>
<p>
宇宙分野に興味ある学生が<wbr />集い<wbr />宇宙理工学に<wbr />関する知識を<wbr />身に付けると共に<wbr />
宇宙分野に関連する<wbr />各種競技会へ<wbr />参加して<wbr />人間力と実践力を<wbr />養うことを目的に<wbr />活動しています
</p>
<NuxtLink to="/about/sera"
>About {{ SiteInfo.clubNameAbbreviation }}</NuxtLink
>
</div>
<div class="links">
<ul>
<li>
<NuxtLink to="/"> Home </NuxtLink>
</li>
<li>
<NuxtLink to="/news"> News </NuxtLink>
</li>
<li>
<NuxtLink to="/projects"> Projects </NuxtLink>
<ul>
<li>
<NuxtLink to="/projects/rocket">
Rocket
</NuxtLink>
</li>
<li>
<NuxtLink to="/projects/cansat">
CanSat
</NuxtLink>
</li>
<li>
<NuxtLink to="/projects/kosen-x">
CubeSat Kosen-x
</NuxtLink>
</li>
<li>
<NuxtLink to="/projects/edu-robot">
Edu-Robot
</NuxtLink>
</li>
</ul>
</li>
<li>
<NuxtLink to="/about/sera">
About {{ SiteInfo.clubNameAbbreviation }}
</NuxtLink>
</li>
</ul>
</div>
<div class="sns-list">
<h3>
{{ SiteInfo.clubNameAbbreviation
}}<wbr /><wbr />フォロー<wbr />する
</h3>
<ul>
<li>
<NuxtLink
to="https://twitter.com/SERA_NITGC"
target="_blank"
v-on="{
mouseover: showThePast,
mouseleave: showThePast,
}"
>
<Transition name="show-the-past">
<Icon
name="simple-icons:x"
v-show="!showTwitterIcon"
/>
</Transition>
<Transition name="show-the-past">
<Icon
name="simple-icons:twitter"
v-show="showTwitterIcon"
/>
</Transition>
</NuxtLink>
</li>
<li>
<NuxtLink
to="https://www.instagram.com/sera_nitgc_official"
target="_blank"
>
<Icon name="simple-icons:instagram" />
</NuxtLink>
</li>
</ul>
</div>
</div>
<div class="bottom-column">
<p>最終更新: {{ timeGenerated }}</p>
<p>
このHPは{{
SiteInfo.clubNameAbbreviation
}}の学生が開発運営しています
</p>
<p>
© {{ SiteInfo.copyrightYear }} NIT-GC
{{ SiteInfo.clubNameAbbreviation }} All Rights Reserved.
</p>
</div>
</div>
</footer>
</template>
<style scoped></style>
<style scoped>
.show-the-past-enter-active,
.show-the-past-leave-active {
transition: opacity 30s cubic-bezier(1, 0, 1, 0.75);
}
.show-the-past-enter-from,
.show-the-past-leave-to {
opacity: 0;
}
footer {
background: var(--ocean-blue);
color: var(--sunlight);
width: 100vw;
}
.footer-wrapper {
display: grid;
grid-template-columns: 1fr;
grid-template-rows: auto auto auto;
max-width: 1400px;
width: 90%;
margin: auto;
padding: 2rem 0;
& h3 {
text-transform: uppercase;
}
& p {
font-size: 0.75em;
}
& a {
text-decoration: none;
color: var(--sunlight);
}
& a:hover {
text-decoration: currentColor underline dashed;
text-decoration-thickness: 2px;
}
}
.logo {
height: fit-content;
& svg {
width: auto;
height: 56px;
}
}
.top-column {
display: grid;
grid-template-columns: 2fr 5fr 1fr;
grid-template-rows: 1fr;
padding-bottom: 1rem;
border-bottom: var(--sunlight) solid 3px;
}
.links ul {
list-style: none;
font-weight: 600;
& li {
margin: 0.25rem 0;
}
& > li:first-child {
margin-top: 0;
}
& > li:last-child {
margin-bottom: 0;
}
}
.sns-list h3 {
word-break: keep-all;
overflow-wrap: break-word;
}
.sns-list ul {
list-style: none;
display: flex;
padding: 0;
li {
margin-right: 0.5rem;
a span {
width: 48px;
height: 48px;
}
}
li:first-child {
a {
position: relative;
display: block;
width: 48px;
height: 48px;
}
a span {
position: absolute;
}
}
li:last-child {
margin-right: 0;
}
li:hover {
transform: scale(120%);
transition: all 0.2s ease;
}
}
.bottom-column {
display: flex;
margin: 1rem auto;
& > * {
margin: 0 0.5rem;
}
}
/* Phone Style */
@media screen and (max-width: 640px) {
.top-column {
grid-template-columns: auto;
grid-template-rows: auto auto auto;
}
.summary {
word-break: keep-all;
overflow-wrap: break-word;
}
.sns-list {
display: block;
margin: auto;
}
.bottom-column {
display: block;
& > * {
margin: 0.5rem 0;
}
}
}
</style>

View File

@@ -1,44 +1,101 @@
<script setup lang="ts"></script>
<script setup lang="ts">
import LogoSVG from "public/sera-logo-no-text.svg";
import type { DropDownEntry } from "~/utils/dropDown";
const exploreDropDownEntries: Array<DropDownEntry> = [
{ text: "Home", link: "/" },
{ text: "Projects", link: "/projects" },
{ text: "CanSat", link: "/projects/cansat" },
{ text: "Edu-Robot", link: "/projects/edu-robot" },
{ text: "CubeSat Kosen-X", link: "/projects/kosen-x" },
{ text: "Rocket", link: "/projects/rocket" },
{ text: "About", link: "/about" },
];
const mediaDropDownEntries: Array<DropDownEntry> = [
{ text: "News", link: "/news" },
{ text: "Gallery", link: "/about/gallery" },
];
</script>
<template>
<div>
<ul>
<li>
<NuxtLink to="/news">
News
</NuxtLink>
</li>
<li>
<NuxtLink to="/projects">
Projects
</NuxtLink>
</li>
<li>Link</li>
<li>Contact</li>
<li>
<NuxtLink to="/about">
About SERA
</NuxtLink>
</li>
</ul>
<NuxtLink to="/">
<img ref="/sera-logo-no-text.svg">
</NuxtLink>
<ul>
<li>
<NuxtLink to="/">For non-member</NuxtLink>
</li>
<li>
<NuxtLink to="/">Info</NuxtLink>
</li>
</ul>
</div>
<header>
<div class="navigation-menu">
<div id="header-left">
<DropDown
label="Explore"
:mode="DropDownMode.onClick"
:alignment="DropDownAlignment.Left"
:entries="exploreDropDownEntries"
:show-in-mobile="false"
/>
</div>
<div id="logo-link">
<NuxtLink to="/">
<LogoSVG role="img" id="logo-img" />
</NuxtLink>
</div>
<div id="header-right">
<DropDown
label="Media"
:mode="DropDownMode.onClick"
:alignment="DropDownAlignment.Right"
:entries="mediaDropDownEntries"
:show-in-mobile="false"
/>
</div>
</div>
</header>
</template>
<style scoped>
div {
display: grid;
grid-row: 1fr;
grid-template-columns: 1fr 1fr 1fr;
.navigation-menu {
display: grid;
grid-template-rows: 1fr;
grid-template-columns: 1fr 1fr 1fr;
line-height: 1.8;
padding: 1.25rem 3rem;
height: 64px;
background: var(--deep-space);
}
#header-left,
#header-right {
display: flex;
}
#header-left {
flex-direction: row;
}
#header-right {
flex-direction: row-reverse;
& ul {
list-style: none;
display: flex;
justify-items: space-between;
}
}
#logo-link {
display: flex;
justify-content: center;
& a {
width: fit-content;
background: var(--moonlight);
padding: 0.5rem;
margin-top: -0.5rem;
border-radius: 3rem;
filter: drop-shadow(0 0 0.5rem var(--moonlight));
}
& a:hover {
transform: scale(110%);
transition: 0.2s ease-in;
}
}
#logo-img {
width: 128px;
height: auto;
}
</style>

View File

@@ -0,0 +1,47 @@
/**
* Vue Composable for getting window dimensions
* @module composables/windowDimensions
*/
/**
* Enums for viewport types
* @enum {number}
*/
export const enum ViewPortType {
DESKTOP,
TABLET,
MOBILE
};
/**
* Vue Composable for getting window dimensions and viewport type based on width
* @returns {object} returns the references of width, height, and viewport type
*/
export function useWindowDimensions() {
const width = ref<number>(0);
const height = ref<number>(0);
const viewPortType = ref<ViewPortType>(ViewPortType.DESKTOP);
function update(event: Event | undefined) {
width.value = window.innerWidth;
height.value = window.innerHeight;
if (width.value >= 1024) {
viewPortType.value = ViewPortType.DESKTOP;
}
else if (width.value < 640) {
viewPortType.value = ViewPortType.MOBILE;
}
else {
viewPortType.value = ViewPortType.TABLET;
}
}
onMounted(() => {
update(undefined);
window.addEventListener("resize", update);
});
onUnmounted(() => window.removeEventListener("resize", update));
return { width, height, viewPortType };
}

1
docs/.nojekyll Normal file
View File

@@ -0,0 +1 @@
TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false.

50
docs/assets/highlight.css Normal file
View File

@@ -0,0 +1,50 @@
:root {
--light-hl-0: #795E26;
--dark-hl-0: #DCDCAA;
--light-hl-1: #000000;
--dark-hl-1: #D4D4D4;
--light-hl-2: #A31515;
--dark-hl-2: #CE9178;
--light-hl-3: #008000;
--dark-hl-3: #6A9955;
--light-code-background: #FFFFFF;
--dark-code-background: #1E1E1E;
}
@media (prefers-color-scheme: light) { :root {
--hl-0: var(--light-hl-0);
--hl-1: var(--light-hl-1);
--hl-2: var(--light-hl-2);
--hl-3: var(--light-hl-3);
--code-background: var(--light-code-background);
} }
@media (prefers-color-scheme: dark) { :root {
--hl-0: var(--dark-hl-0);
--hl-1: var(--dark-hl-1);
--hl-2: var(--dark-hl-2);
--hl-3: var(--dark-hl-3);
--code-background: var(--dark-code-background);
} }
:root[data-theme='light'] {
--hl-0: var(--light-hl-0);
--hl-1: var(--light-hl-1);
--hl-2: var(--light-hl-2);
--hl-3: var(--light-hl-3);
--code-background: var(--light-code-background);
}
:root[data-theme='dark'] {
--hl-0: var(--dark-hl-0);
--hl-1: var(--dark-hl-1);
--hl-2: var(--dark-hl-2);
--hl-3: var(--dark-hl-3);
--code-background: var(--dark-code-background);
}
.hl-0 { color: var(--hl-0); }
.hl-1 { color: var(--hl-1); }
.hl-2 { color: var(--hl-2); }
.hl-3 { color: var(--hl-3); }
pre, code { background: var(--code-background); }

18
docs/assets/icons.js Normal file

File diff suppressed because one or more lines are too long

1
docs/assets/icons.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 14 KiB

60
docs/assets/main.js Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAA5WRy2rDMBBF/0VrU0NpQ/Gu4C4LWYR0EYxxrXEsqhfSCDcU/3vlYscPxUm6EmjuHM0cHX4IwjeShBSaxUfAHRNAIqILrP2lUNRxsLEv5n3xoUbBfeKLSUqSx4iUNePUgCTJ4QyjUBWO4wiqnCyRKTlH9bE5cvPUZm10RpVKaGWLz26MxgdUk/pWaTtYOOgknS/Td02+Z9BslcHdSU88gHTiBnzaOH/pZbKNs/CxusQo6epLFxhXDTpk3MbUKJ2qRobO/ur5UL/LUtqHXzk7Sj8ELlUtmEF+3dAQfVc0+IAVahe9DXyTaE4jkUkEUxVlKGDWsNDxvLlA3voTDP4LPvSE/KzNfgEyahnGlgMAAA=="

1
docs/assets/search.js Normal file
View File

@@ -0,0 +1 @@
window.searchData = "data:application/octet-stream;base64,H4sIAAAAAAAAA8WZXW/iOBSG/0u4RbTHkPBxN7OttNV2NNUumr1ACFFiStSQRCEMM0L89z3Ol4+xQQ7Q7lWbxO/rc44f24nZO2m82zijyd55DyLfGbG2E83X3Bk52ywIN3d+GicP8S5y2s42DfH2Ova3Id/c5Y9n1ePOKluH2GYRzjcbjoaOc2hXnoPa86Fs/i32ee3Io+1a86MtDeZtJ5mnPMr0OGW34NX9xuiz3fA/4588bdhv60hrE4TiciqiP8Jg8d48mEp2TRz6gHwJg7doLTysAqqbXz80z3x5UaetUtioDjJNYyx/B2+ry4KplFdHw1xPG5wX/MvT7HcdWRBlPF3OF/o0PJZcOj73rFeHEc5feXhp361K3agydcYnQlrT9aNpRKX4pgGhOA3Q7NKYpP6mYW1W8e4JZ/9rEF5eryOTmwY419adptFRh2tDM02+RxyZJjMvb3+LaZfxX02qIvttlcpG1SjSPLUCBNH7ZaGUyqtCka8k8yS4e+PZOFhLmqv3EXw2K5+dfRnxZFo+X863oSzychstsiCOVLOy1fkhpZGZIl/E6yTezF9FpDt8Fu8esGm0Eb1pqZDGs+PGtrnhG8u/p/qReZ7tyWBxvghnkyRRum5XzrPZLPud8FvF1jI9qLtoHraxI1NtT8ycXeBnq09IrlN19HEpVmU8kemKKy9PH5hq3dP/luvPgO9e4jQbfw65naP+PjNv+anww5R08Y58NmGqu8n6QV7YHx7/+Wv8/eWqcFrS5ILCKlUxxjj+8vX5cXxdiLXHh0T47fvXp+fH6yKsPa6OcNrGVwyf/3JGewc/uUUTNGCdbmeIjsuAh744sCiCbwvn8u3Pjxfb/N9p2ewHX2RxKhoXre/unfbkvs2GHQ8G02l7UonzB/mNykPeyYWAV2ASgiYERcjwipmETBMyRdjFq65J2NWEXUXYw6ueSdjThD1F6OKVaxK6mtBVhB5eeSahpwk9RdjHq75J2NeEfUU4wKuBSTjQhANFiARNhibhUBMOVQAED2BkB3R44IieHB8zPwaAVIJAcAFGhkCHCFSKQLABRo5ABwlUkkDwAUaWQIcJVJpAMAJGnkAHClSiQHACRqZAhwpUqkCwAkauQAcLVLJA8AJGtkCHC1S6QDADRr5ABwxUwphghhkJYzphTCWMCWaYkTCmE8aO1qh8kTKvUoZlSiWMCWYYEtbruKBqdcCYChjrndTqfDGVLyaIYUY4mc4XU/lighhmhJPpfDGVLyaIYUY4mc5XeSvf1HA3y7j/VGxuuCdV3yV7Z1bueDj+5aa8d3CIR/vDQe5weEU2OfFM9ETOP6QPMOmDS4KVT/EFm+Xf1sTJI06elZO+1/vkG5RYD4j1wMq6/mInLn3i0rd02bxncaIUvkcK79q5pHGCuUXGASB2vUZuvDhuIvl1SX7dRl7FQSexIk6NjJL6AFqakbLbVb0+4iQBEdzBDvfq448MHWGd2bFenklLD0KiHYhh/uODNHClgR09xcEYKQVxADuLdXkiS0pBJiuzG5VjRobSYWhlEEeL4hcp6UGItQM2RlTxa3RV/MRG8iHpWBmlx3CQgtgtXuKwO4j00gKdPHazJxNLoIoqGWRmF09xlkviICsL2C0tWNmzyzAZcrAbc3lw6+c/DUszMqHt5rM42kjw20/bCQlErFuImV2+5VEY8SJjxyzGDjfrJEg4TlGUTKaHw39hOuYxJh8AAA==";

1448
docs/assets/style.css Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,3 @@
<!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>useWindowDimensions | sera-hp</title><meta name="description" content="Documentation for sera-hp"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">sera-hp</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">sera-hp</a></li><li><a href="../modules/composables_windowDimensions.html">composables/windowDimensions</a></li><li><a href="composables_windowDimensions.useWindowDimensions.html">useWindowDimensions</a></li></ul><h1>Function useWindowDimensions</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="useWindowDimensions" class="tsd-anchor"></a><span class="tsd-kind-call-signature">use<wbr/>Window<wbr/>Dimensions</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">{ </span><br/><span>    </span><span class="tsd-kind-property">height</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Ref</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">viewPortType</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Ref</span><span class="tsd-signature-symbol">&lt;</span><a href="../enums/composables_windowDimensions.ViewPortType.html" class="tsd-signature-type tsd-kind-enum">ViewPortType</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">width</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Ref</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">; </span><br/><span class="tsd-signature-symbol">}</span><a href="#useWindowDimensions" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Vue Composable for getting window dimensions and viewport type based on width</p>
</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-symbol">{ </span><br/><span>    </span><span class="tsd-kind-property">height</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Ref</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">viewPortType</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Ref</span><span class="tsd-signature-symbol">&lt;</span><a href="../enums/composables_windowDimensions.ViewPortType.html" class="tsd-signature-type tsd-kind-enum">ViewPortType</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">width</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Ref</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">; </span><br/><span class="tsd-signature-symbol">}</span></h4><p>returns the references of width, height, and viewport type</p>
<ul class="tsd-parameters"><li class="tsd-parameter"><h5><span class="tsd-kind-property">height</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Ref</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">&gt;</span></h5></li><li class="tsd-parameter"><h5><span class="tsd-kind-property">view<wbr/>Port<wbr/>Type</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Ref</span><span class="tsd-signature-symbol">&lt;</span><a href="../enums/composables_windowDimensions.ViewPortType.html" class="tsd-signature-type tsd-kind-enum">ViewPortType</a><span class="tsd-signature-symbol">&gt;</span></h5></li><li class="tsd-parameter"><h5><span class="tsd-kind-property">width</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Ref</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">&gt;</span></h5></li></ul><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in composables/windowDimensions.ts:20</li></ul></aside></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>sera-hp</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>

14
docs/index.html Normal file
View File

@@ -0,0 +1,14 @@
<!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>sera-hp</title><meta name="description" content="Documentation for sera-hp"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="assets/style.css"/><link rel="stylesheet" href="assets/highlight.css"/><script defer src="assets/main.js"></script><script async src="assets/icons.js" id="tsd-icons-script"></script><script async src="assets/search.js" id="tsd-search-script"></script><script async src="assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base="."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="index.html" class="title">sera-hp</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><h2>sera-hp</h2></div><div class="tsd-panel tsd-typography"><a id="md:sera-new-hp" class="tsd-anchor"></a><h1 class="tsd-anchor-link">sera-new-hp<a href="#md:sera-new-hp" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h1><p>更新が止まっているSERA HPを置き換えるよりモダンなHP</p>
<a id="md:使用言語、ライブラリー、フレームワーク、ツール" class="tsd-anchor"></a><h2 class="tsd-anchor-link">使用言語、ライブラリー、フレームワーク、ツール<a href="#md:使用言語、ライブラリー、フレームワーク、ツール" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><ul>
<li>JavaScript、TypeScript、Vue</li>
<li>Nuxt</li>
<li>node npm</li>
<li>sqlite</li>
</ul>
<a id="md:開発を開始する" class="tsd-anchor"></a><h2 class="tsd-anchor-link">開発を開始する<a href="#md:開発を開始する" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><blockquote>
<p>初めてこのプロジェクトに参加する際には<code>CONTRIBUTING.md</code><em><strong>必ず</strong></em>読んでおくこと</p>
</blockquote>
<pre><code class="bash"><span class="hl-0">git</span><span class="hl-1"> </span><span class="hl-2">clone</span><span class="hl-1"> </span><span class="hl-2">https://git.kenryu.us/kenryuS/sera-new-hp.git</span><span class="hl-1"> </span><span class="hl-3"># レポジトリをクローン</span><br/><span class="hl-0">cd</span><span class="hl-1"> </span><span class="hl-2">sera-new-hp</span><span class="hl-1"> </span><span class="hl-3"># 移動して</span><br/><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-2">install</span><span class="hl-1"> </span><span class="hl-3"># 依存パッケージのインストール</span><br/><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-2">run</span><span class="hl-1"> </span><span class="hl-2">dev</span><span class="hl-1"> </span><span class="hl-3"># デベロッパーモードでサイトを構築</span>
</code><button type="button">Copy</button></pre>
</div></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><a href="#md:sera-new-hp"><span>sera-<wbr/>new-<wbr/>hp</span></a><ul><li><a href="#md:使用言語、ライブラリー、フレームワーク、ツール"><span>使用言語、ライブラリー、フレームワーク、ツール</span></a></li><li><a href="#md:開発を開始する"><span>開発を開始する</span></a></li></ul></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="index.html" class="current"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="assets/icons.svg#icon-1"></use></svg><span>sera-hp</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base="."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>

View File

@@ -0,0 +1,6 @@
<!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>DropDownEntry | sera-hp</title><meta name="description" content="Documentation for sera-hp"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">sera-hp</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">sera-hp</a></li><li><a href="../modules/utils_dropDown.html">utils/dropDown</a></li><li><a href="utils_dropDown.DropDownEntry.html">DropDownEntry</a></li></ul><h1>Interface DropDownEntry</h1></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>Interface for the entry of DropDown menu</p>
</div><div class="tsd-comment tsd-typography"></div></section><div class="tsd-signature"><span class="tsd-signature-keyword">interface </span><span class="tsd-kind-interface">DropDownEntry</span> <span class="tsd-signature-symbol">{ </span><br/><span>    </span><a class="tsd-kind-property" href="utils_dropDown.DropDownEntry.html#link">link</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><a class="tsd-kind-property" href="utils_dropDown.DropDownEntry.html#text">text</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span class="tsd-signature-symbol">}</span></div><aside class="tsd-sources"><ul><li>Defined in utils/dropDown.ts:30</li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" role="button" aria-expanded="false" tabIndex="0"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-chevronSmall"></use></svg> Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="utils_dropDown.DropDownEntry.html#link" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>link</span></a>
<a href="utils_dropDown.DropDownEntry.html#text" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>text</span></a>
</div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Properties"><h2><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg> Properties</h2></summary><section><section class="tsd-panel tsd-member"><a id="link" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>link</span><a href="#link" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">link</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><div class="tsd-comment tsd-typography"><p>Hyperlink to the page</p>
</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in utils/dropDown.ts:32</li></ul></aside></section><section class="tsd-panel tsd-member"><a id="text" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>text</span><a href="#text" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">text</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><div class="tsd-comment tsd-typography"><p>Text to be displayed on the menu</p>
</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in utils/dropDown.ts:31</li></ul></aside></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="tsd-otp-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Properties</summary><div><a href="#link" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>link</span></a><a href="#text" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>text</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>sera-hp</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>

View File

@@ -0,0 +1,12 @@
<!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>DropDownProperty | sera-hp</title><meta name="description" content="Documentation for sera-hp"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">sera-hp</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">sera-hp</a></li><li><a href="../modules/utils_dropDown.html">utils/dropDown</a></li><li><a href="utils_dropDown.DropDownProperty.html">DropDownProperty</a></li></ul><h1>Interface DropDownProperty</h1></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>Interface for the property of DropDown component</p>
</div><div class="tsd-comment tsd-typography"></div></section><div class="tsd-signature"><span class="tsd-signature-keyword">interface </span><span class="tsd-kind-interface">DropDownProperty</span> <span class="tsd-signature-symbol">{ </span><br/><span>    </span><a class="tsd-kind-property" href="utils_dropDown.DropDownProperty.html#alignment">alignment</a><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><a class="tsd-kind-property" href="utils_dropDown.DropDownProperty.html#entries">entries</a><span class="tsd-signature-symbol">: </span><a href="utils_dropDown.DropDownEntry.html" class="tsd-signature-type tsd-kind-interface">DropDownEntry</a><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><a class="tsd-kind-property" href="utils_dropDown.DropDownProperty.html#label">label</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><a class="tsd-kind-property" href="utils_dropDown.DropDownProperty.html#mode">mode</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><a class="tsd-kind-property" href="utils_dropDown.DropDownProperty.html#showInMobile">showInMobile</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">; </span><br/><span class="tsd-signature-symbol">}</span></div><aside class="tsd-sources"><ul><li>Defined in utils/dropDown.ts:44</li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" role="button" aria-expanded="false" tabIndex="0"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-chevronSmall"></use></svg> Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="utils_dropDown.DropDownProperty.html#alignment" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>alignment?</span></a>
<a href="utils_dropDown.DropDownProperty.html#entries" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>entries</span></a>
<a href="utils_dropDown.DropDownProperty.html#label" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>label</span></a>
<a href="utils_dropDown.DropDownProperty.html#mode" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>mode</span></a>
<a href="utils_dropDown.DropDownProperty.html#showInMobile" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>show<wbr/>In<wbr/>Mobile</span></a>
</div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Properties"><h2><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg> Properties</h2></summary><section><section class="tsd-panel tsd-member"><a id="alignment" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag">Optional</code><span>alignment</span><a href="#alignment" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">alignment</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">number</span></div><div class="tsd-comment tsd-typography"><p>Explicitly assign the alignment of the component</p>
</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in utils/dropDown.ts:49</li></ul></aside></section><section class="tsd-panel tsd-member"><a id="entries" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>entries</span><a href="#entries" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">entries</span><span class="tsd-signature-symbol">:</span> <a href="utils_dropDown.DropDownEntry.html" class="tsd-signature-type tsd-kind-interface">DropDownEntry</a><span class="tsd-signature-symbol">[]</span></div><div class="tsd-comment tsd-typography"><p>Entries of DropDown menu</p>
</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in utils/dropDown.ts:47</li></ul></aside></section><section class="tsd-panel tsd-member"><a id="label" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>label</span><a href="#label" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">label</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><div class="tsd-comment tsd-typography"><p>Label of the component</p>
</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in utils/dropDown.ts:45</li></ul></aside></section><section class="tsd-panel tsd-member"><a id="mode" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>mode</span><a href="#mode" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">mode</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><div class="tsd-comment tsd-typography"><p>Interaction mode of the component</p>
</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in utils/dropDown.ts:46</li></ul></aside></section><section class="tsd-panel tsd-member"><a id="showInMobile" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>show<wbr/>In<wbr/>Mobile</span><a href="#showInMobile" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">show<wbr/>In<wbr/>Mobile</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><div class="tsd-comment tsd-typography"><p>Whether to show the component in mobile(&lt;640px) environemnt</p>
</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in utils/dropDown.ts:48</li></ul></aside></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="tsd-otp-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Properties</summary><div><a href="#alignment" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>alignment</span></a><a href="#entries" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>entries</span></a><a href="#label" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>label</span></a><a href="#mode" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>mode</span></a><a href="#showInMobile" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>show<wbr/>In<wbr/>Mobile</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>sera-hp</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>

View File

@@ -0,0 +1,4 @@
<!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>api/getTime | sera-hp</title><meta name="description" content="Documentation for sera-hp"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">sera-hp</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">sera-hp</a></li><li><a href="api_getTime.html">api/getTime</a></li></ul><h1>Module api/getTime</h1></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>Getting Unix time when the API was called.</p>
</div><div class="tsd-comment tsd-typography"><h4 class="tsd-anchor-link"><a id="Exports" class="tsd-anchor"></a>Exports<a href="#Exports" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><p>defineEventHandler(getTimeEventHandler)</p>
</div></section><aside class="tsd-sources"><ul><li>Defined in server/api/getTime.ts:1</li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><h3 class="tsd-index-heading uppercase">Index</h3><section class="tsd-index-section"><h3 class="tsd-index-heading">Functions</h3><div class="tsd-index-list"><a href="../functions/api_getTime.default.html" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-64"></use></svg><span>default</span></a>
</div></section></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>sera-hp</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>

View File

@@ -0,0 +1,4 @@
<!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>composables/windowDimensions | sera-hp</title><meta name="description" content="Documentation for sera-hp"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">sera-hp</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">sera-hp</a></li><li><a href="composables_windowDimensions.html">composables/windowDimensions</a></li></ul><h1>Module composables/windowDimensions</h1></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>Vue Composable for getting window dimensions</p>
</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in composables/windowDimensions.ts:1</li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><h3 class="tsd-index-heading uppercase">Index</h3><section class="tsd-index-section"><h3 class="tsd-index-heading">Enumerations</h3><div class="tsd-index-list"><a href="../enums/composables_windowDimensions.ViewPortType.html" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-8"></use></svg><span>View<wbr/>Port<wbr/>Type</span></a>
</div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Functions</h3><div class="tsd-index-list"><a href="../functions/composables_windowDimensions.useWindowDimensions.html" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-64"></use></svg><span>use<wbr/>Window<wbr/>Dimensions</span></a>
</div></section></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>sera-hp</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>

View File

@@ -0,0 +1,6 @@
<!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>utils/dropDown | sera-hp</title><meta name="description" content="Documentation for sera-hp"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">sera-hp</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">sera-hp</a></li><li><a href="utils_dropDown.html">utils/dropDown</a></li></ul><h1>Module utils/dropDown</h1></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>Types for DropDown component</p>
</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in utils/dropDown.ts:1</li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><h3 class="tsd-index-heading uppercase">Index</h3><section class="tsd-index-section"><h3 class="tsd-index-heading">Enumerations</h3><div class="tsd-index-list"><a href="../enums/utils_dropDown.DropDownAlignment.html" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-8"></use></svg><span>Drop<wbr/>Down<wbr/>Alignment</span></a>
<a href="../enums/utils_dropDown.DropDownMode.html" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-8"></use></svg><span>Drop<wbr/>Down<wbr/>Mode</span></a>
</div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Interfaces</h3><div class="tsd-index-list"><a href="../interfaces/utils_dropDown.DropDownEntry.html" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-256"></use></svg><span>Drop<wbr/>Down<wbr/>Entry</span></a>
<a href="../interfaces/utils_dropDown.DropDownProperty.html" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-256"></use></svg><span>Drop<wbr/>Down<wbr/>Property</span></a>
</div></section></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>sera-hp</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>

88
eslint.config.js Normal file
View File

@@ -0,0 +1,88 @@
import pluginVue from 'eslint-plugin-vue';
import pluginTypeScript from 'typescript-eslint';
import pluginPrettier from 'eslint-plugin-prettier/recommended';
import parserVue from 'vue-eslint-parser';
import * as parserJavaScript from 'espree';
export default [
...pluginVue.configs['flat/essential'],
pluginPrettier,
{
files: ["**/*.vue"],
ignores: [
".nuxt/*",
".nuxt/**/*",
"src-manager/*",
"public/*"
],
plugins: {
'@typescript-eslint': pluginTypeScript.plugin
},
languageOptions: {
parser: parserVue,
parserOptions: {
parser: {
js: parserJavaScript,
ts: pluginTypeScript.parser
}
}
},
rules: {
"no-unused-vars": "error",
"no-unused-expressions": "error",
"no-lonely-if": "error",
"no-const-assign": "error",
"dot-notation": "error",
"no-undef": "error",
"default-case-last": "error",
"default-param-last": "error",
"default-case": "warn",
"eqeqeq": "error",
"func-style": [
"error",
"declaration",
{
"allowArrowFunctions": true,
"overrides": {
"namedExports": "ignore"
}
}
],
"max-params": [
"error",
3
],
"max-depth": [
"error",
3
],
"no-console": "warn",
"vue/html-indent": [
"error",
4,
{
"baseIndent": 1,
}
],
"vue/max-props": [
"error",
{
maxProps: 5
}
],
"vue/multi-word-component-names": "off",
// "@typescript-eslint/no-array-constructor": "error",
// "@typescript-eslint/no-unsafe-assignment": "error",
// "@typescript-eslint/no-unsafe-call": "error",
// "@typescript-eslint/no-unsafe-function-type": "error",
// "@typescript-eslint/no-unsafe-declaration-merging": "error",
// "@typescript-eslint/no-unsafe-enum-comparison": "error",
// "@typescript-eslint/no-unsafe-member-access": "error",
// "@typescript-eslint/no-unsafe-return": "error",
// "@typescript-eslint/no-unsafe-unary-minus": "error",
}
}
]

View File

@@ -1,12 +1,15 @@
<script setup lang="ts"></script>
<template>
<div>
<TheHeader />
Layout: default
<slot />
<div class="website-content">
<slot />
</div>
<TheFooter />
</div>
</template>
<style scoped></style>
<style scoped>
.website-content {
width: 90%;
margin: auto;
}
</style>

View File

@@ -1,5 +1,24 @@
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
compatibilityDate: '2024-04-03',
devtools: { enabled: true }
})
app: {
pageTransition: { name: 'page', mode: 'out-in' }
},
routeRules: {
'/': { prerender: true },
'/about/**': { prerender: true },
'/news/**': { prerender: true },
'/projects/**': { prerender: true }
},
devtools: { enabled: true },
eslint: {
lintOnStart: false
},
modules: [
'@nuxt/image',
'nuxt-svgo',
'@nuxtjs/eslint-module',
'@nuxtjs/sitemap',
'@nuxt/icon'
]
})

24485
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,17 +1,33 @@
{
"name": "nuxt-app",
"private": true,
"type": "module",
"scripts": {
"build": "nuxt build",
"dev": "nuxt dev",
"generate": "nuxt generate",
"preview": "nuxt preview",
"postinstall": "nuxt prepare"
},
"dependencies": {
"nuxt": "^3.12.4",
"sqlite3": "^5.1.7",
"vue": "latest"
}
"name": "sera-hp",
"private": true,
"type": "module",
"scripts": {
"build": "nuxt build",
"dev": "nuxt dev",
"generate": "nuxt generate",
"preview": "nuxt preview",
"postinstall": "nuxt prepare"
},
"dependencies": {
"nuxt": "^3.12.4",
"sqlite3": "^5.1.7",
"vue": "latest"
},
"devDependencies": {
"@nuxt/icon": "^1.5.1",
"@nuxt/image": "^1.7.0",
"@nuxtjs/eslint-module": "^4.1.0",
"@nuxtjs/sitemap": "^6.0.1",
"eslint": "^9.9.1",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-prettier": "^5.2.1",
"eslint-plugin-vue": "^9.28.0",
"nuxt-svgo": "^4.0.3",
"prettier": "^3.3.3",
"typedoc": "^0.26.7",
"typescript": "^5.5.4",
"typescript-eslint": "^8.4.0",
"vue-eslint-parser": "^9.4.3"
}
}

View File

@@ -1,5 +1,3 @@
<template>
<div>
Page: achievements
</div>
<div>Page: achievements</div>
</template>

View File

@@ -1,5 +1,3 @@
<template>
<div>
Page: gallery
</div>
<div>Page: gallery</div>
</template>

View File

@@ -1,5 +1,3 @@
<template>
<div>
Page: index
</div>
<div>Page: index</div>
</template>

View File

@@ -1,5 +1,3 @@
<template>
<div>
Page: sera
</div>
<div>Page: sera</div>
</template>

View File

@@ -1,10 +1,10 @@
<script setup lang="ts"></script>
<template>
<div>
Page: index
<NewsList />
</div>
<div>
Page: index
<NewsList />
</div>
</template>
<style scoped></style>

View File

@@ -1,9 +1,7 @@
<script setup lang="ts"></script>
<template>
<div>
Page: news/[article]
</div>
<div>Page: news/[article]</div>
</template>
<style scoped></style>

View File

@@ -1,9 +1,7 @@
<script setup lang="ts"></script>
<template>
<div>
Page: news/index
</div>
<div>Page: news/index</div>
</template>
<style scoped></style>

View File

@@ -1,5 +1,3 @@
<template>
<div>
Page: cansat
</div>
<div>Page: cansat</div>
</template>

View File

@@ -1,5 +1,3 @@
<template>
<div>
Page: edu-robot
</div>
<div>Page: edu-robot</div>
</template>

View File

@@ -1,5 +1,3 @@
<template>
<div>
Page: index
</div>
<div>Page: index</div>
</template>

View File

@@ -1,5 +1,3 @@
<template>
<div>
Page: kosen-x
</div>
<div>Page: kosen-x</div>
</template>

View File

@@ -1,5 +1,3 @@
<template>
<div>
Page: rocket
</div>
<div>Page: rocket</div>
</template>

18
server/api/getTime.ts Normal file
View File

@@ -0,0 +1,18 @@
/**
* Getting Unix time when the API was called.
* @module api/getTime
* @exports defineEventHandler(getTimeEventHandler) */
/**
* Handler of getTime event
* @name getTimeEventHandler
* @param {H3Event<EventHandlerRequest>} event
* @returns {number} - Unix time
* @function
*/
const getTimeEventHandler = (event: any) => {
const now = new Date();
return now.valueOf();
};
export default defineEventHandler(getTimeEventHandler);

View File

@@ -1,3 +1,3 @@
{
"extends": "../.nuxt/tsconfig.server.json"
"extends": "../.nuxt/tsconfig.server.json"
}

23
src-manager/README.md Normal file
View File

@@ -0,0 +1,23 @@
# Content Manager
SERA Websiteのニュース等のコンテンツを管理する
## 使用言語、ライブラリー、フレームワーク、ツール
* JavaScript
* express
* htmx
* node npm
* sqlite
## 使用方法
```bash
cd src-manager/ # このディレクトリーに移動
npm install # 依存パッケージのインストール、まだ一度も実行していない場合
npm start # サーバーを起動、ブラウザで http://localhost:3001 に入る
```
## データベース
## API

View File

@@ -10,7 +10,7 @@ app.use(express.static(path.join(__dirname, "../assets")));
app.use(express.static(path.join(__dirname, "../public")));
app.get('/api/hello', (req, res) => {
res.send('Hello World!');
res.send('<li>Hello World!</li>');
});
app.listen(port, () => {

View File

@@ -15,6 +15,6 @@
Click Me!
</button>
<p id="list"></p>
<ul id="list"></ul>
</body>
</html>

View File

@@ -1,4 +1,4 @@
{
// https://nuxt.com/docs/guide/concepts/typescript
"extends": "./.nuxt/tsconfig.json"
// https://nuxt.com/docs/guide/concepts/typescript
"extends": "./.nuxt/tsconfig.json"
}

52
utils/dropDown.ts Normal file
View File

@@ -0,0 +1,52 @@
/**
* Types for DropDown component
* @module utils/dropDown
*/
/**
* Enum for interaction mode of DropDown component
* @enum {string}
*/
export const enum DropDownMode {
onMouseHover = "mousehover",
onClick = "click",
}
/**
* Enum for alignment of DropDown component
* @enum {number}
*/
export const enum DropDownAlignment {
Left,
Right,
}
/**
* Interface for the entry of DropDown menu
* @typedef {object} DropDownEntry
* @property {string} text - Text to be displayed on the menu
* @property {string} link - Hyperlink to the page
*/
interface DropDownEntry {
text: string;
link: string;
}
/**
* Interface for the property of DropDown component
* @typedef {object} DropDownProperty
* @property {string} label - Label of the component
* @property {(DropDownMode | string)} mode - Interaction mode of the component
* @property {Array<DropDownEntry>} entries - Entries of DropDown menu
* @property {boolean} showInMobile - Whether to show the component in mobile(<640px) environemnt
* @property {(DropDownAlignment | number)=} alignment - Explicitly assign the alignment of the component
*/
interface DropDownProperty {
label: string;
mode: DropDownMode | string;
entries: Array<DropDownEntry>;
showInMobile: boolean;
alignment?: DropDownAlignment | number;
}
export type { DropDownProperty, DropDownEntry };