Skip to content

feat: redesign OpenTDF.io homepage and update documentation styling#191

Open
vmorps wants to merge 11 commits intomainfrom
feat/site-redesign
Open

feat: redesign OpenTDF.io homepage and update documentation styling#191
vmorps wants to merge 11 commits intomainfrom
feat/site-redesign

Conversation

@vmorps
Copy link

@vmorps vmorps commented Feb 20, 2026

Preview

opentdf-docs-preview-new-home.surge.sh

Summary

  • Redesigned the OpenTDF.io homepage with new messaging and contemporary design
  • Added new landing page sections: Hero, Problem/Solution, Developer First, Standards, Community, and Final CTA
  • Updated documentation CSS to reflect the new design system

Additional changes (post-review)

  • Favicon — restored favicon.svg (cyan diamond mark); a new brand mark for OpenTDF as an independent project is in progress and will be swapped in via a follow-up PR
  • Restored light/dark mode toggle and made navbar fully theme-aware (light/dark glass)
  • Removed orphaned logo marks (opentdf-icon.svg) — replaced by the above
  • Full light mode support for the homepage — all landing sections (Hero, ProblemSolution, DeveloperFirst, Standards, Community, FinalCTA) now adapt to light mode; code windows and diagrams intentionally stay dark
  • Fixed note admonition dark mode readability (decoupled :::note from amber styling; added proper dark amber for :::tip only)
  • Footer theme-aware — footer now switches colours in light mode
  • CLI card — replaced brew install opentdf/tap/otdfctl with a link to the latest otdfctl release
    — updated docusaurus-plugin-openapi-docs to 4.7.1 (was installed at 4.4.0 against a ^4.7.1 requirement); fixed post-processing script to remove duplicate *.info.mdx files the updated plugin now generates alongside index.mdx, which were breaking useCurrentSidebarCategory() during SSG

Test plan

  • Visit the homepage and verify all new sections render correctly
  • Toggle light/dark mode and confirm homepage, navbar, footer, and admonitions all adapt
  • Check the site on mobile and desktop screen sizes
  • Verify documentation pages reflect updated CSS styling
  • Confirm favicon and navbar logo display correctly in both light and dark mode
  • Confirm npm run build completes with zero errors

🤖 Generated with Claude Code

@vmorps vmorps requested a review from a team as a code owner February 20, 2026 21:40
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @vmorps, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly enhances the user experience and visual appeal of the OpenTDF.io website by introducing a modern, redesigned homepage and updating the overall documentation styling. The changes aim to provide clearer messaging, better highlight key features, and offer improved navigation for developers and community members, making it easier to understand and engage with the OpenTDF project.

Highlights

  • Homepage Redesign: The OpenTDF.io homepage has been completely redesigned with new messaging and a contemporary visual style, incorporating new sections like Hero, Problem/Solution, Developer First, Standards, Community, and a final Call to Action.
  • Documentation Styling Update: The documentation CSS has been updated to align with the new design system introduced on the homepage.
  • Favicon and Icon Assets: The site's favicon has been replaced with a new SVG, and a new OpenTDF icon asset has been added.
  • Java SDK Code Samples: New code samples for Java SDK encrypt/decrypt collection operations have been added to the documentation.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • code_samples/java/decrypt-collection-example.mdx
    • Added a new Java code sample demonstrating how to decrypt a collection of NanoTDF files.
  • code_samples/java/encrypt-collection-example.mdx
    • Added a new Java code sample demonstrating how to encrypt a collection of data into NanoTDF files.
  • docusaurus.config.ts
    • Updated the favicon path to use a new SVG icon.
    • Modified the custom CSS configuration to include a new 'landing.css' file for homepage specific styles.
    • Updated the navbar logo source to a new SVG icon.
    • Restructured the navbar links to include Quickstart, SDKs, Specification, and Community, while moving GitHub to the right.
    • Revised the footer links, organizing them into 'Project', 'Developers', 'Community', and 'Sponsor' categories, and removed the old footer logo and copyright format.
  • src/components/landing/Community.module.css
    • Added CSS styles for the new 'Community' landing page section, including responsive design for cards and text.
  • src/components/landing/Community.tsx
    • Added a new React component for the 'Community' section of the landing page, featuring links to GitHub, Discussions, and Contribution guidelines.
  • src/components/landing/DeveloperFirst.module.css
    • Added CSS styles for the new 'DeveloperFirst' landing page section, including responsive grid layouts for SDK cards and CTA buttons.
  • src/components/landing/DeveloperFirst.tsx
    • Added a new React component for the 'DeveloperFirst' section of the landing page, showcasing various SDKs with install commands and copy functionality.
  • src/components/landing/FinalCTA.module.css
    • Added CSS styles for the new 'FinalCTA' landing page section, including responsive design for call-to-action buttons and a background glow effect.
  • src/components/landing/FinalCTA.tsx
    • Added a new React component for the 'FinalCTA' section of the landing page, providing calls to action for tutorials, documentation, and source code.
  • src/components/landing/Hero.module.css
    • Added CSS styles for the new 'Hero' landing page section, including responsive grid layout, badge styling, and code window aesthetics.
  • src/components/landing/Hero.tsx
    • Added a new React component for the 'Hero' section of the landing page, featuring a prominent heading, descriptive text, call-to-action buttons, and a code preview window.
  • src/components/landing/ProblemSolution.module.css
    • Added CSS styles for the new 'ProblemSolution' landing page section, including responsive card layouts and text formatting.
  • src/components/landing/ProblemSolution.tsx
    • Added a new React component for the 'ProblemSolution' section of the landing page, outlining the challenges of traditional security and how OpenTDF provides solutions.
  • src/components/landing/Standards.module.css
    • Added CSS styles for the new 'Standards' landing page section, including responsive grid layout for content and a TDF object diagram.
  • src/components/landing/Standards.tsx
    • Added a new React component for the 'Standards' section of the landing page, detailing OpenTDF's adherence to standards like NIST ABAC and featuring a TDF object structure diagram.
  • src/components/landing/index.ts
    • Exported all new landing page components (Hero, ProblemSolution, DeveloperFirst, Standards, Community, FinalCTA) for easier import.
  • src/css/custom.css
    • Updated Docusaurus theme primary color variables to a new teal palette.
    • Modified the highlight code line background and border color.
    • Introduced new styling for 'tip' admonition blocks with amber colors.
    • Adjusted dark mode link, menu, and breadcrumb active colors to match the new primary color.
    • Removed specific dark mode navbar and footer styling, deferring to new global styles.
    • Updated navbar brand title color for dark mode.
    • Refactored footer styling to a new dark theme with updated link colors and copyright presentation.
    • Implemented a new navbar layout with brand on the left, nav items centered, and GitHub link on the right, including custom styling for the GitHub button.
  • src/css/landing.css
    • Added new CSS utility classes for the landing page, including grid backgrounds, gradient meshes, text gradients, glow effects, code block animation, and section background colors.
    • Defined custom accent colors for SDK cards and their hover effects.
  • src/pages/index.tsx
    • Updated the Open Graph description meta tag for the homepage.
    • Replaced the old homepage components (Hero, Columns, Features, Feedback) with the new set of landing page components (Hero, ProblemSolution, DeveloperFirst, Standards, Community, FinalCTA).
  • static/img/favicon.svg
    • Added a new SVG file to be used as the site's favicon, featuring a dark background with a teal diamond and circle.
  • static/img/filecontents.svg
    • Removed an outdated SVG image previously used to illustrate file contents.
  • static/img/opentdf-icon.svg
    • Added a new SVG file for the OpenTDF icon, featuring a teal diamond and circle.
Activity
  • No human activity has been recorded on this pull request yet.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a major redesign of the OpenTDF.io homepage and new Java SDK code samples for encryption and decryption. A security audit identified several high-severity vulnerabilities in the Java code samples, specifically hardcoded secrets and insecure data handling. Additionally, the Java examples contain a compilation-preventing typo and resource leaks. These issues, even in documentation, pose a significant risk. It is strongly recommended to replace hardcoded credentials with a secure secret management solution, enforce secure TLS connections, correct the typo, and resolve resource leaks to adhere to best practices.

@vmorps
Copy link
Author

vmorps commented Feb 21, 2026

Java sample files have been removed from the branch; they had nothing to do with my PR.

@jp-ayyappan
Copy link
Contributor

/gemini review

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a complete redesign of the OpenTDF.io homepage, replacing the old content with a modern, visually appealing design and updated messaging. It adds several new landing page sections (Hero, Problem/Solution, Developer First, Standards, Community, and Final CTA) as React components. The documentation's CSS has also been updated to align with the new design system, including new color schemes, navbar styling, and footer design.

The new components are well-structured, and the styling makes good use of modern CSS features like custom properties, color-mix, and animations. The changes significantly improve the look and feel of the site.

I've added a couple of suggestions to improve the new CSS for the navbar, focusing on layout robustness and maintainability. Overall, this is a fantastic update.

Comment on lines 370 to 400
.navbar__inner {
position: relative;
display: flex;
justify-content: center;
align-items: center;
}

.navbar .navbar__brand {
color: var(--vds-color-blue-006);
font-size: 1.5rem;
position: absolute;
left: var(--ifm-navbar-padding-horizontal);
top: 50%;
transform: translateY(-50%);
display: flex;
align-items: center;
}

/* Left items container: shrink-to-fit so parent can center it */
.navbar__inner > .navbar__items:not(.navbar__items--right) {
flex: 0 0 auto;
justify-content: center;
}

.navbar .navbar__items--right {
position: absolute;
right: var(--ifm-navbar-padding-horizontal);
top: 50%;
transform: translateY(-50%);
display: flex;
align-items: center;
gap: 0.5rem;
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The current implementation for the navbar layout using position: absolute for the brand and right-aligned items is a clever workaround for Docusaurus's DOM structure, but it can be fragile. On some viewport widths, the centered navigation links might grow to overlap with the absolutely positioned elements, causing layout issues or making them unclickable.

Please test this across various screen sizes, especially those just above the mobile breakpoint, to ensure the navigation remains usable and robust against content changes.

logo: {
alt: "OpenTDF - Protect the Data, Build the Future",
src: "img/OpenTDF-Logo.png",
src: "img/opentdf-icon.svg",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
src: "img/opentdf-icon.svg",
src: "img/OpenTDF-Logo.png",

@jp-ayyappan
Copy link
Contributor

We also seem to have lost the light / dark switch functionality that is currently implemented in opentdf.io. We should fix that since it is used throughout the docs site.

jp-ayyappan added a commit that referenced this pull request Feb 22, 2026
- Revert favicon and navbar logo to OpenTDF-Logo.png per reviewer suggestion
- Add srcDark logo (OpenTDF-Logo-White.png) for dark mode navbar
- Remove orphaned favicon.svg and opentdf-icon.svg assets
- Restore light/dark mode toggle: make navbar theme-aware (was always-dark)
- Fix navbar layout robustness: max-width prevents center links overlapping brand
- Deduplicate GitHub icon SVG into --github-icon-svg CSS custom property
- Normalize dark mode selectors to html[data-theme='dark'] throughout
- Add light mode support to landing page homepage (sections, cards, text, buttons)
- Fix tip admonition: amber readable in both modes; decouple note from amber rule
- Fix footer: add theme-aware light mode styling
- Add html[data-theme='light'] design token overrides for landing page tokens

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@vmorps vmorps requested a review from a team as a code owner February 22, 2026 13:49
jp-ayyappan added a commit that referenced this pull request Feb 23, 2026
## Summary

- Add \`scripts/update-openapi-index.ts\` post-processing script that
runs after \`docusaurus gen-api-docs\` to:
- Rename \`.info.mdx\` files to \`index.mdx\` (prevents duplicate
sidebar entries)
- Regenerate \`docs/OpenAPI-clients/index.md\` with correct
directory-based links
- Chain post-processing automatically via \`gen-api-docs-all\` npm
script
- Refactor \`preprocessing.ts\`: extract shared \`SERVICE_DESCRIPTIONS\`
and \`CATEGORY_MAPPING\` constants, add catch-all category for
uncategorized APIs
- Extend \`check-vendored-yaml\` to detect unregistered spec files in
the platform repo — walks \`docs/openapi/\` via the GitHub Contents API
and fails the build if a new API spec exists upstream without a
corresponding entry in \`openApiSpecsArray\`
- Add footer license info distinguishing Docs (CC BY 4.0) from Code (BSD
3-Clause)
- Add \`gray-matter\` dependency for frontmatter parsing

## Preview

🔗 **https://opentdf-docs-preview-openapi-processing.surge.sh**

### Before vs After

| | Before (Production) | After (Preview) |
|---|---|---|
| OpenAPI Clients Index |
[/OpenAPI-clients](https://opentdf.io/OpenAPI-clients) |
[/OpenAPI-clients](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients)
|

### Preview — API Endpoint Root Pages

These root pages previously did not resolve. This PR fixes them.

| Service | Preview Link |
|---|---|
| Well-Known Configuration |
[/OpenAPI-clients/wellknownconfiguration](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/wellknownconfiguration)
|
| KAS |
[/OpenAPI-clients/kas](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/kas)
|
| V1 Authorization |
[/OpenAPI-clients/authorization/v1](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/authorization/v1)
|
| V2 Authorization |
[/OpenAPI-clients/authorization/v2](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/authorization/v2)
|
| V1 Entity Resolution |
[/OpenAPI-clients/entityresolution/v1](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/entityresolution/v1)
|
| V2 Entity Resolution |
[/OpenAPI-clients/entityresolution/v2](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/entityresolution/v2)
|
| Policy Objects |
[/OpenAPI-clients/policy](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/policy)
|
| Policy Attributes |
[/OpenAPI-clients/policy/attributes](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/policy/attributes)
|
| Policy Namespaces |
[/OpenAPI-clients/policy/namespaces](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/policy/namespaces)
|
| Policy Actions |
[/OpenAPI-clients/policy/actions](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/policy/actions)
|
| Policy Subject Mapping |
[/OpenAPI-clients/policy/subjectmapping](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/policy/subjectmapping)
|
| Policy Resource Mapping |
[/OpenAPI-clients/policy/resourcemapping](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/policy/resourcemapping)
|
| Policy Obligations |
[/OpenAPI-clients/policy/obligations](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/policy/obligations)
|
| Policy Registered Resources |
[/OpenAPI-clients/policy/registeredresources](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/policy/registeredresources)
|
| Policy KAS Registry |
[/OpenAPI-clients/policy/kasregistry](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/policy/kasregistry)
|
| Key Management |
[/OpenAPI-clients/policy/keymanagement](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/policy/keymanagement)
|
| Policy Unsafe Service |
[/OpenAPI-clients/policy/unsafe](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/policy/unsafe)
|

## Related

- Homepage redesign: #191
- License update: #187 (merged)

## Test plan

- [ ] Run \`npm run gen-api-docs-all\` and verify no build warnings
about missing \`.info.mdx\` files
- [ ] Verify \`docs/OpenAPI-clients/index.md\` links resolve correctly
- [ ] Run \`npm run build\` and confirm no broken link errors on
\`/OpenAPI-clients\`
- [ ] Verify \`check-vendored-yaml\` fails if a new spec with API paths
exists in the platform repo but is not registered in
\`openApiSpecsArray\`

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
jp-ayyappan added a commit that referenced this pull request Feb 23, 2026
## Summary

Addresses all review comments raised on #191. Includes a light mode pass
across the entire site since the theme toggle was broken.

## Changes

### Reviewer-requested fixes (jp-ayyappan)
- **Favicon**: reverted from `favicon.svg` back to `OpenTDF-Logo.png`
- **Navbar logo**: reverted from `opentdf-icon.svg` back to
`OpenTDF-Logo.png`; added `srcDark: "img/OpenTDF-Logo-White.png"` for
automatic dark/light logo switching via Docusaurus's built-in `srcDark`
config
- **Light/dark mode toggle restored**: navbar was hardcoded always-dark,
breaking the color mode switch; made fully theme-aware

### CSS improvements (gemini-code-assist)
- **Navbar layout robustness**: added `max-width` guard on the centered
nav links container to prevent overlap with the absolutely-positioned
brand and right items at narrow viewports
- **GitHub icon deduplication**: extracted the large SVG data URL into a
`--github-icon-svg` CSS custom property; both `-webkit-mask-image` and
`mask-image` now reference the variable

### Code hygiene
- **Removed orphaned assets**: `favicon.svg` and `opentdf-icon.svg` were
added by #191 and are now unreferenced — deleted
- **Added** `static/img/OpenTDF-Logo-White.png` for dark mode navbar
logo
- **Normalized dark mode selectors**: new `[data-theme='dark']` rules
aligned to `html[data-theme='dark']` to match the file's existing
convention and specificity

### Light mode for the full site
- **Navbar**: light glass background in light mode; dark glass in dark
mode — with adaptive text, nav links, and GitHub button colors
- **Footer**: was always-dark; now theme-aware with light gray
background, dark text, and adapted link colors in light mode
- **Landing page homepage**: all six sections (`Hero`,
`ProblemSolution`, `DeveloperFirst`, `Standards`, `Community`,
`FinalCTA`) now adapt to light mode — white/off-white section
backgrounds, dark text, corrected button borders. Code windows (Hero)
and TDF diagram (Standards) intentionally remain dark in both modes.
- **Design tokens**: added `html[data-theme='light']` overrides for all
`--otdf-*` CSS custom properties

### Admonition fixes
- **`:::tip` dark mode**: was unreadable (cream background + white
inherited text in dark mode); now uses a dark amber background
(`#451a03`) with light amber text in dark mode
- **`:::note` decoupled from amber**: the original rule incorrectly
targeted `alert--secondary` (note) alongside tip — removed; notes now
use Docusaurus's default dark-mode-safe secondary styling

## Preview

🔗 <a href="https://opentdf-docs-preview-191-review.surge.sh/"
target="_blank">https://opentdf-docs-preview-191-review.surge.sh/</a>

## Test plan
- [ ] Verify homepage renders correctly in both light and dark mode
- [ ] Verify navbar logo switches between color and white versions on
theme toggle
- [ ] Verify color mode toggle is visible and functional in the navbar
- [ ] Verify footer adapts to light/dark mode
- [ ] Verify `:::tip` admonitions are readable in both modes on a docs
page (e.g. `/quickstart`)
- [ ] Verify `:::note` admonitions render with default gray styling (not
amber)
- [ ] Check navbar layout at various viewport widths above the mobile
breakpoint

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
vmorps pushed a commit that referenced this pull request Feb 24, 2026
## Summary

Addresses all review comments raised on #191. Includes a light mode pass
across the entire site since the theme toggle was broken.

## Changes

### Reviewer-requested fixes (jp-ayyappan)
- **Favicon**: reverted from `favicon.svg` back to `OpenTDF-Logo.png`
- **Navbar logo**: reverted from `opentdf-icon.svg` back to
`OpenTDF-Logo.png`; added `srcDark: "img/OpenTDF-Logo-White.png"` for
automatic dark/light logo switching via Docusaurus's built-in `srcDark`
config
- **Light/dark mode toggle restored**: navbar was hardcoded always-dark,
breaking the color mode switch; made fully theme-aware

### CSS improvements (gemini-code-assist)
- **Navbar layout robustness**: added `max-width` guard on the centered
nav links container to prevent overlap with the absolutely-positioned
brand and right items at narrow viewports
- **GitHub icon deduplication**: extracted the large SVG data URL into a
`--github-icon-svg` CSS custom property; both `-webkit-mask-image` and
`mask-image` now reference the variable

### Code hygiene
- **Removed orphaned assets**: `favicon.svg` and `opentdf-icon.svg` were
added by #191 and are now unreferenced — deleted
- **Added** `static/img/OpenTDF-Logo-White.png` for dark mode navbar
logo
- **Normalized dark mode selectors**: new `[data-theme='dark']` rules
aligned to `html[data-theme='dark']` to match the file's existing
convention and specificity

### Light mode for the full site
- **Navbar**: light glass background in light mode; dark glass in dark
mode — with adaptive text, nav links, and GitHub button colors
- **Footer**: was always-dark; now theme-aware with light gray
background, dark text, and adapted link colors in light mode
- **Landing page homepage**: all six sections (`Hero`,
`ProblemSolution`, `DeveloperFirst`, `Standards`, `Community`,
`FinalCTA`) now adapt to light mode — white/off-white section
backgrounds, dark text, corrected button borders. Code windows (Hero)
and TDF diagram (Standards) intentionally remain dark in both modes.
- **Design tokens**: added `html[data-theme='light']` overrides for all
`--otdf-*` CSS custom properties

### Admonition fixes
- **`:::tip` dark mode**: was unreadable (cream background + white
inherited text in dark mode); now uses a dark amber background
(`#451a03`) with light amber text in dark mode
- **`:::note` decoupled from amber**: the original rule incorrectly
targeted `alert--secondary` (note) alongside tip — removed; notes now
use Docusaurus's default dark-mode-safe secondary styling

## Preview

🔗 <a href="https://opentdf-docs-preview-191-review.surge.sh/"
target="_blank">https://opentdf-docs-preview-191-review.surge.sh/</a>

## Test plan
- [ ] Verify homepage renders correctly in both light and dark mode
- [ ] Verify navbar logo switches between color and white versions on
theme toggle
- [ ] Verify color mode toggle is visible and functional in the navbar
- [ ] Verify footer adapts to light/dark mode
- [ ] Verify `:::tip` admonitions are readable in both modes on a docs
page (e.g. `/quickstart`)
- [ ] Verify `:::note` admonitions render with default gray styling (not
amber)
- [ ] Check navbar layout at various viewport widths above the mobile
breakpoint

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Mike Morper <mike.morper@virtru.com>
vmorps pushed a commit that referenced this pull request Feb 24, 2026
- Add \`scripts/update-openapi-index.ts\` post-processing script that
runs after \`docusaurus gen-api-docs\` to:
- Rename \`.info.mdx\` files to \`index.mdx\` (prevents duplicate
sidebar entries)
- Regenerate \`docs/OpenAPI-clients/index.md\` with correct
directory-based links
- Chain post-processing automatically via \`gen-api-docs-all\` npm
script
- Refactor \`preprocessing.ts\`: extract shared \`SERVICE_DESCRIPTIONS\`
and \`CATEGORY_MAPPING\` constants, add catch-all category for
uncategorized APIs
- Extend \`check-vendored-yaml\` to detect unregistered spec files in
the platform repo — walks \`docs/openapi/\` via the GitHub Contents API
and fails the build if a new API spec exists upstream without a
corresponding entry in \`openApiSpecsArray\`
- Add footer license info distinguishing Docs (CC BY 4.0) from Code (BSD
3-Clause)
- Add \`gray-matter\` dependency for frontmatter parsing

🔗 **https://opentdf-docs-preview-openapi-processing.surge.sh**

| | Before (Production) | After (Preview) |
|---|---|---|
| OpenAPI Clients Index |
[/OpenAPI-clients](https://opentdf.io/OpenAPI-clients) |
[/OpenAPI-clients](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients)
|

These root pages previously did not resolve. This PR fixes them.

| Service | Preview Link |
|---|---|
| Well-Known Configuration |
[/OpenAPI-clients/wellknownconfiguration](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/wellknownconfiguration)
|
| KAS |
[/OpenAPI-clients/kas](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/kas)
|
| V1 Authorization |
[/OpenAPI-clients/authorization/v1](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/authorization/v1)
|
| V2 Authorization |
[/OpenAPI-clients/authorization/v2](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/authorization/v2)
|
| V1 Entity Resolution |
[/OpenAPI-clients/entityresolution/v1](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/entityresolution/v1)
|
| V2 Entity Resolution |
[/OpenAPI-clients/entityresolution/v2](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/entityresolution/v2)
|
| Policy Objects |
[/OpenAPI-clients/policy](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/policy)
|
| Policy Attributes |
[/OpenAPI-clients/policy/attributes](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/policy/attributes)
|
| Policy Namespaces |
[/OpenAPI-clients/policy/namespaces](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/policy/namespaces)
|
| Policy Actions |
[/OpenAPI-clients/policy/actions](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/policy/actions)
|
| Policy Subject Mapping |
[/OpenAPI-clients/policy/subjectmapping](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/policy/subjectmapping)
|
| Policy Resource Mapping |
[/OpenAPI-clients/policy/resourcemapping](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/policy/resourcemapping)
|
| Policy Obligations |
[/OpenAPI-clients/policy/obligations](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/policy/obligations)
|
| Policy Registered Resources |
[/OpenAPI-clients/policy/registeredresources](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/policy/registeredresources)
|
| Policy KAS Registry |
[/OpenAPI-clients/policy/kasregistry](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/policy/kasregistry)
|
| Key Management |
[/OpenAPI-clients/policy/keymanagement](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/policy/keymanagement)
|
| Policy Unsafe Service |
[/OpenAPI-clients/policy/unsafe](https://opentdf-docs-preview-openapi-processing.surge.sh/OpenAPI-clients/policy/unsafe)
|

- Homepage redesign: #191
- License update: #187 (merged)

- [ ] Run \`npm run gen-api-docs-all\` and verify no build warnings
about missing \`.info.mdx\` files
- [ ] Verify \`docs/OpenAPI-clients/index.md\` links resolve correctly
- [ ] Run \`npm run build\` and confirm no broken link errors on
\`/OpenAPI-clients\`
- [ ] Verify \`check-vendored-yaml\` fails if a new spec with API paths
exists in the platform repo but is not registered in
\`openApiSpecsArray\`

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Mike Morper <mike.morper@virtru.com>
jp-ayyappan
jp-ayyappan previously approved these changes Feb 24, 2026
vmorps and others added 9 commits February 24, 2026 07:44
Redesigned the OpenTDF.io homepage with new messaging and contemporary
design, including new landing page components (Hero, ProblemSolution,
DeveloperFirst, Standards, Community, FinalCTA). Updated documentation
CSS to reflect the new design. Adds new favicon and OpenTDF icon, and
includes Java SDK encrypt/decrypt collection code samples.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Mike Morper <mike.morper@virtru.com>
…separately)

Signed-off-by: Mike Morper <mike.morper@virtru.com>
- Replace opentdf-social.png with new dark-themed brand-compliant 1200x630
  image featuring gradient headline, code window, opentdf.io URL, license text, and TDF/services pills
- Add complete og:type, og:site_name, og:url, og:image:width/height tags
- Add Twitter/X Card meta tags to homepage
- Fix Schema.org JSON-LD logo URL to opentdf.io

Closes #192

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Mike Morper <mike.morper@virtru.com>
Local Claude instructions should never be pushed to the remote.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Mike Morper <mike.morper@virtru.com>
Remove navbar logo image entirely — "OpenTDF" text wordmark only.
Revert favicon back to OpenTDF-Logo.png pending icon direction decision.
Retains favicon.svg and opentdf-icon.svg on disk for PR #196 to clean up.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Mike Morper <mike.morper@virtru.com>
Move og-concepts.html, og-export.html, and brand-guide.html into
design/ subfolder. Update .gitignore to ignore design/ as a single
rule instead of individual file entries.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Mike Morper <mike.morper@virtru.com>
## Summary

Addresses all review comments raised on #191. Includes a light mode pass
across the entire site since the theme toggle was broken.

## Changes

### Reviewer-requested fixes (jp-ayyappan)
- **Favicon**: reverted from `favicon.svg` back to `OpenTDF-Logo.png`
- **Navbar logo**: reverted from `opentdf-icon.svg` back to
`OpenTDF-Logo.png`; added `srcDark: "img/OpenTDF-Logo-White.png"` for
automatic dark/light logo switching via Docusaurus's built-in `srcDark`
config
- **Light/dark mode toggle restored**: navbar was hardcoded always-dark,
breaking the color mode switch; made fully theme-aware

### CSS improvements (gemini-code-assist)
- **Navbar layout robustness**: added `max-width` guard on the centered
nav links container to prevent overlap with the absolutely-positioned
brand and right items at narrow viewports
- **GitHub icon deduplication**: extracted the large SVG data URL into a
`--github-icon-svg` CSS custom property; both `-webkit-mask-image` and
`mask-image` now reference the variable

### Code hygiene
- **Removed orphaned assets**: `favicon.svg` and `opentdf-icon.svg` were
added by #191 and are now unreferenced — deleted
- **Added** `static/img/OpenTDF-Logo-White.png` for dark mode navbar
logo
- **Normalized dark mode selectors**: new `[data-theme='dark']` rules
aligned to `html[data-theme='dark']` to match the file's existing
convention and specificity

### Light mode for the full site
- **Navbar**: light glass background in light mode; dark glass in dark
mode — with adaptive text, nav links, and GitHub button colors
- **Footer**: was always-dark; now theme-aware with light gray
background, dark text, and adapted link colors in light mode
- **Landing page homepage**: all six sections (`Hero`,
`ProblemSolution`, `DeveloperFirst`, `Standards`, `Community`,
`FinalCTA`) now adapt to light mode — white/off-white section
backgrounds, dark text, corrected button borders. Code windows (Hero)
and TDF diagram (Standards) intentionally remain dark in both modes.
- **Design tokens**: added `html[data-theme='light']` overrides for all
`--otdf-*` CSS custom properties

### Admonition fixes
- **`:::tip` dark mode**: was unreadable (cream background + white
inherited text in dark mode); now uses a dark amber background
(`#451a03`) with light amber text in dark mode
- **`:::note` decoupled from amber**: the original rule incorrectly
targeted `alert--secondary` (note) alongside tip — removed; notes now
use Docusaurus's default dark-mode-safe secondary styling

## Preview

🔗 <a href="https://opentdf-docs-preview-191-review.surge.sh/"
target="_blank">https://opentdf-docs-preview-191-review.surge.sh/</a>

## Test plan
- [ ] Verify homepage renders correctly in both light and dark mode
- [ ] Verify navbar logo switches between color and white versions on
theme toggle
- [ ] Verify color mode toggle is visible and functional in the navbar
- [ ] Verify footer adapts to light/dark mode
- [ ] Verify `:::tip` admonitions are readable in both modes on a docs
page (e.g. `/quickstart`)
- [ ] Verify `:::note` admonitions render with default gray styling (not
amber)
- [ ] Check navbar layout at various viewport widths above the mobile
breakpoint

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Mike Morper <mike.morper@virtru.com>
- Fix npm build by removing duplicate *.info.mdx files generated by
  docusaurus-plugin-openapi-docs v4.7.1; the plugin now generates both
  index.mdx and *.info.mdx with identical IDs, breaking Docusaurus's
  category index association and causing useCurrentSidebarCategory()
  errors during SSG
- Bump docusaurus-plugin-openapi-docs and docusaurus-theme-openapi-docs
  to 4.7.1 to match package.json constraint
- Replace brew install CLI card with a link to the latest otdfctl release

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Mike Morper <mike.morper@virtru.com>
Re-adds the cyan diamond favicon SVG and updates docusaurus.config.ts
to reference it; the PNG was a temporary stand-in pending a new brand
mark from marketing.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Mike Morper <mike.morper@virtru.com>
vmorps and others added 2 commits February 24, 2026 07:47
Lock file was out of sync after rebase conflict resolution, causing
npm ci to fail in CI.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Mike Morper <mike.morper@virtru.com>
Conflict markers from a prior merge were baked into the commit history,
causing a parse error during build.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Mike Morper <mike.morper@virtru.com>
@marythought
Copy link
Contributor

tagging in @cassandrabailey293 for architecture awareness and review

Copy link
Member

@jrschumacher jrschumacher left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking this PR. There is a relevant meeting next week and @cassandrabailey293 will reach out after.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants