Repository files navigation

Forge-UI 3

ForgeUI is designed to be a wrapper around different libraries that provide a consistent UI style. It is comprised of many different packages, as well as custom components, that have been combined to create a one-stop shop for UI.

It is primarily built upon PrimeVue and provides reusable UI components, an interactive playground, and a well-structured documentation system to streamline development.

The Forge-UI component library is built with a monorepo structure using Turbo. There are four projects within the monorepo:

ForgeUI-3/
├── packages/
│ ├── ui/ # Main UI components library
│ ├── eslint-config-custom/ # Shared ESLint configuration
│ ├── playground/ # Interactive playground for components
├── apps/
│ ├── docs/ # Documentation & styleguide
├── turbo.json # Turbo configuration
└── package.json # Root package.json
|__ rennovate.json # Rennovate config

Installation

Getting Started with Turbo

Turbo helps manage and optimize the monorepo structure efficiently. To get started with Turbo in Forge:

(Optional) Install turbo

If you want to install turbo you can do this globally, otherwise it will just be installed with npm i:

npm install -g turbo

Running Turbo Commands

Running All Builds
turbo run build
Running a Specific Package

To build a specific package, use:

turbo run build --filter ui
Running the Development Server
turbo run dev

Running Forge Locally

Clone the repository and install the dependencies:

npm i

Do an initial build of all the packages (you may want to do this whenever you pull a new branch, particularly if there are changes to multiple projects):

turbo build

Running the styleguide(docs):

Running this should serve the docs with localhost:

cd apps/docs
npm run dev

If you have errors with this it could be because you have not built another package.

Building the UI

cd packages/ui
npm run build

If you are working a on a component and don't want to keep building this every time you make a change, you can run build watch:

cd packages/ui
npm run build:watch

Running UI tests:

Run these within the ui project.

This will run the full suite of test which include both the cypress tests and vitest tests.

npm run tests

If you want to run individual cypress tests for debugging or add news one use this:

npm run test:component

About

A Vue 3 component library which combines a variety of packages to create a one stop shop for UI.

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Forge-UI 3

ForgeUI is designed to be a wrapper around different libraries that provide a consistent UI style. It is comprised of many different packages, as well as custom components, that have been combined to create a one-stop shop for UI.

It is primarily built upon PrimeVue and provides reusable UI components, an interactive playground, and a well-structured documentation system to streamline development.

The Forge-UI component library is built with a monorepo structure using Turbo. There are four projects within the monorepo:

ForgeUI-3/
├── packages/
│ ├── ui/ # Main UI components library
│ ├── eslint-config-custom/ # Shared ESLint configuration
│ ├── playground/ # Interactive playground for components
├── apps/
│ ├── docs/ # Documentation & styleguide
├── turbo.json # Turbo configuration
└── package.json # Root package.json
|__ rennovate.json # Rennovate config

Installation

Getting Started with Turbo

Turbo helps manage and optimize the monorepo structure efficiently. To get started with Turbo in Forge:

(Optional) Install turbo

If you want to install turbo you can do this globally, otherwise it will just be installed with npm i:

npm install -g turbo

Running Turbo Commands

Running All Builds
turbo run build
Running a Specific Package

To build a specific package, use:

turbo run build --filter ui
Running the Development Server
turbo run dev

Running Forge Locally

Clone the repository and install the dependencies:

npm i

Do an initial build of all the packages (you may want to do this whenever you pull a new branch, particularly if there are changes to multiple projects):

turbo build

Running the styleguide(docs):

Running this should serve the docs with localhost:

cd apps/docs
npm run dev

If you have errors with this it could be because you have not built another package.

Building the UI

cd packages/ui
npm run build

If you are working a on a component and don't want to keep building this every time you make a change, you can run build watch:

cd packages/ui
npm run build:watch

Running UI tests:

Run these within the ui project.

This will run the full suite of test which include both the cypress tests and vitest tests.

npm run tests

If you want to run individual cypress tests for debugging or add news one use this:

npm run test:component

About

A Vue 3 component library which combines a variety of packages to create a one stop shop for UI.

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Forge-UI 3

ForgeUI is designed to be a wrapper around different libraries that provide a consistent UI style. It is comprised of many different packages, as well as custom components, that have been combined to create a one-stop shop for UI.

It is primarily built upon PrimeVue and provides reusable UI components, an interactive playground, and a well-structured documentation system to streamline development.

The Forge-UI component library is built with a monorepo structure using Turbo. There are four projects within the monorepo:

ForgeUI-3/
├── packages/
│ ├── ui/ # Main UI components library
│ ├── eslint-config-custom/ # Shared ESLint configuration
│ ├── playground/ # Interactive playground for components
├── apps/
│ ├── docs/ # Documentation & styleguide
├── turbo.json # Turbo configuration
└── package.json # Root package.json
|__ rennovate.json # Rennovate config

Installation

Getting Started with Turbo

Turbo helps manage and optimize the monorepo structure efficiently. To get started with Turbo in Forge:

(Optional) Install turbo

If you want to install turbo you can do this globally, otherwise it will just be installed with npm i:

npm install -g turbo

Running Turbo Commands

Running All Builds
turbo run build
Running a Specific Package

To build a specific package, use:

turbo run build --filter ui
Running the Development Server
turbo run dev

Running Forge Locally

Clone the repository and install the dependencies:

npm i

Do an initial build of all the packages (you may want to do this whenever you pull a new branch, particularly if there are changes to multiple projects):

turbo build

Running the styleguide(docs):

Running this should serve the docs with localhost:

cd apps/docs
npm run dev

If you have errors with this it could be because you have not built another package.

Building the UI

cd packages/ui
npm run build

If you are working a on a component and don't want to keep building this every time you make a change, you can run build watch:

cd packages/ui
npm run build:watch

Running UI tests:

Run these within the ui project.

This will run the full suite of test which include both the cypress tests and vitest tests.

npm run tests

If you want to run individual cypress tests for debugging or add news one use this:

npm run test:component

About

A Vue 3 component library which combines a variety of packages to create a one stop shop for UI.

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Forge-UI 3

ForgeUI is designed to be a wrapper around different libraries that provide a consistent UI style. It is comprised of many different packages, as well as custom components, that have been combined to create a one-stop shop for UI.

It is primarily built upon PrimeVue and provides reusable UI components, an interactive playground, and a well-structured documentation system to streamline development.

The Forge-UI component library is built with a monorepo structure using Turbo. There are four projects within the monorepo:

ForgeUI-3/
├── packages/
│ ├── ui/ # Main UI components library
│ ├── eslint-config-custom/ # Shared ESLint configuration
│ ├── playground/ # Interactive playground for components
├── apps/
│ ├── docs/ # Documentation & styleguide
├── turbo.json # Turbo configuration
└── package.json # Root package.json
|__ rennovate.json # Rennovate config

Installation

Getting Started with Turbo

Turbo helps manage and optimize the monorepo structure efficiently. To get started with Turbo in Forge:

(Optional) Install turbo

If you want to install turbo you can do this globally, otherwise it will just be installed with npm i:

npm install -g turbo

Running Turbo Commands

Running All Builds
turbo run build
Running a Specific Package

To build a specific package, use:

turbo run build --filter ui
Running the Development Server
turbo run dev

Running Forge Locally

Clone the repository and install the dependencies:

npm i

Do an initial build of all the packages (you may want to do this whenever you pull a new branch, particularly if there are changes to multiple projects):

turbo build

Running the styleguide(docs):

Running this should serve the docs with localhost:

cd apps/docs
npm run dev

If you have errors with this it could be because you have not built another package.

Building the UI

cd packages/ui
npm run build

If you are working a on a component and don't want to keep building this every time you make a change, you can run build watch:

cd packages/ui
npm run build:watch

Running UI tests:

Run these within the ui project.

This will run the full suite of test which include both the cypress tests and vitest tests.

npm run tests

If you want to run individual cypress tests for debugging or add news one use this:

npm run test:component

About

A Vue 3 component library which combines a variety of packages to create a one stop shop for UI.

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Forge-UI 3

ForgeUI is designed to be a wrapper around different libraries that provide a consistent UI style. It is comprised of many different packages, as well as custom components, that have been combined to create a one-stop shop for UI.

It is primarily built upon PrimeVue and provides reusable UI components, an interactive playground, and a well-structured documentation system to streamline development.

The Forge-UI component library is built with a monorepo structure using Turbo. There are four projects within the monorepo:

ForgeUI-3/
├── packages/
│ ├── ui/ # Main UI components library
│ ├── eslint-config-custom/ # Shared ESLint configuration
│ ├── playground/ # Interactive playground for components
├── apps/
│ ├── docs/ # Documentation & styleguide
├── turbo.json # Turbo configuration
└── package.json # Root package.json
|__ rennovate.json # Rennovate config

Installation

Getting Started with Turbo

Turbo helps manage and optimize the monorepo structure efficiently. To get started with Turbo in Forge:

(Optional) Install turbo

If you want to install turbo you can do this globally, otherwise it will just be installed with npm i:

npm install -g turbo

Running Turbo Commands

Running All Builds
turbo run build
Running a Specific Package

To build a specific package, use:

turbo run build --filter ui
Running the Development Server
turbo run dev

Running Forge Locally

Clone the repository and install the dependencies:

npm i

Do an initial build of all the packages (you may want to do this whenever you pull a new branch, particularly if there are changes to multiple projects):

turbo build

Running the styleguide(docs):

Running this should serve the docs with localhost:

cd apps/docs
npm run dev

If you have errors with this it could be because you have not built another package.

Building the UI

cd packages/ui
npm run build

If you are working a on a component and don't want to keep building this every time you make a change, you can run build watch:

cd packages/ui
npm run build:watch

Running UI tests:

Run these within the ui project.

This will run the full suite of test which include both the cypress tests and vitest tests.

npm run tests

If you want to run individual cypress tests for debugging or add news one use this:

npm run test:component

About

A Vue 3 component library which combines a variety of packages to create a one stop shop for UI.

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Forge-UI 3

ForgeUI is designed to be a wrapper around different libraries that provide a consistent UI style. It is comprised of many different packages, as well as custom components, that have been combined to create a one-stop shop for UI.

It is primarily built upon PrimeVue and provides reusable UI components, an interactive playground, and a well-structured documentation system to streamline development.

The Forge-UI component library is built with a monorepo structure using Turbo. There are four projects within the monorepo:

ForgeUI-3/
├── packages/
│ ├── ui/ # Main UI components library
│ ├── eslint-config-custom/ # Shared ESLint configuration
│ ├── playground/ # Interactive playground for components
├── apps/
│ ├── docs/ # Documentation & styleguide
├── turbo.json # Turbo configuration
└── package.json # Root package.json
|__ rennovate.json # Rennovate config

Installation

Getting Started with Turbo

Turbo helps manage and optimize the monorepo structure efficiently. To get started with Turbo in Forge:

(Optional) Install turbo

If you want to install turbo you can do this globally, otherwise it will just be installed with npm i:

npm install -g turbo

Running Turbo Commands

Running All Builds
turbo run build
Running a Specific Package

To build a specific package, use:

turbo run build --filter ui
Running the Development Server
turbo run dev

Running Forge Locally

Clone the repository and install the dependencies:

npm i

Do an initial build of all the packages (you may want to do this whenever you pull a new branch, particularly if there are changes to multiple projects):

turbo build

Running the styleguide(docs):

Running this should serve the docs with localhost:

cd apps/docs
npm run dev

If you have errors with this it could be because you have not built another package.

Building the UI

cd packages/ui
npm run build

If you are working a on a component and don't want to keep building this every time you make a change, you can run build watch:

cd packages/ui
npm run build:watch

Running UI tests:

Run these within the ui project.

This will run the full suite of test which include both the cypress tests and vitest tests.

npm run tests

If you want to run individual cypress tests for debugging or add news one use this:

npm run test:component

About

A Vue 3 component library which combines a variety of packages to create a one stop shop for UI.

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Forge-UI 3

ForgeUI is designed to be a wrapper around different libraries that provide a consistent UI style. It is comprised of many different packages, as well as custom components, that have been combined to create a one-stop shop for UI.

It is primarily built upon PrimeVue and provides reusable UI components, an interactive playground, and a well-structured documentation system to streamline development.

The Forge-UI component library is built with a monorepo structure using Turbo. There are four projects within the monorepo:

ForgeUI-3/
├── packages/
│ ├── ui/ # Main UI components library
│ ├── eslint-config-custom/ # Shared ESLint configuration
│ ├── playground/ # Interactive playground for components
├── apps/
│ ├── docs/ # Documentation & styleguide
├── turbo.json # Turbo configuration
└── package.json # Root package.json
|__ rennovate.json # Rennovate config

Installation

Getting Started with Turbo

Turbo helps manage and optimize the monorepo structure efficiently. To get started with Turbo in Forge:

(Optional) Install turbo

If you want to install turbo you can do this globally, otherwise it will just be installed with npm i:

npm install -g turbo

Running Turbo Commands

Running All Builds
turbo run build
Running a Specific Package

To build a specific package, use:

turbo run build --filter ui
Running the Development Server
turbo run dev

Running Forge Locally

Clone the repository and install the dependencies:

npm i

Do an initial build of all the packages (you may want to do this whenever you pull a new branch, particularly if there are changes to multiple projects):

turbo build

Running the styleguide(docs):

Running this should serve the docs with localhost:

cd apps/docs
npm run dev

If you have errors with this it could be because you have not built another package.

Building the UI

cd packages/ui
npm run build

If you are working a on a component and don't want to keep building this every time you make a change, you can run build watch:

cd packages/ui
npm run build:watch

Running UI tests:

Run these within the ui project.

This will run the full suite of test which include both the cypress tests and vitest tests.

npm run tests

If you want to run individual cypress tests for debugging or add news one use this:

npm run test:component

About

A Vue 3 component library which combines a variety of packages to create a one stop shop for UI.

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Forge-UI 3

ForgeUI is designed to be a wrapper around different libraries that provide a consistent UI style. It is comprised of many different packages, as well as custom components, that have been combined to create a one-stop shop for UI.

It is primarily built upon PrimeVue and provides reusable UI components, an interactive playground, and a well-structured documentation system to streamline development.

The Forge-UI component library is built with a monorepo structure using Turbo. There are four projects within the monorepo:

ForgeUI-3/
├── packages/
│ ├── ui/ # Main UI components library
│ ├── eslint-config-custom/ # Shared ESLint configuration
│ ├── playground/ # Interactive playground for components
├── apps/
│ ├── docs/ # Documentation & styleguide
├── turbo.json # Turbo configuration
└── package.json # Root package.json
|__ rennovate.json # Rennovate config

Installation

Getting Started with Turbo

Turbo helps manage and optimize the monorepo structure efficiently. To get started with Turbo in Forge:

(Optional) Install turbo

If you want to install turbo you can do this globally, otherwise it will just be installed with npm i:

npm install -g turbo

Running Turbo Commands

Running All Builds
turbo run build
Running a Specific Package

To build a specific package, use:

turbo run build --filter ui
Running the Development Server
turbo run dev

Running Forge Locally

Clone the repository and install the dependencies:

npm i

Do an initial build of all the packages (you may want to do this whenever you pull a new branch, particularly if there are changes to multiple projects):

turbo build

Running the styleguide(docs):

Running this should serve the docs with localhost:

cd apps/docs
npm run dev

If you have errors with this it could be because you have not built another package.

Building the UI

cd packages/ui
npm run build

If you are working a on a component and don't want to keep building this every time you make a change, you can run build watch:

cd packages/ui
npm run build:watch

Running UI tests:

Run these within the ui project.

This will run the full suite of test which include both the cypress tests and vitest tests.

npm run tests

If you want to run individual cypress tests for debugging or add news one use this:

npm run test:component

About

A Vue 3 component library which combines a variety of packages to create a one stop shop for UI.

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages