summaryrefslogtreecommitdiff
path: root/examples/with-markdown/src/pages/index.astro
blob: e70e12f35298e13a4744272217cd536ea9c34554 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
---
// Component Imports
import { Markdown } from 'astro/components';
import Layout from '../layouts/main.astro';
import ReactCounter from '../components/ReactCounter.jsx';
import PreactCounter from '../components/PreactCounter.tsx';
import VueCounter from '../components/VueCounter.vue';
import SvelteCounter from '../components/SvelteCounter.svelte';

// Component Script:
// You can write any JavaScript/TypeScript that you'd like here.
// It will run during the build, but never in the browser.
// All variables are available to use in the HTML template below.
const title = 'Astro Markdown';
const variable = 'content';
const items = ['A', 'B', 'C'];

// Full Astro Component Syntax:
// https://docs.astro.build/core-concepts/astro-components/
---

<Layout content={{ title }}>
	<Markdown>
		# Introducing {title}

		**Astro Markdown** brings native Markdown support to HTML!

		> It's inspired by [`MDX`](https://mdxjs.com/) and powered by [`remark`](https://github.com/remarkjs/remark).

		The best part? It comes with all the Astro features you expect.

		[Other example](./other)

		## Embed framework components

		<ReactCounter client:visible />
		<PreactCounter client:visible />
		<VueCounter client:visible />
		<SvelteCounter client:visible />

		## Use Expressions

		You can use any {variable} in scope and use JavaScript for templating ({items.join(', ')})

		## Oh yeah...

		<ReactCounter client:visible>

		🤯 It's also _recursive_!

		### Markdown can be embedded in any child component

		</ReactCounter>

		## Code

		Should work!

		```js
		import Something from './another';

		const thing = new Something();
		```
	</Markdown>
</Layout>