[{"data":1,"prerenderedAt":355},["ShallowReactive",2],{"article-compromeez-v200":3},{"id":4,"title":5,"body":6,"date":344,"description":345,"extension":346,"locale":347,"meta":348,"navigation":349,"path":350,"seo":351,"sitemap":352,"stem":353,"__hash__":354},"articles\u002Fblog\u002Fcompromeez-v200.md","Compromeez 2.0 released with manage company contact, switch to @lucide\u002Fvue, and more",{"type":7,"value":8,"toc":335},"minimark",[9,21,24,32,35,40,43,46,63,66,69,76,92,96,99,102,106,115,122,137,146,277,281,284,287,296,300,313,331],[10,11,12,13,20],"p",{},"First, I would like to apologize for skipping the release of version 1.4 (yes, I did it again. No need to read it like singing ",[14,15,19],"a",{"href":16,"rel":17},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=CduA0TULnow",[18],"nofollow","Britney Spears' song",") and goes straight to announce the version 2.0 release. I can explain. So, please hear me out.",[10,22,23],{},"After I released version 1.4 on GitLab, I had planned that I will announce it in the weekend. Alhamdulillah, I got a freelance job so I had to postpone it. While I wait for client's feedback, I continue fixing the bugs on the Compromeez.",[10,25,26,27,31],{},"Since it almost been a month after the release of version 1.4 and switching to ",[28,29,30],"code",{},"@lucide.vue"," is a breaking change, I thought that it would be better to skip announcing version 1.4 release and release the version 2.0 instead.",[10,33,34],{},"So, here it is. Say hi to Compromeez 2.0 👋",[36,37,39],"h2",{"id":38},"manage-company-contact-details","Manage company contact details",[10,41,42],{},"After the website goes live, the developer should not be bothered with trivial task like updating the company contact details like change company address, phone, or social media accounts. Someone from the company should be able to do it without contacting the developer.",[10,44,45],{},"So, I added the feature to edit the contact details on the admin page.",[47,48,49,56],"image-figure",{},[10,50,51],{},[52,53],"img",{"alt":54,"src":55},"web page that display forms of company contact details","\u002Fimages\u002Fcompromeez-v200\u002Fmanage-contact.png",[57,58,60],"template",{"v-slot:caption":59},"",[10,61,62],{},"Manage company contact details page",[10,64,65],{},"The address, phone, email, social media accounts on the footer section should show same information as in the company contact details.",[10,67,68],{},"One less thing to be worried about after the project delivered and may Allah bless your sleep. Aameen..",[36,70,72,73],{"id":71},"switch-to-lucidevue","Switch to ",[28,74,75],{},"@lucide\u002Fvue",[10,77,78,79,84,85,88,89,91],{},"Following ",[14,80,83],{"href":81,"rel":82},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Flucide-vue-next",[18],"the deprecation"," of ",[28,86,87],{},"lucide-vue-next",", I decided to use its successor ",[28,90,75],{}," right away.",[36,93,95],{"id":94},"disable-registration","Disable registration",[10,97,98],{},"I forgot to remove the registration feature completely on the previous releases so I want to make sure it is no longer shipped in this release.",[10,100,101],{},"We cannot just sign up to some company website and randomly posting articles, right? 🤔",[36,103,105],{"id":104},"brand-icons","Brand icons",[10,107,108,109,114],{},"When developing the social media section, I found that LinkedIn icon is not available on Lucide icon sets. Turns out that they ",[14,110,113],{"href":111,"rel":112},"https:\u002F\u002Flucide.dev\u002Fbrand-logo-statement",[18],"no longer"," supporting brand icon.",[10,116,117,118,121],{},"Maashaa' Allah laa quwwata illa billah, I found that ",[28,119,120],{},"@iconify\u002Fvue"," supports brand icons! 🙌",[10,123,124,125,130,131,136],{},"You can choose icons from ",[14,126,129],{"href":127,"rel":128},"https:\u002F\u002Ficon-sets.iconify.design\u002F",[18],"Iconify"," or ",[14,132,135],{"href":133,"rel":134},"https:\u002F\u002Ficones.js.org\u002F",[18],"Icônes",". Both offer similar catalogue for icon sets.",[10,138,139,140,145],{},"Here is how to use icon component as per instruction from ",[14,141,144],{"href":142,"rel":143},"https:\u002F\u002Ficonify.design\u002Fdocs\u002Ficon-components\u002Fvue\u002F#usage",[18],"Iconify documentation",":",[147,148,152],"pre",{"className":149,"code":150,"language":151,"meta":59,"style":59},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nimport { Icon } from \"@iconify\u002Fvue\";\n\u003C\u002Fscript>\n    \n\u003Ctemplate>\n  \u003CIcon icon=\"mdi-light:home\" \u002F>\n\u003C\u002Ftemplate>\n","vue",[28,153,154,189,219,229,235,244,268],{"__ignoreMap":59},[155,156,159,163,167,171,174,177,180,184,186],"span",{"class":157,"line":158},"line",1,[155,160,162],{"class":161},"sMK4o","\u003C",[155,164,166],{"class":165},"swJcz","script",[155,168,170],{"class":169},"spNyl"," setup",[155,172,173],{"class":169}," lang",[155,175,176],{"class":161},"=",[155,178,179],{"class":161},"\"",[155,181,183],{"class":182},"sfazB","ts",[155,185,179],{"class":161},[155,187,188],{"class":161},">\n",[155,190,192,196,199,203,206,209,212,214,216],{"class":157,"line":191},2,[155,193,195],{"class":194},"s7zQu","import",[155,197,198],{"class":161}," {",[155,200,202],{"class":201},"sTEyZ"," Icon",[155,204,205],{"class":161}," }",[155,207,208],{"class":194}," from",[155,210,211],{"class":161}," \"",[155,213,120],{"class":182},[155,215,179],{"class":161},[155,217,218],{"class":161},";\n",[155,220,222,225,227],{"class":157,"line":221},3,[155,223,224],{"class":161},"\u003C\u002F",[155,226,166],{"class":165},[155,228,188],{"class":161},[155,230,232],{"class":157,"line":231},4,[155,233,234],{"class":201},"    \n",[155,236,238,240,242],{"class":157,"line":237},5,[155,239,162],{"class":161},[155,241,57],{"class":165},[155,243,188],{"class":161},[155,245,247,250,253,256,258,260,263,265],{"class":157,"line":246},6,[155,248,249],{"class":161},"  \u003C",[155,251,252],{"class":165},"Icon",[155,254,255],{"class":169}," icon",[155,257,176],{"class":161},[155,259,179],{"class":161},[155,261,262],{"class":182},"mdi-light:home",[155,264,179],{"class":161},[155,266,267],{"class":161}," \u002F>\n",[155,269,271,273,275],{"class":157,"line":270},7,[155,272,224],{"class":161},[155,274,57],{"class":165},[155,276,188],{"class":161},[36,278,280],{"id":279},"bug-fixes-and-others","Bug fixes and others",[10,282,283],{},"I fixed some bugs and cleaned some code for smoother development experience.",[10,285,286],{},"I also did regular updates for both PHP and Node.js packages to keep the application secure and up-to-date.",[10,288,289,290,295],{},"For more details about what bugs that have been fixed and what have changed, visit the ",[14,291,294],{"href":292,"rel":293},"https:\u002F\u002Fgitlab.com\u002Ffindrakecil\u002Fcompromeez\u002F-\u002Freleases\u002Fv2.0.0",[18],"GitLab release"," page.",[36,297,299],{"id":298},"upgrade-guide","Upgrade guide",[10,301,302,303,306,307,309,310,312],{},"Run ",[28,304,305],{},"npm install"," after upgrading to install the new dependencies and check for pages that use icon components. You should use ",[28,308,75],{}," instead of ",[28,311,87],{},".",[10,314,315,316,321,322,324,325,309,328,312],{},"I recommend to use ",[14,317,320],{"href":318,"rel":319},"https:\u002F\u002Flucide.dev\u002Fguide\u002Fvue\u002Fadvanced\u002Faliased-names",[18],"aliased names"," ending with ",[28,323,252],{}," when using icon component for better code readability and context awareness. For example, ",[28,326,327],{},"HouseIcon",[28,329,330],{},"House",[332,333,334],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":59,"searchDepth":191,"depth":191,"links":336},[337,338,340,341,342,343],{"id":38,"depth":191,"text":39},{"id":71,"depth":191,"text":339},"Switch to @lucide\u002Fvue",{"id":94,"depth":191,"text":95},{"id":104,"depth":191,"text":105},{"id":279,"depth":191,"text":280},{"id":298,"depth":191,"text":299},"2026-07-04","Manage company contact details, disable registration, switch to new icon provider, and bug fixes.","md",null,{},true,"\u002Fblog\u002Fcompromeez-v200",{"title":5,"description":345},{"loc":350},"blog\u002Fcompromeez-v200","_L8LqmA6trH9YnTuGd2wW9iIBnStWAV64eIJhSQQVAA",1784039739615]