Search
Quick Commands
run:diagnostics Run all system checks
db:connect Connect to primary DB
cache:clear Clear application cache
users:list Show all active users
Notifications

Stay on top of recent system events and updates.

  • Notification avatar
    System Update Available

    Version 2.4.1 is ready to install with new features.

    2 minutes ago

  • AB
    New User Registration

    Alex Brown from Canada has joined the platform.

    15 minutes ago

  • Notification avatar
    Backup Completed

    Daily backup has been successfully completed.

    1 hour ago

  • Notification avatar
    Security Alert

    Unusual login activity detected from new location.

    3 hours ago

  • Notification avatar
    Monthly Report Ready

    Your analytics report for September is now available.

    Yesterday

  • MJ
    Server Maintenance

    Scheduled maintenance will begin at 2:00 AM EST.

    2 days ago

check_circle Basic Form Validation
Please provide a valid first name.
Looks good!
Please provide a valid last name.
Looks good!
Please provide a valid email address.
Looks good!
Please provide a valid phone number (123-456-7890).
Looks good!
Please provide a valid age between 18 and 120.
Looks good!
You must agree before submitting.
verified_user Advanced Validation
@
Username must be between 3-20 characters.
Username is available!
Password must be at least 8 characters with uppercase, lowercase, number, and special character.
Strong password!
Must contain: uppercase, lowercase, number, and special character
Passwords do not match.
Passwords match!
Please provide a valid URL.
Valid URL!
Please provide a valid credit card number.
Valid credit card number!
Please provide a valid expiry date.
Valid expiry date!
real_time Real-time Validation
Please provide a valid email address.
Email looks good!
Enter a password
help
Checking availability...
Please provide a valid URL.
Valid URL!
message Custom Validation Messages
error Please enter your full name (first and last name required).
check_circle Perfect! Your name looks good.
warning Please enter a valid business email address (e.g., john@company.com).
verified Great! This email address is valid.
phone_disabled Please enter a valid phone number in the format: 123-456-7890
phone_enabled Phone number is valid and ready to use!
edit_off Please enter a message between 10-500 characters.
edit Message looks good! 0/500 characters.
Minimum 10 characters, maximum 500 characters
gavel You must agree to the terms and conditions to continue.
handshake Thank you for agreeing to our terms!
cloud_upload File Upload Validation
Please select a valid image file (JPG, PNG, GIF).
Image file selected successfully!
Accepted formats: JPG, PNG, GIF (Max size: 5MB)
Please select valid document files (PDF, DOC, DOCX).
Documents selected successfully!
Accepted formats: PDF, DOC, DOCX (Max size: 10MB each)
Please upload your resume (PDF, DOC, DOCX format).
Resume uploaded successfully!
dynamic_form Multi-step Form Validation

User Information

Please provide a valid first name.
Please provide a valid last name.
Please provide a valid email address.

Address Information

Please provide a valid address.
Please provide a valid city.
Please provide a valid ZIP code.

Payment Information

Please provide a valid card number.
Please provide a valid expiry date.
Please provide a valid CVV.
label_important Floating Labels with Validation
info Floating Labels Plugin: This example demonstrates the @tkrotoff/bootstrap-floating-label plugin with Bootstrap validation. The labels animate smoothly and work seamlessly with validation states.
error Please provide a valid first name.
check_circle Looks good!
error Please provide a valid last name.
check_circle Looks good!
warning Please provide a valid email address.
verified Email looks good!
lock Password must be at least 8 characters with uppercase, lowercase, number, and special character.
security Strong password!
Must contain: uppercase, lowercase, number, and special character
phone_disabled Please provide a valid phone number (123-456-7890).
phone_enabled Phone number looks good!
edit_off Please enter a message between 10-500 characters.
edit Message looks good! 0/500 characters.
Minimum 10 characters, maximum 500 characters
location_off Please select your country.
location_on Country selected!
gavel You must agree before submitting.
handshake Thank you for agreeing!

Usage Examples

<form class="needs-validation" novalidate>
    <div class="mb-3">
        <label for="firstName" class="form-label">First Name *</label>
        <input type="text" class="form-control" id="firstName" required>
        <div class="invalid-feedback">
            Please provide a valid first name.
        </div>
        <div class="valid-feedback">
            Looks good!
        </div>
    </div>
    
    <div class="mb-3">
        <label for="email" class="form-label">Email Address *</label>
        <input type="email" class="form-control" id="email" required>
        <div class="invalid-feedback">
            Please provide a valid email address.
        </div>
        <div class="valid-feedback">
            Looks good!
        </div>
    </div>
    
    <button class="btn btn-primary" type="submit">Submit Form</button>
</form>

<!-- Password with Pattern -->
<div class="mb-3">
    <label for="password" class="form-label">Password *</label>
    <input type="password" class="form-control" id="password" required 
           minlength="8" pattern="^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]">
    <div class="invalid-feedback">
        Password must be at least 8 characters with uppercase, lowercase, number, and special character.
    </div>
    <div class="valid-feedback">
        Strong password!
    </div>
</div>

<!-- Phone Number with Pattern -->
<div class="mb-3">
    <label for="phone" class="form-label">Phone Number</label>
    <input type="tel" class="form-control" id="phone" 
           pattern="[0-9]{3}-[0-9]{3}-[0-9]{4}" placeholder="123-456-7890">
    <div class="invalid-feedback">
        Please provide a valid phone number (123-456-7890).
    </div>
</div>

<!-- Age with Min/Max -->
<div class="mb-3">
    <label for="age" class="form-label">Age *</label>
    <input type="number" class="form-control" id="age" min="18" max="120" required>
    <div class="invalid-feedback">
        Please provide a valid age between 18 and 120.
    </div>
</div>

<!-- Custom Validation with Icons -->
<div class="mb-3">
    <label for="customName" class="form-label">Full Name *</label>
    <input type="text" class="form-control" id="customName" required>
    <div class="invalid-feedback">
        <i class="material-symbols-rounded me-1">error</i>
        Please enter your full name (first and last name required).
    </div>
    <div class="valid-feedback">
        <i class="material-symbols-rounded me-1">check_circle</i>
        Perfect! Your name looks good.
    </div>
</div>

<!-- Character Count Validation -->
<div class="mb-3">
    <label for="customMessage" class="form-label">Message *</label>
    <textarea class="form-control" id="customMessage" rows="4" required 
              minlength="10" maxlength="500"></textarea>
    <div class="invalid-feedback">
        <i class="material-symbols-rounded me-1">edit_off</i>
        Please enter a message between 10-500 characters.
    </div>
    <div class="valid-feedback">
        <i class="material-symbols-rounded me-1">edit</i>
        Message looks good! <span id="charCount">0</span>/500 characters.
    </div>
</div>

Plugin: @tkrotoff/bootstrap-floating-label
Documentation: npmjs.com/package/@tkrotoff/bootstrap-floating-label
<!-- Floating Label with Validation -->
<div class="floating-label mb-3">
    <input type="email" class="form-control" id="email" placeholder="Enter email address" required>
    <label for="email">Email Address *</label>
    <div class="invalid-feedback">
        <i class="material-symbols-rounded me-1">warning</i>
        Please provide a valid email address.
    </div>
    <div class="valid-feedback">
        <i class="material-symbols-rounded me-1">verified</i>
        Email looks good!
    </div>
</div>

<!-- Textarea with Floating Label -->
<div class="floating-label mb-3">
    <textarea class="form-control" id="message" rows="3" placeholder="Enter your message" required minlength="10" maxlength="500"></textarea>
    <label for="message">Message *</label>
    <div class="invalid-feedback">
        <i class="material-symbols-rounded me-1">edit_off</i>
        Please enter a message between 10-500 characters.
    </div>
    <div class="valid-feedback">
        <i class="material-symbols-rounded me-1">edit</i>
        Message looks good! <span id="charCount">0</span>/500 characters.
    </div>
</div>

<!-- Select with Floating Label -->
<div class="floating-label mb-3">
    <select class="form-select" id="country" required>
        <option value="">Choose your country...</option>
        <option value="US">United States</option>
        <option value="CA">Canada</option>
    </select>
    <label for="country">Country *</label>
    <div class="invalid-feedback">
        <i class="material-symbols-rounded me-1">location_off</i>
        Please select your country.
    </div>
    <div class="valid-feedback">
        <i class="material-symbols-rounded me-1">location_on</i>
        Country selected!
    </div>
</div>
Plugin Features:
  • check_circleSmooth label animations on focus/blur
  • check_circleWorks with all form elements (input, textarea, select)
  • check_circleSeamless integration with Bootstrap validation
  • check_circleEnhanced visual feedback for form states
  • check_circleAutomatic initialization and cleanup
Installation:
npm install @tkrotoff/bootstrap-floating-label
SCSS Import:
@import '~@tkrotoff/bootstrap-floating-label/src/bootstrap-floating-label.scss';

// Bootstrap form validation
(function() {
  'use strict';
  window.addEventListener('load', function() {
    var forms = document.getElementsByClassName('needs-validation');
    var validation = Array.prototype.filter.call(forms, function(form) {
      form.addEventListener('submit', function(event) {
        if (form.checkValidity() === false) {
          event.preventDefault();
          event.stopPropagation();
        }
        form.classList.add('was-validated');
      }, false);
    });
  }, false);
})();

// Real-time validation
document.getElementById('email').addEventListener('input', function() {
    const email = this.value;
    const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
    
    if (email === '') {
        this.classList.remove('is-valid', 'is-invalid');
    } else if (emailRegex.test(email)) {
        this.classList.remove('is-invalid');
        this.classList.add('is-valid');
    } else {
        this.classList.remove('is-valid');
        this.classList.add('is-invalid');
    }
});