feat: implement custom CSS generator, improve code editor support, and add media picker and HTML tag management tools

This commit is contained in:
2026-08-01 18:34:51 +07:00
parent 2a8c6bfc39
commit 1ee67e6a46
29 changed files with 1807 additions and 4083 deletions
+91 -112
View File
@@ -1,7 +1,8 @@
{
"time": 1700000000000,
"time": 1785560196216,
"blocks": [
{
"id": "HEo3OKYI07",
"type": "stickyNav",
"data": {
"title": "Tầm nhìn - Sứ mệnh",
@@ -31,146 +32,124 @@
"label": "Thành tựu và giải thưởng",
"link": "/page/thanh-tuu-va-giai-thuong"
}
]
],
"sticky": true,
"stretched": true
}
},
{
"id": "_9-7doWIJA",
"type": "grid",
"data": {
"cols": 2,
"globalClass": "",
"globalId": "",
"type1": "html",
"col1": "\n<div class=\"relative pt-4\">\n <div class=\"absolute md:-left-4 -left-3 md:-top-5 -top-2 md:size-12 size-8 bg-primary-100 rounded-full\"></div>\n <h2 class=\"display-3 text-primary-500 uppercase mb-4 block z-[1] relative\">TẦM NHÌN</h2>\n <div class=\"flex flex-col space-y-4\">\n <div class=\"bg-white p-4 md:p-6 rounded-lg overview-wrapper-shadow\">\n <p class=\"body-1 text-gray-800 text-justify !font-medium\">Trở thành bệnh viện đại học dẫn đầu Việt Nam đạt chuẩn quốc tế</p>\n </div>\n </div>\n</div>\n",
"width1": 6,
"imgUrl1": "",
"ytUrl1": "",
"accTitle1": "",
"accContent1": "",
"class1": "relative z-10",
"id1": "",
"width1": 6,
"type2": "image",
"col2": {
"file": {
"url": "/images/umass/mission.jpeg"
"extension": "webp",
"size": 98106,
"name": "dotquy203.webp",
"url": "/uploads/2026/08/dotquy203.webp"
},
"caption": "",
"withBorder": false,
"withBackground": false,
"stretched": false
"stretched": false,
"withBackground": false
},
"width2": 6,
"class2": "shadow-lg rounded"
}
},
{
"type": "grid",
"data": {
"cols": 2,
"type1": "image",
"col1": {
"file": {
"url": "/images/umass/vision.jpeg"
},
"caption": "",
"withBorder": false,
"withBackground": false,
"stretched": false
},
"width1": 6,
"class1": "shadow-lg rounded",
"type2": "html",
"col2": "\n<div class=\"relative pt-4\">\n <div class=\"absolute md:-left-5 -left-4 md:-top-5 -top-2 md:size-12 size-8 bg-primary-100 rounded-full\"></div>\n <h2 class=\"display-3 text-primary-500 mb-4 relative z-[1]\">SỨ MỆNH</h2>\n <div class=\"bg-white p-4 md:p-6 rounded-lg overview-wrapper-shadow\">\n <p class=\"body-1 text-primary-500 text-justify !font-medium\">Mang đến giải pháp chăm sóc sức khỏe tối ưu từ sự tích hợp giữa điều trị, nghiên cứu và đào tạo</p>\n </div>\n</div>\n",
"imgUrl2": "",
"ytUrl2": "",
"accTitle2": "",
"accContent2": "",
"class2": "shadow-lg rounded",
"id2": "",
"width2": 6
}
},
{
"id": "SL3DLP54-m",
"type": "grid",
"data": {
"cols": 4,
"type1": "flex",
"cols": 2,
"globalClass": "",
"globalId": "",
"type1": "image",
"col1": {
"cols": 2,
"direction": "column",
"justify": "center",
"align": "center",
"gap": "2",
"type1": "image",
"col1": {
"file": {
"url": "/images/career/core-hover-1.webp"
},
"caption": "",
"withBorder": false,
"withBackground": false,
"stretched": false
"file": {
"url": "/uploads/2026/07/dotquy201.webp"
},
"type2": "html",
"col2": "\n<div class=\"text-center\">\n <h3 class=\"heading-1 font-weight-bold mb-2\">Tiên phong</h3>\n <p class=\"title-1\">Phát triển và ứng dụng kỹ thuật tiên tiến vào điều trị, giảng dạy, nghiên cứu</p>\n</div>\n"
"caption": "",
"withBorder": false,
"stretched": false,
"withBackground": false
},
"width1": 3,
"class1": "rounded-lg shadow bg-primary-600 text-white p-4 h-full",
"type2": "flex",
"col2": {
"cols": 2,
"direction": "column",
"justify": "center",
"align": "center",
"gap": "2",
"type1": "image",
"col1": {
"file": {
"url": "/images/career/core-2.webp"
},
"caption": "",
"withBorder": false,
"withBackground": false,
"stretched": false
"imgUrl1": "",
"ytUrl1": "",
"accTitle1": "",
"accContent1": "",
"class1": "shadow-lg rounded",
"id1": "",
"width1": 6,
"type2": "html",
"col2": "\n<div class=\"relative pt-4\">\n <div class=\"absolute md:-left-5 -left-4 md:-top-5 -top-2 md:size-12 size-8 bg-primary-100 rounded-full\"></div>\n <h2 class=\"display-3 text-primary-500 mb-4 relative z-[1]\">SỨ MỆNH</h2>\n <div class=\"bg-white p-4 md:p-6 rounded-lg overview-wrapper-shadow\">\n <p class=\"body-1 text-primary-500 text-justify !font-medium\">Mang đến giải pháp chăm sóc sức khỏe tối ưu từ sự tích hợp giữa điều trị, nghiên cứu và đào tạo</p>\n </div>\n</div>\n",
"imgUrl2": "",
"ytUrl2": "",
"accTitle2": "",
"accContent2": "",
"class2": "",
"id2": "",
"width2": 6
}
},
{
"id": "bJ3ycvyeZT",
"type": "hovercard",
"data": {
"cols": 4,
"styleVariant": "v2",
"globalClass": "sis-hover-card-v2-section",
"globalId": "",
"items": [
{
"title": "Tiên phong",
"description": "Phát triển và ứng dụng kỹ thuật tiên tiến vào điều trị, giảng dạy, nghiên cứu",
"imageUrl": "/images/career/core-1.webp",
"hoverImageUrl": "/images/career/core-hover-1.webp",
"active": true
},
"type2": "html",
"col2": "\n<div class=\"text-center\">\n <h3 class=\"heading-1 font-weight-bold mb-2\">Thấu hiểu</h3>\n <p class=\"title-1 text-gray-700\">Nỗi đau thể xác và tinh thần của người bệnh để đưa ra giải pháp điều trị tối ưu</p>\n</div>\n"
},
"width2": 3,
"class2": "rounded-lg shadow bg-white text-primary-600 p-4 h-full border border-primary-100",
"type3": "flex",
"col3": {
"cols": 2,
"direction": "column",
"justify": "center",
"align": "center",
"gap": "2",
"type1": "image",
"col1": {
"file": {
"url": "/images/career/core-3.webp"
},
"caption": "",
"withBorder": false,
"withBackground": false,
"stretched": false
{
"title": "Thấu hiểu",
"description": "Nỗi đau thể xác và tinh thần của người bệnh để đưa ra giải pháp điều trị tối ưu",
"imageUrl": "/images/career/core-2.webp",
"hoverImageUrl": "/images/career/core-hover-2.webp",
"active": false
},
"type2": "html",
"col2": "\n<div class=\"text-center\">\n <h3 class=\"heading-1 font-weight-bold mb-2\">Chuẩn mực</h3>\n <p class=\"title-1 text-gray-700\">Về y đức và học thuật của người thầy giáo thầy thuốc</p>\n</div>\n"
},
"width3": 3,
"class3": "rounded-lg shadow bg-white text-primary-600 p-4 h-full border border-primary-100",
"type4": "flex",
"col4": {
"cols": 2,
"direction": "column",
"justify": "center",
"align": "center",
"gap": "2",
"type1": "image",
"col1": {
"file": {
"url": "/images/career/core-4.webp"
},
"caption": "",
"withBorder": false,
"withBackground": false,
"stretched": false
{
"title": "Chuẩn mực",
"description": "Về y đức và học thuật của người thầy giáo thầy thuốc",
"imageUrl": "/images/career/core-3.webp",
"hoverImageUrl": "/images/career/core-hover-3.webp",
"active": false
},
"type2": "html",
"col2": "\n<div class=\"text-center\">\n <h3 class=\"heading-1 font-weight-bold mb-2\">An toàn</h3>\n <p class=\"title-1 text-gray-700\">Cho người bệnh, nhân viên y tế và cộng đồng</p>\n</div>\n"
},
"width4": 3,
"class4": "rounded-lg shadow bg-white text-primary-600 p-4 h-full border border-primary-100"
{
"title": "An toàn",
"description": "Cho người bệnh, nhân viên y tế và cộng đồng",
"imageUrl": "/images/career/core-4.webp",
"hoverImageUrl": "/images/career/core-hover-4.webp",
"active": false
}
]
}
}
],
"version": "2.30.8"
"version": "2.31.0-rc.7"
}