codepapu

Liferay DXP · portal theming · 3 min

POC workspace: shadcn-style tokens, light/dark, and product-menu restyle via OSGi modules on DXP 2026.q1.

Liferay DXP · OSGi · CSS · shadcn/ui

View on GitHub

Architecture

From the real repo — how the pieces fit.

DXP Theme Workspace POC

OSGi override modules · shadcn-style tokens · DXP 2026.q1

my-portal-shadcn-global

tokens · CSS bundle · Dynamic Includes

my-portal-theme-contributor · Control Panel CSS

light / dark

Site pages pick up shell tokens. my-portal-theme-deployer sets the theme on layout sets at startup.

Four OSGi modules — no themeCSS client extension required for core chrome

Skin as nested frames: global tokens wrap the product menu, which wraps the page.

A Liferay DXP workspace POC that applies a shadcn/ui-style look across portal pages, the Control Panel, and the product menu — using OSGi override modules, not a themeCSS client extension for core chrome.

What it is

Target: Liferay DXP 2026.q1. Modules inject design tokens, CSS, and a light/dark toggle; restyle the product menu; and can set a theme on layout sets at startup. Source: codepapu/liferay-dxp-theme-workspace-poc.

Main modules

  • my-portal-shadcn-global — tokens, CSS bundle, theme toggle, Dynamic Includes.
  • my-portal-theme-contributor — Control Panel CSS pipeline hook.
  • my-portal-product-menu-override — side navigation restyle.
  • my-portal-theme-deployer — applies a theme id to layout sets on startup.

How to try it

Point liferay.workspace.home.dir at your DXP home, deploy the four modules above, restart if needed, then use the sun/moon control in the top menu for light/dark.