12202 comments found.
I see in google drive download files, there is more than 60 demo theme for bootstrap. But why just 10 for tailwinds ?
Hi,
Thank you for your question! The Bootstrap version of our product has been built and expanded over the years, which is why it includes more than 60 demo themes. The Tailwind version, on the other hand, is a more recent release. We’re actively working to expand it, and more demo themes are already in the pipeline.
Stay tuned for updates as we continue to grow the Tailwind offering to match and surpass our Bootstrap version’s versatility.
Regards, Sean
Can your theme be used with tailwindui.com components, as I like some of their ecommerce components? Or do I need to pick one theme or the other?
Hi,
Sure, you can use it with Metronic as we fully fllow Tailwind standarts.
Regards, Sean
Hello! Any news with Metronic 9 HTML eCommerce or Contacts app examples?
Hi,
We can’t confirm the ETA yet. We are working on it and preparing the next big update for Metronic asap.
Regards, Sean
is it possible to grey out an advanced radio button? in 8.2.9?
Hi,
As shown in the docs here https://preview.keenthemes.com/html/metronic/docs/base/forms/checks-radios#radio you can use the disabled attribute for the radio input.
<div class="form-check form-check-custom form-check-solid">
<input class="form-check-input" type="radio" value="" disabled id="flexRadioDisabled"/>
<label class="form-check-label" for="flexRadioDisabled">
Disabled radio
</label>
</div>
Regards, Sean
doen’t seem to be workng for the large advanced radios found in yur docs here: https://preview.keenthemes.com/html/metronic/docs/base/forms/advanced
I am trying to do this for the radios in the multi-step registration you have. If a corporate account is selected in step 1, the team size in step 2 of 1-1 should be greyed out and if individual is selected the options should all be greyed out with 1-1 select and otherwise unchoosable.
how can I grey out the step2 team sizes in the multistep registration based on what is selected in step 1 personal or corp account?
The large advanced radios from here: https://preview.keenthemes.com/html/metronic/docs/base/forms/advanced
don’t seem to do anything when you add a disabled attribute. Can those large buttons be greyed?
You can try to use the additional class “opacity-50” to the advanced group to set opacity and indicate the disable mode.
OK, that reduces opacity when applied to the span but i’d like to make it unclickable the way regular radios can be. Is that possible?
Hi I am supporting and updating a legacy web application built by another agency that purchased this theme, It is using v1.2.4, I was hoping you might have the old version in git and some old documentation I could look at?
Hi,
Sure, we can provide you with v1.x. Please get in touch with us via support@keenthemes.com and provide the purchase code.
Metronic License & Support Subscription Reminder:
1. This is a quick reminder that each Metronic license is intended for single use only. Please ensure you have an extended license for SaaS projects with paid end users. For more details, visit our pricing page.
2. You can purchase additional licenses directly at Themeforest. Proper licensing helps us keep Metronic growing with exciting new features and improvements.
3. When you purchase a license, you receive 6 months of free support, as detailed in our support policy here. After 6 months, an active support subscription is required for continued assistance. To extend your support, please follow this link
4. If you’re already in compliance, feel free to ignore this message. Thank you for your support and for being part of the Metronic community! If you’re already in compliance, feel free to ignore this message. Thank you for your support and for being part of the Metronic community!
Regards, Sean
Compared with the previous v8, the current v9 lacks many things, such as the previous v8 html version, many forms will be paired with js and users to make interactive pop-up prompts sweet alert, etc. Now v9 is basically a simple style that does not contain js, will you improve it later, or the positioning of v9 does not contain these? If so, when will the follow-up improvement be, such as the first quarter of 2025, the second quarter, etc., do you have a corresponding plan
Hi,
Thank you for your feedback.
Yes, we are working on an update to release more UI elements and components. Hopefully, we will release this upcoming major update Jan/Feb 2025 along with shop client and admin apps.
Regards, Sean
hi any update for svelte/sveltekit integration guide for v9 ? or is there any current integration that is similar to svelte ?
Hi,
You can refer to https://keenthemes.com/metronic/tailwind/docs/getting-started/integration/vue integration guide and apply it for Svelte.
Regards, Sean
hi Sean,
Was trying to follow the vue integration, because the menu.ts need popperjs so i install it but i got an error,
[vite] Named export ‘VirtualElement’ not found. The requested module ’@popperjs/core’ is a CommonJS module, which may not support all module.exports as named exports. CommonJS modules can always be imported via the default export, for example using:
import pkg from ’@popperjs/core’; const {Instance, Placement, VirtualElement} = pkg;
i think i will go without integrating the metronic core, and want to integrate the tailwind.config.js style and the dist/ but not sure which one i need to setup
right now what i am trying is like this. 1. Copy all the tailwind.config.js into svelte tailwind.config.ts 2. Copy all the required tailwind.config.js plugin to ./src/lib/core
The style is working, but the interactive component like the accordion, drawer etc is not working.
is there any missing step ?
for now i am okay with just copy paste the html code of the component into svelte, but not sure which configuration i need to setup.
Hi
components (like accordion, drawer, etc.) might require their corresponding JavaScript functionality to work properly.
Please inspect the browser’s console log for any JavaScript errors. This will help identify missing dependencies or issues with executing the scripts.
You might need to adjust your import statements for popover.
import Popper from '@popperjs/core';
const { Instance, Placement, VirtualElement } = Popper;
You could manually initialize one component by copying its corresponding JS initialization and check for the error from the core.
tailwind React version User Management, Projects, eCommerce
When will it be updated? Is it possible to update this year?
Hi,
We are working on those features and hopefully, we can release them asap.
Regards, Sean
when will datepicker be released?
Hi,
We have already released the Metronic 9 React version – preview.
We will release the Metronic 9 HTML version soon(Q1 2025). We are working on an advanced in-house datepicker component
Regards, Sean
I have discovered a major bug that prevents this from being used in a Rails context. I am building a gemified version of this that will help rails devs use your kit which I am happy to share for mutual benefit. Your js for adding an account breaks in the Rails context because every form has a hidden CSRF input tag and that throws everything off so steppers don’t work. To reproduce go to your multiple form authentication html and add an extra input tag below the form tag and your js will break. So anything with a stepper will not work in Rail because every form by default will have a CSRF token tag and well n oone wants to remove security benefits. if you help me fix it i believe my effort to make this very rails friendly will be beneficial to both of us.
I have just renewed my support to facilitate a faster response hopefully, otherwise i’ll have to use another option and ask them to refund this one. I will also file a separate support request but basically all multi-stage items that use a stepper break because rails and most frameworks will add a hidden CSRF token in a hidden <input> tag that looks like this <input type=”hidden” name=”authenticity_token” value=”LilF6KgbBR7MBSruMcWFKyMOz_pnmcGzmiyxAm2aVDIvurHbA_uxcOqVNfB4NZbKPc7KzDoD8MGWpJAh7ErcDQ” autocomplete=”off” /> this alone is enough to destroy every js stepper in your entire package and while I respect that one can fix the js, the entire point of buying this is to not have to so that I can focus on building an app. I am willing to share a rails gem that will help you get more customers because as it stands not there really is no way to use a modern framework without dealing with CSRF insertions.
Hi,
Noted, we have got your request and let us check it and we will get back to you asap.
Regards, Sean
Hi epipheus
hidden inputs like CSRF tokens are treated as part of the validation or submission process, the stepper logic may break.
To make the KTStepper works correctly with Rails forms containing CSRF tokens, you can exclude hidden inputs from the logic.
In the JS file /starterkit/_keenthemes/src/js/components/stepper.js
Try update the _refreshUI method to ignore hidden inputs:
var elements = KTUtil.findAll(the.element, '[data-kt-stepper-element="nav"], [data-kt-stepper-element="content"], [data-kt-stepper-element="info"]')
.filter(function(element) {
return element.type !== 'hidden';
});
Then please rebuild the assets using gulp or webpack in /starterkit/_keenthemes/tools
This change will make hidden inputs, such as CSRF tokens, are ignored during the stepper’s logic. Let me know if this helps!
First off thank you for the fast response; GREATLY appreciated. i’m using 8.2.9 demo 1 at the moment because the latest version doesn’t have all of the options 8.2.9 has. So Ive been moving over the html version manually instead of the starterkit. Will this fix 8.2.9 demo1? I don’t see a stepper.js. but I assume it must be in scripts.bundle—I will give a try later tonight.
I can confirm that did not work.
the refreshUI is in the scripts.bundle.js and I changed it to look like this: ``` var _refreshUI = function() { var state = ’’; ```
if ( _isLastStep() ) {
state = 'last';
} else if ( _isFirstStep() ) {
state = 'first';
} else {
state = 'between';
}
}
// Set state class
KTUtil.removeClass(the.element, 'last');
KTUtil.removeClass(the.element, 'first');
KTUtil.removeClass(the.element, 'between');
KTUtil.addClass(the.element, state);
// Step Items
// original
// var elements = KTUtil.findAll(the.element, '[data-kt-stepper-element="nav"], [data-kt-stepper-element="content"], [data-kt-stepper-element="info"]');
var elements = KTUtil.findAll(the.element, '[data-kt-stepper-element="nav"], [data-kt-stepper-element="content"], [data-kt-stepper-element="info"]')
.filter(function(element) {
return element.type !== 'hidden';
});
if ( elements && elements.length > 0 ) {
for (var i = 0, len = elements.length; i < len; i++) {
var element = elements[i];
var index = KTUtil.index(element) + 1;
}
KTUtil.removeClass(element, 'current');
KTUtil.removeClass(element, 'completed');
KTUtil.removeClass(element, 'pending');
}
if ( index the.currentStepIndex ) {
KTUtil.addClass(element, 'current');
} else {
if ( index < the.currentStepIndex ) {
KTUtil.addClass(element, 'completed');
} else {
KTUtil.addClass(element, 'pending');
}
}
if ( the.options.animation ! false && element.getAttribute('data-kt-stepper-element') 'content' ) {
KTUtil.css(element, 'animationDuration', the.options.animationSpeed);
}
var animation = _getStepDirection(the.passedStepIndex) = 'previous' ? the.options.animationPreviousClass : the.options.animationNextClass;
KTUtil.animateClass(element, animation);
That didn’t work. Made the below changes to refresh ui in scriptbundle
var _refreshUI = function() {
var state = '';
}
if ( _isLastStep() ) {
state = 'last';
} else if ( _isFirstStep() ) {
state = 'first';
} else {
state = 'between';
}
// Set state class
KTUtil.removeClass(the.element, 'last');
KTUtil.removeClass(the.element, 'first');
KTUtil.removeClass(the.element, 'between');
KTUtil.addClass(the.element, state);
// Step Items
// original
// var elements = KTUtil.findAll(the.element, '[data-kt-stepper-element="nav"], [data-kt-stepper-element="content"], [data-kt-stepper-element="info"]');
var elements = KTUtil.findAll(the.element, '[data-kt-stepper-element="nav"], [data-kt-stepper-element="content"], [data-kt-stepper-element="info"]')
.filter(function(element) {
return element.type !== 'hidden';
});
if ( elements && elements.length > 0 ) {
for (var i = 0, len = elements.length; i < len; i++) {
var element = elements[i];
var index = KTUtil.index(element) + 1;
}
KTUtil.removeClass(element, 'current');
KTUtil.removeClass(element, 'completed');
KTUtil.removeClass(element, 'pending');
}
if ( index the.currentStepIndex ) {
KTUtil.addClass(element, 'current');
} else {
if ( index < the.currentStepIndex ) {
KTUtil.addClass(element, 'completed');
} else {
KTUtil.addClass(element, 'pending');
}
}
if ( the.options.animation ! false && element.getAttribute('data-kt-stepper-element') 'content' ) {
KTUtil.css(element, 'animationDuration', the.options.animationSpeed);
}
var animation = _getStepDirection(the.passedStepIndex) = 'previous' ? the.options.animationPreviousClass : the.options.animationNextClass;
KTUtil.animateClass(element, animation);
to reproduce copy and paste the input csrf token example I commented with a few comments ago below the opening form tag for the multistep login form still messes it up so it doesn’t function. let me know if better to attach a file somehow
Hi epipheus
Here’s an alternative approach you can try.
var elements = KTUtil.findAll(the.element, '[data-kt-stepper-element="nav"], [data-kt-stepper-element="content"], [data-kt-stepper-element="info"]')
.filter(function(element) {
// Exclude hidden elements
return element.offsetParent !== null && element.type !== 'hidden';
});
add filter condition, only visible, non-hidden elements are processed.
The offsetParent !== null checks the element is visible on the page and not hidden via CSS.
Try applying this updated fix to your scripts.bundle.js. Let us know if the issue persists.
Thanks again for the response. This change also didn’t help. All I know is that this sample input tag break it every where but the fixes you’ve sent don’t yet solve it.
this same tag I mentioned above: <input type=”hidden” name=”authenticity_token” value=”LilF6KgbBR7MBSruMcWFKyMOz_pnmcGzmiyxAm2aVDIvurHbA_uxcOqVNfB4NZbKPc7KzDoD8MGWpJAh7ErcDQ” autocomplete=”off” />
again just trying to use the 8.2.9 demo1 interface. the only three js files used for the multistep registration are global/plugins.bundle.js, scripts.bundle.js and custom/utilities/modals/create-account.js
help is greatly appreciated this has stall dev efforts at the moment.
do you think you can try inserting that tag as the first child of the demo1 form for multistep auth and get it working? Having it working as a demo would help tremendously.
error i see is .filter is not a function is KTUtil.findAll not returning an array? whatever is happening it’s not liking filter for this
any idea when you think you can provide a fix? i have to manage our effort and decide if we have to find another interface; the purpose of buying your interface was to eliminate these kind of issues. I don’t fault you but I need to manage our limited resources and figure out when its time to cut losses
This also didn’t work
var elements = Array.from(KTUtil.findAll(the.element, '[data-kt-stepper-element="nav"], [data-kt-stepper-element="content"], [data-kt-stepper-element="info"]'))
.filter(function(element) {
// Exclude hidden elements
return element.offsetParent !== null && element.type !== 'hidden';
});
Hi,
Noted. Let us check this and we will get back to you shortly.
Regards, Sean
Hey guys I have pressure to pick another UI soon if there is no fix. I’d like to use this one.
Hi
The CSRF error triggered during form submission or stepper page changed?
Would you consider disable CSRF for that specific form?
<%= form_with url: some_path, method: :post, authenticity_token: false do |form| %>
<%= form.text_field :name %>
<%= form.submit "Submit" %>
<% end %>
Thanks
its for devise login, i’d feel weird disabling security for registration and login. that’s pretty important. we also need to be particular about onboarding. but the problem is that it breaks everything that uses the stepper. Is there no way to fix it so that it’s robust enough to not trip over something that is normal now in most frameworks? it’s literally a single input tag throwing everything off. Are you guys not going to help me with a work around that works? Crap, I even updated my support.
the problem is not a CSRF error. The problem is that it breaks the stepper it doesn’t advance, or it’s advancing but the next step doesn’t arrive. The issue is your theme is thrown off by a single tag that frankly should be there.
discovered the culprit bug.
whatever you filter for the refreshUI also needs to be filtered for KTUtils.index. In the case of Rails CSRF is always a hidden input named authenticity_token, it’s pretty safe to filter that out for all stepper and index related things. It was a super annoying thing to track down but seems to be working now. if you have github happy to submit a pull request.
Hi
Thank you so much for your patience in tracking down the root cause of this issue. It’s great to hear that it resolved the problem on your end.
You can submit a pull request directly to our GitHub repository here: https://github.com/keen333/MetronicIf you can’t access it, just share your GitHub username, and we’ll make sure you have the right permissions.
Thanks
Hi there,
Does your theme offers calendar views and gantt charts?
If yes, where can we view the demo for the calendar views and gantt charts?
Thanks
Hi,
You can check out the calendar app of Metronic 8 Bootstrap: https://preview.keenthemes.com/metronic8/demo1/apps/calendar.html Also, we havea visual timeline plugin that can be used for Gantt UI. https://preview.keenthemes.com/html/metronic/docs/general/vis-timeline/styleRegards, Sean
Hi When metronic-v9.1.2 will be available for Vue?
Hi,
Sorry, we can’t confirm this at the moment.
We have a v9 Tailwind Vue integration guide that allows using all new Tailwind components in your Vue project.
For any further clarification please reach us via devs.keenthemes.com
Regards, Sean
Hello, Like KeenIcon, how can I integrate FontAwesome icons in my react metronic 9 tailwind?. Need help Tanks
Hi,
I believe this official guide will be helpful in your case: https://docs.fontawesome.com/web/use-with/reactAlso, you can check https://lucide.dev/ quite easy to use with React.
For any further help please reach us via https://devs.keenthemes.com
Regards, Sean
Hi,
I have purchased 6 months support from themeforest for the Metronic React Tailwind with Typescript.
I have a quesiton about customizing the user profile data.
What is the most organized way to populate the current logged in User Info all across the react app, currently in the header dropdown mentu available at the following file:
src/partials/dropdowns/user/DropDown.tsx file.
The following part:
<Link to=”/account/hoteme/get-stard” className=”text-sm text-gray-800 hover:text-primary font-semibold leading-none” > Cody Fisher </Link>
Replacing the Cody Fisher name with the logged in user.
Thanks
Hi,
In Metronic, the React Context API is used to share the currently logged-in user’s information across all components.
You can access the logged-in user’s details within any React component using the useAuthContext hook.
const { currentUser } = useAuthContext();
{currentUser.first_name} {currentUser.last_name}
Regards,
Lauris Stepanovs,
Keenthemes Support Team
i downloaded metronic 8 vue ( bootstrap ) but when i try to update packages and vue version to latest version the the demo not working and there is a lot of problems, so do you have any solution for that?
Hi,
Thank you for contacting us and informing this. We will check it further and get back to you asap.
Regards, Sean
Hi,
Could you please clarify which version of Metronic you are using?
Are you encountering these issues in the default package, or did they appear after making certain modifications?
Additionally, if you have specific instructions on how to reproduce these problems, please share them with us.
Regards,
Lauris Stepanovs,
Keenthemes Support Team
try to use ncu -u and then npm install or update all packages to latest versions for all packages then try to use npm run build you will get many problems and conflicts
Hi,
Please note that our codebase might not be compatible with all the latest dependencies. We strongly recommend not updating all the dependencies simultaneously, but updating them one by one since some dependency updates might require the code to be updated as well.
Let me know if you have problems with the update of specific dependency so I can guide you further.
Regards,
Lauris Stepanovs,
Keenthemes Support Team
The DEMO 3 menu on left is not working. When you click to change the page, the icon does not become active, like happens in demo 4. How to fix?
Hi,
May I know which version you are referring to? Metronic 8 Bootstrap or Metronic 9 Tailwind?
Regards, Sean
I discovered why state doesn’t work on chat app, using the tailwind version on react. The chatApp is inited using {DropdownChat({ menuTtemRef: itemChatRef })} instead of normal component, so all state doesn’t reflect change in the app.
What I mean, when I make change in the src/partials/dropdowns/chat/DropdownChat.tsx file, it doesn’t change in the preview on browser, even I’m using npm dev. All other files change live, but not this component.
How to fix this?
Hi,
Sorry for the late reply.
Good spot! We will provide a fix in the next v9.1.3 update soon.
In the meantime, you can fix it by replacing the function call with a component call in HeaderTopbar.tsx as shown below:
<MenuSub rootClassName="w-full max-w-[450px]" className="light:border-gray-300">
<DropdownChat menuTtemRef={itemChatRef} />
</MenuSub>
And in “src/partials/dropdowns/chat/DropdownChat.tsx” update the return clause like this:
return (
<>
<div ref="{headerRef}">
{buildHeader()}
{buildTopbar()}
</div>
<div ref="{messagesRef}
" classname="scrollable-y-auto" style="{{" maxheight:="">
{buildMessages()}
</div>
<div ref="{footerRef}">
{buildInviteNotification()}
{buildForm()}
</div>
</>
);
If you need any further help please do let us know via https://devs.keenthemes.com
Regards, Sean
How can you load datatable data from json/object? what format and how should it be used on code? So I want to define a datatable and just update it when event occurs, based on the response json i get
Hi,
Could you please reach our support via devs.keenthemes.com and provide more details on your Metronic version, framework and demo ?
Regards, Sean
Hello. Thank you for the great product. I have 2 questions, if you don’t mind.
1- Can I, as a customer, request to join and have access to your GitHub repository? or Figma design group to have access to the design files, please?
2- Do you have any plan to include Next.js?
Thank you.
Hi
,
You can email our support via support@keenthemes.com and we will consider it for sure.
Regards, Sean
I am looking for admin panel design….for my codecanyon manament application …can this I use it?
Hi,
Sorry for the late reply.
Metronic’s every single use requires a license so it’s not allowed to be used for code canyon items.
Regards, Sean