Skip to content

Commit ac83014

Browse files
committed
tailwindcss 4
1 parent 47f89a5 commit ac83014

32 files changed

Lines changed: 805 additions & 389 deletions

File tree

.github/dependabot.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
version: 2
2+
3+
updates:
4+
- directory: '/'
5+
package-ecosystem: 'github-actions'
6+
schedule:
7+
interval: 'weekly'
8+
groups:
9+
dependencies:
10+
patterns:
11+
- '*'
12+
cooldown:
13+
default-days: 14

.stylelintrc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"at-rule-no-unknown": [
1919
true,
2020
{
21-
"ignoreAtRules": ["mixin", "tailwind", "screen"]
21+
"ignoreAtRules": ["mixin", "tailwind", "screen", "config", "reference"]
2222
}
2323
],
2424
"at-rule-no-deprecated": [
@@ -27,6 +27,8 @@
2727
"ignoreAtRules": ["apply"]
2828
}
2929
],
30+
"import-notation": null,
31+
"no-invalid-position-at-import-rule": null,
3032
"custom-property-pattern": null,
3133
"selector-id-pattern": null,
3234
"selector-class-pattern": null,

AGENTS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
CLAUDE.md

CLAUDE.md

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
# DVC.org
2+
3+
Documentation site for DVC (Data Version Control), built with Gatsby.
4+
5+
## Stack
6+
7+
React 19, Gatsby, CSS Modules, Tailwind, Webpack. Theme in
8+
`packages/gatsby-theme/`, docs content in `content/docs/`, components and
9+
plugins in `src/` and `plugins/`. `server/` is an Express production server that
10+
adds redirects, Plausible analytics proxy, Helmet security headers, and
11+
cache-control rules on top of the Gatsby static build.
12+
13+
Docs served at https://dvc.org/doc (Heroku + CloudFront CDN).
14+
15+
- `packages/gatsby-theme/src/components/Link/index.tsx` has a static DVC
16+
`VERSION` that needs periodic updates.
17+
- `redirects-list.json` — URL redirect rules, used by the Express server.
18+
- `content/docs/sidebar.json` — left sidebar navigation structure.
19+
- `content/linked-terms.js` — defines which backtick terms auto-link (e.g.
20+
`dvc.yaml` → project structure page, `dvc push` → command reference).
21+
- `content/docs/user-guide/basic-concepts/` — glossary source files for `<abbr>`
22+
tooltip content (DVC project, workspace, etc.).
23+
24+
## Commands
25+
26+
**!!Important: Use `yarn` not `npm`**.
27+
28+
- `yarn` — install dependencies
29+
- `yarn develop` — dev server with hot reload (localhost:8000)
30+
- `yarn clean` — clean Gatsby cache and build artifacts (used before starting
31+
server if Gatsby plugins were updated before using `yarn develop`)
32+
- `yarn build` — production build to `public/`
33+
- `yarn start` — production server over `public/`
34+
- `yarn test` — run tests using vitest
35+
- `yarn format <FILE>` — format with Prettier
36+
- `yarn format-all` / `yarn format-staged` / `yarn format-check-all`
37+
- `yarn lint` / `yarn lint-fix` / `yarn lint-ts` / `yarn lint-css`
38+
- `yarn fix-all` — run all fixers at once
39+
40+
## Writing docs
41+
42+
See `content/docs/contributing/docs.md` for the full style guide.
43+
44+
### Voice and tone
45+
46+
- Clear, human, approachable — not authoritative or overly formal.
47+
- Familiar language over jargon ("commit" not "revision", "version" not
48+
"reference") when accurate enough.
49+
- Tutorials/getting-started: direct address, contractions, light encouragement.
50+
- Command/API reference: systematic, scan-oriented, but still explanatory when
51+
examples need it.
52+
- Lead with the essence, then layer in clarifications and edge cases.
53+
- Details/admonitions are a standard editorial pattern, not an exceptional
54+
device.
55+
- Bullet lists max 5-7 items. Bullet text max ~3 sentences. Full-sentence
56+
bullets start capitalized and end with a period; fragments can be lowercase
57+
with no ending punctuation.
58+
- Emojis sparse and purposeful.
59+
60+
### Markup conventions
61+
62+
- One `.md` file per page in `content/docs/`.
63+
- Images in `static/img/`. Navigation in `content/docs/sidebar.json`.
64+
- `dvc <command>` and `dvc.api.<method>()` in backticks auto-link.
65+
- `dvc.yaml`, `.dvc`, `dvc.lock` in backticks also auto-link.
66+
- `<abbr>` tags for glossary terms — powers tooltip popups.
67+
- `<admon type="info">` clarifications, `type="tip"` best practices,
68+
`type="warn"` data safety (sparingly).
69+
- `<details>` for setup steps, deep dives, optional complexity.
70+
- Code fences: `usage` for `dvc --help` output, `dvc` for terminal examples,
71+
`yaml` for DVC/YAML files, `dvctable` for colored table cells, `diff` for git
72+
diff output.
73+
- **Bold** for emphasis, _italics_ for special terms.
74+
- Emojis: 📖 related docs, ⚠️ warnings, 💡 tips.
75+
- 80-char line width. Prettier enforced via pre-commit hook.
76+
77+
## Design
78+
79+
Audience: ML engineers, data engineers, and developers who need fast lookup and
80+
comfortable long-session reading.
81+
82+
- Pragmatic, precise, trustworthy. Not marketing, not dashboard.
83+
- Documentation-first editorial UI. Light mode is the baseline; dark mode is a
84+
calm extension, not a re-skin.
85+
- Surfaces separate clearly without looking glossy, heavy, or over-cardified.
86+
- Accent color (cyan) concentrated in links and active states, not spread as
87+
decoration.
88+
89+
### Typography
90+
91+
- Reading comfort over stylistic expression.
92+
- Hierarchy through spacing, weight, and contrast — not size jumps.
93+
- On reference pages, typography does the heavy lifting: monospace rhythm,
94+
weight, indentation, and alignment establish structure before borders or
95+
fills.
96+
97+
### Reference pages
98+
99+
- Command and API docs are dense lookup tools. Optimize for scan speed and
100+
stable structure.
101+
- Quieter than tutorials — no decorative surfaces or oversized gestures.
102+
- Emphasis from typography and grouping first; box treatments only when they
103+
materially improve comprehension.
104+
- Tutorials may allow more surface treatment and guidance cues; reference pages
105+
stay tighter, flatter, and more systematic.
106+
107+
### Principles
108+
109+
1. **Content first.** Reading flow and scanability outrank decoration.
110+
2. **Quiet hierarchy.** Spacing, contrast, and weight before stronger effects.
111+
3. **Accent with restraint.** Cyan guides interaction, doesn't dominate.
112+
4. **Supportive chrome.** Sidebars and cards frame content, don't compete.
113+
5. **Calm dark mode.** Durable for long reading sessions.
114+
6. **Accessible by default.** Clear contrast, visible focus, restrained motion,
115+
differentiation that doesn't rely on color alone.
116+
7. **Minimal interactive states.** Prefer underline, color shift, or icon
117+
emphasis before background fills or shadows that create extra visual layers.
118+
119+
### Heuristics
120+
121+
- Prefer incremental refinement over redesign. Match the existing docs system
122+
unless there is a clear product or usability reason to diverge.
123+
- No glossy panels, heavy shadows, hover lifts, or decorative gradients.
124+
- Keep interaction language consistent. Links read as links through color and
125+
underline, not component-specific hover inventions.
126+
- Keep complexity progressive. Core guidance in the main flow; use
127+
details/collapsible sections for deeper notes when that preserves scanability.
128+
- Tutorials allow more guidance and surface treatment; reference pages stay
129+
denser, flatter, and more typographic.
130+
- Verify UI changes in both light and dark mode, on at least one tutorial-style
131+
and one reference-style page.

gatsby-config.mjs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@ import { createRequire } from 'module'
22
import fs from 'fs'
33
import path from 'path'
44

5-
import autoprefixer from 'autoprefixer'
5+
import tailwindcssPostcss from '@tailwindcss/postcss'
66
import postcssNested from 'postcss-nested'
7-
import tailwindcss from 'tailwindcss'
8-
import tailwindNesting from 'tailwindcss/nesting/index.js'
97

108
import 'dotenv/config'
119
import './src/config/prismjs/dvc.js'
@@ -50,9 +48,8 @@ const argsLinkerPath = ['command-reference', 'ref', 'cli-reference']
5048
const sentry = true
5149

5250
const postCssPlugins = [
53-
tailwindNesting(postcssNested),
54-
autoprefixer,
55-
tailwindcss,
51+
postcssNested,
52+
tailwindcssPostcss(),
5653
makeGitHubMarkdownCssUseThemeAttribute
5754
]
5855

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
"@sentry/gatsby": "10.17.0",
4646
"@sentry/node": "10.27.0",
4747
"@svgr/webpack": "8.1.0",
48-
"autoprefixer": "10.4.21",
48+
"@tailwindcss/postcss": "4.2.2",
4949
"classnames": "2.5.1",
5050
"compression": "1.8.1",
5151
"dotenv": "17.2.3",
@@ -99,7 +99,7 @@
9999
"remark-preset-lint-recommended": "7.0.1",
100100
"reset-css": "5.0.2",
101101
"serve-handler": "6.1.6",
102-
"tailwindcss": "3.4.18",
102+
"tailwindcss": "4.2.2",
103103
"tailwindcss-animate": "1.0.7",
104104
"title-case": "3.0.3",
105105
"tsconfig-paths-webpack-plugin": "4.2.0",

renovate.json

Lines changed: 95 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,28 +10,113 @@
1010
":label(dependencies)",
1111
":pinAllExceptPeerDependencies"
1212
],
13-
"prConcurrentLimit": 1,
13+
"prConcurrentLimit": 3,
1414
"rebaseWhen": "conflicted",
1515
"dependencyDashboardApproval": true,
16+
"minimumReleaseAge": "14 days",
17+
"customManagers": [
18+
{
19+
"customType": "regex",
20+
"fileMatch": ["^src/components/Link/index\\.tsx$"],
21+
"matchStrings": [
22+
"'(?<currentValue>\\d+\\.\\d+\\.\\d+)'\\s*//\\s*renovate:\\s*datasource=(?<datasource>.*?)\\s+depName=(?<depName>.*?)\\s*$"
23+
]
24+
}
25+
],
1626
"packageRules": [
1727
{
18-
"groupName": "minor and patch updates",
28+
"description": "DVC version bump — PR immediately on new release",
29+
"matchPackageNames": ["dvc"],
30+
"matchDatasources": ["pypi"],
31+
"schedule": ["at any time"],
32+
"minimumReleaseAge": "0 days",
33+
"prPriority": 10,
34+
"dependencyDashboardApproval": false,
35+
"automerge": false
36+
},
37+
{
38+
"groupName": "gatsby",
39+
"matchPackageNames": ["gatsby", "gatsby-*"],
40+
"matchDatasources": ["npm"]
41+
},
42+
{
43+
"groupName": "sentry",
44+
"matchPackageNames": ["@sentry/*"],
45+
"matchDatasources": ["npm"]
46+
},
47+
{
48+
"description": "Add typescript-eslint to the linters preset group",
49+
"groupName": "linters",
50+
"matchPackageNames": ["typescript-eslint"],
51+
"matchDatasources": ["npm"]
52+
},
53+
{
54+
"description": "Add unified ecosystem packages to the remark preset group",
55+
"groupName": "remark",
56+
"matchPackageNames": [
57+
"unified",
58+
"rehype-*",
59+
"hast-util-*",
60+
"unist-util-*"
61+
],
62+
"matchDatasources": ["npm"]
63+
},
64+
{
65+
"groupName": "styling",
66+
"matchPackageNames": [
67+
"tailwindcss",
68+
"tailwindcss-animate",
69+
"autoprefixer"
70+
],
71+
"matchDatasources": ["npm"]
72+
},
73+
{
74+
"groupName": "server",
75+
"matchPackageNames": [
76+
"express",
77+
"compression",
78+
"dotenv",
79+
"helmet",
80+
"serve-handler",
81+
"http-proxy-middleware",
82+
"permissions-policy",
83+
"nodemon"
84+
],
85+
"matchDatasources": ["npm"]
86+
},
87+
{
88+
"groupName": "dev tools",
89+
"matchPackageNames": ["vitest", "lint-staged", "husky", "typescript"],
90+
"matchDatasources": ["npm"]
91+
},
92+
{
93+
"groupName": "babel",
94+
"matchPackageNames": ["@babel/*"],
95+
"matchDatasources": ["npm"]
96+
},
97+
{
98+
"groupName": "reach-ui",
99+
"matchPackageNames": ["@reach/*"],
100+
"matchDatasources": ["npm"]
101+
},
102+
{
103+
"groupName": "types",
104+
"matchPackageNames": ["@types/*", "!@types/react", "!@types/react-dom"],
19105
"matchDatasources": ["npm"],
20-
"minimumReleaseAge": "7 days",
21-
"matchUpdateTypes": ["minor", "patch"],
22106
"automerge": true,
23107
"automergeType": "branch",
24-
"prPriority": 1,
25-
"dependencyDashboardApproval": false,
26-
"matchPackageNames": ["*"]
108+
"dependencyDashboardApproval": false
27109
},
28110
{
29-
"minimumReleaseAge": "7 days",
111+
"groupName": "minor and patch updates",
112+
"description": "Catch-all for remaining minor/patch",
30113
"matchDatasources": ["npm"],
114+
"matchUpdateTypes": ["minor", "patch"],
115+
"matchPackageNames": ["*"],
31116
"automerge": true,
32117
"automergeType": "branch",
33-
"dependencyDashboardApproval": false,
34-
"matchPackageNames": ["*"]
118+
"prPriority": -1,
119+
"dependencyDashboardApproval": false
35120
}
36121
]
37122
}

src/components/Documentation/Layout/SidebarMenu/styles.module.css

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
@reference "../../../../styles/global.css";
2+
13
.menu {
24
@apply relative top-0 flex-1 min-h-0 overflow-y-auto overflow-x-hidden px-2;
35

@@ -36,7 +38,7 @@
3638
color: var(--docs-toc-text);
3739
border-radius: 6px;
3840

39-
@media screen(smMax) {
41+
@media (width <= 768px) {
4042
min-height: 38px;
4143
padding: 8px 8px 8px 36px;
4244
font-size: 16px;
@@ -94,7 +96,7 @@
9496
transform: translateY(-50%);
9597
left: 3px;
9698

97-
@media screen(smMax) {
99+
@media (width <= 768px) {
98100
left: 11px;
99101
}
100102
}
@@ -123,7 +125,7 @@
123125
transform 0.2s ease,
124126
color 0.2s ease;
125127

126-
@media screen(smMax) {
128+
@media (width <= 768px) {
127129
width: 32px;
128130
}
129131

@@ -165,7 +167,7 @@
165167
bottom: auto;
166168
transform: translateY(-50%);
167169

168-
@media screen(smMax) {
170+
@media (width <= 768px) {
169171
left: 10px;
170172
}
171173

src/components/Documentation/Layout/SiteNav/styles.module.css

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1+
@reference "../../../../styles/global.css";
2+
13
.siteNav {
24
display: none;
35
border-bottom: 1px solid var(--docs-border-subtle);
46

5-
@media screen(smMax) {
7+
@media (width <= 768px) {
68
display: block;
79
}
810
}

0 commit comments

Comments
 (0)