|
3 | 3 | <head> |
4 | 4 | <meta charset="UTF-8"> |
5 | 5 | <title>Proselint</title> |
6 | | - <script src="https://cdn.tailwindcss.com"></script> |
7 | | - <style> |
8 | | - body { |
9 | | - font-family: "Georgia", "Iowan Old Style", "Palatino Linotype", "Times New Roman", serif; |
10 | | - line-height: 1.65; |
11 | | - } |
12 | | - h1, h2, h3 { |
13 | | - font-family: "Merriweather", Georgia, serif; |
14 | | - } |
15 | | - .copied { |
16 | | - border-color: #88e788 !important; |
17 | | - transition: border-color 0.3s ease !important; |
18 | | - } |
19 | | - </style> |
| 6 | + <link rel="stylesheet" href="styles.css"> |
20 | 7 | </head> |
21 | | - <body class="bg-neutral-50 text-neutral-900"> |
22 | | - <main class="max-w-2xl mx-auto my-16 px-6"> |
23 | | - <h1 class="text-4xl font-bold">Proselint</h1> |
24 | | - <p class="mb-8 text-lg text-neutral-700"> |
| 8 | + <body> |
| 9 | + <main> |
| 10 | + <h1>Proselint</h1> |
| 11 | + <p> |
25 | 12 | <em>Proselint</em> is a linter for English prose. |
26 | 13 | It highlights <em>clichés</em>, <em>jargon</em>, <em>illogical phrasing</em>, and other stylistic issues, |
27 | 14 | much like a spellchecker for style. |
28 | 15 | </p> |
29 | 16 |
|
30 | | - <h2 class="text-2xl font-semibold mt-8">Install</h2> |
31 | | - <p class="text-neutral-700 mb-4">Install via <em>pip</em> and try a quick example from the command line.</p> |
32 | | - <div class="space-y-4"> |
33 | | - <pre onclick="copyCode(this)" |
34 | | - class="text-sm mt-3 bg-white border border-neutral-300 text-neutral-900 rounded-lg p-4 hover:border-neutral-400 transition-colors duration-200 cursor-pointer font-mono leading-6 whitespace-pre-wrap break-words focus:outline-none focus:ring-2 focus:ring-indigo-500" |
35 | | - title="Click to copy"><code><span class="text-blue-600 font-semibold">pip</span> <span class="text-purple-600">install</span> <span class="text-green-600">proselint</span></code></pre> |
36 | | - <pre onclick="copyCode(this)" |
37 | | - class="text-sm mt-3 bg-white border border-neutral-300 text-neutral-900 rounded-lg p-4 hover:border-neutral-400 transition-colors duration-200 cursor-pointer font-mono leading-6 whitespace-pre-wrap break-words focus:outline-none focus:ring-2 focus:ring-indigo-500" |
38 | | - title="Click to copy"><code><span class="text-blue-600 font-semibold">echo</span> <span class="text-green-600">"This is very unique and literally perfect."</span> <span class="text-red-600">|</span> <span class="text-blue-600 font-semibold">proselint</span> <span class="text-purple-600">check</span> |
39 | | -<span class="text-blue-600 font-semibold">proselint</span> <span class="text-purple-600">check</span> <span class="text-amber-600">README.md</span></code></pre> |
| 17 | + <h2>Install</h2> |
| 18 | + <p>Install via <em>pip</em> and try a quick example from the command line.</p> |
| 19 | + <div> |
| 20 | +<pre onclick="copyCode(this)" title="Click to copy"> |
| 21 | +<code><span class="blue">pip</span> <span class="purple">install</span> <span class="green">proselint</span></code> |
| 22 | +</pre> |
| 23 | +<pre onclick="copyCode(this)" title="Click to copy"> |
| 24 | +<code><span class="blue">echo</span> <span class="green">"This is very unique and literally perfect."</span> <span class="red">|</span> <span class="blue">proselint</span> <span class="purple">check</span> |
| 25 | +<span class="blue">proselint</span> <span class="purple">check</span> <span class="amber">README.md</span></code> |
| 26 | +</pre> |
40 | 27 | </div> |
41 | | - |
42 | | - <h2 class="text-2xl font-semibold mt-8">Try it</h2> |
43 | | - <p class="mb-4 text-neutral-700">Paste or type some text below.</p> |
44 | | - <div class="relative"> |
45 | | - <textarea rows="8" |
46 | | - class="w-full border border-neutral-300 rounded-lg p-4 focus:outline-none focus:ring-2 focus:ring-indigo-500 font-serif" |
47 | | - >This is very unique and literally perfect.</textarea> |
48 | | - <div class="absolute inset-0 pointer-events-none whitespace-pre-wrap p-4 text-transparent"></div> |
| 28 | + <h2>Try it</h2> |
| 29 | + <p>Paste or type some text below.</p> |
| 30 | + <div > |
| 31 | + <textarea rows="8">This is very unique and literally perfect.</textarea> |
| 32 | + <div id="result"></div> |
49 | 33 | </div> |
50 | 34 |
|
51 | | - <h3 class="font-semibold mt-2">Issues</h3> |
| 35 | + <h3>Issues</h3> |
52 | 36 | <ul> |
53 | 37 | <li><em>uncomparables</em> Comparison of an uncomparable: 'very unique' is not comparable.</li> |
54 | 38 | <li><em>weasel_words.very</em> Substitute 'damn' every time you're inclined to write 'very'; your editor will delete it and the writing will be just as it should be.</li> |
55 | 39 | </ul> |
56 | 40 | </main> |
57 | 41 |
|
58 | | - <footer class="max-w-2xl mx-auto px-6 pb-8 text-center"> |
59 | | - <p class="text-sm text-neutral-500"> |
60 | | - Crafted by <a href="https://github.com/amperser" rel="noopener noreferrer" target="_blank" class="text-neutral-700 hover:text-neutral-900 underline">Amperser Labs</a> |
| 42 | + <footer> |
| 43 | + <p class="sm"> |
| 44 | + Crafted by <a href="https://github.com/amperser" rel="noopener noreferrer" target="_blank">Amperser Labs</a> |
61 | 45 | </p> |
62 | 46 | </footer> |
63 | | - |
64 | | - <script> |
65 | | - async function copyCode(element) { |
66 | | - const text = element.textContent; |
67 | | - await navigator.clipboard.writeText(text).catch(() => {}); |
68 | | - |
69 | | - element.classList.add('copied'); |
70 | | - setTimeout(() => element.classList.remove('copied'), 500); |
71 | | - } |
72 | | - </script> |
73 | 47 | </body> |
74 | 48 | </html> |
0 commit comments