├── .github
└── workflows
│ └── publish.yml
├── .gitignore
├── docs
├── customizing.mdx
├── getting-started.mdx
├── license.mdx
├── motivation.mdx
└── readme.mdx
├── examples
├── gatsby-starter-documentation-dark
│ ├── .gitignore
│ ├── docs
│ │ ├── hello-world-2.mdx
│ │ ├── hello-world-3.mdx
│ │ ├── hello-world-4.mdx
│ │ ├── hello-world-5.mdx
│ │ ├── hello-world.mdx
│ │ └── readme.mdx
│ ├── gatsby-config.js
│ ├── package.json
│ ├── readme.md
│ └── src
│ │ └── gatsby-theme-documentation
│ │ ├── header.mdx
│ │ ├── index.js
│ │ └── sidebar.mdx
├── gatsby-starter-documentation-tomato
│ ├── .gitignore
│ ├── docs
│ │ ├── hello-world-2.mdx
│ │ ├── hello-world-3.mdx
│ │ ├── hello-world-4.mdx
│ │ ├── hello-world-5.mdx
│ │ ├── hello-world.mdx
│ │ └── readme.mdx
│ ├── gatsby-config.js
│ ├── package.json
│ ├── readme.md
│ └── src
│ │ └── gatsby-theme-documentation
│ │ ├── header.mdx
│ │ ├── sidebar.mdx
│ │ └── theme.js
└── gatsby-starter-documentation
│ ├── .gitignore
│ ├── docs
│ ├── hello-world-2.mdx
│ ├── hello-world-3.mdx
│ ├── hello-world-4.mdx
│ ├── hello-world-5.mdx
│ ├── hello-world.mdx
│ └── readme.mdx
│ ├── gatsby-config.js
│ ├── package.json
│ ├── readme.md
│ └── src
│ └── gatsby-theme-documentation
│ ├── header.mdx
│ ├── sidebar.mdx
│ └── theme.js
├── gatsby-config.js
├── lerna.json
├── license.md
├── now.json
├── package.json
├── packages
└── gatsby-theme-documentation
│ ├── gatsby-config.js
│ ├── gatsby-node.js
│ ├── index.js
│ ├── package.json
│ ├── readme.md
│ └── src
│ ├── components.js
│ ├── components
│ ├── button.js
│ ├── doc.js
│ ├── header.js
│ ├── layout.js
│ ├── menu-button.js
│ ├── nav-link.js
│ ├── seo.js
│ └── sidenav.js
│ ├── gatsby-plugin-theme-ui
│ ├── components.js
│ └── index.js
│ ├── header.mdx
│ ├── sidebar.mdx
│ ├── templates
│ └── doc.js
│ └── theme.js
├── readme.md
├── renovate.json
├── src
└── gatsby-theme-documentation
│ ├── header.mdx
│ ├── sidebar.mdx
│ └── theme.js
└── yarn.lock
/.github/workflows/publish.yml:
--------------------------------------------------------------------------------
1 | name: Publish
2 |
3 | on:
4 | push:
5 | branches:
6 | - master
7 | jobs:
8 | master:
9 | runs-on: ubuntu-latest
10 | steps:
11 | - uses: actions/checkout@master
12 | - uses: actions/setup-node@v1
13 | with:
14 | node-version: '10.x'
15 | - name: publish:starters
16 | uses: johno/actions-push-subdirectories@master
17 | env:
18 | API_TOKEN_GITHUB: ${{ secrets.API_TOKEN_GITHUB }}
19 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
20 | with:
21 | args: examples johno
22 | - name: publish:themes
23 | uses: johno/actions-yarn@master
24 | env:
25 | NPM_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}
26 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
27 | with:
28 | args: publish:ci
29 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .cache
3 | public
4 | *.log
5 | *.swp
6 |
--------------------------------------------------------------------------------
/docs/customizing.mdx:
--------------------------------------------------------------------------------
1 | # Customizing
2 |
3 | The primary way for customizing this Gatsby
4 | Theme is using
5 | [component shadowing](https://www.gatsbyjs.org/docs/themes/api-reference#component-shadowing).
6 |
7 | The sidebar, header, and theme are the main intended
8 | aspects to be customized. However, you can essentially change
9 | anything.
10 |
11 | ## Customizing the theme
12 |
13 | `gatsby-theme-documentation` uses a `theme.js` file to populate the
14 | theme values. You can shadow the file at
15 | `src/gatsby-theme-documentation/theme.js`.
16 |
17 | ```js
18 | // src/gatsby-theme-documentation/theme.js
19 | import baseTheme from 'gatsby-theme-documentation/src/theme'
20 |
21 | export default {
22 | ...baseTheme,
23 | colors: {
24 | ...baseTheme.colors,
25 | text: '#111',
26 | background: '#fff'
27 | }
28 | }
29 | ```
30 |
31 | For a full explainer on theming you can
32 | [see the Theme UI docs](https://theme-ui.com/).
33 |
34 | ## Customizing the sidebar
35 |
36 | `gatsby-theme-documentation` uses a `sidebar.mdx` file to populate the navigation.
37 | In order to customize it you can shadow it by creating a file at
38 | `src/gatsby-theme-documentation/sidebar.mdx`.
39 |
40 | #### Example `sidebar.mdx`
41 |
42 | ```mdx
43 | - [Introduction](/introduction/)
44 | - [Getting Started](/getting-started/)
45 | - [GitHub](https://github.com/johno/gatsby-theme-documentation)
46 | ```
47 |
48 | ## Customizing the header
49 |
50 | Similarly to sidebar customization, you can also change the header content by
51 | writing MDX. You can shadow the default header by creating a file at
52 | `src/gatsby-theme-documentation/header.mdx`
53 |
54 | #### Example `header.mdx`
55 |
56 | ```mdx
57 | # 
58 |
59 | - [GitHub](https://github.com/johno/gatsby-theme-documentation)
60 | - [Twitter](https://twitter.com/4lpine)
61 | ```
62 |
63 | ## Adding component shortcodes
64 |
65 | You can add shortcodes to your docs site which can be used throughout
66 | your docs pages by extending the components passed to MDXProvider. You
67 | can do this by using component shadowing and creating the following file
68 | in the root of your project: `src/gatsby-theme-documentation/components.js`.
69 |
70 | #### Example `components.js`
71 |
72 | ```js
73 | import baseComponents from 'gatsby-theme-documentation/src/components'
74 |
75 | import MyCustomH1 from '../components/my-custom-h1'
76 |
77 | export default {
78 | ...baseComponents,
79 | h1: MyCustomH1
80 | }
81 | ```
82 |
--------------------------------------------------------------------------------
/docs/getting-started.mdx:
--------------------------------------------------------------------------------
1 | # Getting Started
2 |
3 | With this theme you can install it as a starter for a new project,
4 | or add it to an existing Gatsby site.
5 |
6 | ## Starters
7 |
8 | The easiest way to get started with `gatsby-theme-documentation` is
9 | to use one of the provided starters. They come with a pre-built theme
10 | and starter content which you can edit and get going.
11 |
12 | Name | Command
13 | ---- | -------
14 | [Base](https://github.com/johno/gatsby-starter-documentation) | `gatsby new johno/gatsby-starter-documentation`
15 | [Dark](https://github.com/johno/gatsby-starter-documentation-dark) | `gatsby new johno/gatsby-starter-documentation-dark`
16 | [Tomato](https://github.com/johno/gatsby-starter-documentation-tomato) | `gatsby new johno/gatsby-starter-documentation-tomato`
17 |
18 | ## Installation
19 |
20 | If you have an existing site you'd like to add the theme to, you
21 | can install the theme and then specify the `basePath`.
22 |
23 | ```
24 | yarn add gatsby-theme-documentation
25 | ```
26 |
27 | ### Set the `basePath`
28 |
29 | ```js
30 | // gatsby-config.js
31 | module.exports = {
32 | plugins: [
33 | {
34 | resolve: 'gatsby-theme-documentation',
35 | options: {
36 | basePath: '/docs'
37 | }
38 | ]
39 | }
40 | ```
41 |
--------------------------------------------------------------------------------
/docs/license.mdx:
--------------------------------------------------------------------------------
1 | import License from '../license.md'
2 |
3 |
4 |
--------------------------------------------------------------------------------
/docs/motivation.mdx:
--------------------------------------------------------------------------------
1 | # Motivation
2 |
3 | A lot of documentation implementations come with all the batteries
4 | included. For large, ambitious projects those can be great fits.
5 | However, for smaller projects, like `gatsby-theme-documentation` itself,
6 | it can be preferable to use something more minimal to start.
7 |
8 | With `gatsby-theme-documentation` all you have to do is write
9 | Markdown for your sidebar and header, then edit a `theme.js`
10 | file which handles all the styling.
11 |
12 | That's it.
13 |
14 | ---
15 |
16 | Down the road, if your project's needs change, you can look behind the
17 | curtains and you have all of Gatsby at your disposal.
18 |
--------------------------------------------------------------------------------
/docs/readme.mdx:
--------------------------------------------------------------------------------
1 | # Gatsby Theme _Documentation_
2 |
3 | A minimalist [Gatsby Theme](https://gatsbyjs.org/docs/themes)
4 | for documentation sites built with [MDX](https://mdxjs.com)
5 | and [Theme UI](https://theme-ui.com).
6 |
7 | Get up and running in seconds with a beautiful docs site so
8 | you can do what's more important: **write docs**.
9 |
10 | ## Features
11 |
12 | - 📑 MDX files for JSX in Markdown
13 | - 🎨 Theme UI-based theming
14 | - 💻 Syntax highlighting
15 | - 📰 MDX-based sidebar navigation
16 | - 🛣 Automatic readme routing
17 | - 🧩 Shortcode support with React components
18 | - 🍔 Collapsible menu
19 | - 📱 Mobile friendly
20 | - 🎣 Custom docs schema
21 |
22 | [Get started](/getting-started)
23 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation-dark/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .cache
3 | public
4 | *.log
5 | *.swp
6 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation-dark/docs/hello-world-2.mdx:
--------------------------------------------------------------------------------
1 | # Hastam candida et tamen
2 |
3 | ## Auro neque
4 |
5 | [Lorem markdownum](http://matrumque-ab.io/marequae.aspx): Telamon patefecit
6 | [linguae](http://www.hoc-coniuge.io/quae), gravem merces: sensi leones ille
7 | matrem palude candida per cineres pulchra: Peliden. Bis sex vina sacros
8 | stimuloque populos me permittat membra. Regna et deseruitque monstro dederat non
9 | quoque inpius, tua nomine. Frustraque perque olivae **revocantis Iovem
10 | Chironis**? Sua Proreus Mercurium *gratia conplexa laborum* gentes et massa
11 | lacrimis non [qui flaventi](http://bene.net/).
12 |
13 | zipRecursive += ldap_iteration;
14 | rw_mouse.esports_lock_page += 100;
15 | if (root_daemon(55003, emulation_device_optical.minisite_leaderboard(drag,
16 | thin), video) + motion_pram_namespace * 1) {
17 | dualMonitor += 1;
18 | popMirrorData.rwPpga += 1;
19 | }
20 | if (zif(passwordRgb - 3, mcaTraceroute, tebibyte_framework) - definition) {
21 | disk += portalLpi + -4 - sync_docking;
22 | paste(rwFileRup + numBankSystem, ad, java_operating_system);
23 | realLte(program);
24 | }
25 | basicPrimary.primary_led -= bitHeader(pci);
26 |
27 | Verbis nam subito licet ve *petunt medulla petit* quoque Iove. Saevis [cum
28 | veneno](http://www.et.org/tundunt-tamen) viribus cratera mei ales mirantur et
29 | exiguam, per tristia ortos. Iter dederant super et *incipere inane limosoque*
30 | mersa **Polydegmona**, et omnis.
31 |
32 | ## Sub precor in ferre loquuntur quoque Alcyone
33 |
34 | Caput **laniato**, tempore, ludere Alcathoen orbam rubentia
35 | [bella](http://meminisse.com/) dracones! Intermissa numero loca spes, inductas a
36 | ferre *saecula accepere* aurum ad meorum supremis.
37 | [Tanti](http://comae-lyramque.com/misit.html) piasti, viderit nocet tot ubi
38 | respicit est reus: audiat genus imago lacte [patrem gravi
39 | colubrae](http://quid.com/tibi-monstri) colentibus: casus.
40 |
41 | 1. Bibes in Menoeten appellare late aliorum ultusque
42 | 2. Hostem erat vinci tardarunt manes
43 | 3. Manu in et dives
44 | 4. Indis datis atrae tamen sumptis quatere
45 |
46 | Esset frondibus eras lacessit condas; mihi carpe in vaticinor adeo cunctae. Vix
47 | temeraria matrem, hanc de, enim minor; vias multi caput. Huic animi? Est nec
48 | adulterium mora castumque caelestia est alma, memorant **spatium**: revocare
49 | quoque: tutus.
50 |
51 | Nec sanguine fata metu via maenades enim, dici et peragentem Marte, mollis et.
52 | Data **ferventibus scires in** dona, pro pondera pugnat. Spectabilis beati
53 | animos conbibitur, posses paret, deae nec! Et caeloque utque ferox formae
54 | auferat Helicona undas saepe inde onerata surgunt sparso, sua perdite dumque
55 | sparsaque te. Sororum Athenae confundas patres, arduus tu victa recisum; saepe
56 | pacem, velo Iphis; et, tristis?
57 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation-dark/docs/hello-world-3.mdx:
--------------------------------------------------------------------------------
1 | # Natamque omnia non bracchia
2 |
3 | ## Et placui nomina laeva
4 |
5 | Lorem markdownum pereat. Suae leto omnia ponti languentique Phinea sentiat
6 | urbem: et mutari latent.
7 |
8 | > Manu Eurypylusque fratres reliquit et murmure occupat libido adversum iam quem
9 | > incognita inmiti. Aut mutua isto quae nomen signa forma, est Clymene exhibet,
10 | > nec [in](http://pariterceler.org/et.html) stellamque corymbis vestros et
11 | > Pelates. Ortus praetereunt linigera rigidis, ab ait atque, se licet.
12 | > [Trepidi](http://www.nuncscythiae.net/dissaepserat) et vive; non cumba altera
13 | > sulphureis editus, in? Semel si ad poenam ignari.
14 |
15 | Ita sonus color vivacemque. Lacrimis aequora saepe; dilata et oblectamina
16 | lebetes omnipotens dextera cursu et munere.
17 |
18 | ## Cum Astreus seque responsaque enim Iuno effugit
19 |
20 | Me tabula dominum largoque furit ingreditur disparibus in mittere talia formosa,
21 | transmittere esse. Tigris vox tollit Lycia stantem gratia, consequar, pectus
22 | tinctis Troezen dilexisse quos excessisse fuga mortis te
23 | [erant](http://forentsum.org/ut-utinamque). [Fide ducens
24 | et](http://leto-temperat.com/dimovit) inquit, vobis Nocte vere; tam nefandos,
25 | venturi vix nervi a terris tam forti.
26 |
27 | impressionServicesHit(click_thread(nosqlFirewireSms));
28 | if (netmask_metadata + readClient) {
29 | coreTeraflopsBalance.default_string = encoding(domainIcmpWheel,
30 | primary);
31 | cmos = default_boot_ssh * bitrateLinkNui;
32 | winsock *= t_grep_disk;
33 | }
34 | driveExabyte(passwordRecord / servletBitrateSolid, bit);
35 | clusterCodecGigabyte += direct_myspace.barVlogStandalone(odbcTween(50 +
36 | browser_design), publishing.ntfs(isdn_inkjet_offline,
37 | basic_oasis_systray, contextual_ping_mamp) + -4);
38 | if (ipad) {
39 | perlZif = executable;
40 | errorPermalinkTable(tooltip_hypertext_ip(box), 4);
41 | gibibyte -= aixConsole.system(
42 | modifierMetadata.barebonesFrozenOpacity.text_file(
43 | cgi_host_laptop, wanOsiParameter), 2 + open);
44 | } else {
45 | rt += floating_hdtv_https + ascii - ping;
46 | webmaster.error_host(flash(scalable, simplex_acl,
47 | control_superscalar_pram), 2);
48 | printerTarget = 1 * driveWindow + iterationLedSoftware;
49 | }
50 |
51 | ## Quid pietas
52 |
53 | Raucum membris quoque, ad aras preces venienti dumque fugabitur cuique at. Urbe
54 | pes Pleias comas superos furor, hi hanc tepido nos denique, iura hinc vobis, et.
55 |
56 | gifGopher(dma_cursor_platform + 77 - recursiveLock, input);
57 | var volume = pdaTweak;
58 | cell += t(1 * rt, ospfMotionWindows(port), 376173 + 1);
59 | torrent += 5;
60 | dlc_ram_raster *= ipodHertzDv.copyrightPrinter(file_dial, trimEditor -
61 | pinterest, cableRead) + barebones_pci;
62 |
63 | Corpore dicentem est, in lingua hos Caicus pugnaeque, volunt mors! Et **deos**,
64 | spatium, culpa novi Myrrha opibusque alterius capi ingemuit ponere tantis!
65 |
66 | Telas non fuerat loca **exsangues** Antiphataeque foventque illud, dum! Huic
67 | genus dubius dempta ossa poena nec nocent **latura** creatus iussus ante
68 | *quippe*, si sua dominos Phoce manusque deseruere. Summa ictu habet fide si
69 | Scylla ora pulvereamque certe Abantiades sacerdotis.
70 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation-dark/docs/hello-world-4.mdx:
--------------------------------------------------------------------------------
1 | # Missa proximus
2 |
3 | ## Nec mirabile cognoscere hanc stabantque contulerat quis
4 |
5 | [Lorem markdownum ferioque](http://exclamat.org/aversuspatri.aspx) propago
6 | intendit ait detraxit loca igni nec oculos. Quaesitique vacuis meum,
7 | [mihi](http://frangitcognoscenti.org/saepe) et facti et solique *esse*. Manus
8 | caede, frustra velocia Irin lugubre idque spectare, in versarunt **videor**
9 | ponto. Saxa progenies arbore rupit sprevit.
10 |
11 | Victores parat comminus tenebris pressoque sedem arces, suorum montibus illam!
12 | Rogabo praemia acuti fracta, sonant est renarro, fronde nescio tradidit pelle,
13 | et tuum belli **amaris natale**. Crinem tempora, quid asper fera mille et socium
14 | tamen, oppositas cinguntur. Et perque si, loci nunc magnorum, quam caput natas.
15 |
16 | ## Haerent mutarent modus incurvata flumine magnique in
17 |
18 | Lunae in urbe causa et o numen ferro fulget. Vobis legit modo putares, tam certe
19 | mare dextra mentem rimas nomine cum caeso; alto aliqua me. Turpe iter et pulmone
20 | euntem [ipso](http://www.tritonia-dant.io/) tamen aliisque Argolicae contraria
21 | est et chlamydis victa sperata ultroque faciebant precari confessaque nostra.
22 | Nec viros ait mortale pectore, plebe vimine in mea nescio alarum sic potuere
23 | patet ad **madefacta** dicunt, Mater. Nisi tegit vestri Coeo senioribus muneris,
24 | premunt in ulla.
25 |
26 | ## Lacertis quantumque saevi
27 |
28 | Ignifero tecti **ovi solidorum gravis**. Et eicit corpora. De mensis arbore me
29 | Glaucus Minos propioris vasto, cum est omnia tu rubet, non silvisque ille.
30 |
31 | ## A patria moenia
32 |
33 | Intravit violata, foedusque descendi committere contra Calydonia fretum lacus,
34 | [ab](http://monte.org/nati.aspx) genitoris valet! Primoque est: horrendae
35 | sedibus et **silvas dolet**, merum parum vertere [et](http://in.com/), alto.
36 | Frustra ponit destringere casu neque quicquid praenuntia quas grata vetorque
37 | femineae o tegitur, signat Maera; nullosque undas victis. Disiecta in *foret*
38 | concilio sedibus viseret.
39 |
40 | if (protectorDeviceDsl) {
41 | kvmHeader += reader;
42 | property *= cpcDimm;
43 | } else {
44 | client = pcDashboardEncoding.cgi(system, panel_threading(
45 | runtimeAddressPpp, rawCcd, d), sms);
46 | basicPublishingBezel = templateAddress;
47 | }
48 | rup += bios(load_station_unmount);
49 | if (yobibyte > pretest_internet_prom) {
50 | menuUrl.pc_tiger_resolution.online_open(5);
51 | } else {
52 | nvram.socialFileAdc += mipsAlpha - overclocking;
53 | tag_gateway_seo = java_virtual;
54 | }
55 | if (logic + pppoeDrive - keyboard_dcim ==
56 | honeypot_protector.proxySli.telecommunications(sata_qwerty,
57 | mca_in)) {
58 | dslamBeta.siteRawVideo += system / lifoAdsl + transistor_express_card +
59 | bit;
60 | handleWhiteBinary = scroll_leopard_cms;
61 | smishingLockPublishing.permalink_motherboard(pageDrag + internic);
62 | }
63 |
64 | ## Minus temerasse vetui
65 |
66 | Foedera media liquores aegros. Inque frontem, urbes vel admovit hostibus et
67 | gladio; sine Haec quae pallam. Torruit licet at collegit iuste demptos stupet
68 | odoribus custos tulit, tum venit ex petisti pharetram et numen narratur placuit.
69 |
70 | - Fores suscipimus
71 | - Ne quod ora habebas secus tuentur Veneris
72 | - Mille dentes
73 | - Et urbes velamina se angues nitidum Pelea
74 |
75 | Canenti lux exsultat marmore Bacche solitum tuta volatilis in terris, non audit
76 | **fluctibus** eris. Huc temperie, munere, defensus nomina clamorque tamen:
77 | tangit cursus meo; longa voce addere humum potest. Orbe sint est alto annos
78 | tyranni finem. Scitaris condi uvis ibit foret cupidine fertque, et, et ferat
79 | verti ipsam fuit effundit, in.
80 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation-dark/docs/hello-world-5.mdx:
--------------------------------------------------------------------------------
1 | # Ita urbesque
2 |
3 | ## Femina virtus misso urbes grates
4 |
5 | Lorem markdownum percussis Redditus; super mihi vivit mentem, novi virgo ut,
6 | *deum patrios* munus? Inroravit fecundaque comis continuam adrides cedit
7 | delicuit Pallantidos protinus egressus quid ea addunt et Lucinam Troiana illi
8 | absistit. Audes igitur [Astypaleia](http://pulsis.net/propecredant.html) misit
9 | ubi locum esse Lernae omnes aegide cervix. Petentem movit suspiria, Herculeamque
10 | illa dixerat viri, et videri vocanti Cyane; spatiis ratae sit humum et per. Est
11 | pennis inmota; quo est Sole super carbasa recessu qui tandem aere.
12 |
13 | > Exstitit cubitoque dimittite. Illi nata origine, sit illum vestra, serpentum
14 | > et multa tertia. Penetrat alios inplumes,
15 | > [an](http://capiti.org/qualemungues), ubi frequentes mille, si. Amphione certa
16 | > solet ab virginitate quae Achaemenides gramina te milia arcuit stagnare ex.
17 |
18 | ## Undis strigis rustice
19 |
20 | Sedare fidas quattuor exsilit Sithoniae Oceanumque sit perenni veniebat mutato
21 | facies cubitoque adiutus Phoebe **cum**? Manu locorum tellus suprema namque:
22 | obscura Eurypylusque tamen pectoribus aras genae; esse. [Ululatibus grandior
23 | mento](http://tuaquod.org/agricolis-versae.php), si se Peneos custodia scripta
24 | tamen populator. Caede rigidique cunasque, ursa **quid quinque**!
25 |
26 | > Quoscumque arcus ac addidit datis Tirynthia sed alter ille blandis, Cecropios
27 | > umbras illa narremur nisi contentusque caput. Tenebas velle silet,
28 | > [in](http://www.genitum.io/coeamusaurea.html) caesa sequantur multis, luce
29 | > bisque, per ille animalia, et.
30 |
31 | ## Paternas parte
32 |
33 | Hunc omnia si medius, quid, exit balteus fide pallor et. Dixerat
34 | [festum](http://www.amantis.com/tigrismodo) este regna! Est Troiae et robora
35 | debebunt, debueram **aether** quam metaque. Creatis cupiam dominumque circumdata
36 | sacra manum, et fecit a pestiferos, poscenti nihil. Dant grates experientia meis
37 | medere illam prius robore ituros auspicio litore sagitta.
38 |
39 | 1. Et si nihil lina operique
40 | 2. Nemora artes
41 | 3. Procubuit negate attoniti
42 | 4. Parentes mora iam ne tuae inmitem
43 | 5. O auras Alcidae
44 |
45 | ## Clymene pinna
46 |
47 | E prolis pulchros, congestaque tectus circumfunditur **sed**: maligne respicit,
48 | [dum](http://vertice-causa.com/te). Dedit inter tibi saxis: est altis nostra,
49 | volucresque nec piscem pinguia.
50 |
51 | 1. Quantum est Phoebi
52 | 2. Inquit ingenio fidesque concursibus venerat Titan vulnera
53 | 3. Duxerat medentes conataeque subitae acuto mitissimus mihi
54 | 4. Praestate sacrifica
55 |
56 | Nelei hac sine patiar, vinclisque dedit primordia ut crimine fecundaque habebat
57 | geminum. Ac de vehi Gangesque num arae sapiente quem frenabas.
58 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation-dark/docs/hello-world.mdx:
--------------------------------------------------------------------------------
1 | # Fecunda illa
2 |
3 | ## Fecit columbas posse viri aevo apri non
4 |
5 | Lorem markdownum sorore extulit, non suo putant tritumque amplexa silvis: in,
6 | lascivaque femineam ara etiam! Oppida clipeus formidine, germanae in filia
7 | etiamnunc demisso visa misce, praedaeque protinus communis paverunt dedit, suo.
8 | Sertaque Hyperborea eatque, sed valles novercam tellure exhortantur coegi.
9 |
10 | 1. Cunctosque plusque
11 | 2. Cum ego vacuas fata nolet At dedit
12 | 3. Nec legerat ostendisse ponat sulcis vincirem cinctaque
13 |
14 | Letali media quod color furtim generosam, huic fudi consule fila vidit videri
15 | animos pomaria iuncosaque dum sic visa regina. Innuba nubila *sole tum* rex est
16 | occiduae diversi: tot illius.
17 |
18 | ## Manus tenus cum
19 |
20 | In faciat qua doctior veluti, dictae iam! Quae salici, illic? Diurnos quod: ore
21 | attonitusque Colchis iam parte adamanta: ignes ab, subiit Maenalon: est.
22 |
23 | Fecerat sub ope posse umbras que modico principium Abantiades amor; solvo
24 | margine; nec pericla toto inde **pontum caelo**. Ardescunt crescentes
25 | pulcherrima cavernis patriam *ferrum Aiax vidit* Aegeus pars partem; [laesum
26 | me](http://aut.io/ego-iungitur). Aequoris et genitor aurea; [quod
27 | fugam](http://www.terris-pectore.net/) cadit ferat iuvenis paverunt, ad eburnea
28 | en sed!
29 |
30 | if (-3 == ide * host_rich) {
31 | boot_mca_thin -= affiliateVector;
32 | vram = gnuPcmcia(
33 | algorithm_internic_systray.key_myspace_boot.prebinding_base(5));
34 | } else {
35 | udp_opengl = soap_ansi;
36 | matrix_cold.sidebarWeb = metal_scareware;
37 | }
38 | var mount_goodput = media_fiber_zettabyte(
39 | bar_terahertz_commercial.filenameModeCrm(time.node(3,
40 | grepRecursion)), lifo_utf(cache_node, name, diskTypefaceRgb(1)),
41 | mainframePowerpoint - repeater_template_framework +
42 | uncLcd.syntaxPram(goldenSecondaryPublishing));
43 | install += cmos_duplex;
44 | if (bluetooth(tcp) > password_uddi) {
45 | lte /= and_ssid(log_cdma);
46 | bugMeta(noc_bar, adf, 2);
47 | fileSoftware(ecc_bmp_captcha, bootKoffice, navigation_lag);
48 | }
49 | if (postscript_time_memory * system + spoofingTrimMiddleware - netiquette(
50 | default_ipv, 5)) {
51 | throughput_skin.static_home_mirror(rosetta_and_barebones.ios_non(
52 | copySpooling));
53 | moodle_kilohertz_jfs -= end_cc_brouter + resources(3, 92);
54 | shift_cms_bitrate.horizontal_rdram = and(standby_address_ipx, 5,
55 | baseband);
56 | }
57 |
58 | Premit lumina sollertior et ipse amborum omnia, ubi se est cur, ictus. Quoniam
59 | Phrygiae, qua aura procerum quoque et habet idem pes non, regna.
60 |
61 | Erat curvi et inferna aliud *cum Procne tempusque* leones ad. Impediunt perque
62 | gravem.
63 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation-dark/docs/readme.mdx:
--------------------------------------------------------------------------------
1 | # Gatsby Documentation Theme
2 |
3 | `gatsby-theme-documentation` is a minimalist Gatsby Theme for
4 | docs sites built with [MDX](https://mdxjs.com) and
5 | [Theme UI](https://theme-ui.com).
6 |
7 | ## Installation
8 |
9 | ```
10 | yarn add gatsby-theme-documentation
11 | ```
12 |
13 | ## Usage
14 |
15 | ```js
16 | // gatsby-config.js
17 | module.exports = {
18 | plugins: [
19 | 'gatsby-theme-documentation'
20 | ]
21 | }
22 | ```
23 |
24 | [See the official docs](https://github.com/johno/gatsby-theme-documentation)
25 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation-dark/gatsby-config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | siteMetadata: {
3 | title: 'Gatsby Documentation Starter',
4 | description: 'This is a starter for gatsby-theme-documentation'
5 | },
6 | plugins: [
7 | 'gatsby-theme-documentation'
8 | ]
9 | }
10 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation-dark/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "name": "gatsby-starter-documentation-dark",
4 | "version": "0.0.27",
5 | "scripts": {
6 | "start": "gatsby develop",
7 | "build": "gatsby build",
8 | "now-build": "yarn build"
9 | },
10 | "license": "MIT",
11 | "dependencies": {
12 | "gatsby": "^2.15.24",
13 | "gatsby-theme-documentation": "^0.0.27",
14 | "react": "^16.9.0",
15 | "react-dom": "^16.9.0"
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation-dark/readme.md:
--------------------------------------------------------------------------------
1 | # gatsby-starter-documentation-dark
2 |
3 | A minimalist dark-mode starter for
4 | [gatsby-theme-documentation](https://github.com/johno/gatsby-theme-documentation).
5 |
6 | 
7 |
8 | ## Installation
9 |
10 | ```sh
11 | gatsby new my-docs-site johno/gatsby-starter-documentation-dark
12 | cd my-docs-site
13 | ```
14 |
15 | ## Usage
16 |
17 | ```sh
18 | yarn start
19 | ```
20 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation-dark/src/gatsby-theme-documentation/header.mdx:
--------------------------------------------------------------------------------
1 | # 
2 |
3 | - [GitHub](https://github.com/johno/gatsby-theme-documentation)
4 | - [Twitter](https://twitter.com/4lpine)
5 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation-dark/src/gatsby-theme-documentation/index.js:
--------------------------------------------------------------------------------
1 | const heading = {
2 | fontFamily: 'heading',
3 | fontWeight: 'heading',
4 | lineHeight: 'heading',
5 | }
6 |
7 | export default {
8 | useCustomProperties: true,
9 | initialColorMode: 'light',
10 | colors: {
11 | text: '#fff',
12 | background: '#060606',
13 | primary: '#3cf',
14 | secondary: '#e0f',
15 | muted: '#191919',
16 | highlight: '#ffffcc',
17 | gray: '#999',
18 | purple: '#c0f',
19 | },
20 | fonts: {
21 | body: 'system-ui, sans-serif',
22 | heading: 'inherit',
23 | monospace: 'Menlo, monospace',
24 | },
25 | fontSizes: [12, 14, 16, 20, 24, 32, 48, 64, 72],
26 | fontWeights: {
27 | body: '400',
28 | heading: '700',
29 | },
30 | lineHeights: {
31 | body: 1.5,
32 | heading: 1.25,
33 | },
34 | textStyles: {
35 | heading,
36 | display: {
37 | variant: 'textStyles.heading',
38 | fontSize: [5, 6, 7],
39 | mt: 3,
40 | },
41 | },
42 | styles: {
43 | Container: {
44 | p: 3,
45 | maxWidth: 1024,
46 | },
47 | root: {
48 | fontFamily: 'body',
49 | lineHeight: 'body',
50 | fontWeight: 'body',
51 | },
52 | h1: {
53 | variant: 'textStyles.display',
54 | },
55 | h2: {
56 | variant: 'textStyles.heading',
57 | fontSize: 5,
58 | },
59 | h3: {
60 | variant: 'textStyles.heading',
61 | fontSize: 4,
62 | },
63 | h4: {
64 | variant: 'textStyles.heading',
65 | fontSize: 3,
66 | },
67 | h5: {
68 | variant: 'textStyles.heading',
69 | fontSize: 2,
70 | },
71 | h6: {
72 | variant: 'textStyles.heading',
73 | fontSize: 1,
74 | },
75 | a: {
76 | color: 'primary',
77 | '&:hover': {
78 | color: 'secondary',
79 | },
80 | },
81 | pre: {
82 | variant: 'prism',
83 | fontFamily: 'monospace',
84 | fontSize: 1,
85 | p: 3,
86 | color: 'text',
87 | bg: 'muted',
88 | overflow: 'auto',
89 | code: {
90 | color: 'inherit',
91 | },
92 | },
93 | code: {
94 | fontFamily: 'monospace',
95 | color: 'secondary',
96 | fontSize: 1,
97 | },
98 | inlineCode: {
99 | fontFamily: 'monospace',
100 | color: 'secondary',
101 | bg: 'muted',
102 | },
103 | table: {
104 | width: '100%',
105 | my: 4,
106 | borderCollapse: 'separate',
107 | borderSpacing: 0,
108 | [['th', 'td']]: {
109 | textAlign: 'left',
110 | py: '4px',
111 | pr: '4px',
112 | pl: 0,
113 | borderColor: 'muted',
114 | borderBottomStyle: 'solid',
115 | },
116 | },
117 | th: {
118 | verticalAlign: 'bottom',
119 | borderBottomWidth: '2px',
120 | },
121 | td: {
122 | verticalAlign: 'top',
123 | borderBottomWidth: '1px',
124 | },
125 | hr: {
126 | border: 0,
127 | borderBottom: '1px solid',
128 | borderColor: 'muted',
129 | },
130 | },
131 | prism: {
132 | [[
133 | '.comment',
134 | '.prolog',
135 | '.doctype',
136 | '.cdata',
137 | '.punctuation',
138 | '.operator',
139 | '.entity',
140 | '.url',
141 | ]]: {
142 | color: 'gray',
143 | },
144 | '.comment': {
145 | fontStyle: 'italic',
146 | },
147 | [[
148 | '.property',
149 | '.tag',
150 | '.boolean',
151 | '.number',
152 | '.constant',
153 | '.symbol',
154 | '.deleted',
155 | '.function',
156 | '.class-name',
157 | '.regex',
158 | '.important',
159 | '.variable',
160 | ]]: {
161 | color: 'purple',
162 | },
163 | [['.atrule', '.attr-value', '.keyword']]: {
164 | color: 'primary',
165 | },
166 | [[
167 | '.selector',
168 | '.attr-name',
169 | '.string',
170 | '.char',
171 | '.builtin',
172 | '.inserted',
173 | ]]: {
174 | color: 'secondary',
175 | },
176 | },
177 | }
178 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation-dark/src/gatsby-theme-documentation/sidebar.mdx:
--------------------------------------------------------------------------------
1 | - [Introduction](/)
2 | - [Hello world](/hello-world)
3 | - [Again, Hello world](/hello-world-2)
4 | - [Another one](/hello-world-3)
5 | - [Ohai there](/hello-world-4)
6 | - [Last doc](/hello-world-5)
7 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation-tomato/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .cache
3 | public
4 | *.log
5 | *.swp
6 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation-tomato/docs/hello-world-2.mdx:
--------------------------------------------------------------------------------
1 | # Hastam candida et tamen
2 |
3 | ## Auro neque
4 |
5 | [Lorem markdownum](http://matrumque-ab.io/marequae.aspx): Telamon patefecit
6 | [linguae](http://www.hoc-coniuge.io/quae), gravem merces: sensi leones ille
7 | matrem palude candida per cineres pulchra: Peliden. Bis sex vina sacros
8 | stimuloque populos me permittat membra. Regna et deseruitque monstro dederat non
9 | quoque inpius, tua nomine. Frustraque perque olivae **revocantis Iovem
10 | Chironis**? Sua Proreus Mercurium *gratia conplexa laborum* gentes et massa
11 | lacrimis non [qui flaventi](http://bene.net/).
12 |
13 | zipRecursive += ldap_iteration;
14 | rw_mouse.esports_lock_page += 100;
15 | if (root_daemon(55003, emulation_device_optical.minisite_leaderboard(drag,
16 | thin), video) + motion_pram_namespace * 1) {
17 | dualMonitor += 1;
18 | popMirrorData.rwPpga += 1;
19 | }
20 | if (zif(passwordRgb - 3, mcaTraceroute, tebibyte_framework) - definition) {
21 | disk += portalLpi + -4 - sync_docking;
22 | paste(rwFileRup + numBankSystem, ad, java_operating_system);
23 | realLte(program);
24 | }
25 | basicPrimary.primary_led -= bitHeader(pci);
26 |
27 | Verbis nam subito licet ve *petunt medulla petit* quoque Iove. Saevis [cum
28 | veneno](http://www.et.org/tundunt-tamen) viribus cratera mei ales mirantur et
29 | exiguam, per tristia ortos. Iter dederant super et *incipere inane limosoque*
30 | mersa **Polydegmona**, et omnis.
31 |
32 | ## Sub precor in ferre loquuntur quoque Alcyone
33 |
34 | Caput **laniato**, tempore, ludere Alcathoen orbam rubentia
35 | [bella](http://meminisse.com/) dracones! Intermissa numero loca spes, inductas a
36 | ferre *saecula accepere* aurum ad meorum supremis.
37 | [Tanti](http://comae-lyramque.com/misit.html) piasti, viderit nocet tot ubi
38 | respicit est reus: audiat genus imago lacte [patrem gravi
39 | colubrae](http://quid.com/tibi-monstri) colentibus: casus.
40 |
41 | 1. Bibes in Menoeten appellare late aliorum ultusque
42 | 2. Hostem erat vinci tardarunt manes
43 | 3. Manu in et dives
44 | 4. Indis datis atrae tamen sumptis quatere
45 |
46 | Esset frondibus eras lacessit condas; mihi carpe in vaticinor adeo cunctae. Vix
47 | temeraria matrem, hanc de, enim minor; vias multi caput. Huic animi? Est nec
48 | adulterium mora castumque caelestia est alma, memorant **spatium**: revocare
49 | quoque: tutus.
50 |
51 | Nec sanguine fata metu via maenades enim, dici et peragentem Marte, mollis et.
52 | Data **ferventibus scires in** dona, pro pondera pugnat. Spectabilis beati
53 | animos conbibitur, posses paret, deae nec! Et caeloque utque ferox formae
54 | auferat Helicona undas saepe inde onerata surgunt sparso, sua perdite dumque
55 | sparsaque te. Sororum Athenae confundas patres, arduus tu victa recisum; saepe
56 | pacem, velo Iphis; et, tristis?
57 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation-tomato/docs/hello-world-3.mdx:
--------------------------------------------------------------------------------
1 | # Natamque omnia non bracchia
2 |
3 | ## Et placui nomina laeva
4 |
5 | Lorem markdownum pereat. Suae leto omnia ponti languentique Phinea sentiat
6 | urbem: et mutari latent.
7 |
8 | > Manu Eurypylusque fratres reliquit et murmure occupat libido adversum iam quem
9 | > incognita inmiti. Aut mutua isto quae nomen signa forma, est Clymene exhibet,
10 | > nec [in](http://pariterceler.org/et.html) stellamque corymbis vestros et
11 | > Pelates. Ortus praetereunt linigera rigidis, ab ait atque, se licet.
12 | > [Trepidi](http://www.nuncscythiae.net/dissaepserat) et vive; non cumba altera
13 | > sulphureis editus, in? Semel si ad poenam ignari.
14 |
15 | Ita sonus color vivacemque. Lacrimis aequora saepe; dilata et oblectamina
16 | lebetes omnipotens dextera cursu et munere.
17 |
18 | ## Cum Astreus seque responsaque enim Iuno effugit
19 |
20 | Me tabula dominum largoque furit ingreditur disparibus in mittere talia formosa,
21 | transmittere esse. Tigris vox tollit Lycia stantem gratia, consequar, pectus
22 | tinctis Troezen dilexisse quos excessisse fuga mortis te
23 | [erant](http://forentsum.org/ut-utinamque). [Fide ducens
24 | et](http://leto-temperat.com/dimovit) inquit, vobis Nocte vere; tam nefandos,
25 | venturi vix nervi a terris tam forti.
26 |
27 | impressionServicesHit(click_thread(nosqlFirewireSms));
28 | if (netmask_metadata + readClient) {
29 | coreTeraflopsBalance.default_string = encoding(domainIcmpWheel,
30 | primary);
31 | cmos = default_boot_ssh * bitrateLinkNui;
32 | winsock *= t_grep_disk;
33 | }
34 | driveExabyte(passwordRecord / servletBitrateSolid, bit);
35 | clusterCodecGigabyte += direct_myspace.barVlogStandalone(odbcTween(50 +
36 | browser_design), publishing.ntfs(isdn_inkjet_offline,
37 | basic_oasis_systray, contextual_ping_mamp) + -4);
38 | if (ipad) {
39 | perlZif = executable;
40 | errorPermalinkTable(tooltip_hypertext_ip(box), 4);
41 | gibibyte -= aixConsole.system(
42 | modifierMetadata.barebonesFrozenOpacity.text_file(
43 | cgi_host_laptop, wanOsiParameter), 2 + open);
44 | } else {
45 | rt += floating_hdtv_https + ascii - ping;
46 | webmaster.error_host(flash(scalable, simplex_acl,
47 | control_superscalar_pram), 2);
48 | printerTarget = 1 * driveWindow + iterationLedSoftware;
49 | }
50 |
51 | ## Quid pietas
52 |
53 | Raucum membris quoque, ad aras preces venienti dumque fugabitur cuique at. Urbe
54 | pes Pleias comas superos furor, hi hanc tepido nos denique, iura hinc vobis, et.
55 |
56 | gifGopher(dma_cursor_platform + 77 - recursiveLock, input);
57 | var volume = pdaTweak;
58 | cell += t(1 * rt, ospfMotionWindows(port), 376173 + 1);
59 | torrent += 5;
60 | dlc_ram_raster *= ipodHertzDv.copyrightPrinter(file_dial, trimEditor -
61 | pinterest, cableRead) + barebones_pci;
62 |
63 | Corpore dicentem est, in lingua hos Caicus pugnaeque, volunt mors! Et **deos**,
64 | spatium, culpa novi Myrrha opibusque alterius capi ingemuit ponere tantis!
65 |
66 | Telas non fuerat loca **exsangues** Antiphataeque foventque illud, dum! Huic
67 | genus dubius dempta ossa poena nec nocent **latura** creatus iussus ante
68 | *quippe*, si sua dominos Phoce manusque deseruere. Summa ictu habet fide si
69 | Scylla ora pulvereamque certe Abantiades sacerdotis.
70 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation-tomato/docs/hello-world-4.mdx:
--------------------------------------------------------------------------------
1 | # Missa proximus
2 |
3 | ## Nec mirabile cognoscere hanc stabantque contulerat quis
4 |
5 | [Lorem markdownum ferioque](http://exclamat.org/aversuspatri.aspx) propago
6 | intendit ait detraxit loca igni nec oculos. Quaesitique vacuis meum,
7 | [mihi](http://frangitcognoscenti.org/saepe) et facti et solique *esse*. Manus
8 | caede, frustra velocia Irin lugubre idque spectare, in versarunt **videor**
9 | ponto. Saxa progenies arbore rupit sprevit.
10 |
11 | Victores parat comminus tenebris pressoque sedem arces, suorum montibus illam!
12 | Rogabo praemia acuti fracta, sonant est renarro, fronde nescio tradidit pelle,
13 | et tuum belli **amaris natale**. Crinem tempora, quid asper fera mille et socium
14 | tamen, oppositas cinguntur. Et perque si, loci nunc magnorum, quam caput natas.
15 |
16 | ## Haerent mutarent modus incurvata flumine magnique in
17 |
18 | Lunae in urbe causa et o numen ferro fulget. Vobis legit modo putares, tam certe
19 | mare dextra mentem rimas nomine cum caeso; alto aliqua me. Turpe iter et pulmone
20 | euntem [ipso](http://www.tritonia-dant.io/) tamen aliisque Argolicae contraria
21 | est et chlamydis victa sperata ultroque faciebant precari confessaque nostra.
22 | Nec viros ait mortale pectore, plebe vimine in mea nescio alarum sic potuere
23 | patet ad **madefacta** dicunt, Mater. Nisi tegit vestri Coeo senioribus muneris,
24 | premunt in ulla.
25 |
26 | ## Lacertis quantumque saevi
27 |
28 | Ignifero tecti **ovi solidorum gravis**. Et eicit corpora. De mensis arbore me
29 | Glaucus Minos propioris vasto, cum est omnia tu rubet, non silvisque ille.
30 |
31 | ## A patria moenia
32 |
33 | Intravit violata, foedusque descendi committere contra Calydonia fretum lacus,
34 | [ab](http://monte.org/nati.aspx) genitoris valet! Primoque est: horrendae
35 | sedibus et **silvas dolet**, merum parum vertere [et](http://in.com/), alto.
36 | Frustra ponit destringere casu neque quicquid praenuntia quas grata vetorque
37 | femineae o tegitur, signat Maera; nullosque undas victis. Disiecta in *foret*
38 | concilio sedibus viseret.
39 |
40 | if (protectorDeviceDsl) {
41 | kvmHeader += reader;
42 | property *= cpcDimm;
43 | } else {
44 | client = pcDashboardEncoding.cgi(system, panel_threading(
45 | runtimeAddressPpp, rawCcd, d), sms);
46 | basicPublishingBezel = templateAddress;
47 | }
48 | rup += bios(load_station_unmount);
49 | if (yobibyte > pretest_internet_prom) {
50 | menuUrl.pc_tiger_resolution.online_open(5);
51 | } else {
52 | nvram.socialFileAdc += mipsAlpha - overclocking;
53 | tag_gateway_seo = java_virtual;
54 | }
55 | if (logic + pppoeDrive - keyboard_dcim ==
56 | honeypot_protector.proxySli.telecommunications(sata_qwerty,
57 | mca_in)) {
58 | dslamBeta.siteRawVideo += system / lifoAdsl + transistor_express_card +
59 | bit;
60 | handleWhiteBinary = scroll_leopard_cms;
61 | smishingLockPublishing.permalink_motherboard(pageDrag + internic);
62 | }
63 |
64 | ## Minus temerasse vetui
65 |
66 | Foedera media liquores aegros. Inque frontem, urbes vel admovit hostibus et
67 | gladio; sine Haec quae pallam. Torruit licet at collegit iuste demptos stupet
68 | odoribus custos tulit, tum venit ex petisti pharetram et numen narratur placuit.
69 |
70 | - Fores suscipimus
71 | - Ne quod ora habebas secus tuentur Veneris
72 | - Mille dentes
73 | - Et urbes velamina se angues nitidum Pelea
74 |
75 | Canenti lux exsultat marmore Bacche solitum tuta volatilis in terris, non audit
76 | **fluctibus** eris. Huc temperie, munere, defensus nomina clamorque tamen:
77 | tangit cursus meo; longa voce addere humum potest. Orbe sint est alto annos
78 | tyranni finem. Scitaris condi uvis ibit foret cupidine fertque, et, et ferat
79 | verti ipsam fuit effundit, in.
80 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation-tomato/docs/hello-world-5.mdx:
--------------------------------------------------------------------------------
1 | # Ita urbesque
2 |
3 | ## Femina virtus misso urbes grates
4 |
5 | Lorem markdownum percussis Redditus; super mihi vivit mentem, novi virgo ut,
6 | *deum patrios* munus? Inroravit fecundaque comis continuam adrides cedit
7 | delicuit Pallantidos protinus egressus quid ea addunt et Lucinam Troiana illi
8 | absistit. Audes igitur [Astypaleia](http://pulsis.net/propecredant.html) misit
9 | ubi locum esse Lernae omnes aegide cervix. Petentem movit suspiria, Herculeamque
10 | illa dixerat viri, et videri vocanti Cyane; spatiis ratae sit humum et per. Est
11 | pennis inmota; quo est Sole super carbasa recessu qui tandem aere.
12 |
13 | > Exstitit cubitoque dimittite. Illi nata origine, sit illum vestra, serpentum
14 | > et multa tertia. Penetrat alios inplumes,
15 | > [an](http://capiti.org/qualemungues), ubi frequentes mille, si. Amphione certa
16 | > solet ab virginitate quae Achaemenides gramina te milia arcuit stagnare ex.
17 |
18 | ## Undis strigis rustice
19 |
20 | Sedare fidas quattuor exsilit Sithoniae Oceanumque sit perenni veniebat mutato
21 | facies cubitoque adiutus Phoebe **cum**? Manu locorum tellus suprema namque:
22 | obscura Eurypylusque tamen pectoribus aras genae; esse. [Ululatibus grandior
23 | mento](http://tuaquod.org/agricolis-versae.php), si se Peneos custodia scripta
24 | tamen populator. Caede rigidique cunasque, ursa **quid quinque**!
25 |
26 | > Quoscumque arcus ac addidit datis Tirynthia sed alter ille blandis, Cecropios
27 | > umbras illa narremur nisi contentusque caput. Tenebas velle silet,
28 | > [in](http://www.genitum.io/coeamusaurea.html) caesa sequantur multis, luce
29 | > bisque, per ille animalia, et.
30 |
31 | ## Paternas parte
32 |
33 | Hunc omnia si medius, quid, exit balteus fide pallor et. Dixerat
34 | [festum](http://www.amantis.com/tigrismodo) este regna! Est Troiae et robora
35 | debebunt, debueram **aether** quam metaque. Creatis cupiam dominumque circumdata
36 | sacra manum, et fecit a pestiferos, poscenti nihil. Dant grates experientia meis
37 | medere illam prius robore ituros auspicio litore sagitta.
38 |
39 | 1. Et si nihil lina operique
40 | 2. Nemora artes
41 | 3. Procubuit negate attoniti
42 | 4. Parentes mora iam ne tuae inmitem
43 | 5. O auras Alcidae
44 |
45 | ## Clymene pinna
46 |
47 | E prolis pulchros, congestaque tectus circumfunditur **sed**: maligne respicit,
48 | [dum](http://vertice-causa.com/te). Dedit inter tibi saxis: est altis nostra,
49 | volucresque nec piscem pinguia.
50 |
51 | 1. Quantum est Phoebi
52 | 2. Inquit ingenio fidesque concursibus venerat Titan vulnera
53 | 3. Duxerat medentes conataeque subitae acuto mitissimus mihi
54 | 4. Praestate sacrifica
55 |
56 | Nelei hac sine patiar, vinclisque dedit primordia ut crimine fecundaque habebat
57 | geminum. Ac de vehi Gangesque num arae sapiente quem frenabas.
58 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation-tomato/docs/hello-world.mdx:
--------------------------------------------------------------------------------
1 | # Fecunda illa
2 |
3 | ## Fecit columbas posse viri aevo apri non
4 |
5 | Lorem markdownum sorore extulit, non suo putant tritumque amplexa silvis: in,
6 | lascivaque femineam ara etiam! Oppida clipeus formidine, germanae in filia
7 | etiamnunc demisso visa misce, praedaeque protinus communis paverunt dedit, suo.
8 | Sertaque Hyperborea eatque, sed valles novercam tellure exhortantur coegi.
9 |
10 | 1. Cunctosque plusque
11 | 2. Cum ego vacuas fata nolet At dedit
12 | 3. Nec legerat ostendisse ponat sulcis vincirem cinctaque
13 |
14 | Letali media quod color furtim generosam, huic fudi consule fila vidit videri
15 | animos pomaria iuncosaque dum sic visa regina. Innuba nubila *sole tum* rex est
16 | occiduae diversi: tot illius.
17 |
18 | ## Manus tenus cum
19 |
20 | In faciat qua doctior veluti, dictae iam! Quae salici, illic? Diurnos quod: ore
21 | attonitusque Colchis iam parte adamanta: ignes ab, subiit Maenalon: est.
22 |
23 | Fecerat sub ope posse umbras que modico principium Abantiades amor; solvo
24 | margine; nec pericla toto inde **pontum caelo**. Ardescunt crescentes
25 | pulcherrima cavernis patriam *ferrum Aiax vidit* Aegeus pars partem; [laesum
26 | me](http://aut.io/ego-iungitur). Aequoris et genitor aurea; [quod
27 | fugam](http://www.terris-pectore.net/) cadit ferat iuvenis paverunt, ad eburnea
28 | en sed!
29 |
30 | if (-3 == ide * host_rich) {
31 | boot_mca_thin -= affiliateVector;
32 | vram = gnuPcmcia(
33 | algorithm_internic_systray.key_myspace_boot.prebinding_base(5));
34 | } else {
35 | udp_opengl = soap_ansi;
36 | matrix_cold.sidebarWeb = metal_scareware;
37 | }
38 | var mount_goodput = media_fiber_zettabyte(
39 | bar_terahertz_commercial.filenameModeCrm(time.node(3,
40 | grepRecursion)), lifo_utf(cache_node, name, diskTypefaceRgb(1)),
41 | mainframePowerpoint - repeater_template_framework +
42 | uncLcd.syntaxPram(goldenSecondaryPublishing));
43 | install += cmos_duplex;
44 | if (bluetooth(tcp) > password_uddi) {
45 | lte /= and_ssid(log_cdma);
46 | bugMeta(noc_bar, adf, 2);
47 | fileSoftware(ecc_bmp_captcha, bootKoffice, navigation_lag);
48 | }
49 | if (postscript_time_memory * system + spoofingTrimMiddleware - netiquette(
50 | default_ipv, 5)) {
51 | throughput_skin.static_home_mirror(rosetta_and_barebones.ios_non(
52 | copySpooling));
53 | moodle_kilohertz_jfs -= end_cc_brouter + resources(3, 92);
54 | shift_cms_bitrate.horizontal_rdram = and(standby_address_ipx, 5,
55 | baseband);
56 | }
57 |
58 | Premit lumina sollertior et ipse amborum omnia, ubi se est cur, ictus. Quoniam
59 | Phrygiae, qua aura procerum quoque et habet idem pes non, regna.
60 |
61 | Erat curvi et inferna aliud *cum Procne tempusque* leones ad. Impediunt perque
62 | gravem.
63 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation-tomato/docs/readme.mdx:
--------------------------------------------------------------------------------
1 | # Gatsby Documentation Theme
2 |
3 | `gatsby-theme-documentation` is a minimalist Gatsby Theme for
4 | docs sites built with [MDX](https://mdxjs.com) and
5 | [Theme UI](https://theme-ui.com).
6 |
7 | ## Installation
8 |
9 | ```
10 | yarn add gatsby-theme-documentation
11 | ```
12 |
13 | ## Usage
14 |
15 | ```js
16 | // gatsby-config.js
17 | module.exports = {
18 | plugins: [
19 | 'gatsby-theme-documentation'
20 | ]
21 | }
22 | ```
23 |
24 | [See the official docs](https://github.com/johno/gatsby-theme-documentation)
25 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation-tomato/gatsby-config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | siteMetadata: {
3 | title: 'Tomato Documentation Starter',
4 | description: 'This is a tomato-themed starter for gatsby-theme-documentation'
5 | },
6 | plugins: [
7 | 'gatsby-theme-documentation'
8 | ]
9 | }
10 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation-tomato/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "name": "gatsby-starter-documentation-tomato",
4 | "version": "0.0.27",
5 | "scripts": {
6 | "start": "gatsby develop",
7 | "build": "gatsby build",
8 | "now-build": "yarn build"
9 | },
10 | "license": "MIT",
11 | "dependencies": {
12 | "gatsby": "^2.15.24",
13 | "gatsby-theme-documentation": "^0.0.27",
14 | "react": "^16.9.0",
15 | "react-dom": "^16.9.0"
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation-tomato/readme.md:
--------------------------------------------------------------------------------
1 | # gatsby-starter-documentation-tomato
2 |
3 | A minimalist starter for
4 | [gatsby-theme-documentation](https://github.com/johno/gatsby-theme-documentation).
5 |
6 | 
7 |
8 | ## Installation
9 |
10 | ```sh
11 | gatsby new my-docs-site johno/gatsby-starter-documentation-tomato
12 | cd my-docs-site
13 | ```
14 |
15 | ## Usage
16 |
17 | ```sh
18 | yarn start
19 | ```
20 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation-tomato/src/gatsby-theme-documentation/header.mdx:
--------------------------------------------------------------------------------
1 | # 
2 |
3 | - [GitHub](https://github.com/johno/gatsby-theme-documentation)
4 | - [Twitter](https://twitter.com/4lpine)
5 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation-tomato/src/gatsby-theme-documentation/sidebar.mdx:
--------------------------------------------------------------------------------
1 | - [Introduction](/)
2 | - [Hello world](/hello-world)
3 | - [Again, Hello world](/hello-world-2)
4 | - [Another one](/hello-world-3)
5 | - [Ohai there](/hello-world-4)
6 | - [Last doc](/hello-world-5)
7 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation-tomato/src/gatsby-theme-documentation/theme.js:
--------------------------------------------------------------------------------
1 | const heading = {
2 | fontFamily: 'heading',
3 | fontWeight: 'heading',
4 | lineHeight: 'heading',
5 | a: {
6 | color: 'inherit',
7 | textDecoration: 'none'
8 | }
9 | }
10 |
11 | export default {
12 | initialColorMode: 'light',
13 | colors: {
14 | text: '#000',
15 | background: '#fff',
16 | primary: 'tomato',
17 | secondary: '#119',
18 | muted: '#ffc4ba',
19 | highlight: '#ffffcc',
20 | gray: '#777',
21 | purple: '#609',
22 | modes: {
23 | dark: {
24 | text: '#fff',
25 | background: '#060606',
26 | primary: '#3cf',
27 | secondary: '#e0f',
28 | muted: '#191919',
29 | highlight: '#ffffcc',
30 | gray: '#999',
31 | purple: '#c0f',
32 | },
33 | deep: {
34 | text: 'hsl(210, 50%, 96%)',
35 | background: 'hsl(230, 25%, 18%)',
36 | primary: 'hsl(260, 100%, 80%)',
37 | secondary: 'hsl(290, 100%, 80%)',
38 | purple: 'hsl(290, 100%, 80%)',
39 | muted: 'hsla(230, 20%, 0%, 20%)',
40 | gray: 'hsl(210, 50%, 60%)',
41 | },
42 | swiss: {
43 | text: 'hsl(10, 20%, 20%)',
44 | background: 'hsl(10, 10%, 98%)',
45 | primary: 'hsl(10, 80%, 50%)',
46 | secondary: 'hsl(10, 60%, 50%)',
47 | purple: 'hsl(250, 60%, 30%)',
48 | muted: 'hsl(10, 20%, 94%)',
49 | gray: 'hsl(10, 20%, 50%)',
50 | },
51 | },
52 | },
53 | fonts: {
54 | body: 'system-ui, sans-serif',
55 | heading: 'inherit',
56 | monospace: 'Menlo, monospace',
57 | },
58 | fontSizes: [12, 14, 16, 20, 24, 32, 48, 64, 72],
59 | fontWeights: {
60 | body: '400',
61 | heading: '700',
62 | },
63 | lineHeights: {
64 | body: 1.5,
65 | heading: 1.25,
66 | },
67 | textStyles: {
68 | heading,
69 | display: {
70 | variant: 'textStyles.heading',
71 | fontSize: [5, 6, 7],
72 | mt: 3,
73 | },
74 | },
75 | styles: {
76 | Container: {
77 | p: 3,
78 | maxWidth: 1024,
79 | },
80 | root: {
81 | fontFamily: 'body',
82 | lineHeight: 'body',
83 | fontWeight: 'body',
84 | },
85 | h1: {
86 | variant: 'textStyles.display',
87 | },
88 | h2: {
89 | variant: 'textStyles.heading',
90 | fontSize: 5,
91 | },
92 | h3: {
93 | variant: 'textStyles.heading',
94 | fontSize: 4,
95 | },
96 | h4: {
97 | variant: 'textStyles.heading',
98 | fontSize: 3,
99 | },
100 | h5: {
101 | variant: 'textStyles.heading',
102 | fontSize: 2,
103 | },
104 | h6: {
105 | variant: 'textStyles.heading',
106 | fontSize: 1,
107 | },
108 | a: {
109 | color: 'text',
110 | textDecoration: 'none',
111 | borderBottom: '2px solid',
112 | borderColor: 'primary',
113 | '&:hover': {
114 | color: 'secondary',
115 | },
116 | },
117 | pre: {
118 | variant: 'prism',
119 | fontFamily: 'monospace',
120 | fontSize: 1,
121 | p: 3,
122 | color: 'text',
123 | bg: 'muted',
124 | overflow: 'auto',
125 | borderRadius: 4,
126 | code: {
127 | color: 'inherit',
128 | },
129 | },
130 | code: {
131 | fontFamily: 'monospace',
132 | color: '#661709',
133 | fontSize: 1,
134 | },
135 | inlineCode: {
136 | fontFamily: 'monospace',
137 | color: 'primary',
138 | bg: 'black',
139 | borderRadius: 4,
140 | px: 2,
141 | py: 1,
142 | },
143 | table: {
144 | width: '100%',
145 | my: 4,
146 | borderCollapse: 'separate',
147 | borderSpacing: 0,
148 | [['th', 'td']]: {
149 | textAlign: 'left',
150 | py: '4px',
151 | pr: '4px',
152 | pl: 0,
153 | borderColor: 'muted',
154 | borderBottomStyle: 'solid',
155 | },
156 | },
157 | th: {
158 | verticalAlign: 'bottom',
159 | borderBottomWidth: '2px',
160 | },
161 | td: {
162 | verticalAlign: 'top',
163 | borderBottomWidth: '1px',
164 | },
165 | hr: {
166 | border: 0,
167 | borderBottom: '1px solid',
168 | borderColor: 'muted',
169 | }
170 | },
171 | prism: {
172 | [[
173 | '.comment',
174 | '.prolog',
175 | '.doctype',
176 | '.cdata',
177 | '.punctuation',
178 | '.operator',
179 | '.entity',
180 | '.url',
181 | ]]: {
182 | color: 'gray',
183 | },
184 | '.comment': {
185 | fontStyle: 'italic',
186 | },
187 | [[
188 | '.property',
189 | '.tag',
190 | '.boolean',
191 | '.number',
192 | '.constant',
193 | '.symbol',
194 | '.deleted',
195 | '.function',
196 | '.class-name',
197 | '.regex',
198 | '.important',
199 | '.variable',
200 | ]]: {
201 | color: 'black',
202 | },
203 | [['.atrule', '.attr-value', '.keyword']]: {
204 | color: 'primary',
205 | },
206 | [[
207 | '.selector',
208 | '.attr-name',
209 | '.string',
210 | '.char',
211 | '.builtin',
212 | '.inserted',
213 | ]]: {
214 | color: '#661709',
215 | },
216 | },
217 | }
218 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .cache
3 | public
4 | *.log
5 | *.swp
6 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation/docs/hello-world-2.mdx:
--------------------------------------------------------------------------------
1 | # Hastam candida et tamen
2 |
3 | ## Auro neque
4 |
5 | [Lorem markdownum](http://matrumque-ab.io/marequae.aspx): Telamon patefecit
6 | [linguae](http://www.hoc-coniuge.io/quae), gravem merces: sensi leones ille
7 | matrem palude candida per cineres pulchra: Peliden. Bis sex vina sacros
8 | stimuloque populos me permittat membra. Regna et deseruitque monstro dederat non
9 | quoque inpius, tua nomine. Frustraque perque olivae **revocantis Iovem
10 | Chironis**? Sua Proreus Mercurium _gratia conplexa laborum_ gentes et massa
11 | lacrimis non [qui flaventi](http://bene.net/).
12 |
13 | ```
14 | Peliden. Bis sex vina sacros stimuloque populos me permittat membra. Regna et deseruitque monstro dederat non quoque inpius, tua nomine. Frustraque perque
15 | ```
16 |
17 | zipRecursive += ldap_iteration;
18 | rw_mouse.esports_lock_page += 100;
19 | if (root_daemon(55003, emulation_device_optical.minisite_leaderboard(drag,
20 | thin), video) + motion_pram_namespace * 1) {
21 | dualMonitor += 1;
22 | popMirrorData.rwPpga += 1;
23 | }
24 | if (zif(passwordRgb - 3, mcaTraceroute, tebibyte_framework) - definition) {
25 | disk += portalLpi + -4 - sync_docking;
26 | paste(rwFileRup + numBankSystem, ad, java_operating_system);
27 | realLte(program);
28 | }
29 | basicPrimary.primary_led -= bitHeader(pci);
30 |
31 | Verbis nam subito licet ve _petunt medulla petit_ quoque Iove. Saevis
32 | [cum veneno](http://www.et.org/tundunt-tamen) viribus cratera mei ales mirantur
33 | et exiguam, per tristia ortos. Iter dederant super et _incipere inane limosoque_
34 | mersa **Polydegmona**, et omnis.
35 |
36 | ## Sub precor in ferre loquuntur quoque Alcyone
37 |
38 | Caput **laniato**, tempore, ludere Alcathoen orbam rubentia
39 | [bella](http://meminisse.com/) dracones! Intermissa numero loca spes, inductas a
40 | ferre _saecula accepere_ aurum ad meorum supremis.
41 | [Tanti](http://comae-lyramque.com/misit.html) piasti, viderit nocet tot ubi
42 | respicit est reus: audiat genus imago lacte
43 | [patrem gravi colubrae](http://quid.com/tibi-monstri) colentibus: casus.
44 |
45 | 1. Bibes in Menoeten appellare late aliorum ultusque
46 | 2. Hostem erat vinci tardarunt manes
47 | 3. Manu in et dives
48 | 4. Indis datis atrae tamen sumptis quatere
49 |
50 | Esset frondibus eras lacessit condas; mihi carpe in vaticinor adeo cunctae. Vix
51 | temeraria matrem, hanc de, enim minor; vias multi caput. Huic animi? Est nec
52 | adulterium mora castumque caelestia est alma, memorant **spatium**: revocare
53 | quoque: tutus.
54 |
55 | Nec sanguine fata metu via maenades enim, dici et peragentem Marte, mollis et.
56 | Data **ferventibus scires in** dona, pro pondera pugnat. Spectabilis beati
57 | animos conbibitur, posses paret, deae nec! Et caeloque utque ferox formae
58 | auferat Helicona undas saepe inde onerata surgunt sparso, sua perdite dumque
59 | sparsaque te. Sororum Athenae confundas patres, arduus tu victa recisum; saepe
60 | pacem, velo Iphis; et, tristis?
61 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation/docs/hello-world-3.mdx:
--------------------------------------------------------------------------------
1 | # Natamque omnia non bracchia
2 |
3 | ## Et placui nomina laeva
4 |
5 | Lorem markdownum pereat. Suae leto omnia ponti languentique Phinea sentiat
6 | urbem: et mutari latent.
7 |
8 | > Manu Eurypylusque fratres reliquit et murmure occupat libido adversum iam quem
9 | > incognita inmiti. Aut mutua isto quae nomen signa forma, est Clymene exhibet,
10 | > nec [in](http://pariterceler.org/et.html) stellamque corymbis vestros et
11 | > Pelates. Ortus praetereunt linigera rigidis, ab ait atque, se licet.
12 | > [Trepidi](http://www.nuncscythiae.net/dissaepserat) et vive; non cumba altera
13 | > sulphureis editus, in? Semel si ad poenam ignari.
14 |
15 | Ita sonus color vivacemque. Lacrimis aequora saepe; dilata et oblectamina
16 | lebetes omnipotens dextera cursu et munere.
17 |
18 | ## Cum Astreus seque responsaque enim Iuno effugit
19 |
20 | Me tabula dominum largoque furit ingreditur disparibus in mittere talia formosa,
21 | transmittere esse. Tigris vox tollit Lycia stantem gratia, consequar, pectus
22 | tinctis Troezen dilexisse quos excessisse fuga mortis te
23 | [erant](http://forentsum.org/ut-utinamque). [Fide ducens
24 | et](http://leto-temperat.com/dimovit) inquit, vobis Nocte vere; tam nefandos,
25 | venturi vix nervi a terris tam forti.
26 |
27 | impressionServicesHit(click_thread(nosqlFirewireSms));
28 | if (netmask_metadata + readClient) {
29 | coreTeraflopsBalance.default_string = encoding(domainIcmpWheel,
30 | primary);
31 | cmos = default_boot_ssh * bitrateLinkNui;
32 | winsock *= t_grep_disk;
33 | }
34 | driveExabyte(passwordRecord / servletBitrateSolid, bit);
35 | clusterCodecGigabyte += direct_myspace.barVlogStandalone(odbcTween(50 +
36 | browser_design), publishing.ntfs(isdn_inkjet_offline,
37 | basic_oasis_systray, contextual_ping_mamp) + -4);
38 | if (ipad) {
39 | perlZif = executable;
40 | errorPermalinkTable(tooltip_hypertext_ip(box), 4);
41 | gibibyte -= aixConsole.system(
42 | modifierMetadata.barebonesFrozenOpacity.text_file(
43 | cgi_host_laptop, wanOsiParameter), 2 + open);
44 | } else {
45 | rt += floating_hdtv_https + ascii - ping;
46 | webmaster.error_host(flash(scalable, simplex_acl,
47 | control_superscalar_pram), 2);
48 | printerTarget = 1 * driveWindow + iterationLedSoftware;
49 | }
50 |
51 | ## Quid pietas
52 |
53 | Raucum membris quoque, ad aras preces venienti dumque fugabitur cuique at. Urbe
54 | pes Pleias comas superos furor, hi hanc tepido nos denique, iura hinc vobis, et.
55 |
56 | gifGopher(dma_cursor_platform + 77 - recursiveLock, input);
57 | var volume = pdaTweak;
58 | cell += t(1 * rt, ospfMotionWindows(port), 376173 + 1);
59 | torrent += 5;
60 | dlc_ram_raster *= ipodHertzDv.copyrightPrinter(file_dial, trimEditor -
61 | pinterest, cableRead) + barebones_pci;
62 |
63 | Corpore dicentem est, in lingua hos Caicus pugnaeque, volunt mors! Et **deos**,
64 | spatium, culpa novi Myrrha opibusque alterius capi ingemuit ponere tantis!
65 |
66 | Telas non fuerat loca **exsangues** Antiphataeque foventque illud, dum! Huic
67 | genus dubius dempta ossa poena nec nocent **latura** creatus iussus ante
68 | *quippe*, si sua dominos Phoce manusque deseruere. Summa ictu habet fide si
69 | Scylla ora pulvereamque certe Abantiades sacerdotis.
70 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation/docs/hello-world-4.mdx:
--------------------------------------------------------------------------------
1 | # Missa proximus
2 |
3 | ## Nec mirabile cognoscere hanc stabantque contulerat quis
4 |
5 | [Lorem markdownum ferioque](http://exclamat.org/aversuspatri.aspx) propago
6 | intendit ait detraxit loca igni nec oculos. Quaesitique vacuis meum,
7 | [mihi](http://frangitcognoscenti.org/saepe) et facti et solique *esse*. Manus
8 | caede, frustra velocia Irin lugubre idque spectare, in versarunt **videor**
9 | ponto. Saxa progenies arbore rupit sprevit.
10 |
11 | Victores parat comminus tenebris pressoque sedem arces, suorum montibus illam!
12 | Rogabo praemia acuti fracta, sonant est renarro, fronde nescio tradidit pelle,
13 | et tuum belli **amaris natale**. Crinem tempora, quid asper fera mille et socium
14 | tamen, oppositas cinguntur. Et perque si, loci nunc magnorum, quam caput natas.
15 |
16 | ## Haerent mutarent modus incurvata flumine magnique in
17 |
18 | Lunae in urbe causa et o numen ferro fulget. Vobis legit modo putares, tam certe
19 | mare dextra mentem rimas nomine cum caeso; alto aliqua me. Turpe iter et pulmone
20 | euntem [ipso](http://www.tritonia-dant.io/) tamen aliisque Argolicae contraria
21 | est et chlamydis victa sperata ultroque faciebant precari confessaque nostra.
22 | Nec viros ait mortale pectore, plebe vimine in mea nescio alarum sic potuere
23 | patet ad **madefacta** dicunt, Mater. Nisi tegit vestri Coeo senioribus muneris,
24 | premunt in ulla.
25 |
26 | ## Lacertis quantumque saevi
27 |
28 | Ignifero tecti **ovi solidorum gravis**. Et eicit corpora. De mensis arbore me
29 | Glaucus Minos propioris vasto, cum est omnia tu rubet, non silvisque ille.
30 |
31 | ## A patria moenia
32 |
33 | Intravit violata, foedusque descendi committere contra Calydonia fretum lacus,
34 | [ab](http://monte.org/nati.aspx) genitoris valet! Primoque est: horrendae
35 | sedibus et **silvas dolet**, merum parum vertere [et](http://in.com/), alto.
36 | Frustra ponit destringere casu neque quicquid praenuntia quas grata vetorque
37 | femineae o tegitur, signat Maera; nullosque undas victis. Disiecta in *foret*
38 | concilio sedibus viseret.
39 |
40 | if (protectorDeviceDsl) {
41 | kvmHeader += reader;
42 | property *= cpcDimm;
43 | } else {
44 | client = pcDashboardEncoding.cgi(system, panel_threading(
45 | runtimeAddressPpp, rawCcd, d), sms);
46 | basicPublishingBezel = templateAddress;
47 | }
48 | rup += bios(load_station_unmount);
49 | if (yobibyte > pretest_internet_prom) {
50 | menuUrl.pc_tiger_resolution.online_open(5);
51 | } else {
52 | nvram.socialFileAdc += mipsAlpha - overclocking;
53 | tag_gateway_seo = java_virtual;
54 | }
55 | if (logic + pppoeDrive - keyboard_dcim ==
56 | honeypot_protector.proxySli.telecommunications(sata_qwerty,
57 | mca_in)) {
58 | dslamBeta.siteRawVideo += system / lifoAdsl + transistor_express_card +
59 | bit;
60 | handleWhiteBinary = scroll_leopard_cms;
61 | smishingLockPublishing.permalink_motherboard(pageDrag + internic);
62 | }
63 |
64 | ## Minus temerasse vetui
65 |
66 | Foedera media liquores aegros. Inque frontem, urbes vel admovit hostibus et
67 | gladio; sine Haec quae pallam. Torruit licet at collegit iuste demptos stupet
68 | odoribus custos tulit, tum venit ex petisti pharetram et numen narratur placuit.
69 |
70 | - Fores suscipimus
71 | - Ne quod ora habebas secus tuentur Veneris
72 | - Mille dentes
73 | - Et urbes velamina se angues nitidum Pelea
74 |
75 | Canenti lux exsultat marmore Bacche solitum tuta volatilis in terris, non audit
76 | **fluctibus** eris. Huc temperie, munere, defensus nomina clamorque tamen:
77 | tangit cursus meo; longa voce addere humum potest. Orbe sint est alto annos
78 | tyranni finem. Scitaris condi uvis ibit foret cupidine fertque, et, et ferat
79 | verti ipsam fuit effundit, in.
80 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation/docs/hello-world-5.mdx:
--------------------------------------------------------------------------------
1 | # Ita urbesque
2 |
3 | ## Femina virtus misso urbes grates
4 |
5 | Lorem markdownum percussis Redditus; super mihi vivit mentem, novi virgo ut,
6 | *deum patrios* munus? Inroravit fecundaque comis continuam adrides cedit
7 | delicuit Pallantidos protinus egressus quid ea addunt et Lucinam Troiana illi
8 | absistit. Audes igitur [Astypaleia](http://pulsis.net/propecredant.html) misit
9 | ubi locum esse Lernae omnes aegide cervix. Petentem movit suspiria, Herculeamque
10 | illa dixerat viri, et videri vocanti Cyane; spatiis ratae sit humum et per. Est
11 | pennis inmota; quo est Sole super carbasa recessu qui tandem aere.
12 |
13 | > Exstitit cubitoque dimittite. Illi nata origine, sit illum vestra, serpentum
14 | > et multa tertia. Penetrat alios inplumes,
15 | > [an](http://capiti.org/qualemungues), ubi frequentes mille, si. Amphione certa
16 | > solet ab virginitate quae Achaemenides gramina te milia arcuit stagnare ex.
17 |
18 | ## Undis strigis rustice
19 |
20 | Sedare fidas quattuor exsilit Sithoniae Oceanumque sit perenni veniebat mutato
21 | facies cubitoque adiutus Phoebe **cum**? Manu locorum tellus suprema namque:
22 | obscura Eurypylusque tamen pectoribus aras genae; esse. [Ululatibus grandior
23 | mento](http://tuaquod.org/agricolis-versae.php), si se Peneos custodia scripta
24 | tamen populator. Caede rigidique cunasque, ursa **quid quinque**!
25 |
26 | > Quoscumque arcus ac addidit datis Tirynthia sed alter ille blandis, Cecropios
27 | > umbras illa narremur nisi contentusque caput. Tenebas velle silet,
28 | > [in](http://www.genitum.io/coeamusaurea.html) caesa sequantur multis, luce
29 | > bisque, per ille animalia, et.
30 |
31 | ## Paternas parte
32 |
33 | Hunc omnia si medius, quid, exit balteus fide pallor et. Dixerat
34 | [festum](http://www.amantis.com/tigrismodo) este regna! Est Troiae et robora
35 | debebunt, debueram **aether** quam metaque. Creatis cupiam dominumque circumdata
36 | sacra manum, et fecit a pestiferos, poscenti nihil. Dant grates experientia meis
37 | medere illam prius robore ituros auspicio litore sagitta.
38 |
39 | 1. Et si nihil lina operique
40 | 2. Nemora artes
41 | 3. Procubuit negate attoniti
42 | 4. Parentes mora iam ne tuae inmitem
43 | 5. O auras Alcidae
44 |
45 | ## Clymene pinna
46 |
47 | E prolis pulchros, congestaque tectus circumfunditur **sed**: maligne respicit,
48 | [dum](http://vertice-causa.com/te). Dedit inter tibi saxis: est altis nostra,
49 | volucresque nec piscem pinguia.
50 |
51 | 1. Quantum est Phoebi
52 | 2. Inquit ingenio fidesque concursibus venerat Titan vulnera
53 | 3. Duxerat medentes conataeque subitae acuto mitissimus mihi
54 | 4. Praestate sacrifica
55 |
56 | Nelei hac sine patiar, vinclisque dedit primordia ut crimine fecundaque habebat
57 | geminum. Ac de vehi Gangesque num arae sapiente quem frenabas.
58 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation/docs/hello-world.mdx:
--------------------------------------------------------------------------------
1 | # Fecunda illa
2 |
3 | ## Fecit columbas posse viri aevo apri non
4 |
5 | Lorem markdownum sorore extulit, non suo putant tritumque amplexa silvis: in,
6 | lascivaque femineam ara etiam! Oppida clipeus formidine, germanae in filia
7 | etiamnunc demisso visa misce, praedaeque protinus communis paverunt dedit, suo.
8 | Sertaque Hyperborea eatque, sed valles novercam tellure exhortantur coegi.
9 |
10 | 1. Cunctosque plusque
11 | 2. Cum ego vacuas fata nolet At dedit
12 | 3. Nec legerat ostendisse ponat sulcis vincirem cinctaque
13 |
14 | Letali media quod color furtim generosam, huic fudi consule fila vidit videri
15 | animos pomaria iuncosaque dum sic visa regina. Innuba nubila *sole tum* rex est
16 | occiduae diversi: tot illius.
17 |
18 | ## Manus tenus cum
19 |
20 | In faciat qua doctior veluti, dictae iam! Quae salici, illic? Diurnos quod: ore
21 | attonitusque Colchis iam parte adamanta: ignes ab, subiit Maenalon: est.
22 |
23 | Fecerat sub ope posse umbras que modico principium Abantiades amor; solvo
24 | margine; nec pericla toto inde **pontum caelo**. Ardescunt crescentes
25 | pulcherrima cavernis patriam *ferrum Aiax vidit* Aegeus pars partem; [laesum
26 | me](http://aut.io/ego-iungitur). Aequoris et genitor aurea; [quod
27 | fugam](http://www.terris-pectore.net/) cadit ferat iuvenis paverunt, ad eburnea
28 | en sed!
29 |
30 | if (-3 == ide * host_rich) {
31 | boot_mca_thin -= affiliateVector;
32 | vram = gnuPcmcia(
33 | algorithm_internic_systray.key_myspace_boot.prebinding_base(5));
34 | } else {
35 | udp_opengl = soap_ansi;
36 | matrix_cold.sidebarWeb = metal_scareware;
37 | }
38 | var mount_goodput = media_fiber_zettabyte(
39 | bar_terahertz_commercial.filenameModeCrm(time.node(3,
40 | grepRecursion)), lifo_utf(cache_node, name, diskTypefaceRgb(1)),
41 | mainframePowerpoint - repeater_template_framework +
42 | uncLcd.syntaxPram(goldenSecondaryPublishing));
43 | install += cmos_duplex;
44 | if (bluetooth(tcp) > password_uddi) {
45 | lte /= and_ssid(log_cdma);
46 | bugMeta(noc_bar, adf, 2);
47 | fileSoftware(ecc_bmp_captcha, bootKoffice, navigation_lag);
48 | }
49 | if (postscript_time_memory * system + spoofingTrimMiddleware - netiquette(
50 | default_ipv, 5)) {
51 | throughput_skin.static_home_mirror(rosetta_and_barebones.ios_non(
52 | copySpooling));
53 | moodle_kilohertz_jfs -= end_cc_brouter + resources(3, 92);
54 | shift_cms_bitrate.horizontal_rdram = and(standby_address_ipx, 5,
55 | baseband);
56 | }
57 |
58 | Premit lumina sollertior et ipse amborum omnia, ubi se est cur, ictus. Quoniam
59 | Phrygiae, qua aura procerum quoque et habet idem pes non, regna.
60 |
61 | Erat curvi et inferna aliud *cum Procne tempusque* leones ad. Impediunt perque
62 | gravem.
63 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation/docs/readme.mdx:
--------------------------------------------------------------------------------
1 | # Gatsby Documentation Theme
2 |
3 | `gatsby-theme-documentation` is a minimalist Gatsby Theme for
4 | docs sites built with [MDX](https://mdxjs.com) and
5 | [Theme UI](https://theme-ui.com).
6 |
7 | ## Installation
8 |
9 | ```
10 | yarn add gatsby-theme-documentation
11 | ```
12 |
13 | ## Usage
14 |
15 | ```js
16 | // gatsby-config.js
17 | module.exports = {
18 | plugins: [
19 | 'gatsby-theme-documentation'
20 | ]
21 | }
22 | ```
23 |
24 | [See the official docs](https://github.com/johno/gatsby-theme-documentation)
25 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation/gatsby-config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | siteMetadata: {
3 | title: 'Gatsby Documentation Starter',
4 | description: 'This is a starter for gatsby-theme-documentation'
5 | },
6 | plugins: [
7 | 'gatsby-theme-documentation'
8 | ]
9 | }
10 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "name": "gatsby-starter-documentation",
4 | "version": "0.0.27",
5 | "scripts": {
6 | "start": "gatsby develop",
7 | "build": "gatsby build",
8 | "now-build": "yarn build"
9 | },
10 | "license": "MIT",
11 | "dependencies": {
12 | "gatsby": "^2.15.24",
13 | "gatsby-theme-documentation": "^0.0.27",
14 | "react": "^16.9.0",
15 | "react-dom": "^16.9.0"
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation/readme.md:
--------------------------------------------------------------------------------
1 | # gatsby-starter-documentation
2 |
3 | A minimalist starter for
4 | [gatsby-theme-documentation](https://github.com/johno/gatsby-theme-documentation).
5 |
6 | 
7 |
8 | ## Installation
9 |
10 | ```sh
11 | gatsby new my-docs-site johno/gatsby-starter-documentation
12 | cd my-docs-site
13 | ```
14 |
15 | ## Usage
16 |
17 | ```sh
18 | yarn start
19 | ```
20 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation/src/gatsby-theme-documentation/header.mdx:
--------------------------------------------------------------------------------
1 | # 
2 |
3 | - [GitHub](https://github.com/johno/gatsby-theme-documentation)
4 | - [Twitter](https://twitter.com/4lpine)
5 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation/src/gatsby-theme-documentation/sidebar.mdx:
--------------------------------------------------------------------------------
1 | - [Introduction](/)
2 | - [Hello world](/hello-world)
3 | - [Again, Hello world](/hello-world-2)
4 | - [Another one](/hello-world-3)
5 | - [Ohai there](/hello-world-4)
6 | - [Last doc](/hello-world-5)
7 |
--------------------------------------------------------------------------------
/examples/gatsby-starter-documentation/src/gatsby-theme-documentation/theme.js:
--------------------------------------------------------------------------------
1 | const heading = {
2 | fontFamily: 'heading',
3 | fontWeight: 'heading',
4 | lineHeight: 'heading',
5 | a: {
6 | color: 'inherit',
7 | textDecoration: 'none'
8 | }
9 | }
10 |
11 | export default {
12 | initialColorMode: 'light',
13 | colors: {
14 | text: '#000',
15 | background: '#fff',
16 | primary: '#33e',
17 | secondary: '#119',
18 | muted: '#f6f6f6',
19 | highlight: '#ffffcc',
20 | gray: '#777',
21 | purple: '#609',
22 | modes: {
23 | dark: {
24 | text: '#fff',
25 | background: '#060606',
26 | primary: '#3cf',
27 | secondary: '#e0f',
28 | muted: '#191919',
29 | highlight: '#ffffcc',
30 | gray: '#999',
31 | purple: '#c0f',
32 | },
33 | deep: {
34 | text: 'hsl(210, 50%, 96%)',
35 | background: 'hsl(230, 25%, 18%)',
36 | primary: 'hsl(260, 100%, 80%)',
37 | secondary: 'hsl(290, 100%, 80%)',
38 | purple: 'hsl(290, 100%, 80%)',
39 | muted: 'hsla(230, 20%, 0%, 20%)',
40 | gray: 'hsl(210, 50%, 60%)',
41 | },
42 | swiss: {
43 | text: 'hsl(10, 20%, 20%)',
44 | background: 'hsl(10, 10%, 98%)',
45 | primary: 'hsl(10, 80%, 50%)',
46 | secondary: 'hsl(10, 60%, 50%)',
47 | purple: 'hsl(250, 60%, 30%)',
48 | muted: 'hsl(10, 20%, 94%)',
49 | gray: 'hsl(10, 20%, 50%)',
50 | },
51 | },
52 | },
53 | fonts: {
54 | body: 'system-ui, sans-serif',
55 | heading: 'inherit',
56 | monospace: 'Menlo, monospace',
57 | },
58 | fontSizes: [12, 14, 16, 20, 24, 32, 48, 64, 72],
59 | fontWeights: {
60 | body: '400',
61 | heading: '700',
62 | },
63 | lineHeights: {
64 | body: 1.5,
65 | heading: 1.25,
66 | },
67 | textStyles: {
68 | heading,
69 | display: {
70 | variant: 'textStyles.heading',
71 | fontSize: [5, 6, 7],
72 | mt: 3,
73 | },
74 | },
75 | styles: {
76 | Container: {
77 | p: 3,
78 | maxWidth: 1024,
79 | },
80 | root: {
81 | fontFamily: 'body',
82 | lineHeight: 'body',
83 | fontWeight: 'body',
84 | },
85 | h1: {
86 | variant: 'textStyles.display',
87 | },
88 | h2: {
89 | variant: 'textStyles.heading',
90 | fontSize: 5,
91 | },
92 | h3: {
93 | variant: 'textStyles.heading',
94 | fontSize: 4,
95 | },
96 | h4: {
97 | variant: 'textStyles.heading',
98 | fontSize: 3,
99 | },
100 | h5: {
101 | variant: 'textStyles.heading',
102 | fontSize: 2,
103 | },
104 | h6: {
105 | variant: 'textStyles.heading',
106 | fontSize: 1,
107 | },
108 | a: {
109 | color: 'primary',
110 | '&:hover': {
111 | color: 'secondary',
112 | },
113 | },
114 | pre: {
115 | variant: 'prism',
116 | fontFamily: 'monospace',
117 | fontSize: 1,
118 | p: 3,
119 | color: 'text',
120 | bg: 'muted',
121 | overflow: 'auto',
122 | code: {
123 | color: 'inherit',
124 | },
125 | },
126 | code: {
127 | fontFamily: 'monospace',
128 | color: 'secondary',
129 | fontSize: 1,
130 | },
131 | inlineCode: {
132 | fontFamily: 'monospace',
133 | color: 'secondary',
134 | bg: 'muted',
135 | },
136 | table: {
137 | width: '100%',
138 | my: 4,
139 | borderCollapse: 'separate',
140 | borderSpacing: 0,
141 | [['th', 'td']]: {
142 | textAlign: 'left',
143 | py: '4px',
144 | pr: '4px',
145 | pl: 0,
146 | borderColor: 'muted',
147 | borderBottomStyle: 'solid',
148 | },
149 | },
150 | th: {
151 | verticalAlign: 'bottom',
152 | borderBottomWidth: '2px',
153 | },
154 | td: {
155 | verticalAlign: 'top',
156 | borderBottomWidth: '1px',
157 | },
158 | hr: {
159 | border: 0,
160 | borderBottom: '1px solid',
161 | borderColor: 'muted',
162 | },
163 | img: {
164 | maxWidth: '100%'
165 | }
166 | },
167 | prism: {
168 | [[
169 | '.comment',
170 | '.prolog',
171 | '.doctype',
172 | '.cdata',
173 | '.punctuation',
174 | '.operator',
175 | '.entity',
176 | '.url',
177 | ]]: {
178 | color: 'gray',
179 | },
180 | '.comment': {
181 | fontStyle: 'italic',
182 | },
183 | [[
184 | '.property',
185 | '.tag',
186 | '.boolean',
187 | '.number',
188 | '.constant',
189 | '.symbol',
190 | '.deleted',
191 | '.function',
192 | '.class-name',
193 | '.regex',
194 | '.important',
195 | '.variable',
196 | ]]: {
197 | color: 'purple',
198 | },
199 | [['.atrule', '.attr-value', '.keyword']]: {
200 | color: 'primary',
201 | },
202 | [[
203 | '.selector',
204 | '.attr-name',
205 | '.string',
206 | '.char',
207 | '.builtin',
208 | '.inserted',
209 | ]]: {
210 | color: 'secondary',
211 | },
212 | },
213 | }
214 |
--------------------------------------------------------------------------------
/gatsby-config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | siteMetadata: {
3 | title: 'gatsby-theme-documentation',
4 | description: 'Minimal Gatsby Theme for documentation websites'
5 | },
6 | plugins: [
7 | 'gatsby-theme-documentation'
8 | ]
9 | }
10 |
--------------------------------------------------------------------------------
/lerna.json:
--------------------------------------------------------------------------------
1 | {
2 | "packages": [
3 | "examples/*",
4 | "packages/*"
5 | ],
6 | "version": "0.0.27"
7 | }
8 |
--------------------------------------------------------------------------------
/license.md:
--------------------------------------------------------------------------------
1 | # The MIT License (MIT)
2 |
3 | ### Copyright (c) 2019 John Otander
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/now.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": 2,
3 | "alias": ["docs-theme.johno.com"],
4 | "builds": [
5 | {
6 | "src": "package.json",
7 | "use": "@now/static-build",
8 | "config": {
9 | "distDir": "public"
10 | }
11 | }
12 | ]
13 | }
14 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "name": "gatsby-theme-documentation",
4 | "version": "0.0.1",
5 | "scripts": {
6 | "start": "yarn workspace gatsby-starter-documentation start",
7 | "build": "gatsby build",
8 | "clean": "gatsby clean",
9 | "docs": "gatsby develop",
10 | "now-build": "yarn build",
11 | "publish": "lerna publish",
12 | "publish:ci": "lerna publish -y --canary --preid ci --dist-tag=ci --force-publish=*",
13 | "test": "yarn build"
14 | },
15 | "workspaces": [
16 | "packages/*",
17 | "examples/*"
18 | ],
19 | "dependencies": {
20 | "gatsby": "3.14.6",
21 | "lerna": "4.0.0",
22 | "react": "18.2.0",
23 | "react-dom": "18.2.0"
24 | },
25 | "resolutions": {
26 | "react": "18.2.0",
27 | "react-dom": "18.2.0"
28 |
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-documentation/gatsby-config.js:
--------------------------------------------------------------------------------
1 | module.exports = options => {
2 | const { mdx = true, contentPath = 'docs' } = options
3 |
4 | return {
5 | plugins: [
6 | 'gatsby-plugin-meta-redirect',
7 | 'gatsby-plugin-theme-ui',
8 | 'gatsby-plugin-react-helmet',
9 | 'gatsby-plugin-redirects',
10 | mdx && {
11 | resolve: 'gatsby-plugin-mdx',
12 | options: {
13 | extensions: ['.mdx', '.md'],
14 | remarkPlugins: [require('remark-slug'), require('remark-emoji')]
15 | }
16 | },
17 | {
18 | resolve: 'gatsby-source-filesystem',
19 | options: {
20 | path: contentPath,
21 | name: contentPath
22 | }
23 | }
24 | ]
25 | .filter(Boolean)
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-documentation/gatsby-node.js:
--------------------------------------------------------------------------------
1 | const crypto = require(`crypto`)
2 | const path = require(`path`)
3 | const { joinPath } = require(`gatsby-core-utils`)
4 |
5 | let basePath
6 | let contentPath
7 |
8 | const DocTemplate = require.resolve('./src/templates/doc')
9 |
10 | const mdxResolverPassthrough = fieldName => async (
11 | source,
12 | args,
13 | context,
14 | info
15 | ) => {
16 | const type = info.schema.getType(`Mdx`)
17 | const mdxNode = context.nodeModel.getNodeById({
18 | id: source.parent,
19 | })
20 |
21 | const resolver = type.getFields()[fieldName].resolve
22 | const result = await resolver(mdxNode, args, context, {
23 | fieldName,
24 | })
25 |
26 | return result
27 | }
28 |
29 | exports.onPreBootstrap = (_, themeOptions) => {
30 | basePath = themeOptions.basePath || `/`
31 | contentPath = themeOptions.contentPath || `docs`
32 | }
33 |
34 | exports.sourceNodes = ({ actions, schema }) => {
35 | const { createTypes } = actions
36 |
37 | createTypes(
38 | schema.buildObjectType({
39 | name: `Docs`,
40 | fields: {
41 | id: { type: `ID!` },
42 | title: { type: `String!`, },
43 | description: { type: `String`, },
44 | slug: { type: `String!`, },
45 | headings: {
46 | type: `[MdxHeadingMdx!]`,
47 | resolve: mdxResolverPassthrough(`headings`),
48 | },
49 | excerpt: {
50 | type: `String!`,
51 | args: {
52 | pruneLength: {
53 | type: `Int`,
54 | defaultValue: 140,
55 | },
56 | },
57 | resolve: mdxResolverPassthrough(`excerpt`),
58 | },
59 | body: {
60 | type: `String!`,
61 | resolve: mdxResolverPassthrough(`body`),
62 | },
63 | },
64 | interfaces: [`Node`],
65 | })
66 | )
67 | }
68 |
69 | exports.onCreateNode = async ({ node, actions, getNode, createNodeId }) => {
70 | const { createNode, createParentChildLink, createRedirect } = actions
71 |
72 | const isReadme = name => /readme/i.test(name)
73 | const isIndexPath = name => name === 'index' || isReadme(name)
74 |
75 | const toOriginalDocsPath = node => {
76 | const { dir } = path.parse(node.relativePath)
77 | const fullPath = [
78 | basePath,
79 | dir,
80 | node.name
81 | ]
82 | return joinPath(...fullPath).replace(/\\+/g, ``)
83 | }
84 | const toDocsPath = node => {
85 | const { dir } = path.parse(node.relativePath)
86 | const fullPath = [
87 | basePath,
88 | dir,
89 | !isIndexPath(node.name) && node.name
90 | ].filter(Boolean)
91 | return joinPath(...fullPath).replace(/\\+/g, ``)
92 | }
93 |
94 | // Make sure it's an MDX node
95 | if (node.internal.type !== `Mdx`) {
96 | return
97 | }
98 |
99 | // Create source field (according to contentPath)
100 | const fileNode = getNode(node.parent)
101 | const source = fileNode.sourceInstanceName
102 |
103 | if (node.internal.type === `Mdx` && source === contentPath) {
104 | const slug = toDocsPath(fileNode)
105 |
106 | // Redirect file/path/readme to file/path/ in order to handle
107 | // potential links that are meant to work with GitHub-style index
108 | // pages.
109 | if (isReadme(fileNode.name)) {
110 | createRedirect({
111 | fromPath: toOriginalDocsPath(fileNode),
112 | toPath: toDocsPath(fileNode),
113 | isPermanent: true
114 | })
115 | }
116 |
117 | const title = node.frontmatter.title
118 | const description = node.frontmatter.description
119 |
120 | const fieldData = { title, description, slug }
121 | const mdxDocId = createNodeId(`${node.id} >>> Docs`)
122 |
123 | await createNode({
124 | ...fieldData,
125 | id: mdxDocId,
126 | parent: node.id,
127 | children: [],
128 | internal: {
129 | type: `Docs`,
130 | contentDigest: crypto
131 | .createHash(`md5`)
132 | .update(JSON.stringify(fieldData))
133 | .digest(`hex`),
134 | content: JSON.stringify(fieldData),
135 | description: `Docs`,
136 | },
137 | })
138 |
139 | createParentChildLink({ parent: node, child: getNode(mdxDocId) })
140 | }
141 | }
142 |
143 | exports.createPages = async ({ graphql, actions, reporter }) => {
144 | const { createPage } = actions
145 |
146 | const result = await graphql(`
147 | {
148 | docs: allDocs {
149 | nodes {
150 | id
151 | slug
152 | }
153 | }
154 | }
155 | `)
156 |
157 | if (result.errors) {
158 | reporter.panic(result.errors)
159 | }
160 |
161 | const docs = result.data.docs.nodes
162 |
163 | docs.forEach((doc, index) => {
164 | const previous = index === docs.length - 1 ? null : docs[index + 1]
165 | const next = index === 0 ? null : docs[index - 1]
166 | const { slug } = doc
167 |
168 | createPage({
169 | path: slug,
170 | component: DocTemplate,
171 | context: {
172 | ...doc,
173 | previous,
174 | next,
175 | },
176 | })
177 | })
178 | }
179 |
180 | exports.onCreateWebpackConfig = ({ actions }) => {
181 | actions.setWebpackConfig({
182 | node: {
183 | fs: 'empty'
184 | }
185 | })
186 | }
187 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-documentation/index.js:
--------------------------------------------------------------------------------
1 | // Noop
2 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-documentation/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "gatsby-theme-documentation",
3 | "version": "0.0.27",
4 | "author": "John Otander",
5 | "license": "MIT",
6 | "repository": "johno/gatsby-theme-documentation",
7 | "keywords": [
8 | "gatsby",
9 | "gatsby-theme",
10 | "gatsby-plugin"
11 | ],
12 | "dependencies": {
13 | "@emotion/core": "10.3.1",
14 | "@mdx-js/mdx": "1.6.22",
15 | "@mdx-js/react": "1.6.22",
16 | "@theme-ui/presets": "0.9.1",
17 | "@theme-ui/prism": "0.3.5",
18 | "@theme-ui/sidenav": "0.9.1",
19 | "gatsby-plugin-mdx": "2.14.2",
20 | "gatsby-plugin-meta-redirect": "1.1.1",
21 | "gatsby-plugin-react-helmet": "4.14.0",
22 | "gatsby-plugin-redirects": "1.0.0",
23 | "gatsby-plugin-theme-ui": "0.3.5",
24 | "gatsby-source-filesystem": "3.14.0",
25 | "is-absolute-url": "4.0.1",
26 | "react-helmet": "6.1.0",
27 | "remark-emoji": "2.2.0",
28 | "remark-slug": "6.1.0",
29 | "theme-ui": "0.2.52"
30 | },
31 | "devDependencies": {
32 | "gatsby": "3.14.6",
33 | "react": "18.2.0",
34 | "react-dom": "18.2.0"
35 | },
36 | "peerDependencies": {
37 | "gatsby": "^2.15.24 || ^3.0.0",
38 | "react": "^16.9.0 || ^17.0.0 || ^18.0.0",
39 | "react-dom": "^16.9.0 || ^17.0.0 || ^18.0.0"
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-documentation/readme.md:
--------------------------------------------------------------------------------
1 | # gatsby-theme-documentation
2 |
3 | A minimalist [Gatsby Theme](https://gatsbyjs.org/docs/themes)
4 | for documentation sites built with [MDX](https://mdxjs.com)
5 | and [Theme UI](https://theme-ui.com).
6 |
7 | Get up and running in seconds with a beautiful docs site so
8 | you can do what's more important: **write docs**.
9 |
10 | 
11 |
12 | ## Features
13 |
14 | - 📑 MDX files for JSX in Markdown
15 | - 🎨 Theme UI-based theming
16 | - 💻 Syntax highlighting
17 | - 📰 [MDX-based sidebar navigation](#customizing-the-sidebar)
18 | - 🛣 [Automatic readme routing](#readme-routing)
19 | - 🧩 [Shortcode support with React components](#shortcodes)
20 | - 🍔 Collapsible menu
21 | - 📱 Mobile friendly
22 | - 🎣 [Custom docs schema](#docs-schema)
23 |
24 | ## Installation
25 |
26 | ```
27 | yarn add gatsby-theme-documentation
28 | ```
29 |
30 | ### Install as a starter
31 |
32 | Name | Command
33 | ---- | -------
34 | [Base](https://github.com/johno/gatsby-starter-documentation) | `gatsby new johno/gatsby-starter-documentation`
35 | [Dark](https://github.com/johno/gatsby-starter-documentation-dark) | `gatsby new johno/gatsby-starter-documentation-dark`
36 | [Tomato](https://github.com/johno/gatsby-starter-documentation-tomato) | `gatsby new johno/gatsby-starter-documentation-tomato`
37 |
38 | [Read the full setup guide](https://johno.com/creating-a-minimalist-docs-site-with-gatsby-and-mdx)
39 |
40 | ## Usage
41 |
42 | ```js
43 | // gatsby-config.js
44 | module.exports = {
45 | plugins: [
46 | 'gatsby-theme-documentation'
47 | ]
48 | }
49 | ```
50 |
51 | ### Customizing the sidebar
52 |
53 | `gatsby-theme-documentation` uses a `sidebar.mdx` file to populate the navigation.
54 | In order to customize it you can shadow it by creating a file at
55 | `src/gatsby-theme-documentation/sidebar.mdx`.
56 |
57 | #### Example `sidebar.mdx`
58 |
59 | ```mdx
60 | - [Introduction](/introduction/)
61 | - [Getting Started](/getting-started/)
62 | - [GitHub](https://github.com/johno/gatsby-theme-documentation)
63 | ```
64 |
65 | ### Customizing the header
66 |
67 | Similarly to sidebar customization, you can also change the header content by
68 | writing MDX. You can shadow the default header by creating a file at
69 | `src/gatsby-theme-documentation/header.mdx`
70 |
71 | #### Example `header.mdx`
72 |
73 | ```mdx
74 | # 
75 |
76 | - [GitHub](https://github.com/johno/gatsby-theme-documentation)
77 | - [Twitter](https://twitter.com/4lpine)
78 | ```
79 |
80 | ### Adding component shortcodes
81 |
82 | You can add shortcodes to your docs site which can be used throughout
83 | your docs pages by extending the components passed to MDXProvider. You
84 | can do this by using component shadowing and creating the following file
85 | in the root of your project: `src/gatsby-theme-documentation/components.js`.
86 |
87 | #### Example `components.js`
88 |
89 | ```js
90 | import baseComponents from 'gatsby-theme-documentation/src/components'
91 |
92 | import MyCustomH1 from '../components/my-custom-h1'
93 |
94 | export default {
95 | ...baseComponents,
96 | h1: MyCustomH1
97 | }
98 | ```
99 |
100 | ### Readme routing
101 |
102 | In order to get documents rendered in directories on GitHub, it's common
103 | to specify a `readme.md` similarly to the `index.html` on normal websites.
104 | Since this theme is meant to work seamlessly with docs directories on GitHub,
105 | `file/path/readme.md` will be automatically turned into `/file/path/index.html`
106 | in the built site. Links will also be redirected to support the new url scheme.
107 |
108 | ### Docs schema
109 |
110 | This theme creates a `Docs` type which can be queried as
111 | an individual document or a collection. This data can be
112 | used to create additional pages, create summaries, etc.
113 |
114 | #### Query an individual document
115 |
116 | ```graphql
117 | {
118 | docs(slug: {eq: "/some-page"}) {
119 | slug
120 | body
121 | }
122 | }
123 | ```
124 |
125 | #### Query a collection
126 |
127 | ```graphql
128 | {
129 | allDocs {
130 | slug
131 | }
132 | }
133 | ```
134 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-documentation/src/components.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import PrismCodeBlock from '@theme-ui/prism'
3 |
4 | export default {
5 | pre: ({ children }) => <>{children}>,
6 | code: PrismCodeBlock
7 | }
8 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-documentation/src/components/button.js:
--------------------------------------------------------------------------------
1 | /** @jsx jsx */
2 | import { jsx } from 'theme-ui'
3 |
4 | export default props => (
5 |
24 | )
25 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-documentation/src/components/doc.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { MDXRenderer } from "gatsby-plugin-mdx"
3 |
4 | import Layout from './layout'
5 | import SEO from './seo'
6 |
7 | const Doc = ({ data: { doc } }) => {
8 | const headingTitle = doc.headings[0] && doc.headings[0].value
9 |
10 | return (
11 |
12 |
16 | {doc.body}
17 |
18 | )
19 | }
20 |
21 | export default Doc
22 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-documentation/src/components/header.js:
--------------------------------------------------------------------------------
1 | /** @jsx jsx */
2 | import { jsx, Header, Container, Flex, useColorMode } from 'theme-ui'
3 | import { MDXProvider } from '@mdx-js/react'
4 |
5 | import MenuButton from './menu-button'
6 | import NavLink from './nav-link'
7 | import Content from '../header.mdx'
8 | import Button from './button'
9 |
10 | const modes = ['light', 'dark', 'deep', 'swiss']
11 |
12 | const components = {
13 | a: NavLink
14 | }
15 |
16 | const styles = {
17 | alignItems: 'center',
18 | width: '100%',
19 | h1: {
20 | m: 0
21 | },
22 | ul: {
23 | ml: 'auto',
24 | display: 'flex',
25 | listStyleType: 'none',
26 | },
27 | li: {
28 | ml: 3
29 | }
30 | }
31 |
32 | export default ({ menuOpen, setMenuOpen, nav }) => {
33 | const [mode, setMode] = useColorMode()
34 |
35 | const cycleMode = e => {
36 | const i = modes.indexOf(mode)
37 | const next = modes[(i + 1) % modes.length]
38 | setMode(next)
39 | }
40 |
41 | return (
42 |
43 |
44 |
45 |
46 | {
48 | setMenuOpen(!menuOpen)
49 | if (!nav.current) return
50 | const navLink = nav.current.querySelector('a')
51 | if (navLink) navLink.focus()
52 | }}
53 | />
54 |
55 |
56 |
57 |
64 |
65 |
66 |
67 |
68 | )
69 | }
70 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-documentation/src/components/layout.js:
--------------------------------------------------------------------------------
1 | /** @jsx jsx */
2 | import { useState, useRef } from 'react'
3 | import { Global } from '@emotion/core'
4 | import { Styled, Layout, Main, Container, jsx, useThemeUI } from 'theme-ui'
5 |
6 | import Header from './header'
7 | import Sidenav from './sidenav'
8 |
9 | export default ({ children }) => {
10 | const { theme: { colors = {} } } = useThemeUI()
11 | const [menuOpen, setMenuOpen] = useState(false)
12 | const nav = useRef(null)
13 |
14 | const bodyStyles = {
15 | body: {
16 | margin: 0,
17 | color: colors.text,
18 | backgroundColor: colors.background
19 | }
20 | }
21 |
22 | return (
23 |
24 |
25 |
26 |
27 |
28 |
29 |
36 |
setMenuOpen(true)}
40 | onBlur={() => setMenuOpen(false)}
41 | onClick={() => setMenuOpen(false)}
42 | />
43 |
49 | {children}
50 |
51 |
52 |
53 |
54 |
55 |
56 | )
57 | }
58 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-documentation/src/components/menu-button.js:
--------------------------------------------------------------------------------
1 | /** @jsx jsx */
2 | import { jsx } from 'theme-ui'
3 |
4 | const Burger = ({ size = '1em' }) => (
5 |
18 | )
19 |
20 | export default props => (
21 |
45 | )
46 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-documentation/src/components/nav-link.js:
--------------------------------------------------------------------------------
1 | /** @jsx jsx */
2 | import { jsx } from 'theme-ui'
3 | import { Link } from 'gatsby'
4 | import isAbsoluteURL from 'is-absolute-url'
5 |
6 | const styles = {
7 | display: 'block',
8 | px: 2,
9 | py: 2,
10 | color: 'inherit',
11 | textDecoration: 'none',
12 | fontSize: 1,
13 | fontWeight: 'bold',
14 | '&.active': {
15 | color: 'primary',
16 | },
17 | }
18 |
19 | export default ({ href, children, ...props }) => {
20 | const isExternal = isAbsoluteURL(href || '')
21 |
22 | if (isExternal) {
23 | return {children}
24 | }
25 |
26 | const to = props.to || href
27 |
28 | return (
29 |
35 | {children}
36 |
37 | )
38 | }
39 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-documentation/src/components/seo.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { useStaticQuery, graphql } from 'gatsby'
3 | import { Helmet } from 'react-helmet'
4 |
5 | export default ({ title, description }) => {
6 | const { site: { siteMetadata } } = useStaticQuery(graphql`
7 | {
8 | site {
9 | siteMetadata {
10 | title
11 | description
12 | }
13 | }
14 | }
15 | `)
16 |
17 | const fullTitle = title ? `${title} | ${siteMetadata.title}` : siteMetadata.title
18 |
19 | return (
20 |
21 | {fullTitle}
22 |
23 |
24 |
25 | )
26 | }
27 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-documentation/src/components/sidenav.js:
--------------------------------------------------------------------------------
1 | /** @jsx jsx */
2 | import { jsx } from 'theme-ui'
3 | import { AccordionNav } from '@theme-ui/sidenav'
4 | import NavLink from './nav-link'
5 | import Sidebar from '../sidebar.mdx'
6 |
7 | const components = {
8 | wrapper: AccordionNav,
9 | a: NavLink,
10 | }
11 |
12 | export default props => (
13 |
25 | )
26 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-documentation/src/gatsby-plugin-theme-ui/components.js:
--------------------------------------------------------------------------------
1 | export { default } from '../components'
2 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-documentation/src/gatsby-plugin-theme-ui/index.js:
--------------------------------------------------------------------------------
1 | export { default } from '../theme'
2 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-documentation/src/header.mdx:
--------------------------------------------------------------------------------
1 | # 
2 |
3 | - [GitHub](https://github.com/johno/gatsby-theme-documentation)
4 | - [Twitter](https://twitter.com/4lpine)
5 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-documentation/src/sidebar.mdx:
--------------------------------------------------------------------------------
1 | - Hello, world!
2 | - Create a `src/gatsby-theme-documentation/sidebar.mdx` file!
3 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-documentation/src/templates/doc.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { graphql } from "gatsby"
3 |
4 | import Doc from '../components/doc'
5 |
6 | export default ({ data }) => (
7 |
8 | )
9 |
10 | export const pageQuery = graphql`
11 | query($id: String!) {
12 | doc: docs(id: { eq: $id }) {
13 | id
14 | title
15 | description
16 | excerpt
17 | body
18 | headings {
19 | value
20 | }
21 | }
22 | }
23 | `
24 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-documentation/src/theme.js:
--------------------------------------------------------------------------------
1 | const heading = {
2 | fontFamily: 'heading',
3 | fontWeight: 'heading',
4 | lineHeight: 'heading',
5 | a: {
6 | color: 'inherit',
7 | textDecoration: 'none'
8 | }
9 | }
10 |
11 | export default {
12 | initialColorMode: 'light',
13 | colors: {
14 | text: '#000',
15 | background: '#fff',
16 | primary: '#33e',
17 | secondary: '#119',
18 | muted: '#f6f6f6',
19 | highlight: '#ffffcc',
20 | gray: '#777',
21 | purple: '#609',
22 | modes: {
23 | dark: {
24 | text: '#fff',
25 | background: '#060606',
26 | primary: '#3cf',
27 | secondary: '#e0f',
28 | muted: '#191919',
29 | highlight: '#ffffcc',
30 | gray: '#999',
31 | purple: '#c0f',
32 | },
33 | deep: {
34 | text: 'hsl(210, 50%, 96%)',
35 | background: 'hsl(230, 25%, 18%)',
36 | primary: 'hsl(260, 100%, 80%)',
37 | secondary: 'hsl(290, 100%, 80%)',
38 | purple: 'hsl(290, 100%, 80%)',
39 | muted: 'hsla(230, 20%, 0%, 20%)',
40 | gray: 'hsl(210, 50%, 60%)',
41 | },
42 | swiss: {
43 | text: 'hsl(10, 20%, 20%)',
44 | background: 'hsl(10, 10%, 98%)',
45 | primary: 'hsl(10, 80%, 50%)',
46 | secondary: 'hsl(10, 60%, 50%)',
47 | purple: 'hsl(250, 60%, 30%)',
48 | muted: 'hsl(10, 20%, 94%)',
49 | gray: 'hsl(10, 20%, 50%)',
50 | },
51 | },
52 | },
53 | fonts: {
54 | body: 'system-ui, sans-serif',
55 | heading: 'inherit',
56 | monospace: 'Menlo, monospace',
57 | },
58 | fontSizes: [12, 14, 16, 20, 24, 32, 48, 64, 72],
59 | fontWeights: {
60 | body: '400',
61 | heading: '700',
62 | },
63 | lineHeights: {
64 | body: 1.5,
65 | heading: 1.25,
66 | },
67 | textStyles: {
68 | heading,
69 | display: {
70 | variant: 'textStyles.heading',
71 | fontSize: [5, 6, 7],
72 | mt: 3,
73 | },
74 | },
75 | styles: {
76 | Container: {
77 | p: 3,
78 | maxWidth: 1024,
79 | },
80 | root: {
81 | fontFamily: 'body',
82 | lineHeight: 'body',
83 | fontWeight: 'body',
84 | },
85 | h1: {
86 | variant: 'textStyles.display',
87 | },
88 | h2: {
89 | variant: 'textStyles.heading',
90 | fontSize: 5,
91 | },
92 | h3: {
93 | variant: 'textStyles.heading',
94 | fontSize: 4,
95 | },
96 | h4: {
97 | variant: 'textStyles.heading',
98 | fontSize: 3,
99 | },
100 | h5: {
101 | variant: 'textStyles.heading',
102 | fontSize: 2,
103 | },
104 | h6: {
105 | variant: 'textStyles.heading',
106 | fontSize: 1,
107 | },
108 | a: {
109 | color: 'primary',
110 | '&:hover': {
111 | color: 'secondary',
112 | },
113 | },
114 | pre: {
115 | variant: 'prism',
116 | fontFamily: 'monospace',
117 | fontSize: 1,
118 | p: 3,
119 | color: 'text',
120 | bg: 'muted',
121 | overflow: 'auto',
122 | code: {
123 | color: 'inherit',
124 | },
125 | },
126 | code: {
127 | fontFamily: 'monospace',
128 | color: 'secondary',
129 | fontSize: 1,
130 | },
131 | inlineCode: {
132 | fontFamily: 'monospace',
133 | color: 'secondary',
134 | bg: 'muted',
135 | },
136 | table: {
137 | width: '100%',
138 | my: 4,
139 | borderCollapse: 'separate',
140 | borderSpacing: 0,
141 | [['th', 'td']]: {
142 | textAlign: 'left',
143 | py: '4px',
144 | pr: '4px',
145 | pl: 0,
146 | borderColor: 'muted',
147 | borderBottomStyle: 'solid',
148 | },
149 | },
150 | th: {
151 | verticalAlign: 'bottom',
152 | borderBottomWidth: '2px',
153 | },
154 | td: {
155 | verticalAlign: 'top',
156 | borderBottomWidth: '1px',
157 | },
158 | hr: {
159 | border: 0,
160 | borderBottom: '1px solid',
161 | borderColor: 'muted',
162 | }
163 | },
164 | prism: {
165 | [[
166 | '.comment',
167 | '.prolog',
168 | '.doctype',
169 | '.cdata',
170 | '.punctuation',
171 | '.operator',
172 | '.entity',
173 | '.url',
174 | ]]: {
175 | color: 'gray',
176 | },
177 | '.comment': {
178 | fontStyle: 'italic',
179 | },
180 | [[
181 | '.property',
182 | '.tag',
183 | '.boolean',
184 | '.number',
185 | '.constant',
186 | '.symbol',
187 | '.deleted',
188 | '.function',
189 | '.class-name',
190 | '.regex',
191 | '.important',
192 | '.variable',
193 | ]]: {
194 | color: 'purple',
195 | },
196 | [['.atrule', '.attr-value', '.keyword']]: {
197 | color: 'primary',
198 | },
199 | [[
200 | '.selector',
201 | '.attr-name',
202 | '.string',
203 | '.char',
204 | '.builtin',
205 | '.inserted',
206 | ]]: {
207 | color: 'secondary',
208 | },
209 | },
210 | }
211 |
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | packages/gatsby-theme-documentation/readme.md
--------------------------------------------------------------------------------
/renovate.json:
--------------------------------------------------------------------------------
1 | {
2 | "automerge": true,
3 | "extends": [
4 | "config:base"
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------
/src/gatsby-theme-documentation/header.mdx:
--------------------------------------------------------------------------------
1 | # 
2 |
3 | - [GitHub](https://github.com/johno/gatsby-theme-documentation)
4 | - [Twitter](https://twitter.com/4lpine)
5 |
--------------------------------------------------------------------------------
/src/gatsby-theme-documentation/sidebar.mdx:
--------------------------------------------------------------------------------
1 | - [Introduction](/)
2 | - [Getting Started](/getting-started)
3 | - [Customizing](/customizing)
4 | - [Motivation](/motivation)
5 | - [License](/license)
6 |
--------------------------------------------------------------------------------
/src/gatsby-theme-documentation/theme.js:
--------------------------------------------------------------------------------
1 | const heading = {
2 | fontFamily: 'heading',
3 | fontWeight: 'heading',
4 | lineHeight: 'heading',
5 | a: {
6 | color: 'inherit',
7 | textDecoration: 'none'
8 | }
9 | }
10 |
11 | export default {
12 | initialColorMode: 'light',
13 | colors: {
14 | text: '#000',
15 | background: '#fff',
16 | primary: '#33e',
17 | secondary: '#119',
18 | muted: '#f6f6f6',
19 | highlight: '#ffffcc',
20 | gray: '#777',
21 | purple: '#609',
22 | modes: {
23 | dark: {
24 | text: '#fff',
25 | background: '#060606',
26 | primary: '#3cf',
27 | secondary: '#e0f',
28 | muted: '#191919',
29 | highlight: '#ffffcc',
30 | gray: '#999',
31 | purple: '#c0f',
32 | },
33 | deep: {
34 | text: 'hsl(210, 50%, 96%)',
35 | background: 'hsl(230, 25%, 18%)',
36 | primary: 'hsl(260, 100%, 80%)',
37 | secondary: 'hsl(290, 100%, 80%)',
38 | purple: 'hsl(290, 100%, 80%)',
39 | muted: 'hsla(230, 20%, 0%, 20%)',
40 | gray: 'hsl(210, 50%, 60%)',
41 | },
42 | swiss: {
43 | text: 'hsl(10, 20%, 20%)',
44 | background: 'hsl(10, 10%, 98%)',
45 | primary: 'hsl(10, 80%, 50%)',
46 | secondary: 'hsl(10, 60%, 50%)',
47 | purple: 'hsl(250, 60%, 30%)',
48 | muted: 'hsl(10, 20%, 94%)',
49 | gray: 'hsl(10, 20%, 50%)',
50 | },
51 | },
52 | },
53 | fonts: {
54 | body: 'system-ui, sans-serif',
55 | heading: 'inherit',
56 | monospace: 'Menlo, monospace',
57 | },
58 | fontSizes: [12, 14, 16, 20, 24, 32, 48, 64, 72],
59 | fontWeights: {
60 | body: '400',
61 | heading: '700',
62 | },
63 | lineHeights: {
64 | body: 1.5,
65 | heading: 1.25,
66 | },
67 | textStyles: {
68 | heading,
69 | display: {
70 | variant: 'textStyles.heading',
71 | fontSize: [5, 6, 7],
72 | mt: 3,
73 | },
74 | },
75 | styles: {
76 | Container: {
77 | p: 3,
78 | maxWidth: 1024,
79 | },
80 | root: {
81 | fontFamily: 'body',
82 | lineHeight: 'body',
83 | fontWeight: 'body',
84 | },
85 | h1: {
86 | variant: 'textStyles.display',
87 | },
88 | h2: {
89 | variant: 'textStyles.heading',
90 | fontSize: 5,
91 | },
92 | h3: {
93 | variant: 'textStyles.heading',
94 | fontSize: 4,
95 | },
96 | h4: {
97 | variant: 'textStyles.heading',
98 | fontSize: 3,
99 | },
100 | h5: {
101 | variant: 'textStyles.heading',
102 | fontSize: 2,
103 | },
104 | h6: {
105 | variant: 'textStyles.heading',
106 | fontSize: 1,
107 | },
108 | a: {
109 | color: 'primary',
110 | '&:hover': {
111 | color: 'secondary',
112 | },
113 | },
114 | p: {
115 | fontSize: [3, 4, 4]
116 | },
117 | li: {
118 | fontSize: [3, 4, 4]
119 | },
120 | pre: {
121 | variant: 'prism',
122 | fontFamily: 'monospace',
123 | fontSize: 3,
124 | p: 3,
125 | color: 'text',
126 | bg: 'muted',
127 | overflow: 'auto',
128 | code: {
129 | color: 'inherit',
130 | },
131 | },
132 | code: {
133 | fontFamily: 'monospace',
134 | color: 'secondary',
135 | fontSize: 3,
136 | },
137 | inlineCode: {
138 | fontFamily: 'monospace',
139 | color: 'secondary',
140 | bg: 'muted',
141 | },
142 | table: {
143 | width: '100%',
144 | my: 4,
145 | fontSize: 3,
146 | borderCollapse: 'separate',
147 | borderSpacing: 0,
148 | [['th', 'td']]: {
149 | textAlign: 'left',
150 | py: '4px',
151 | pr: '4px',
152 | pl: 0,
153 | borderColor: 'muted',
154 | borderBottomStyle: 'solid',
155 | },
156 | },
157 | th: {
158 | verticalAlign: 'bottom',
159 | borderBottomWidth: '2px',
160 | },
161 | td: {
162 | verticalAlign: 'top',
163 | borderBottomWidth: '1px',
164 | },
165 | hr: {
166 | border: 0,
167 | borderBottom: '1px solid',
168 | borderColor: 'muted',
169 | },
170 | img: {
171 | maxWidth: '100%'
172 | }
173 | },
174 | prism: {
175 | [[
176 | '.comment',
177 | '.prolog',
178 | '.doctype',
179 | '.cdata',
180 | '.punctuation',
181 | '.operator',
182 | '.entity',
183 | '.url',
184 | ]]: {
185 | color: 'gray',
186 | },
187 | '.comment': {
188 | fontStyle: 'italic',
189 | },
190 | [[
191 | '.property',
192 | '.tag',
193 | '.boolean',
194 | '.number',
195 | '.constant',
196 | '.symbol',
197 | '.deleted',
198 | '.function',
199 | '.class-name',
200 | '.regex',
201 | '.important',
202 | '.variable',
203 | ]]: {
204 | color: 'purple',
205 | },
206 | [['.atrule', '.attr-value', '.keyword']]: {
207 | color: 'primary',
208 | },
209 | [[
210 | '.selector',
211 | '.attr-name',
212 | '.string',
213 | '.char',
214 | '.builtin',
215 | '.inserted',
216 | ]]: {
217 | color: 'secondary',
218 | },
219 | },
220 | }
221 |
--------------------------------------------------------------------------------