From 38d0b6216715feb3c3d8e78d9256b5f63ccf5500 Mon Sep 17 00:00:00 2001 From: "Acid Chicken (硫酸鶏)" Date: Tue, 4 Apr 2023 09:38:34 +0900 Subject: build(#10336): Storybook & Chromatic & msw (#10365) * build(#10336): init * fix(#10336): invalid name conversion * build(#10336): load locales and vite config * refactor(#10336): remove unused imports * build(#10336): separate definitions and generated codes * refactor(#10336): remove hatches * refactor(#10336): module semantics * refactor(#10336): remove unused common preferences * fix: typo * build(#10336): mock assets * build(#10336): impl `SatisfiesExpression` * build(#10336): control themes * refactor(#10336): semantics * build(#10336): make .storybook as an individual TypeScript project * style(#10336): use single quote * build(#10336): avoid intrinsic component names * chore: suppress linter * style: typing * build(#10336): update dependencies * docs: note about Storybook * build(#10336): sync * build(#10336): full reload server on change * chore: use defaultStore instead * build(#10336): show popups on Story * refactor(#10336): remove redundant div * docs: fix * build(#10336): interactions * build(#10336): add an interaction test for `` * build(#10336): bump storybook * docs(#10336): mention to pre-build misskey-js * build(#10336): write stories for `MkAcct` * build(#10336): write stories for `MkAd` * build(#10336): fix missing type definition * build(#10336): use `toHaveTextContent` * build(#10336): write some stories * build(#10336): hide internal args * build(#10336): generate `components/global` stories only * build(#10336): write stories for `MkMisskeyFlavoredMarkdown` * fix: conflict errors * build(#10336): subcomponents on sidebar * refactor: restore `SatisfiesExpression` * docs(#10336): note development status * build(#10336): use chokidar-cli * docs(#10336): note chokidar-cli mode * chore(#10336): untrack generated stories files * fix: pointer handling * build(#10336): finalize * chore: add static option to `MkLoading` * refactor(#10336): bind to local args * fix: missing case * revert: restore `SatisfiesExpression` This reverts commit f246699f38a28befbfccc11e9eade22cbaace4f3. * build(#10336): make storybook buildable * build(#10336): staticify assets * build(#10336): staticified directory structure * build(#10336): normalize path for Windows * ci(#10336): create actions * build(#10336): ignore tsc errors * build(#10336): ignore tsc errors * build(#10336): missing dependencies * build(#10336): missing dependencies * build(#10336): use fast-glob * fix: invalid lockfile * ci(#10336): increase heap size * build(#10336): use unpkg for storybook tabler icons * build(#10336): use unpkg for storybook twemojis * build(#10336): disable `ProfilePageCat` * build(#10336): blur `MkA` before interaction ends * ci(#10336): stabilize * ci(#10336): fetch-depth * build(#10336): isChromatic * ci(#10336): notify on changes * ci(#10336): fix typo * ci(#10336): missing working directory * ci(#10336): skip build * ci(#10336): fix path * build(#10336): fails on Windows * build(#10336): available on Windows * ci(#10336): disable animation on chromatic * ci(#10336): add static option to `PageHeader.tabs` * chore: void * ci(#10336): change parameters * docs(#10336): update CONTRIBUTING * docs(#10336): note about meta overriding and etc. * ci(#10336): use Chromatic for checks * ci(#10336): use `pull_request` instead of `pull_request_target` for now * ci(#10336): use `exitOnceUploaded` * ci(#10336): reuse built storybook * ci(#10336): back to `pull_request_target` * chore: unused dependencies * style(#10336): reduce prettier indents * style: note about `TSSatisfiesExpression` --- .../src/components/MkAnalogClock.stories.impl.ts | 28 ++ .../src/components/MkButton.stories.impl.ts | 30 ++ .../src/components/MkCaptcha.stories.impl.ts | 2 + packages/frontend/src/components/MkContextMenu.vue | 2 +- packages/frontend/src/components/MkMenu.vue | 20 +- packages/frontend/src/components/MkUrlPreview.vue | 2 +- .../frontend/src/components/MkYouTubePlayer.vue | 73 +++++ .../frontend/src/components/MkYoutubePlayer.vue | 73 ----- .../src/components/global/MkA.stories.impl.ts | 47 ++++ .../src/components/global/MkAcct.stories.impl.ts | 43 +++ packages/frontend/src/components/global/MkAcct.vue | 1 - .../src/components/global/MkAd.stories.impl.ts | 120 ++++++++ packages/frontend/src/components/global/MkAd.vue | 2 +- .../src/components/global/MkAvatar.stories.impl.ts | 66 +++++ .../frontend/src/components/global/MkAvatar.vue | 1 + .../global/MkCustomEmoji.stories.impl.ts | 45 +++ .../components/global/MkEllipsis.stories.impl.ts | 32 +++ .../frontend/src/components/global/MkEllipsis.vue | 16 +- .../src/components/global/MkEmoji.stories.impl.ts | 31 ++ .../src/components/global/MkError.stories.meta.ts | 5 + .../components/global/MkLoading.stories.impl.ts | 60 ++++ .../frontend/src/components/global/MkLoading.vue | 8 +- .../MkMisskeyFlavoredMarkdown.stories.impl.ts | 74 +++++ .../components/global/MkPageHeader.stories.impl.ts | 98 +++++++ .../global/MkPageHeader.tabs.stories.impl.ts | 3 + .../src/components/global/MkPageHeader.tabs.vue | 18 +- .../global/MkStickyContainer.stories.impl.ts | 3 + .../src/components/global/MkTime.stories.impl.ts | 312 +++++++++++++++++++++ packages/frontend/src/components/global/MkTime.vue | 6 +- .../src/components/global/MkUrl.stories.impl.ts | 77 +++++ .../components/global/MkUserName.stories.impl.ts | 57 ++++ .../components/global/RouterView.stories.impl.ts | 3 + 32 files changed, 1259 insertions(+), 99 deletions(-) create mode 100644 packages/frontend/src/components/MkAnalogClock.stories.impl.ts create mode 100644 packages/frontend/src/components/MkButton.stories.impl.ts create mode 100644 packages/frontend/src/components/MkCaptcha.stories.impl.ts create mode 100644 packages/frontend/src/components/MkYouTubePlayer.vue delete mode 100644 packages/frontend/src/components/MkYoutubePlayer.vue create mode 100644 packages/frontend/src/components/global/MkA.stories.impl.ts create mode 100644 packages/frontend/src/components/global/MkAcct.stories.impl.ts create mode 100644 packages/frontend/src/components/global/MkAd.stories.impl.ts create mode 100644 packages/frontend/src/components/global/MkAvatar.stories.impl.ts create mode 100644 packages/frontend/src/components/global/MkCustomEmoji.stories.impl.ts create mode 100644 packages/frontend/src/components/global/MkEllipsis.stories.impl.ts create mode 100644 packages/frontend/src/components/global/MkEmoji.stories.impl.ts create mode 100644 packages/frontend/src/components/global/MkError.stories.meta.ts create mode 100644 packages/frontend/src/components/global/MkLoading.stories.impl.ts create mode 100644 packages/frontend/src/components/global/MkMisskeyFlavoredMarkdown.stories.impl.ts create mode 100644 packages/frontend/src/components/global/MkPageHeader.stories.impl.ts create mode 100644 packages/frontend/src/components/global/MkPageHeader.tabs.stories.impl.ts create mode 100644 packages/frontend/src/components/global/MkStickyContainer.stories.impl.ts create mode 100644 packages/frontend/src/components/global/MkTime.stories.impl.ts create mode 100644 packages/frontend/src/components/global/MkUrl.stories.impl.ts create mode 100644 packages/frontend/src/components/global/MkUserName.stories.impl.ts create mode 100644 packages/frontend/src/components/global/RouterView.stories.impl.ts (limited to 'packages/frontend/src/components') diff --git a/packages/frontend/src/components/MkAnalogClock.stories.impl.ts b/packages/frontend/src/components/MkAnalogClock.stories.impl.ts new file mode 100644 index 0000000000..05190aa268 --- /dev/null +++ b/packages/frontend/src/components/MkAnalogClock.stories.impl.ts @@ -0,0 +1,28 @@ +/* eslint-disable @typescript-eslint/explicit-function-return-type */ +import { StoryObj } from '@storybook/vue3'; +import MkAnalogClock from './MkAnalogClock.vue'; +export const Default = { + render(args) { + return { + components: { + MkAnalogClock, + }, + setup() { + return { + args, + }; + }, + computed: { + props() { + return { + ...this.args, + }; + }, + }, + template: '', + }; + }, + parameters: { + layout: 'fullscreen', + }, +} satisfies StoryObj; diff --git a/packages/frontend/src/components/MkButton.stories.impl.ts b/packages/frontend/src/components/MkButton.stories.impl.ts new file mode 100644 index 0000000000..e1c1c54d10 --- /dev/null +++ b/packages/frontend/src/components/MkButton.stories.impl.ts @@ -0,0 +1,30 @@ +/* eslint-disable @typescript-eslint/explicit-function-return-type */ +/* eslint-disable import/no-default-export */ +/* eslint-disable import/no-duplicates */ +import { StoryObj } from '@storybook/vue3'; +import MkButton from './MkButton.vue'; +export const Default = { + render(args) { + return { + components: { + MkButton, + }, + setup() { + return { + args, + }; + }, + computed: { + props() { + return { + ...this.args, + }; + }, + }, + template: 'Text', + }; + }, + parameters: { + layout: 'centered', + }, +} satisfies StoryObj; diff --git a/packages/frontend/src/components/MkCaptcha.stories.impl.ts b/packages/frontend/src/components/MkCaptcha.stories.impl.ts new file mode 100644 index 0000000000..6ac437a277 --- /dev/null +++ b/packages/frontend/src/components/MkCaptcha.stories.impl.ts @@ -0,0 +1,2 @@ +import MkCaptcha from './MkCaptcha.vue'; +void MkCaptcha; diff --git a/packages/frontend/src/components/MkContextMenu.vue b/packages/frontend/src/components/MkContextMenu.vue index 5bdf477241..b81c806b0c 100644 --- a/packages/frontend/src/components/MkContextMenu.vue +++ b/packages/frontend/src/components/MkContextMenu.vue @@ -17,8 +17,8 @@ import { onMounted, onBeforeUnmount } from 'vue'; import MkMenu from './MkMenu.vue'; import { MenuItem } from './types/menu.vue'; import contains from '@/scripts/contains'; -import * as os from '@/os'; import { defaultStore } from '@/store'; +import * as os from '@/os'; const props = defineProps<{ items: MenuItem[]; diff --git a/packages/frontend/src/components/MkMenu.vue b/packages/frontend/src/components/MkMenu.vue index 9e3022896c..e513a65a32 100644 --- a/packages/frontend/src/components/MkMenu.vue +++ b/packages/frontend/src/components/MkMenu.vue @@ -1,5 +1,5 @@