Read-only mirrors. Development, issues and pull requests are on GitHub.

summaryrefslogtreecommitdiffhomepage
path: root/frontend/src/styles
diff options
context:
space:
mode:
authorLeitwolf112026-10-18 01:45:32 +0300
committerLeitwolf112026-10-18 01:45:32 +0300
commit43c431a793affe2fa41ead816268d6af760f72d0 (patch)
tree7e459be0fa4ac04c126413e405c3939e26cb86bc /frontend/src/styles
parent7190d8a0911b4cea07cc502a1e471f0889b6d20b (diff)
downloadwebsite-43c431a793affe2fa41ead816268d6af760f72d0.tar.gz
Give each site a calm landing page with a "Why" sectiondesign/landing-pages
tala.run, talac.tala.run and tazel.tala.run now each open on a landing page of their own. talac.tala.run and tazel.tala.run used to redirect "/" to their first documentation topic. Every landing page has one headline, two ways in, a "Why Tala?", "Why Talac?" or "Why Tazel?" section of tabs over one code panel, and a short row of next links. The tabs follow the ARIA tabs pattern: arrow keys, Home and End move between them. The code panel stays left to right on the Hebrew pages and has a copy button. Every sample is something that works today. The Tala tabs show HelloWorld and PrimeNumbers, which are copies of Examples/ (a test compares them), a small program that shows an argument evaluated by need, the LLVM IR that talac -O2 made of the gcd loop of Examples/GCD, and a Tazel project file. The Talac tabs show the terminal output of talac 0.6.0 for one command, --emit=metadata, each --emit stage, the optimized IR and a type error. The Tazel tabs show the project file, the everyday commands, target selection, lock graph and a did-you-mean hint. Of the fifteen programs in Examples/, talac 0.6.0 builds four (HelloWorld, GCD, PrimeNumbers, CollatzTrace), so the classes, generators and pattern matching of the others are not shown yet. The old home page said in nearly every paragraph that the work was unfinished, linked "Why Tala?" three times, and numbered its sections. It is gone. The state of the project is said once, as a small badge beside the name in the header. The header no longer repeats a Home link, since the name leads home. On talac and tazel it lists their documentation topics. Styles that only the old home page used are removed. The titles and descriptions of "/" come from the landing content of each site, and the talac and tazel sitemaps list "/". The tests follow: siteHome is "/" everywhere, the tazel canonical path is "/", and the example comparison reads the landing samples.
Diffstat (limited to 'frontend/src/styles')
-rw-r--r--frontend/src/styles/site.css357
1 files changed, 146 insertions, 211 deletions
diff --git a/frontend/src/styles/site.css b/frontend/src/styles/site.css
index 96a1a0c..7695a64 100644
--- a/frontend/src/styles/site.css
+++ b/frontend/src/styles/site.css
@@ -185,32 +185,6 @@ p {
.inline-link:hover {
text-decoration: underline;
}
-
-.hero {
- display: grid;
- grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
- align-items: center;
- gap: 60px;
- min-height: 520px;
- padding-top: 60px;
- padding-bottom: 75px;
-}
-.hero-logo {
- display: block;
- grid-column: 2;
- grid-row: 1;
- width: 100%;
- height: auto;
- margin: 0;
- object-fit: contain;
- object-position: center;
-}
-.hero-copy {
- grid-column: 1;
- grid-row: 1;
- min-width: 0;
-}
-.eyebrow,
.kicker {
color: var(--accent);
font:
@@ -220,19 +194,6 @@ p {
letter-spacing: 0.08em;
text-transform: uppercase;
}
-.hero h1 {
- margin: 17px 0 17px;
- font-size: clamp(38px, 4.4vw, 55px);
- line-height: 1.12;
- letter-spacing: -0.045em;
-}
-.hero-intro {
- max-width: 590px;
- margin: 0;
- color: var(--muted);
- font-size: 16px;
-}
-.hero-actions,
.doc-actions {
display: flex;
align-items: center;
@@ -268,92 +229,11 @@ p {
.button-quiet:hover {
border-color: var(--accent);
}
-.release-note {
- margin-top: 20px;
- color: var(--quiet);
- font-size: 12px;
-}
-
-.why-section {
- padding-top: 66px;
- padding-bottom: 78px;
- border-top: 1px solid var(--border);
-}
-.section-lead {
- max-width: 660px;
-}
-.section-lead h2,
-.example-copy h2,
-.journey h2 {
- margin: 11px 0;
- font-size: clamp(30px, 3.3vw, 40px);
- line-height: 1.2;
- letter-spacing: -0.035em;
-}
-.section-lead p,
-.example-copy p,
-.journey p {
- color: var(--muted);
-}
-.feature-list {
- margin-top: 36px;
-}
-.feature-row {
- display: grid;
- grid-template-columns: 55px minmax(170px, 260px) minmax(0, 1fr);
- gap: 25px;
- padding: 24px 0;
- border-top: 1px solid var(--border);
-}
-.feature-row small {
- color: var(--accent);
- font:
- 600 12px ui-monospace,
- Consolas,
- monospace;
-}
-.feature-row h3 {
- margin: 0;
- font-size: 19px;
- line-height: 1.35;
-}
-.feature-row p {
- margin: 0;
- color: var(--muted);
- font-size: 14px;
-}
-
-.example-section {
- display: grid;
- grid-template-columns: minmax(0, 0.65fr) minmax(0, 1fr);
- gap: 60px;
- align-items: center;
- padding-top: 78px;
- padding-bottom: 80px;
- border-top: 1px solid var(--border);
-}
.inline-link {
color: var(--accent);
font-size: 13px;
font-weight: 700;
}
-.code-card {
- min-width: 0;
- overflow: hidden;
- border: 1px solid var(--border);
- border-radius: 5px;
- background: var(--panel);
-}
-.code-bar {
- padding: 10px 18px;
- border-bottom: 1px solid var(--border);
- color: var(--quiet);
- font:
- 12px ui-monospace,
- Consolas,
- monospace;
-}
-.code-card pre,
.doc-code {
overflow-x: auto;
margin: 0;
@@ -363,57 +243,6 @@ p {
Consolas,
monospace;
}
-.journey {
- display: flex;
- align-items: center;
- justify-content: space-between;
- gap: 30px;
- padding-top: 54px;
- padding-bottom: 54px;
- border-top: 1px solid var(--border);
- border-bottom: 1px solid var(--border);
-}
-.status-section {
- padding-top: 76px;
- padding-bottom: 75px;
- border-top: 1px solid var(--border);
-}
-.status-section h2 {
- margin: 11px 0;
- font-size: clamp(30px, 3.3vw, 40px);
- line-height: 1.2;
- letter-spacing: -0.035em;
-}
-.status-section .section-lead p {
- color: var(--muted);
-}
-.status-list {
- display: grid;
- grid-template-columns: repeat(3, minmax(0, 1fr));
- gap: 28px;
- margin-top: 33px;
-}
-.status-list article {
- padding-top: 19px;
- border-top: 1px solid var(--border);
-}
-.status-list h3 {
- font-size: 17px;
-}
-.status-list p {
- color: var(--muted);
- font-size: 14px;
-}
-.journey p {
- max-width: 660px;
- margin-bottom: 0;
-}
-.status-disclaimer {
- padding-top: 23px;
- padding-bottom: 38px;
- color: var(--quiet);
- font-size: 12px;
-}
.doc-layout {
display: grid;
@@ -606,46 +435,6 @@ p {
grid-template-columns: 1fr;
gap: 4px;
}
- .hero {
- grid-template-columns: minmax(0, 1fr);
- gap: 0;
- }
- .hero-logo {
- grid-column: 1;
- grid-row: 1;
- width: min(100%, 380px);
- margin: 0 auto;
- }
- .hero-copy {
- grid-column: 1;
- grid-row: 2;
- }
-}
-@media (max-width: 650px) {
- .hero {
- min-height: 0;
- padding-top: 24px;
- padding-bottom: 70px;
- }
- .feature-row {
- grid-template-columns: 38px minmax(0, 1fr);
- gap: 7px 15px;
- }
- .feature-row p {
- grid-column: 2;
- }
- .example-section {
- grid-template-columns: minmax(0, 1fr);
- gap: 24px;
- }
- .journey {
- align-items: start;
- flex-direction: column;
- }
- .status-list {
- grid-template-columns: 1fr;
- gap: 14px;
- }
}
@media (prefers-reduced-motion: reduce) {
*,
@@ -676,3 +465,149 @@ p {
direction: ltr;
unicode-bidi: isolate;
}
+
+/* Landing pages: one headline, two ways in, the Why tabs and a row of next links. */
+.landing {
+ width: min(100% - 48px, 960px);
+ margin: 0 auto;
+}
+.landing-hero {
+ padding: 88px 0 56px;
+}
+.landing-brand {
+ margin-bottom: 14px;
+ color: var(--accent);
+ font-size: 15px;
+ font-weight: 600;
+}
+.landing-hero h1 {
+ max-width: 16ch;
+ margin-bottom: 20px;
+ font-size: clamp(36px, 6vw, 58px);
+ line-height: 1.06;
+ letter-spacing: -0.02em;
+}
+.landing-lead {
+ max-width: 60ch;
+ margin-bottom: 30px;
+ color: var(--muted);
+ font-size: 19px;
+}
+.landing-actions {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 12px;
+}
+.landing-why,
+.landing-next {
+ padding: 40px 0;
+}
+.landing-why h2,
+.landing-next h2 {
+ margin-bottom: 20px;
+ font-size: 28px;
+}
+.why-tablist {
+ display: flex;
+ gap: 4px;
+ overflow-x: auto;
+ border-bottom: 1px solid var(--border);
+ scrollbar-width: thin;
+}
+.why-tablist button {
+ flex: none;
+ padding: 10px 14px;
+ border: 0;
+ border-bottom: 2px solid transparent;
+ background: none;
+ color: var(--muted);
+ cursor: pointer;
+ font-size: 15px;
+}
+.why-tablist button:hover {
+ color: var(--text);
+}
+.why-tablist button[aria-selected="true"] {
+ border-bottom-color: var(--accent);
+ color: var(--text);
+ font-weight: 600;
+}
+.why-panel {
+ padding-top: 18px;
+}
+.why-caption {
+ max-width: 70ch;
+ margin-bottom: 16px;
+ color: var(--muted);
+}
+.why-code {
+ overflow: hidden;
+ border: 1px solid var(--border);
+ border-radius: 12px;
+ background: var(--panel);
+}
+.why-code-bar {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 8px 14px;
+ border-bottom: 1px solid var(--border);
+ color: var(--quiet);
+ font-size: 13px;
+}
+.why-copy {
+ padding: 4px 10px;
+ border: 1px solid var(--border);
+ border-radius: 7px;
+ background: none;
+ color: var(--muted);
+ cursor: pointer;
+ font-size: 12px;
+}
+.why-copy:hover {
+ border-color: var(--accent);
+ color: var(--text);
+}
+.why-code pre {
+ margin: 0;
+ padding: 18px;
+ overflow-x: auto;
+ font-size: 14px;
+ line-height: 1.6;
+}
+.landing-next ul {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 10px 28px;
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+.landing-next a {
+ color: var(--accent);
+}
+.landing-next a:hover {
+ text-decoration: underline;
+}
+.status-badge {
+ padding: 3px 9px;
+ border: 1px solid var(--border);
+ border-radius: 999px;
+ color: var(--quiet);
+ font-size: 12px;
+ white-space: nowrap;
+}
+@media (max-width: 720px) {
+ .landing {
+ width: calc(100% - 32px);
+ }
+ .landing-hero {
+ padding: 48px 0 32px;
+ }
+ .landing-lead {
+ font-size: 17px;
+ }
+ .status-badge {
+ display: none;
+ }
+}