Skip to content

Commit fa092a3

Browse files
committed
Replace Bootstrap 3 + SB Admin 2 with Tailwind CSS v4
Complete frontend migration from Bootstrap 3/SB Admin 2 to Tailwind CSS v4 with brand-aligned design tokens (Fuji Blue, Work Sans). Includes: - Tailwind CSS v4 build pipeline with custom @layer components - Brand design system: DD color tokens, typography, spacing - CSS Grid app shell replacing jQuery sidebar - Alpine.js sidebar toggle replacing jQuery collapse - All templates migrated: cards, forms, alerts, buttons, modals, tables - Filter UI overhaul: categorized groups (Search, Severity, Status, Dates, Context, Tags, Integrations) with collapsible details/summary sections - Select2/chosen dropdown styling aligned to design system - DataTables custom theme (datatables-dd.css) - Support page text contrast fix for commercial/community boxes - Responsive polish across all breakpoints - PDF report templates retain separate styling (future effort)
1 parent c2665fa commit fa092a3

209 files changed

Lines changed: 5145 additions & 4873 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Dockerfile.nginx-alpine

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ RUN \
6161
yarn
6262
COPY manage.py ./
6363
COPY dojo/ ./dojo/
64+
# Build Tailwind CSS
65+
RUN cd components && yarn build:css
6466
# always collect static for debug toolbar as we can't make it dependant on env variables or build arguments without breaking docker layer caching
6567
RUN env DD_SECRET_KEY='.' DD_DJANGO_DEBUG_TOOLBAR_ENABLED=True python3 manage.py collectstatic --noinput --verbosity=2 && true
6668

components/node_modules/.gitkeep

Whitespace-only changes.

components/package.json

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,40 @@
11
{
22
"name": "defectdojo",
33
"version": "2.56.0-dev",
4-
"license" : "BSD-3-Clause",
4+
"license": "BSD-3-Clause",
55
"private": true,
66
"dependencies": {
7-
"JUMFlot": "jumjum123/JUMFlot#*",
8-
"bootstrap": "^3.4.1",
9-
"bootstrap-select": "^1.13.18",
10-
"bootstrap-social": "^4.0.0",
7+
"@fontsource-variable/work-sans": "^5.1",
8+
"chart.js": "^4.4",
9+
"chartjs-adapter-moment": "^1.0",
10+
"alpinejs": "^3.14",
1111
"bootstrap-wysiwyg": "^2.0.0",
1212
"chosen-bootstrap": "https://github.com/dbtek/chosen-bootstrap",
1313
"chosen-js": "^1.8.7",
1414
"clipboard": "^2.0.11",
15+
"htmx.org": "^2.0",
1516
"datatables.net": "^2.3.7",
17+
"datatables.net-buttons": "^3.2.0",
1618
"datatables.net-buttons-bs": "^3.2.6",
1719
"datatables.net-colreorder": "^2.1.2",
18-
"drmonty-datatables-plugins": "^1.0.0",
19-
"drmonty-datatables-responsive": "^1.0.0",
2020
"easymde": "^2.20.0",
21-
"flot": "flot/flot#~0.8.3",
22-
"font-awesome": "^4.0.0",
21+
"flatpickr": "^4.6",
2322
"fullcalendar": "^3.10.2",
24-
"google-code-prettify": "^1.0.0",
2523
"jquery": "^3.7.1",
26-
"jquery-highlight": "3.5.0",
2724
"jquery-ui": "1.14.2",
28-
"jquery.cookie": "1.4.1",
29-
"jquery.flot.tooltip": "^0.9.0",
3025
"jquery.hotkeys": "jeresig/jquery.hotkeys#master",
3126
"jszip": "^3.10.1",
32-
"justgage": "^1.7.0",
33-
"metismenu": "~3.0.7",
3427
"moment": "^2.30.1",
35-
"morris.js": "morrisjs/morris.js",
36-
"pdfmake": "^0.3.4",
37-
"startbootstrap-sb-admin-2": "1.0.7"
28+
"pdfmake": "^0.3.4"
29+
},
30+
"devDependencies": {
31+
"@tailwindcss/cli": "^4.1",
32+
"@tailwindcss/forms": "^0.5",
33+
"tailwindcss": "^4.1"
34+
},
35+
"scripts": {
36+
"build:css": "npx @tailwindcss/cli -i tailwind.css -o ../dojo/static/dojo/css/tailwind-out.css --minify",
37+
"watch:css": "npx @tailwindcss/cli -i tailwind.css -o ../dojo/static/dojo/css/tailwind-out.css --watch"
3838
},
3939
"engines": {
4040
"yarn": ">= 1.0.0"

0 commit comments

Comments
 (0)