Theme Colours
Definition
- Rationale behind colour variants is single primary + 2 complementary shades of colour, with grayscale equivalents for background/foreground, accent gray colour: Total 10 for light and dark mode
- Primary colour is used on links mostly, secondary colour on headers, tertiary is on most components following Material 3 degisn, accent is on sub-content blocks
Implementation
- CSS colour variables in sets of numbers for RGB input ie. rgb(var(--color))
- To allow background transparency, use alpha value ie. rgba(var(--color), 0.5)
:root { --primary: 27, 63, 255; --secondary: 117, 153, 255; --tertiary: 221, 221, 255; --background: 255, 255, 255; --foreground: 0, 20, 20; --accent: 221, 221, 221; } .darked:root { --primary: 50, 228, 255; --secondary: 36, 159, 179; --tertiary: 22, 98, 100; --background: 0, 0, 0; --foreground: 245, 245, 255; --accent: 69, 69, 69; }
Theme Editor
Floating Action Buttons (FABs)
Definition
- Action menus on corners of screen with lists of buttons, responsive to content
- On mobile screens scroll, menus will hide on scroll down after scrolled down certain level of top of page
Implementation
- Create node of class name "action-menu" with location of menu as class name (supports bottom-left/bottom-right), with children button nodes of class name "fab"
- Assume all menus fit on a min screen aspect-ratio of 1:1 and min width 320px (current page is content max-width 680px)
<div class="action-menu bottom-left"> <div class="fab back">...</div> </div> <div class="action-menu bottom-right"> <div class="fab theme">...</div> </div>
[[UNABLE TO SHOW ON LOCAL]]
[[UNABLE TO SHOW ON LOCAL]]
Pop-Up Content
Definition
- On external link tags with supported URLs, show content or embedded iframe render as bottom sheet
- Link tags are detected by attribute target="_blank" (ie. must open in new window/tab)
- When mouse hover, link will be transformed to popup, with link node containing original content and content node containing rendered content
- For interaction, right click/tap and hold to view popup, click on scrim/background overlay to close; Left click function not affected
Implementation
- Container class name "popup", link cloned child class "popup-text", rendered content class "popup-content"
- Class name "show" will be appended to container when popup content is shown
The link will transform into <div class="popup" data=url="[LINK]"> <div class="text">[TEXT]</div> <div class="content">[CONTENT]</div> </div> and behave the same on left click, just that right click will show popup, if available.
[[UNABLE TO SHOW ON LOCAL]]
[[UNABLE TO SHOW ON LOCAL]]
Fallback when link is not supported for render
"There's a thing called give and take, you know?" Yeah Isaki gave you a kiss so she can take your- All according to keikaku haha
Jisho.org frame
(Dark mode determined by media query, unable to toggle unlike theme here)
"There's a thing called give and take, you know?" Yeah Isaki gave you a kiss so she can take your- All according to keikaku haha
Apple Music release/track embeds
I also took the chance to listen to some live albums including
wacci's live from 2021, and
SPYAIR's live from last year
featuring YOSUKE the new singer. Don't ask if I listened to all, I only pick
the
ones
I like. IKE-san still better though. *laughs* Alright, it's different, it's
like if someone shaved their beard away, you know?
Twitter/X posts, Instagram post/reel embeds
If not for IDOLY PRIDE's live tweets from
the lot
of them (ie. not MusicRay'n and their tiny images haha) I would have died from
anxiety. Instead I'm going to die of sensory overload on Instagram HAHA
just see
for yourself
dude
YouTube video/YouTube Shorts embeds
Okay, didn't expect YouTube to recommend me
Ogura Yui's halloween livestream
yesterday, it was pretty good for what it is, she just naturally gave us
fanservice I can't even. *giggles*
The new song's dance video
though. *laughs*
images (by domain name)
MyAnimeList.net frame courtesy of Jikan API v4 (Can filter by list of MAL show IDs, if provided in window['shows-list'])
What if I told you that this Natsukawa is not that Natsukawa and the sister is not this Shiina
but that Shiina which was voiced by Komatsu Mikako but in this Anime it's the main
guy's sister- You get the point. *laughs*
Aika-chan
is cute though. *giggles*
Carousel
Definition
- Gallery with swappable image elements on click/tap
- Click/tap container fast (<0.2s) will turn off transition (for comparing differences)
- Right-click/tap and hold to show all items
Implementation
- Container class "carousel", child items class "carousel-item", all but first child class "hide" as initial state
- Append "show" class to container to allow fallback if JavaScript not supported but CSS supported, to prevent render issues
<div class="carousel"> <div class="carousel-item"></div> <div class="carousel-item hide"></div> <div class="carousel-item hide"></div> ... </div>
[[UNABLE TO SHOW ON LOCAL]]
[[UNABLE TO SHOW ON LOCAL]]
Different image sizes and orientations, right-click image to show all
Even in a raincoat Isaki is still adorable af |
Same image size, multi-column
This week in violence we have: I gotta say Saki-chan you lost to Milika-san here this episode haha |
Agenda
Definition
- Media-supported table of contents, in grid form
- All links should be anchors, if otherwise will display "Details" overlay
Implementation
- Container class "agenda", children classes "agenda-item" for content
- For container size layout customization, use inline style on container (eg. max-width), do not style children layout
- Style variables for container: "--columns" to change no. of columns default 3 (fixed to 2 on mobile screens), "--ratio" to define custom image aspect ratios
<div class="agenda" style="--aspect-ratio: [RATIO]; --columns: [COLS];"> <div class="agenda-item"></div> <div class="agenda-item"></div> <div class="agenda-item"></div> ... </div>
[[UNABLE TO SHOW ON LOCAL]]
6 items, default 3 columns, aspect ratio 2
2 items, 2 columns, default aspect ratio, inline style max width
Data Table
Definition
- Responsive width table (not height responsive, does not have sticky rows) with collapsed borders
- Fixed first and last column, fixed top row possible
- Table can be represented as list of cards, but header row will be hidden, so recommend content rows to be meaningful in context, see example)
- Data tables can also be created from other data tables, becoming their subsets, showing only specific rows
Implementation
- Use table generators (eg. DivTable.com) to render HTML and wrap with container class name "datatable"
- Children must be HTML table tag which follows HTML 1.1 standard (ie. tbody, tr, th, td elements)
- Use class "all-borders" to include vertical borders
- Use class "freeze-(left/right)" to freeze first/last column
- Use class "freeze-top" to freeze top row
- Use class "cards" to display as list of cards
- Use attribute "data-ref" to reference the id of the component of an existing data table (if any)
- Use class "data-select" to select the zero-based index of (tr) row excluding (th) header row(s)
<div class="datatable freeze-left freeze-right all-borders"> <table> <tbody> <tr> <th></th> <th></th> ... </tr> <tr> <td title='[FOR_OVERFLOW_USE]' ></td> <td></td> ... </tr> ... </tbody> </table> </div>
[[UNABLE TO SHOW ON LOCAL]]
Freeze first column, inline smaller font
Item | From | Timeline | Qty | Price | Shipping | Purchased On | Arrived On | Condition |
---|---|---|---|---|---|---|---|---|
Kanno Mai "VOICE+ Vol.5" Print Tune Bromide Set | Mercari | 2023.02 | 2 | ยฅ999 | - | 2023.05.31 ๐ง |
2023.06.09 ๐ง๐ง |
OK? |
Ueda Reina CD "Atrium" Animate Bonus | Y! | 2022.10 ๐ฉ |
1 (+File) | ยฅ1000 | ยฅ210 | 2023.06.02 ๐ง |
2023.06.05 ๐ง๐ง |
OK |
Waki Azumi "Kimi to no Mirai" Release Event Bromides | Y! | 2023.03 | 6 | ยฅ1000๐ฝ | ยฅ210 | 2023.06.02 ๐ง |
2023.06.05 ๐ง๐ง |
Bent |
Nagae Rika "Re:color" Gamers Bonus | Mercari | 2023.02 | 2 | ยฅ1000 | - | 2023.06.02 ๐ง |
2023.06.06 ๐ง๐ง |
OK |
Aizawa Saya "Kimi no Iro, Kimi no Koe wo Kikasete" Event Bromides | Mercari | 2022.05 ๐ฉ |
2 | ยฅ444 | - | 2023.06.02 ๐ง |
2023.06.08 ๐ง๐ง |
OK |
Koga Aoi "Seiyuu Animedia Aug 2020" Bonus | Mercari | 2020.07 ๐ฉ๐ฉ๐ฉ |
1 | ยฅ50๐ฝ | ยฅ185 | 2023.06.02 ๐ง |
2023.06.06 ๐ง๐ง |
OK |
Natsukawa Shiina "Yueni" Animate Bonus | Y! | 2023.05 | 1 | ยฅ700 | ยฅ210 | 2023.06.03 ๐ง |
2023.06.07 ๐ง๐ง |
OK |
Natsukawa Shiina "Yueni" HMV Bonus | Mercari | 2023.05 | 1 | ยฅ300 | - | 2023.06.03 ๐ง |
2023.06.08 ๐ง๐ง |
OK |
Kouno Marika "Gekkan Bushiroad Mar 2022" Gamers Bonus | Y! | 2022.02 ๐ฉ |
1 | ยฅ400 | ยฅ185 | 2023.06.04 ๐ง |
2023.06.07 ๐ง๐ง |
OK |
TrySail "Seiyuu Grand Prix Jul 2021" HMV Bonus | Y! | 2021.06 ๐ฉ๐ฉ |
1 | ยฅ700 | ยฅ210 | 2023.06.04 ๐ง |
2023.06.09 ๐ง๐ง |
OK |
TrySail "Seiyuu Grand Prix Jul 2021" Animate Bonus | Y! | 2021.06 ๐ฉ๐ฉ |
1 | ยฅ300 | ยฅ185 | 2023.06.04 ๐ง |
2023.06.07 ๐ง๐ง |
OK |
Takahashi Rie "Seiyuu Grand Prix Jul 2023" Bromide Set | Mercari | 2023.06 | 3 | ยฅ2555 | - | 2023.06.09 ๐ง๐ง |
2023.06.14 ๐ง๐ง๐ง |
OK |
Takahashi Rie "TV Guide A Stars vol.02" Gamers Bonus | Y! | 2023.03 | 1 | ยฅ1100๐ผ |
ยฅ185 | 2023.06.09 ๐ง๐ง |
2023.06.13 ๐ง๐ง๐ง |
OK |
Ueda Reina "Seiyuu Grand Prix Dec 2022" Animate Bonus | Mercari | 2022.11 ๐ฉ |
1 | ยฅ399 | - | 2023.06.11 ๐ง๐ง |
2023.06.19 ๐ง๐ง๐ง๐ง |
OK |
TrySail "Karei One Turn / Follow You!" Set | Mercari | 2023.05 | 1 (+Card) | ยฅ1300 | - | 2023.06.12 ๐ง๐ง๐ง |
2023.06.16 ๐ง๐ง๐ง |
OK |
Kanno Mai "Kanno Mai to Issho." Bonus | Mercari | 2022.08 ๐ฉ |
1 | ยฅ1500๐ผ | - | 2023.06.12 ๐ง๐ง๐ง |
2023.06.16 ๐ง๐ง๐ง |
OK |
Amamiya Sora "10 miles to America" HMV Bonus | Mercari | 2023.06 | 2 | ยฅ1111 | - | 2023.06.14 ๐ง๐ง๐ง |
2023.06.16 ๐ง๐ง๐ง |
OK |
Asakura Momo "Seiyuu Grand Prix Apr 2022" Animate + Gamers Bonus | Mercari | 2022.03 ๐ฉ |
2 | ยฅ599 | - | 2023.06.18 ๐ง๐ง๐ง |
2023.06.21 ๐ง๐ง๐ง๐ง |
OK |
Reference tables, to be rendered (based on table in first example)
HTML<div class="datatable cards" data-ref="[ID_OF_TABLE]" data-select="[COMMA_SEPARATED_LIST_OF_ZERO_BASED_INTEGERS]"></div>
Single row card class, header will be hidden
Name | Reputation | Quality | Followers | Decency Level |
---|---|---|---|---|
Nagishiro Mito Pixiv Twitter/X | Seen on Pixiv โณโณ |
Nice Artwork ๐จ๐๐ |
424.3k followers on X โญโญโญโญ |
Suggestive ๐ธ๐ |
Kantoku Pixiv Twitter/X | Seen Often on Twitter โณโณโณ |
Nice Artwork ๐จ๐๐ |
373.1k followers on X โญโญโญโญ |
Indecent ๐ธ๐๐ |
Hiten Pixiv Twitter/X | Following on Social Media โณโณโณโณ |
Perfect Artwork ๐จ๐๐๐ฒ๐ฅฐ |
528.7k followers on X โญโญโญโญโญ |
Pure ๐ธ |
Accordion
Definition
- Collapsible single item content (not in groups)
- Click on header to expand content, footer on bottom of content to collapse
Implementation
- Container class "accordion", (in DOM order) child class "header" to expand children class "content" with optional class "footer"
- If footer class element not present, click on header to collapse (for smaller content)
<div class="accordion"> <blockquote class="header">[TITLE]</blockquote> <div class="content">[CONTENT]</div> <blockquote class="footer">CLOSE</blockquote> </div>
[[UNABLE TO SHOW ON LOCAL]]
[[UNABLE TO SHOW ON LOCAL]]
100 QUESTIONS FOR HONDO KAEDE!!!
(Selected ones will be mentioned here in quote, above is full if you interested and can Japanese)
Q1: Origin of name
A1: Mother encountered people of fate who were named "Sakura" and
"Kaede" more than often especially more of the former, so it was a hard
decision between them
[Well thank goodness it isn't "Hondo Sakura" lol]
Q2: Nickname(s) as a kid
A2: Kae-chan, Ede-chan
[Kae-chan? Is that something I can call you after dating you twice?
Hehe]
Q3: Similarities to parents
A3: Partly similar to father, mostly mother
Q4: Earliest memory of your life
A4: Recollection of being in Higashiyama Zoo (Aichi Prefecture where
she was born) where she was trying to get a handshake with a giraffe
mascot who walked away, and (she) shouted "Wait up! If you leave I'll
throw this at you!!" while crying and running towards it
[LOL that sounded bad but the mascot with a long neck probably did not
notice her]
Q5: Things you were interested to learn as a kid
A5: Calligraphy for a year plus, swimming for around 5 years
A53: Without going overboard... hmm... shopping or sorts?
[Yeah fine I'll carry your bags for the stuff I paid haha]
Q55: What do you see in your partner
A55: Serious, honest, knowledgeable, nice, nice, nice, laughs a lot,
playful mind at heart and carries one's dreams and hopes moving forward
[Three nices? Well in her defence I already lost at being knowledgeable
so]
Q57: What you want to listen on a driving date?
A57: Whatever they like they can let it play! If it gets too loud I'll
get uncomfortable (though)
[Remind me to bring up like, Teshima Aoi on our drive lol]
Q58: Fetishes
A58: I wonder what they are...
[I wonder too, Ede-chan, you into female voice actresses?]
Q59: What tickles your fancy?
A59: I wonder what they are...
[Okay guys literally drill her with your kindness, she doesn't have that
moment so you gotta put in the effort]
Q61: Would you prefer to confess or be confessed to?
A61: I would like to confess from my side! Without hesitation!
[Well I look forward to the day I get confessed to by you-]
Q62: Own charm points
A62: Strong eyes and...
double tooth?
[Yes and YES OH MY FUCKING GOD- I thank our Lord and saviour for
stopping this girl from fixing her teeth]
Q100: Last word!
A100: Thanks for getting your hands on this! My favourite foods,
outfits, places, people... a lot of them were being compiled! This
photobook where being a voice actress but it was without the essence of
voice within, I gave the title of the book "MUTE". The stuff I worked a
lot on and I will continue to work on and enjoy them all back and forth,
so please continue to show your support!
[Ah, so THAT is how the title came about; She is right though]
Conversation
Definition
- Styled (optionally animated) paragraphs of text as conversation bubbles
- Bubbles are right-aligned for sender (to be defined on container), left-aligned for everyone else
- No avatar support as of now, will show full names
Implementation
- Container class "conversation", will read children nodes innerText as conversation dialogues (in order)
- To use custom seaprator, set "data-separator" attribute on container, default ASCII colon character ":"
- To choose who is right aligned (sender), set "data-sender" attribute, else all left align
- To allow re-enactment of lines, set "data-animate" attribute, inline styles to allow animation to stay in container (max-height, overflow-y)
<div class="conversation" data-separator="[SEPARATOR]" data-sender="[NAME]" data-animate> <div>[NAME][SEPARATOR][MESSAGE]</div> ... </div>
[[UNABLE TO SHOW ON LOCAL]]
[[UNABLE TO SHOW ON LOCAL]]
Two party conversation, sender not defined, no inline styles, custom separator
Nan | I saw you brought someone home in the afternoon, who was that?
Shouhei | Uh...
Nan | Is she your girlfriend? She is very cute.
Shouhei | Are you jealous?
Nan | W-what are you talking about? Of course not, I was just happy for onii-chan.
Shouhei | LOL
Three party conversation, sender defined, animated, inline styles to prevent overflow
Miyu: Onii-chan, who is she?
Inori: I didn't know you have such an adorable sister!!
Shouhei: Uh...
Miyu: I-Is she your girlfriend??
Inori: Are you jealous I am hanging out with your brother? That's so cute!
Miyu: W-what are you talking about? Of course not!
Shouhei: LOL
Abbreviation
Definition
- Extension of HTML abbr tag, to allow click/touch to show title in a dialog box
<abbr title="[POPUP_TEXT]"> [CONTENT] </abbr>
[[UNABLE TO SHOW ON LOCAL]]
[[UNABLE TO SHOW ON LOCAL]]
Jokes aside though, this truly is a work of art in itself, just
displaying the many sides of Toyota Moe here. It's just as if I have long
planned on the title for this review: "Motif Overflowing, Like a Work of Art".
Omake
Definition
- Padded element to reflect content outside of main body
<div class="omake"> [CONTENT] </div>
.omake { border-radius: 8px; background-color: rgb(var(--accent)); padding: 1em; transition: background-color 0.2s cubic-bezier(0.2, 0.0, 0, 1.0); }
WORTHY MENTION: COLLECTING CD
This technically doesn't fall in this category, since I wouldn't call collecting songs a thing, but hey, it's sort of like it. You like the songs, you buy them and they stack up. *laughs* Not going to do pricing on this one because... I spent a lot. Over the past decade alone, I've spent a lot. A good portion of my salary when I was in the Army went to those, and those were the first things I bought with my own money. So yeah, I'll update if I can count them all haha maybe I can do this
This technically doesn't fall in this category, since I wouldn't call collecting songs a thing, but hey, it's sort of like it. You like the songs, you buy them and they stack up. *laughs* Not going to do pricing on this one because... I spent a lot. Over the past decade alone, I've spent a lot. A good portion of my salary when I was in the Army went to those, and those were the first things I bought with my own money. So yeah, I'll update if I can count them all haha maybe I can do this
Emoji
Definition
- Use of Noto Color Emoji required for desktop environments to display emoji correctly
(Note: Mobile devices use their own emoji sets by default) - Emoji that require this font for intended use: "Pinched fingers" will not render, "Bird" should show blue bird
- Emoji use are split in two categories, direct use and converted with the latter from text in the format "*[EXPRESSION]*"
Implementation
- Use .woff2 files based on "Self-hosted Noto Color Emoji font for Chrome and Edge" GitHub Repo, and determine what to download and host based on unicode ranges in table shown
- For the following emoji, use font files "3.woff2" to "9.woff2"
ALL EMOJI USED (IN NO PARTICULAR ORDER)
๐ฅฐ๐๐ฌ๐๐ค๐ฒ๐คญ๐๐คฏ๐๐คฎ๐๐ข๐ฑ๐คท๐ฉ๐๐ฒ๐คซ๐๐๐๐๐ค๐๐๐ฆ๐๐ฅฑ๐ผ๏ธ๐ต๐ฆ๐๏ธ๐ท๐๐๐๐ฉ๐๐ด๐โ๏ธ๐๐๐๐ต๐๐๐
๐ฆ๐๐๐๐โจ
CONVERTED EMOJI LISTING & REFERENCE
Name | Convert From | Codepoint | Fallback (if any) |
---|---|---|---|
Smiling Face with Smiling Eyes and Three Hearts | *blessed* | U+1F970 | ๐ฅฐ |
Face Throwing A Kiss | *chu* *kiss* | U+1F618 | ๐ |
Grimacing Face | *cringe* | U+1F62C | ๐ฌ |
Smiling Face with Sunglasses | *dabs* | U+1F60E | ๐ |
Hand with Index and Middle Fingers Crossed | *fingers crossed* | U+1F91E | ๐ค |
Astonished Face | *gasp* *speechless* | U+1F632 | ๐ฒ |
Smiling Face with Smiling Eyes and Hand Covering Mouth | *giggles* | U+1F92D | ๐คญ |
Grinning Squinting Face | *laughs* | U+1F606 | ๐ |
Exploding Head | *mind blown* | U+1F92F | ๐คฏ |
Relieved Face | *phew* | U+1F60C | ๐ |
Face with Open Mouth Vomiting | *pukes* | U+1F92E | ๐คฎ |
Neutral Face | *silence* | U+1F610 | ๐ |
Crying Face | *sob* *sniff* | U+1F622 | ๐ข |
Face Screaming In Fear | *screams* | U+1F631 | ๐ฑ |
Shrug | *shrugs* | U+1F937 | ๐คท |
Weary Face | *sigh* | U+1F629 | ๐ฉ |
Smiling Face with Smiling Eyes | *smiles* | U+1F60A | ๐ |
Face with Finger Covering Closed Lips | *sshh* | U+1F92B | ๐คซ |
Thumbs Up Sign | *thumbs up* | U+1F44D | ๐ |
Face with Rolling Eyes | *ugh* | U+1F644 | ๐ |
Winking Face | *wink* *wink wink* | U+1F609 | ๐ ๐๐ |
Kissing Face with Smiling Eyes Pinched Fingers |
*chef's kiss* | U+1F618 U+1F90C | ๐๐ค |
Aubergine Splashing Sweat Symbol |
*fap* *fap fap fap* | U+1F346 U+1F4A6 | ๐ ๐๐๐ฆ |
Clapping Hands Sign | *claps* *applauds* *applauses* | U+1F44F | ๐ |
Yawning Face | *yawns* | U+1F971 | ๐ฅฑ |
Person Raising Both Hands In Celebration | *yay* | U+1F64C | ๐ |
Person with Folded Hands | *prays* | U+1F64F | ๐ |