Skip to content

Commit 8603ba2

Browse files
authored
feat: Add M.A.E.S.T.R.O. blog post and event banner (#62)
2 parents b60ed65 + 3a13381 commit 8603ba2

File tree

10 files changed

+212
-16
lines changed

10 files changed

+212
-16
lines changed

bun.lock

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@
149149
"gray-matter": "^4.0.3",
150150
"i": "^0.3.7",
151151
"js-confetti": "^0.12.0",
152-
"next": "14.2.5",
152+
"next": "14.2.26",
153153
"next-recaptcha-v3": "^1.4.1",
154154
"nextjs-toploader": "^1.6.6",
155155
"npm": "^10.5.1",
@@ -566,29 +566,29 @@
566566

567567
"@nestjs/throttler": ["@nestjs/[email protected]", "", { "peerDependencies": { "@nestjs/common": "^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0", "@nestjs/core": "^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0", "reflect-metadata": "^0.1.13 || ^0.2.0" } }, "sha512-osL67i0PUuwU5nqSuJjtUJZMkxAnYB4VldgYUMGzvYRJDCqGRFMWbsbzm/CkUtPLRL30I8T74Xgt/OQxnYokiA=="],
568568

569-
"@next/env": ["@next/[email protected].5", "", {}, "sha512-/zZGkrTOsraVfYjGP8uM0p6r0BDT6xWpkjdVbcz66PJVSpwXX3yNiRycxAuDfBKGWBrZBXRuK/YVlkNgxHGwmA=="],
569+
"@next/env": ["@next/[email protected].26", "", {}, "sha512-vO//GJ/YBco+H7xdQhzJxF7ub3SUwft76jwaeOyVVQFHCi5DCnkP16WHB+JBylo4vOKPoZBlR94Z8xBxNBdNJA=="],
570570

571571
"@next/eslint-plugin-next": ["@next/[email protected]", "", { "dependencies": { "glob": "7.1.7" } }, "sha512-6rhK9CdxEgj/j1qvXIyLTWEaeFv7zOK8yJMulz3Owel0uek0U9MJCGzmKgYxM3aAUBo3gKeywCZKyQnJKto60A=="],
572572

573573
"@next/mdx": ["@next/[email protected]", "", { "dependencies": { "source-map": "^0.7.0" }, "peerDependencies": { "@mdx-js/loader": ">=0.15.0", "@mdx-js/react": ">=0.15.0" }, "optionalPeers": ["@mdx-js/loader", "@mdx-js/react"] }, "sha512-OfupBYFZXdB+1CypVpRFpIb/V1PgGed20yUbkKTDdssLvlID/emqVfsZ7RVUhI1DGOQPcPwSAy92GHQlEwccdQ=="],
574574

575-
"@next/swc-darwin-arm64": ["@next/[email protected].5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-/9zVxJ+K9lrzSGli1///ujyRfon/ZneeZ+v4ptpiPoOU+GKZnm8Wj8ELWU1Pm7GHltYRBklmXMTUqM/DqQ99FQ=="],
575+
"@next/swc-darwin-arm64": ["@next/[email protected].26", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zDJY8gsKEseGAxG+C2hTMT0w9Nk9N1Sk1qV7vXYz9MEiyRoF5ogQX2+vplyUMIfygnjn9/A04I6yrUTRTuRiyQ=="],
576576

577-
"@next/swc-darwin-x64": ["@next/[email protected].5", "", { "os": "darwin", "cpu": "x64" }, "sha512-vXHOPCwfDe9qLDuq7U1OYM2wUY+KQ4Ex6ozwsKxp26BlJ6XXbHleOUldenM67JRyBfVjv371oneEvYd3H2gNSA=="],
577+
"@next/swc-darwin-x64": ["@next/[email protected].26", "", { "os": "darwin", "cpu": "x64" }, "sha512-U0adH5ryLfmTDkahLwG9sUQG2L0a9rYux8crQeC92rPhi3jGQEY47nByQHrVrt3prZigadwj/2HZ1LUUimuSbg=="],
578578

579-
"@next/swc-linux-arm64-gnu": ["@next/[email protected].5", "", { "os": "linux", "cpu": "arm64" }, "sha512-vlhB8wI+lj8q1ExFW8lbWutA4M2ZazQNvMWuEDqZcuJJc78iUnLdPPunBPX8rC4IgT6lIx/adB+Cwrl99MzNaA=="],
579+
"@next/swc-linux-arm64-gnu": ["@next/[email protected].26", "", { "os": "linux", "cpu": "arm64" }, "sha512-SINMl1I7UhfHGM7SoRiw0AbwnLEMUnJ/3XXVmhyptzriHbWvPPbbm0OEVG24uUKhuS1t0nvN/DBvm5kz6ZIqpg=="],
580580

581-
"@next/swc-linux-arm64-musl": ["@next/[email protected].5", "", { "os": "linux", "cpu": "arm64" }, "sha512-NpDB9NUR2t0hXzJJwQSGu1IAOYybsfeB+LxpGsXrRIb7QOrYmidJz3shzY8cM6+rO4Aojuef0N/PEaX18pi9OA=="],
581+
"@next/swc-linux-arm64-musl": ["@next/[email protected].26", "", { "os": "linux", "cpu": "arm64" }, "sha512-s6JaezoyJK2DxrwHWxLWtJKlqKqTdi/zaYigDXUJ/gmx/72CrzdVZfMvUc6VqnZ7YEvRijvYo+0o4Z9DencduA=="],
582582

583-
"@next/swc-linux-x64-gnu": ["@next/[email protected].5", "", { "os": "linux", "cpu": "x64" }, "sha512-8XFikMSxWleYNryWIjiCX+gU201YS+erTUidKdyOVYi5qUQo/gRxv/3N1oZFCgqpesN6FPeqGM72Zve+nReVXQ=="],
583+
"@next/swc-linux-x64-gnu": ["@next/[email protected].26", "", { "os": "linux", "cpu": "x64" }, "sha512-FEXeUQi8/pLr/XI0hKbe0tgbLmHFRhgXOUiPScz2hk0hSmbGiU8aUqVslj/6C6KA38RzXnWoJXo4FMo6aBxjzg=="],
584584

585-
"@next/swc-linux-x64-musl": ["@next/[email protected].5", "", { "os": "linux", "cpu": "x64" }, "sha512-6QLwi7RaYiQDcRDSU/os40r5o06b5ue7Jsk5JgdRBGGp8l37RZEh9JsLSM8QF0YDsgcosSeHjglgqi25+m04IQ=="],
585+
"@next/swc-linux-x64-musl": ["@next/[email protected].26", "", { "os": "linux", "cpu": "x64" }, "sha512-BUsomaO4d2DuXhXhgQCVt2jjX4B4/Thts8nDoIruEJkhE5ifeQFtvW5c9JkdOtYvE5p2G0hcwQ0UbRaQmQwaVg=="],
586586

587-
"@next/swc-win32-arm64-msvc": ["@next/[email protected].5", "", { "os": "win32", "cpu": "arm64" }, "sha512-1GpG2VhbspO+aYoMOQPQiqc/tG3LzmsdBH0LhnDS3JrtDx2QmzXe0B6mSZZiN3Bq7IOMXxv1nlsjzoS1+9mzZw=="],
587+
"@next/swc-win32-arm64-msvc": ["@next/[email protected].26", "", { "os": "win32", "cpu": "arm64" }, "sha512-5auwsMVzT7wbB2CZXQxDctpWbdEnEW/e66DyXO1DcgHxIyhP06awu+rHKshZE+lPLIGiwtjo7bsyeuubewwxMw=="],
588588

589-
"@next/swc-win32-ia32-msvc": ["@next/[email protected].5", "", { "os": "win32", "cpu": "ia32" }, "sha512-Igh9ZlxwvCDsu6438FXlQTHlRno4gFpJzqPjSIBZooD22tKeI4fE/YMRoHVJHmrQ2P5YL1DoZ0qaOKkbeFWeMg=="],
589+
"@next/swc-win32-ia32-msvc": ["@next/[email protected].26", "", { "os": "win32", "cpu": "ia32" }, "sha512-GQWg/Vbz9zUGi9X80lOeGsz1rMH/MtFO/XqigDznhhhTfDlDoynCM6982mPCbSlxJ/aveZcKtTlwfAjwhyxDpg=="],
590590

591-
"@next/swc-win32-x64-msvc": ["@next/[email protected].5", "", { "os": "win32", "cpu": "x64" }, "sha512-tEQ7oinq1/CjSG9uSTerca3v4AZ+dFa+4Yu6ihaG8Ud8ddqLQgFGcnwYls13H5X5CPDPZJdYxyeMui6muOLd4g=="],
591+
"@next/swc-win32-x64-msvc": ["@next/[email protected].26", "", { "os": "win32", "cpu": "x64" }, "sha512-2rdB3T1/Gp7bv1eQTTm9d1Y1sv9UuJ2LAwOE0Pe2prHKe32UNscj7YS13fRB37d0GAiGNR+Y7ZcW8YjDI8Ns0w=="],
592592

593593
"@next/third-parties": ["@next/[email protected]", "", { "dependencies": { "third-party-capital": "1.0.20" }, "peerDependencies": { "next": "^13.0.0 || ^14.0.0", "react": "^18.2.0" } }, "sha512-+tpIUOMKCyk4EHCIz6ICJDhfIVBpAtS65eul1iUkwBO1fS0MYCd+7+R2cD2Cm+LVTylw72EpfHjF/bcSAQSBWA=="],
594594

@@ -2310,7 +2310,7 @@
23102310

23112311
"neo-async": ["[email protected]", "", {}, "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="],
23122312

2313-
"next": ["[email protected].5", "", { "dependencies": { "@next/env": "14.2.5", "@swc/helpers": "0.5.5", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", "graceful-fs": "^4.2.11", "postcss": "8.4.31", "styled-jsx": "5.1.1" }, "optionalDependencies": { "@next/swc-darwin-arm64": "14.2.5", "@next/swc-darwin-x64": "14.2.5", "@next/swc-linux-arm64-gnu": "14.2.5", "@next/swc-linux-arm64-musl": "14.2.5", "@next/swc-linux-x64-gnu": "14.2.5", "@next/swc-linux-x64-musl": "14.2.5", "@next/swc-win32-arm64-msvc": "14.2.5", "@next/swc-win32-ia32-msvc": "14.2.5", "@next/swc-win32-x64-msvc": "14.2.5" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.41.2", "react": "^18.2.0", "react-dom": "^18.2.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-0f8aRfBVL+mpzfBjYfQuLWh2WyAwtJXCRfkPF4UJ5qd2YwrHczsrSzXU4tRMV0OAxR8ZJZWPFn6uhSC56UTsLA=="],
2313+
"next": ["[email protected].26", "", { "dependencies": { "@next/env": "14.2.26", "@swc/helpers": "0.5.5", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", "graceful-fs": "^4.2.11", "postcss": "8.4.31", "styled-jsx": "5.1.1" }, "optionalDependencies": { "@next/swc-darwin-arm64": "14.2.26", "@next/swc-darwin-x64": "14.2.26", "@next/swc-linux-arm64-gnu": "14.2.26", "@next/swc-linux-arm64-musl": "14.2.26", "@next/swc-linux-x64-gnu": "14.2.26", "@next/swc-linux-x64-musl": "14.2.26", "@next/swc-win32-arm64-msvc": "14.2.26", "@next/swc-win32-ia32-msvc": "14.2.26", "@next/swc-win32-x64-msvc": "14.2.26" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.41.2", "react": "^18.2.0", "react-dom": "^18.2.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-b81XSLihMwCfwiUVRRja3LphLo4uBBMZEzBBWMaISbKTwOmq3wPknIETy/8000tr7Gq4WmbuFYPS7jOYIf+ZJw=="],
23142314

23152315
"next-recaptcha-v3": ["[email protected]", "", { "peerDependencies": { "next": "^13 || ^14 || ^15", "react": "^18 || ^19" } }, "sha512-CTFQvyWWQLrIuI++NhOFeQKdELUFvTDGfCty+bz6hxU8frS59ycl4TInvWhCn+9eKjAqV6LqQZZGHdwla8t8GQ=="],
23162316

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
---
2+
title: 'Announcing the Students of Maestro Jam event!'
3+
date: '2025-10-14'
4+
author: 'Bentroen'
5+
authorImage: 'bentroen.png'
6+
image: '/img/blog/maestro.png'
7+
tags: ['news']
8+
---
9+
10+
Hello all! We have exciting news for the community: **Note Block World** has partnered with [jazziiRed](https://www.youtube.com/@jazziiRed), [mooncatcher](https://www.youtube.com/@mr_mooncatcher), [vladde](www.youtube.com/@vladde) and [Xolixs](https://www.youtube.com/@Xoliks97) to bring you our second **community-wide collaborative event!** 🌐
11+
12+
These four masterminds are behind the _Multi-Aural, Encodable, Synchronous-Tick, Redstone Orchestra_ (**M.A.E.S.T.R.O.**), the first redstone machine to play music at 20 ticks per second in vanilla Minecraft.
13+
M.A.E.S.T.R.O. is the **ultimate evolution** of jazziiRed and mooncatcher's original music machine, which has been viewed over [two million times](https://www.youtube.com/watch?v=V6X2BHpeLww) on YouTube. It's the result of **many months of arduous work**, and a true redstone engineering masterpiece! ⚡⚙️
14+
15+
[![Maestro](/img/blog/maestro-full.png)](https://www.youtube.com/watch?v=V6X2BHpeLww)
16+
17+
Today, we have partnered with the M.A.E.S.T.R.O. team to give our community a chance to have their music **played live** on the machine in a special event!
18+
19+
We are proud to announce...
20+
21+
...the **Students of Maestro Jam**! A two-week-long event where **you** can create music to be played **live** on the M.A.E.S.T.R.O. machine! Keep reading... 👀
22+
23+
## How does the event work?
24+
25+
The event is taking place on [Note Block World](https://noteblock.world). Submitted songs must be uploaded to the website and tagged with `#maestro`, either in the title or the description, and sent to us in a specially-crafted form.
26+
27+
At the end of the submission period, the creations will be reviewed by us and the M.A.E.S.T.R.O. team.
28+
The best songs will be played **live** in a **public server** running the M.A.E.S.T.R.O. machine, that anyone will be able to join and watch. The entire performance will be **streamed** to the whole world in a **five-channel multi-stream** on YouTube! 🎬
29+
30+
> The date and time of the streams will be announced in a later blog post.
31+
32+
Later, all songs will be made into a **compilation album** that will be **written forever** in all of our channels. This is an unique opportunity to have your music heard by an audience of **thousands of players!** 💿
33+
34+
## How to participate?
35+
36+
We are already taking submissions! Refer to the rules below in order to submit your song:
37+
38+
### 🕛 Deadline
39+
40+
The submission form closes on **October 26, 2025**. You must submit your songs before then, but we can manually accept late submissions. More on this can be found below!
41+
42+
### ✅ What's allowed?
43+
44+
An original note block song composition
45+
A cover of an existing song not originally composed by you
46+
Collaborations with other note block creators
47+
48+
### ❌ Limits
49+
50+
- No notes outside of vanilla's **two-octave** range
51+
- **No custom instruments** (not even sounds from vanilla!)
52+
- Mob head instruments are allowed, excluding Piglin and Wither Skeleton
53+
- Refer to the instructions below to import them into your song!
54+
- A given key under its instrument can only be played once per tick
55+
- e.g. a banjo note at key C3 cannot be played more than once on a single tick
56+
- The song length must not exceed **9½ minutes**
57+
- Mid-song tempo changes are not supported
58+
59+
### ❔ Recommendations
60+
61+
- The tempo should be a **factor of 20** (4, 5, 10 or 20 t/s) for best results
62+
- The song should not exceed vanilla's polyphony limit (maximum of 247 simultaneous sounds)
63+
- The machine does not support velocity and panning, so these elements will not carry over to in-game playback
64+
- However, due to how the machine places note blocks, each unique note is played from a predefined position
65+
- The song should be created entirely during the event's runtime
66+
- We can't prevent you from re-purposing existing songs, however we highly encourage creating something new!
67+
68+
### 🧟 Using mob sounds
69+
70+
Although NBS doesn't provide native support for mob head instruments, you can import them from Minecraft for use in your songs. Navigate to `Settings` > `Import sounds from Minecraft`, and follow the on-screen instructions to extract sound files from your Minecraft installation.
71+
72+
#### Supported sound locations
73+
74+
- **Zombie:** `mob/zombie/say<1-4>.ogg`
75+
- **Skeleton:** `mob/skeleton/say<1-3>.ogg`
76+
- **Ender Dragon:** `mob/enderdragon/growl<1-4>.ogg`
77+
- **Creeper:** `random/fuse.ogg`
78+
79+
One of the sounds above will be picked at random for each note played with that instrument.
80+
e.g. any Zombie notes will play any of `say<1-4>` randomly.
81+
82+
> Keep in mind that Piglin and Wither Skeleton sounds are **not supported** by the machine.
83+
84+
### 🧪 Testing
85+
86+
A mod pack containing everything you'll need can be found [on Modrinth](https://modrinth.com/modpack/maestro)! Instructions regarding how to transfer your note block songs to the machine are included in its description.
87+
88+
### 📝 Submissions
89+
90+
Once your song has been finished and you're ready to submit it for the event, upload it to Note Block World and submit it through the form linked below. You can only submit once, so make sure you're satisfied with your song!
91+
92+
⚠️ **Songs must be uploaded to [Note Block World](https://noteblock.world/) and tagged with `#maestro`, either in the title or description!**
93+
By submitting a song, you grant us the privilege to showcase it on the M.A.E.S.T.R.O. creators' YouTube channels, as well as our social outlets. Of course, you still maintain all rights to your creation!
94+
95+
The form will be closed on **Sunday, October 26, 2025 10:00 PM UTC**. We can accept late submissions for a short period of time afterwards. This is primarily to account for technical issues, and **should not be used as extra time.**
96+
97+
[[Submit your song here!]](https://forms.gle/zh69sLhTGweSR9Si7)
98+
99+
If you have any questions, please reach out to us! We'll be glad to help you out.
100+
101+
> _Our thoughts are with mooncatcher and everyone affected by the war in Ukraine. If you can, please donate to the Leleka Foundation [here](https://www.leleka.care/en/donate)._ 🇺🇦
102+
103+
We hope the event will be a fun experience for everyone, and we look forward to hearing your submissions! Have fun! 🎶
6.51 MB
Loading

web/public/img/blog/maestro.png

1 MB
Loading
3.07 MB
Loading
13.3 KB
Loading

web/src/app/(content)/(info)/help/[id]/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ const HelpPost = ({ params }: HelpPageProps) => {
4646
<>
4747
<article className='max-w-screen-md mx-auto mb-36'>
4848
<Link
49-
href='/blog'
49+
href='/help'
5050
className='text-zinc-500 hover:text-zinc-400 text-sm'
5151
>
5252
{'< Back to Help'}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
import { faExclamationCircle } from '@fortawesome/free-solid-svg-icons';
2+
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
3+
import Image from 'next/image';
4+
import Link from 'next/link';
5+
6+
export const EventBanner = () => {
7+
return (
8+
<div className='flex flex-row mx-auto w-fit justify-between items-center text-pretty gap-6 py-4 px-2 sm:px-8 text-sm rounded-xl mb-10 bg-top backdrop-filter backdrop-blur-lg bg-opacity-50 bg-gradient-to-br from-15% from-pink-800 via-rose-900 to-85% to-red-900 relative'>
9+
<div
10+
className='absolute h-full w-full top-0 left-0 z-[-1] rounded-xl opacity-50 brightness-[0.3]'
11+
style={{
12+
backgroundImage: "url('/img/event/maestro-banner.png')",
13+
backgroundSize: 'contain',
14+
backgroundAttachment: 'fixed',
15+
}}
16+
></div>
17+
<Image src='/img/event/maestro-icon.png' alt='' width={64} height={64} />
18+
19+
<div className='flex-1 leading-tight max-w-screen-md w-fit'>
20+
<p className='uppercase text-sm font-bold tracking-wider text-yellow-300 mb-1 w-fit'>
21+
<FontAwesomeIcon icon={faExclamationCircle} /> ends in{' '}
22+
{Math.max(
23+
0,
24+
Math.ceil(
25+
(Date.UTC(2025, 9, 26, 22, 0, 0) - Date.now()) /
26+
(1000 * 60 * 60 * 24),
27+
),
28+
)}{' '}
29+
days
30+
</p>
31+
<p>
32+
<span className='font-bold'>An event is underway!</span> Submit a song
33+
to be played in the{' '}
34+
<Link
35+
href='https://www.youtube.com/watch?v=G78AnHpIw5w'
36+
className='text-blue-300 hover:text-blue-200'
37+
>
38+
M.A.E.S.T.R.O. machine
39+
</Link>{' '}
40+
in the{' '}
41+
<span className='font-bold'>
42+
Students&nbsp;of&nbsp;Maestro&nbsp;Jam
43+
</span>
44+
, hosted in collaboration with{' '}
45+
<Link href='https://www.youtube.com/@jazziiRed'>jazziiRed</Link>,{' '}
46+
<Link href='https://www.youtube.com/@mr_mooncatcher'>
47+
mooncatcher
48+
</Link>
49+
, <Link href='https://www.youtube.com/@vladde'>vladde</Link> and{' '}
50+
<Link href='https://www.youtube.com/@Xoliks97'>Xolixs</Link>! Read our{' '}
51+
<Link
52+
href='/blog/maestro'
53+
className='text-blue-300 hover:text-blue-200'
54+
>
55+
blog post
56+
</Link>{' '}
57+
to participate.
58+
</p>
59+
</div>
60+
</div>
61+
);
62+
};

web/src/modules/browse/components/HomePageComponent.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import {
2323
CarouselPrevious,
2424
} from '../../shared/components/client/Carousel';
2525
import { WelcomeBanner } from '../WelcomeBanner';
26+
import { EventBanner } from '../EventBanner';
2627

2728
export const HomePageComponent = () => {
2829
const { featuredSongsPage } = useFeaturedSongsProvider();
@@ -33,6 +34,7 @@ export const HomePageComponent = () => {
3334
<>
3435
{/* Welcome banner/Hero */}
3536
<WelcomeBanner />
37+
<EventBanner />
3638

3739
{/* FEATURED SONGS */}
3840
{featuredSongsPage.length > 0 && (

web/src/modules/shared/components/CustomMarkdown.tsx

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export const CustomMarkdown = ({
2424
pre,
2525
code,
2626
a,
27+
img,
2728
}}
2829
>
2930
{MarkdownContent}
@@ -82,7 +83,7 @@ const blockquote = ({
8283
return (
8384
<blockquote
8485
{...props}
85-
className='border-l-4 border-zinc-600 bg-zinc-800/50 rounded-md [&>p]:text-zinc-400 pl-4 [&>p]:py-2'
86+
className='border-l-4 border-zinc-600 bg-zinc-800/50 rounded-md [&>p]:text-zinc-400 pl-4 [&>p]:py-2 my-6'
8687
/>
8788
);
8889
};
@@ -103,7 +104,7 @@ const code = ({
103104
return (
104105
<code
105106
{...props}
106-
className='bg-zinc-950/50 text-green-400 rounded-md outline outline-1 outline-zinc-600 text-sm font-mono px-1 py-0.5'
107+
className='bg-zinc-950/50 text-green-400 rounded-md outline outline-1 outline-zinc-600 text-sm font-mono px-1 py-0.5 mx-0.5'
107108
/>
108109
);
109110
};
@@ -122,4 +123,32 @@ const a = ({
122123
);
123124
};
124125

125-
export { p, h1, h2, h3, h4, h5, h6, hr, ul, ol, li, blockquote, pre, code, a };
126+
const img = ({
127+
node,
128+
alt,
129+
src = '',
130+
...props
131+
}: JSX.IntrinsicElements['img'] & ExtraProps) => {
132+
return (
133+
<img {...props} alt={alt} src={src} className='my-8 mx-auto rounded-lg' />
134+
);
135+
};
136+
137+
export {
138+
p,
139+
h1,
140+
h2,
141+
h3,
142+
h4,
143+
h5,
144+
h6,
145+
hr,
146+
ul,
147+
ol,
148+
li,
149+
blockquote,
150+
pre,
151+
code,
152+
a,
153+
img,
154+
};

0 commit comments

Comments
 (0)