├── .editorconfig
├── .github
├── dependabot.yml
└── workflows
│ └── deploy.yml
├── .gitignore
├── .nvmrc
├── CNAME
├── LICENSE
├── README.md
├── docs
├── assets
│ ├── application.scss
│ ├── favicon.ico
│ ├── icon.png
│ ├── mask-icon.svg
│ └── opengraph-image.png
├── index.md
└── pages
│ ├── action.md
│ ├── architecture.md
│ ├── art.md
│ ├── collection.md
│ ├── comparison.md
│ ├── fashion.md
│ ├── music.md
│ ├── nature.md
│ ├── numeration.md
│ ├── pages.json
│ ├── publishing.md
│ ├── relation.md
│ └── theatre.md
├── eleventy.config.js
├── eslint.config.js
├── lib
└── filters
│ └── dfn.js
├── package-lock.json
└── package.json
/.editorconfig:
--------------------------------------------------------------------------------
1 | # editorconfig.org
2 | root = true
3 |
4 | [*]
5 | indent_size = 2
6 | indent_style = space
7 | charset = utf-8
8 | end_of_line = lf
9 | insert_final_newline = true
10 | trim_trailing_whitespace = true
11 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 | - package-ecosystem: "github-actions"
4 | directory: "/"
5 | schedule:
6 | interval: "monthly"
7 | - package-ecosystem: "npm"
8 | directory: "/"
9 | schedule:
10 | interval: "monthly"
11 |
--------------------------------------------------------------------------------
/.github/workflows/deploy.yml:
--------------------------------------------------------------------------------
1 | name: deploy
2 |
3 | on:
4 | push:
5 | branches:
6 | - main
7 |
8 | # Enable running this workflow manually from the Actions tab
9 | workflow_dispatch:
10 |
11 | # Set permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
12 | permissions:
13 | contents: read
14 | pages: write
15 | id-token: write
16 |
17 | # Allow one concurrent deployment
18 | concurrency:
19 | group: pages
20 | cancel-in-progress: true
21 |
22 | jobs:
23 | build:
24 | runs-on: ubuntu-latest
25 | steps:
26 | - name: Checkout
27 | uses: actions/checkout@v4
28 | - name: Setup Pages
29 | uses: actions/configure-pages@v5
30 | - name: Install dependencies
31 | run: npm ci
32 | - name: Build with Eleventy
33 | run: npm run-script build
34 | - name: Upload artifact
35 | uses: actions/upload-pages-artifact@v3
36 |
37 | deploy:
38 | environment:
39 | name: github-pages
40 | url: ${{ steps.deployment.outputs.page_url }}
41 | runs-on: ubuntu-latest
42 | needs: build
43 | steps:
44 | - name: Deploy to GitHub Pages
45 | id: deployment
46 | uses: actions/deploy-pages@v4
47 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | coverage
2 | node_modules/
3 | npm-debug.log
4 | _site
5 | .DS_Store
6 |
--------------------------------------------------------------------------------
/.nvmrc:
--------------------------------------------------------------------------------
1 | 22
2 |
--------------------------------------------------------------------------------
/CNAME:
--------------------------------------------------------------------------------
1 | classnames.paulrobertlloyd.com
2 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License
2 |
3 | Copyright (c) 2023 Paul Robert Lloyd
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of
6 | this software and associated documentation files (the "Software"), to deal in
7 | the Software without restriction, including without limitation the rights to
8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
9 | of the Software, and to permit persons to whom the Software is furnished to do
10 | so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | 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 THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Classnames
2 |
3 |
4 |
5 | > There are only two hard things in computer science: cache invalidation and naming things.
6 |
7 | Naming things needn’t be hard. Find inspiration for naming things – be that HTML classes, CSS properties or JavaScript functions – using these lists of useful words.
8 |
9 | ## Requirements
10 |
11 | Node.js v20 or later.
12 |
13 | ## Installation
14 |
15 | ```shell
16 | npm install
17 | ```
18 |
19 | ## Usage
20 |
21 | ```shell
22 | npm start
23 | ```
24 |
25 | ## Contributing
26 |
27 | Contributions are welcome. Please create a pull request with your suggestions.
28 |
29 | Use `npm run lint` to check your code before submitting a pull request.
30 |
--------------------------------------------------------------------------------
/docs/assets/application.scss:
--------------------------------------------------------------------------------
1 | // Use GOV.UK Frontend components
2 | $_font-family: "Space Grotesk", system-ui;
3 | @use "pkg:govuk-frontend/dist/govuk" with (
4 | $govuk-global-styles: true,
5 | $govuk-new-organisation-colours: true,
6 | $govuk-new-typography-scale: true,
7 | $govuk-font-family: $_font-family,
8 | $govuk-page-width: 800px,
9 | $govuk-brand-colour: #cc3399,
10 | $govuk-template-background-colour: #f9f9fc,
11 | $govuk-focus-colour: #ffccee,
12 | $govuk-link-colour: #0066cc,
13 | $govuk-link-visited-colour: #0066cc,
14 | $govuk-link-hover-colour: #993399,
15 | $govuk-link-active-colour: #003399,
16 | $govuk-text-colour: #333344,
17 | $govuk-secondary-text-colour: #555566,
18 | $govuk-border-colour: #ddddee
19 | );
20 |
21 | // Use GOV.UK Eleventy Plugin components
22 | @forward "pkg:@x-govuk/govuk-eleventy-plugin";
23 |
24 | .govuk-header__container {
25 | border-bottom-width: 1px;
26 | border-color: #fff6;
27 | margin-bottom: -1px;
28 | padding-bottom: 10px;
29 | padding-top: 20px;
30 | }
31 |
32 | .app-header__logotype {
33 | font-weight: bold;
34 | text-transform: lowercase;
35 | }
36 |
37 | .app-header__logotype::before {
38 | color: #c39;
39 | content: ".";
40 | }
41 |
42 | .govuk-header,
43 | .x-govuk-masthead {
44 | background: linear-gradient(-90deg, #c39, #336 66%);
45 | }
46 |
47 | .x-govuk-masthead__title {
48 | font-size: 2.75rem;
49 | }
50 |
--------------------------------------------------------------------------------
/docs/assets/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paulrobertlloyd/classnames/2b5d83bb332b40d1b647f5c221f166ed3285f371/docs/assets/favicon.ico
--------------------------------------------------------------------------------
/docs/assets/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paulrobertlloyd/classnames/2b5d83bb332b40d1b647f5c221f166ed3285f371/docs/assets/icon.png
--------------------------------------------------------------------------------
/docs/assets/mask-icon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/docs/assets/opengraph-image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paulrobertlloyd/classnames/2b5d83bb332b40d1b647f5c221f166ed3285f371/docs/assets/opengraph-image.png
--------------------------------------------------------------------------------
/docs/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | homepage: true
3 | layout: collection
4 | title: Naming things needn’t be hard
5 | description: Find inspiration for naming things – be that HTML classes, CSS properties or JavaScript functions – using these lists of useful words.
6 | pagination:
7 | data: collections.all
8 | size: 100
9 | paginationHeading: Word lists
10 | aside:
11 | title: About Classnames
12 | content: |
13 | This site provides thematically grouped lists of words. Each word links to a dictionary definition on [Wordnik](https://www.wordnik.com) where you can learn more about its meaning, usage and related words.
14 | ---
15 |
--------------------------------------------------------------------------------
/docs/pages/action.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Action
3 | description: Describe the behaviour or operation of things.
4 | ---
5 |
6 | - {{ "brand" | dfn }}
7 | - {{ "highlight" | dfn }}
8 | - {{ "mark" | dfn }}
9 | - {{ "sign" | dfn }}
10 |
11 | ---
12 |
13 | - {{ "fill" | dfn }}
14 | - {{ "pour" | dfn }}
15 |
16 | ---
17 |
18 | - {{ "circulate" | dfn }}
19 | - {{ "contain" | dfn }}
20 | - {{ "control" | dfn }}
21 | - {{ "explore" | dfn }}
22 |
23 | ---
24 |
25 | - {{ "allow" | dfn }} ⇄ {{ "deny" | dfn }}
26 | - {{ "convince" | dfn }}
27 | - {{ "engage" | dfn }}
28 | - {{ "enhance" | dfn }}
29 | - {{ "support" | dfn }}
30 |
31 | ---
32 |
33 | - {{ "calm" | dfn({ latin: "tranquil" }) }}
34 | - {{ "discrete" | dfn }}
35 | - {{ "dramatic" | dfn }}
36 | - {{ "flexible" | dfn }}
37 | - {{ "graceful" | dfn }}
38 | - {{ "shy" | dfn }}
39 |
40 | ---
41 |
42 | - {{ "fix" | dfn }}
43 | - {{ "flip" | dfn }}
44 | - {{ "fold" | dfn }}
45 | - {{ "hang" | dfn }} / {{ "hung" | dfn }}
46 | - {{ "hide" | dfn }} / {{ "hidden" | dfn }}
47 | - {{ "invert" | dfn }} ⇄ {{ "extrovert" | dfn }}
48 | - {{ "lift" | dfn }} ⇄ {{ "lower" | dfn }}
49 | - {{ "pack" | dfn }}
50 | - {{ "pad" | dfn }}
51 | - {{ "pin" | dfn }}
52 | - {{ "pinch" | dfn }}
53 | - {{ "pitch" | dfn }}
54 | - {{ "pull" | dfn }} ⇄ {{ "push" | dfn }}
55 | - {{ "separate" | dfn }}
56 | - {{ "stack" | dfn }}
57 | - {{ "stick" | dfn }} / {{ "stuck" | dfn }}
58 | - {{ "wrap" | dfn }}
59 |
--------------------------------------------------------------------------------
/docs/pages/architecture.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 🏛️ Architecture
3 | description: Terms from architecture can describe the space in and around things.
4 | related:
5 | sections:
6 | - title: Related links
7 | items:
8 | - text: Glossary of architecture on Wikipedia
9 | href: https://en.wikipedia.org/wiki/Glossary_of_architecture
10 | ---
11 |
12 | ## Construction
13 |
14 | - {{ "foundation" | dfn }} or {{ "footing" | dfn }}
15 | - {{ "frame" | dfn }}
16 | - {{ "scaffold" | dfn }}
17 | - {{ "elevation" | dfn }}
18 |
19 | ### Stages
20 |
21 | - {{ "rough in" | dfn }} or {{ "cut out" | dfn }}
22 | - {{ "fit out" | dfn }} or fit off
23 | - {{ "lockup" | dfn }}
24 | - {{ "handover" | dfn }}
25 |
26 | ## Parts
27 |
28 | - {{ "fitting" | dfn }}
29 | - {{ "fixture" | dfn }}
30 | - {{ "furniture" | dfn }}
31 | - {{ "floor" | dfn }} ⇄ {{ "ceiling" | dfn }}
32 | - {{ "steps" | dfn }}
33 | - {{ "roof" | dfn }}
34 | - {{ "tower" | dfn }}
35 |
36 | ## Spaces
37 |
38 | - {{ "concierge" | dfn }}
39 | - {{ "entrance" | dfn }}
40 | - {{ "gallery" | dfn }}
41 | - {{ "landing" | dfn }}
42 | - {{ "lobby" | dfn }}
43 | - {{ "reception" | dfn }}
44 | - {{ "room" | dfn }}
45 |
--------------------------------------------------------------------------------
/docs/pages/art.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 🎨 Art
3 | description: Terms from art can describe the composition of things.
4 | ---
5 |
6 | ## Composition
7 |
8 | - {{ "accent" | dfn }}
9 | - {{ "adjacent" | dfn }}
10 | - {{ "auxiliary" | dfn }}
11 | - {{ "blur" | dfn }} ⇄ {{ "focus" | dfn }}
12 | - {{ "canvas" | dfn }}
13 | - {{ "complement" | dfn }}
14 | - {{ "crop" | dfn }}
15 | - {{ "frame" | dfn }}
16 | - {{ "field" | dfn }}
17 | - {{ "inline" | dfn }} ⇄ {{ "outline" | dfn }}
18 | - {{ "inner" | dfn }} ⇄ {{ "outer" | dfn }}
19 | - {{ "inside" | dfn }} ⇄ {{ "outside" | dfn }}
20 | - {{ "figure" | dfn }} ⇄ {{ "ground" | dfn }}
21 | - {{ "portrait" | dfn }} ⇄ {{ "landscape" | dfn }}
22 | - {{ "foreground" | dfn }} ⇄ {{ "background" | dfn }}
23 |
24 | ## Layout
25 |
26 | 1. –
27 | 2. {{ "diptych" | dfn }}
28 | 3. {{ "triptych" | dfn }}
29 | 4. {{ "quadriptych" | dfn }}
30 | 5. {{ "pentaptych" | dfn }}
31 | 6. {{ "hexaptych" | dfn }}
32 | 7. {{ "heptaptych" | dfn }}
33 | 8. {{ "octaptych" | dfn }}
34 |
35 | See also: {{ "polyptych" | dfn }} (4 or more)
36 |
--------------------------------------------------------------------------------
/docs/pages/collection.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Collection
3 | description: Describe the containment and grouping of things.
4 | ---
5 |
6 | - {{ "array" | dfn }}
7 | - {{ "box" | dfn }}
8 | - {{ "component" | dfn }}
9 | - {{ "container" | dfn }}
10 | - {{ "element" | dfn }}
11 | - {{ "group" | dfn }}
12 | - {{ "module" | dfn }}
13 | - {{ "node" | dfn }}
14 | - {{ "pod" | dfn }}
15 | - {{ "kit" | dfn }}
16 | - {{ "receptacle" | dfn }}
17 | - {{ "separator" | dfn }}
18 | - {{ "wrapper" | dfn }}
19 |
--------------------------------------------------------------------------------
/docs/pages/comparison.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Comparison
3 | description: Describe the equivalent likeness between things.
4 | ---
5 |
6 | ## Amplitude
7 |
8 | - {{ "muted" | dfn }} ⇄ {{ "amplified" | dfn }}
9 | - {{ "muffled" | dfn }} ⇄ {{ "noisy" | dfn }}
10 | - {{ "quiet" | dfn }} ⇄ {{ "loud" | dfn }}
11 |
12 | ## Height
13 |
14 | - {{ "low" | dfn }} ⇄ {{ "high" | dfn }}
15 | - {{ "short" | dfn }} ⇄ {{ "tall" | dfn }}
16 |
17 | ## Light
18 |
19 | - {{ "bright" | dfn }} ⇄ {{ "dull" | dfn }}
20 | - {{ "light" | dfn }} ⇄ {{ "dark" | dfn }}
21 | - {{ "clear" | dfn({ latin: "clarion" }) }}
22 |
23 | ## Movement
24 |
25 | - {{ "ready" | dfn }}
26 | - {{ "static" | dfn }}
27 | - {{ "still" | dfn }}
28 | - {{ "quick" | dfn }}
29 |
30 | ## Position
31 |
32 | - {{ "detached" | dfn({ latin: "staccato" }) }}
33 | - {{ "middle" | dfn({ latin: "mezzo" }) }}
34 | - {{ "center" | dfn }}
35 | - {{ "left" | dfn({ latin: "sinistra" }) }} ⇄ {{ "right" | dfn({ latin: "dextra" }) }}
36 | - {{ "bottom" | dfn }} ⇄ {{ "top" | dfn }}
37 | - {{ "lower" | dfn }} ⇄ {{ "upper" | dfn }}
38 |
39 | ## Pressure
40 |
41 | - {{ "soft" | dfn({ latin: "piano" }) }} ⇄ {{ "hard" | dfn }}
42 |
43 | ## Quantity
44 |
45 | - {{ "less" | dfn }} ⇄ {{ "more" | dfn }}
46 |
47 | ## Size
48 |
49 | - {{ "min[imum]" | dfn }} ⇄ {{ "max[imum]" | dfn }}
50 | - {{ "small[est]" | dfn }} ⇄ {{ "large[st]" | dfn }}
51 | - {{ "tiny" | dfn }}
52 | - {{ "jumbo" | dfn }}
53 | - {{ "massive" | dfn }}
54 |
55 | ## Space
56 |
57 | - {{ "open" | dfn }} ⇄ {{ "close" | dfn }}
58 |
59 | ## Speed
60 |
61 | - {{ "quick" | dfn({ latin: "presto" }) }}
62 | - {{ "slow" | dfn }} ⇄ {{ "fast" | dfn }}
63 |
64 | ## Viscosity
65 |
66 | - {{ "solid" | dfn }} ⇄ {{ "fluid" | dfn }}
67 |
68 | ## Volume
69 |
70 | - {{ "empty" | dfn }} ⇄ {{ "full" | dfn }}
71 |
72 | ## Weight
73 |
74 | - {{ "light" | dfn }} ⇄ {{ "heavy" | dfn }}
75 |
76 | ## Width
77 |
78 | - {{ "condensed" | dfn }} ⇄ {{ "expanded" | dfn }}
79 | - {{ "slim" | dfn }} ⇄ {{ "fat" | dfn }}
80 | - {{ "narrow" | dfn }} ⇄ {{ "wide" | dfn }}
81 |
--------------------------------------------------------------------------------
/docs/pages/fashion.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 👔 Fashion
3 | description: Terms from fashion can describe the size of things.
4 | related:
5 | sections:
6 | - title: Related links
7 | items:
8 | - text: Clothing sizes on Wikipedia
9 | href: https://en.wikipedia.org/wiki/Clothing_sizes
10 | ---
11 |
12 | ## Clothing sizes
13 |
14 | | Name | Abbreviation | Initialism |
15 | | ----------------- | ------------ | ---------- |
16 | | extra-extra-small | xx-small | xxs |
17 | | extra-small | x-small | xs |
18 | | small | sm | s |
19 | | medium | md | m |
20 | | large | lg | l |
21 | | extra-large | x-large | xl |
22 | | extra-extra-large | xx-large | xxl |
23 |
--------------------------------------------------------------------------------
/docs/pages/music.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 🎼 Music
3 | description: Terms from musical can describe the pace, volume and arrangement of things.
4 | related:
5 | sections:
6 | - title: Related links
7 | items:
8 | - text: Musical Ensembles on Wikipedia
9 | href: https://en.wikipedia.org/wiki/Template:Musical_ensembles
10 | ---
11 |
12 | ## Ensembles
13 |
14 | 1. {{ "solo" | dfn }}
15 | 2. {{ "duo" | dfn }}
16 | 3. {{ "trio" | dfn }}
17 | 4. {{ "quartet" | dfn }}
18 | 5. {{ "quintet" | dfn }}
19 | 6. {{ "sextet" | dfn }}
20 | 7. {{ "septet" | dfn }}
21 | 8. {{ "octet" | dfn }}
22 | 9. {{ "nonet" | dfn }}
23 | 10. {{ "decet" | dfn }}
24 | 11. –
25 | 12. {{ "duedecet" | dfn }}
26 |
27 | ## Notes
28 |
29 | - {{ "breve" | dfn }} (double note)
30 | - {{ "semibreve" | dfn }} (whole note)
31 | - {{ "minim" | dfn }} (half note)
32 | - {{ "crotchet" | dfn }} (quarter note)
33 | - {{ "quaver" | dfn }} (eighth note)
34 |
35 | ## Tempo
36 |
37 | - {{ "largo" | dfn }}
38 | - {{ "adagio" | dfn }}
39 | - {{ "andante" | dfn }}
40 | - {{ "moderato" | dfn }}
41 | - {{ "allegro" | dfn }}
42 | - {{ "presto" | dfn }}
43 |
44 | ## Time signatures
45 |
46 | - {{ "simple" | dfn }}
47 | - {{ "compound" | dfn }}
48 | - {{ "complex" | dfn }}
49 | - {{ "mixed" | dfn }}
50 | - {{ "additive" | dfn }}
51 | - {{ "fractional" | dfn }}
52 | - {{ "irrational" | dfn }}
53 |
54 | ## Vocal range
55 |
56 | ### Female
57 |
58 | - {{ "soprano" | dfn }}
59 | - {{ "mezzo-soprano" | dfn }}
60 | - {{ "contralto" | dfn }}
61 |
62 | ### Male
63 |
64 | - {{ "tenor" | dfn }}
65 | - {{ "baritone" | dfn }}
66 | - {{ "bass" | dfn }}
67 |
--------------------------------------------------------------------------------
/docs/pages/nature.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 🌳 Nature
3 | description: Terms from nature can describe the parts of things.
4 | ---
5 |
6 | ## Trees
7 |
8 | - {{ "root" | dfn }}
9 | - {{ "trunk" | dfn }}
10 | - {{ "crown" | dfn }}
11 | - {{ "branch" | dfn }}
12 | - {{ "stem" | dfn }}
13 | - {{ "twig" | dfn }}
14 | - {{ "leaf" | dfn }}
15 | - {{ "flower" | dfn }}
16 | - {{ "fruit" | dfn }}
17 |
18 | ## Animals
19 |
20 | - {{ "head" | dfn }} ⇄ {{ "foot" | dfn }}
21 | - {{ "tail" | dfn }}
22 |
--------------------------------------------------------------------------------
/docs/pages/numeration.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Numeration
3 | description: Describe the order, precedence and multiplication of things.
4 | related:
5 | sections:
6 | - title: Related links
7 | items:
8 | - text: Numeral prefix on Wikipedia
9 | href: https://en.wikipedia.org/wiki/Numeral_prefix
10 | ---
11 |
12 | ## Order
13 |
14 | 1. {{ "first" | dfn }}
15 | 2. {{ "second" | dfn }}
16 | 3. {{ "third" | dfn }}
17 | 4. {{ "fourth" | dfn }}
18 | 5. {{ "fifth" | dfn }}
19 | 6. {{ "sixth" | dfn }}
20 | 7. {{ "seventh" | dfn }}
21 | 8. {{ "eighth" | dfn }}
22 | 9. {{ "ninth" | dfn }}
23 | 10. {{ "tenth" | dfn }}
24 |
25 | ## Precedence
26 |
27 | 1. {{ "primary" | dfn }}
28 | 2. {{ "secondary" | dfn }}
29 | 3. {{ "tertiary" | dfn }}
30 | 4. {{ "quaternary" | dfn }}
31 | 5. {{ "quinary" | dfn }}
32 | 6. {{ "senary" | dfn }}
33 | 7. {{ "septenary" | dfn }}
34 | 8. {{ "octonary" | dfn }}
35 | 9. {{ "nonary" | dfn }}
36 | 10. {{ "denary" | dfn }}
37 |
38 | ## Multiplication
39 |
40 | See also: [Music - Ensembles](/music#ensembles).
41 |
42 | 1. {{ "single" | dfn }}
43 | 2. {{ "couple" | dfn }}, {{ "double" | dfn }}, {{ "pair" | dfn }}, {{ "tandem" | dfn }}
44 | 3. {{ "triple" | dfn }}/{{ "treble" | dfn }}, {{ "triad" | dfn }}
45 | 4. {{ "quadruple" | dfn }}
46 | 5. {{ "quintuple" | dfn }}
47 | 6. {{ "sextuple" | dfn }}
48 | 7. {{ "septuple" | dfn }}
49 | 8. {{ "octuple" | dfn }}
50 | 9. {{ "nonuple" | dfn }}
51 | 10. {{ "decuple" | dfn }}
52 | 11. {{ "undecuple" | dfn }}
53 | 12. {{ "duodecuple" | dfn }}
54 | 13. {{ "tredecuple" | dfn }}
55 |
56 | - {{ "centuple" | dfn }} (100)
57 | - {{ "multiple" | dfn }} (more than 1)
58 |
--------------------------------------------------------------------------------
/docs/pages/pages.json:
--------------------------------------------------------------------------------
1 | {
2 | "layout": "sub-navigation",
3 | "templateEngineOverride": "njk,md",
4 | "permalink": "{{ title | slugify }}/index.html"
5 | }
6 |
--------------------------------------------------------------------------------
/docs/pages/publishing.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 📰 Publishing
3 | description: Terms from publishing can describe digitally published things.
4 | related:
5 | sections:
6 | - title: Related links
7 | items:
8 | - text: "What do you call the parts of a story? Or: why can’t journalists spell “lead”?"
9 | href: https://blog.carlmjohnson.net/post/2020/article-bits/
10 | - text: News style, Terms_and_structure on Wikipedia
11 | href: https://en.wikipedia.org/wiki/News_style#Terms_and_structure
12 | - text: Traditional point-size names on Wikipedia
13 | href: https://en.wikipedia.org/wiki/Traditional_point-size_names
14 | ---
15 |
16 | ## Formats
17 |
18 | - {{ "page" | dfn }}
19 | - {{ "poster" | dfn }}
20 | - {{ "leaflet" | dfn }}
21 | - {{ "pamphlet" | dfn }}
22 | - {{ "primer" | dfn }}
23 | - {{ "brochure" | dfn }}
24 | - {{ "tabloid" | dfn }}
25 | - {{ "berliner" | dfn }}
26 | - {{ "broadsheet" | dfn }}
27 |
28 | ## Sections
29 |
30 | - {{ "appendix" | dfn }}
31 | - {{ "article" | dfn }}
32 | - {{ "chapter" | dfn }}
33 | - {{ "colophon" | dfn }}
34 | - {{ "cover" | dfn }}
35 | - {{ "feature" | dfn }}
36 | - {{ "index" | dfn }}
37 | - {{ "masthead" | dfn }} or {{ "nameplate" | dfn }}
38 | - {{ "section" | dfn }}
39 | - {{ "spread" | dfn }}
40 |
41 | ## Article parts
42 |
43 | - {{ "abstract" | dfn }}
44 | - {{ "aside" | dfn }}
45 | - {{ "badge" | dfn }}
46 | - {{ "body" | dfn }}
47 | - {{ "box[out]" | dfn }}
48 | - {{ "callout" | dfn }}
49 | - {{ "caption" | dfn }}
50 | - {{ "citation" | dfn }}
51 | - {{ "ear" | dfn }}
52 | - {{ "excerpt" | dfn }}
53 | - {{ "footer" | dfn }} ⇄ {{ "header" | dfn }}
54 | - {{ "intro[duction]" | dfn }}
55 | - {{ "meta" | dfn }}
56 | - {{ "prose" | dfn }}
57 | - {{ "quote" | dfn }}
58 | - {{ "rubric" | dfn }}
59 | - {{ "slug" | dfn }}
60 | - {{ "sidebar" | dfn }}
61 | - {{ "signpost" | dfn }}
62 | - {{ "summary" | dfn }}
63 | - {{ "tag" | dfn }}
64 |
65 | ### Journalism
66 |
67 | - {{ "headline" | dfn }} or hed
68 | - {{ "subhead" | dfn }} or subhed
69 | - {{ "dek" | dfn }} or deck
70 | - {{ "billboard" | dfn }}
71 | - {{ "byline" | dfn }}
72 | - {{ "dateline" | dfn }}
73 | - {{ "standfirst" | dfn }}
74 | - {{ "lede" | dfn }} or lead
75 | - {{ "nutgraf" | dfn }} or {{ "nutshell" | dfn }}
76 | - {{ "kicker" | dfn }}
77 |
78 | ## Layout
79 |
80 | - {{ "grid" | dfn }}
81 | - {{ "col[umn]" | dfn }}
82 | - {{ "line" | dfn }}
83 | - {{ "region" | dfn }}
84 | - {{ "row" | dfn }}
85 | - {{ "unit" | dfn }}
86 |
--------------------------------------------------------------------------------
/docs/pages/relation.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Relation
3 | description: Describe the association between two or more things.
4 | ---
5 |
6 | ## Ancestral
7 |
8 | - {{ "ancestor" | dfn }}
9 | - {{ "child" | dfn }}
10 | - {{ "parent" | dfn }}
11 | - {{ "relative" | dfn }}
12 | - {{ "sibling" | dfn }}
13 | - {{ "twin" | dfn }}
14 | - {{ "orphan" | dfn({ discouraged: true }) }}
15 | - {{ "widow" | dfn({ discouraged: true }) }}
16 |
17 | ## Hierarchical
18 |
19 | - {{ "capital" | dfn }}
20 | - {{ "cardinal" | dfn }}
21 | - {{ "chief" | dfn }}
22 | - {{ "distinguished" | dfn }}
23 | - {{ "especial" | dfn }}
24 | - {{ "great" | dfn }}
25 | - {{ "grand" | dfn }}
26 | - {{ "hero" | dfn }} ⇄ {{ "villain" | dfn }}
27 | - {{ "main" | dfn }}
28 | - {{ "paramount" | dfn }}
29 | - {{ "principle" | dfn }}
30 | - {{ "master" | dfn({ discouraged: true }) }} ⇄ {{ "slave" | dfn({ discouraged: true }) }}
31 | - {{ "super" | dfn }} ⇄ {{ "sub" | dfn }}
32 | - {{ "superior" | dfn }} ⇄ {{ "inferior" | dfn }}
33 | - {{ "superordinate" | dfn }} ⇄ {{ "subordinate" | dfn }}
34 | - {{ "supreme" | dfn }} ⇄ {{ "subservient" | dfn }}
35 | - {{ "major" | dfn }} ⇄ {{ "minor" | dfn }}
36 | - {{ "senior" | dfn }} ⇄ {{ "junior" | dfn }}
37 | - {{ "rich" | dfn }} ⇄ {{ "poor" | dfn }}
38 | - {{ "vital" | dfn }} ⇄ {{ "trivial" | dfn }}
39 |
40 | ## Sequential
41 |
42 | - {{ "current" | dfn }}
43 | - {{ "next" | dfn }} ⇄ {{ "prev[ious]" | dfn }}
44 | - {{ "start" | dfn }} ⇄ {{ "finish" | dfn }}
45 | - {{ "first" | dfn }} ⇄ {{ "last" | dfn }}
46 | - {{ "pre" | dfn }} ⇄ {{ "post" | dfn }}
47 |
--------------------------------------------------------------------------------
/docs/pages/theatre.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 🎭 Theatre
3 | description: Terms from theatre can describe the state of things.
4 | ---
5 |
6 | ## Components
7 |
8 | - {{ "character" | dfn }}
9 | - {{ "scene" | dfn }}
10 | - {{ "stage" | dfn }}
11 | - {{ "player" | dfn }}
12 | - {{ "entrance" | dfn }} ⇄ {{ "exit" | dfn }}
13 |
14 | ## Narrative structure
15 |
16 | - {{ "prelude" | dfn }}
17 | - {{ "interlude" | dfn }}
18 | - {{ "postlude" | dfn }}
19 | - {{ "encore" | dfn }}
20 |
21 | ### Three act structure
22 |
23 | - {{ "protasis" | dfn }}
24 | - {{ "epitasis" | dfn }}
25 | - {{ "catastrophe" | dfn }}
26 |
27 | ### Five act structure
28 |
29 | - {{ "introduction" | dfn }}
30 | - {{ "rise" | dfn }}
31 | - {{ "climax" | dfn }}
32 | - {{ "fall" | dfn }}
33 | - {{ "resolution" | dfn }} or {{ "denouement" | dfn }}
34 |
--------------------------------------------------------------------------------
/eleventy.config.js:
--------------------------------------------------------------------------------
1 | import process from "node:process";
2 | import { govukEleventyPlugin } from "@x-govuk/govuk-eleventy-plugin";
3 | import { dfn } from "./lib/filters/dfn.js";
4 | const siteUrl = "https://classnames.paulrobertlloyd.com";
5 | const repoUrl = "https://github.com/paulrobertlloyd/classnames";
6 |
7 | // eslint-disable-next-line unicorn/no-anonymous-default-export
8 | export default function (eleventyConfig) {
9 | // Plugins
10 | eleventyConfig.addPlugin(govukEleventyPlugin, {
11 | icons: {
12 | mask: `${siteUrl}/assets/mask-icon.svg`,
13 | shortcut: `${siteUrl}/assets/favicon.ico`,
14 | touch: `${siteUrl}/assets/icon.png`,
15 | },
16 | stylesheets: [
17 | "/assets/application.css",
18 | "https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@450;700&display=swap",
19 | ],
20 | themeColor: "#336",
21 | opengraphImageUrl: `${siteUrl}/assets/opengraph-image.png`,
22 | url: process.env.GITHUB_ACTIONS && siteUrl,
23 | titleSuffix: "Classnames",
24 | showBreadcrumbs: false,
25 | header: {
26 | logotype: {
27 | text: "Classnames",
28 | },
29 | },
30 | footer: {
31 | contentLicence: {
32 | html: `Licensed under the .`,
33 | },
34 | copyright: {
35 | text: "© Paul Robert Lloyd",
36 | },
37 | meta: {
38 | items: [
39 | {
40 | href: repoUrl,
41 | text: "Contribute",
42 | },
43 | ],
44 | },
45 | },
46 | });
47 |
48 | // Filters
49 | eleventyConfig.addFilter("dfn", dfn);
50 |
51 | // Passthrough
52 | eleventyConfig.addPassthroughCopy("./docs/assets");
53 |
54 | // Config
55 | return {
56 | dir: {
57 | input: "docs",
58 | },
59 | };
60 | }
61 |
--------------------------------------------------------------------------------
/eslint.config.js:
--------------------------------------------------------------------------------
1 | import js from "@eslint/js";
2 | import prettier from "eslint-config-prettier";
3 | import unicorn from "eslint-plugin-unicorn";
4 | import globals from "globals";
5 |
6 | export default [
7 | js.configs.recommended,
8 | unicorn.configs["flat/recommended"],
9 | {
10 | ignores: ["_site/"],
11 | },
12 | {
13 | files: ["**/*.js"],
14 | languageOptions: { globals: { ...globals.node } },
15 | },
16 | prettier,
17 | ];
18 |
--------------------------------------------------------------------------------
/lib/filters/dfn.js:
--------------------------------------------------------------------------------
1 | export function dfn(string, options) {
2 | const word = string.replaceAll(/\[|\]/g, "");
3 | let dfn = `${string}`;
4 |
5 | if (options?.latin) {
6 | dfn += ` (latin: ${options.latin})`;
7 | }
8 |
9 | if (options?.discouraged) {
10 | dfn = `${dfn}`;
11 | }
12 |
13 | return dfn;
14 | }
15 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@paulrobertlloyd/classnames",
3 | "version": "1.0.0",
4 | "description": "A source of inspiration for naming things.",
5 | "keywords": [
6 | "reference",
7 | "resource"
8 | ],
9 | "homepage": "https://github.com/paulrobertlloyd/classnames",
10 | "bugs": {
11 | "url": "https://github.com/paulrobertlloyd/classnames/issues"
12 | },
13 | "license": "MIT",
14 | "repository": {
15 | "type": "git",
16 | "url": "https://github.com/paulrobertlloyd/classnames.git"
17 | },
18 | "scripts": {
19 | "build": "eleventy --quiet",
20 | "start": "eleventy --serve --quiet",
21 | "lint:prettier": "prettier . --check",
22 | "lint:prettier:fix": "prettier . --write",
23 | "lint:js": "eslint '**/*.js'",
24 | "lint:js:fix": "eslint '**/*.js' --fix",
25 | "lint": "npm run lint:prettier && npm run lint:js",
26 | "lint:fix": "npm run lint:prettier:fix && npm run lint:js:fix"
27 | },
28 | "devDependencies": {
29 | "@11ty/eleventy": "^3.0.0",
30 | "@x-govuk/govuk-eleventy-plugin": "^7.0.0",
31 | "eslint": "^9.0.0",
32 | "eslint-config-prettier": "^10.1.0",
33 | "eslint-plugin-prettier": "^5.1.2",
34 | "eslint-plugin-unicorn": "^59.0.0",
35 | "prettier": "^3.1.1"
36 | },
37 | "private": true,
38 | "engines": {
39 | "node": ">=20.11"
40 | },
41 | "type": "module"
42 | }
43 |
--------------------------------------------------------------------------------