From 8c6470fe044b747f7b5af548192a34075892d89e Mon Sep 17 00:00:00 2001 From: Nathan Rajlich Date: Fri, 18 Oct 2024 15:09:42 -0700 Subject: [PATCH] Add docs `Screenshot` component --- docs/app/screenshot.tsx | 22 +++++++++++++++++++++ docs/content/runtime/rendering/canvas.mdx | 10 +++++++--- docs/content/runtime/rendering/console.mdx | 11 +++++++++-- docs/mdx-components.tsx | 2 ++ docs/public/screenshots/canvas-house.jpg | Bin 0 -> 31279 bytes docs/public/screenshots/hello-world.jpg | Bin 0 -> 31042 bytes 6 files changed, 40 insertions(+), 5 deletions(-) create mode 100644 docs/app/screenshot.tsx create mode 100644 docs/public/screenshots/canvas-house.jpg create mode 100644 docs/public/screenshots/hello-world.jpg diff --git a/docs/app/screenshot.tsx b/docs/app/screenshot.tsx new file mode 100644 index 00000000..5050d1b5 --- /dev/null +++ b/docs/app/screenshot.tsx @@ -0,0 +1,22 @@ +import Image, { ImageProps } from 'next/image'; +import SwitchImg from '@/public/switch.png'; + +export function Screenshot(props: ImageProps) { + return ( +
+ Screenshot + +
+ ); +} diff --git a/docs/content/runtime/rendering/canvas.mdx b/docs/content/runtime/rendering/canvas.mdx index d4b31455..eaaabae9 100644 --- a/docs/content/runtime/rendering/canvas.mdx +++ b/docs/content/runtime/rendering/canvas.mdx @@ -3,6 +3,8 @@ title: Canvas description: Drawing to the screen using the Canvas API --- +import CanvasHouseScreenshot from '@/public/screenshots/canvas-house.jpg'; + nx.js does not implement a full DOM for rendering content to the screen. Instead, it offers the more low-level Canvas API which allows your application to draw to the screen. @@ -17,9 +19,11 @@ be in __canvas rendering__ mode. ## Example -Let's draw a simple house with the Canvas API: +> This example was adapted from the [MDN Canvas tutorial](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D#basic_example). + +Let's draw a simple house to the screen by using the Canvas API: -```js +```typescript title="src/main.ts" // Creating the canvas context enters "canvas rendering" mode const ctx = screen.getContext('2d'); @@ -45,7 +49,7 @@ ctx.closePath(); ctx.stroke(); ``` -> This example was adapted from the [MDN Canvas tutorial](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D#basic_example). + ## Using React diff --git a/docs/content/runtime/rendering/console.mdx b/docs/content/runtime/rendering/console.mdx index 991a2213..db5f8cf4 100644 --- a/docs/content/runtime/rendering/console.mdx +++ b/docs/content/runtime/rendering/console.mdx @@ -3,6 +3,8 @@ title: Console description: Logging to the Console for text based applications --- +import HelloWorldScreenshot from '@/public/screenshots/hello-world.jpg'; + If your application is purely text-based, you can use the familiar global [`console`](/runtime/api/variables/console) object to write textual data to the screen of the application in the terminal-like interface that [`libnx`](https://github.com/switchbrew/libnx) provides. @@ -12,10 +14,15 @@ in the terminal-like interface that [`libnx`](https://github.com/switchbrew/libn ## Example -```js -console.log('Hello World'); +```typescript title="src/main.ts" +console.log('Hello World!'); +console.log(' - <3 nx.js'); +console.log(''); +console.log('Press the + button to exit...'); ``` + + ## ANSI Escape Codes Listed below is a (non-exhaustive) list of npm modules known to work well with nx.js when using console rendering mode: diff --git a/docs/mdx-components.tsx b/docs/mdx-components.tsx index 6a248c60..f11fa0f5 100644 --- a/docs/mdx-components.tsx +++ b/docs/mdx-components.tsx @@ -14,6 +14,7 @@ import { TbHandStop, TbAlertOctagon, } from 'react-icons/tb'; +import { Screenshot } from '@/app/screenshot'; import type { MDXComponents } from 'mdx/types'; type CalloutProps = React.ComponentProps; @@ -38,6 +39,7 @@ export function useMDXComponents(components: MDXComponents): MDXComponents { {children} ), + Screenshot, blockquote: (props) => { let icon: CalloutProps['icon'] = undefined; let title: CalloutProps['title'] = undefined; diff --git a/docs/public/screenshots/canvas-house.jpg b/docs/public/screenshots/canvas-house.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a4252734f526f250b021b398fc6d3534e24a3f3d GIT binary patch literal 31279 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 P3CT$KzYGcCq_O`8wrk7a literal 0 HcmV?d00001 diff --git a/docs/public/screenshots/hello-world.jpg b/docs/public/screenshots/hello-world.jpg new file mode 100644 index 0000000000000000000000000000000000000000..83f8b0ebd4df02fa5fb6b04f4c0de2313c2ad3c5 GIT binary patch literal 31042 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 literal 0 HcmV?d00001