License GPLv3
Disclaimer!
Автор проекта (WTERH), заранее сообщаю, что большая часть кода была сгенерирована с помощью нейронной сети - Mistral.
Автор оставляет за собой право вносить изменения так же прибегая к помощи других неронных сетей.
Проект не претендует на какие-либо привелегии, признание, участие сообщества jQuery разработчиков в развитии проекта.
Автор реализовал требуемую логику исключительно для собственных нужд и прототипирования интерфейсов "на коленке".
Используемый механизм реактивности может быть не полным\не полноценным, а конечная реализация проседать по перфомансам и прочим бенчмаркам, в т.ч. в случае, если Вы захотите использовать проект в собственных прототипах или коленочных решениях.
- Badge
- Breadcrumbs
- Chips
- Contact List
- Content Block
- Data Tables
- Dialog
- FAB (Floating Action Button)
- Form Inputs
- List
- List Button
- Menu List
- Messages
- Navbar
- Notification
- Side Panel
- Popover
- Popup
- Preloader
- Progressbar
- Radio
- Range Slider
- Reactive
- Searchbar
- Segmented Control
- Sheet Modal
- Stepper
- Subnavbar
- Tabber
- Toast
- Toggle
- Toolbar
Бейдж - предназначен для добавления меток на кнопки\ссылки. Например, чтобы показать наличие новых уведомлений, на соответствующей кнопке
- content - содержимое бейджа
- type - цветовой тип бейджа
$(function () {
    const badge = $('#badge').i3Badge({
        content: 'New',
        type: 'primary',
    })
})Хлебные крошки - используется для генерации хлебных крошек, отображающих глубину просмотра, с возможностью быстро подняться выше
- items - массив крошек
- text - лейбл крошки
- href - ссылка крошки
- active - активный элемент
$(function () {
    const breadrcrumbs = $('#breadcrumbs').i3Breadcrumbs({
        items: [
            { text: 'Home', url: '/' },
            { text: 'Category', url: '/category' },
            { text: 'Subcategory', url: '/subcategory', active: true },
        ],
    })
})Кусочки - дополнительные метки\теги для блоков, кнопок, список и т.д.
- chips - массив кусочков
- content - текст кусочка
- deletable - дать ли возможность удалить
- type - тип кусочка
- color - цвет кусочка
- onDelete - событие удаления
$(function () {
    const chips = $('#chips').i3Chips({
        chips: [
            { content: 'Chip 1', deletable: true },
            { content: 'Chip 2', type: 'contact', deletable: true },
            { content: 'Chip 3', color: '#ffcc00', deletable: true },
        ],
        onDelete: function () {
            console.log('Chip deleted')
        },
    })
})Список контактов - список, содержащий упорядоченные по алфавиту контакты
- contacts - массив контактов
$(function () {
    const contactList = $('#contactList').i3ContactList({
        contacts: [
            { name: 'John Doe', email: 'john@example.com' },
            { name: 'Jane Doe', email: 'jane@example.com' },
            { name: 'Jim Smith', email: 'jim@example.com' },
        ],
    })
})Блок контента - простой блок контента содержащий текст или медиа
- type - тип блока, на всю ширину родителя, с рамкой, с отступом и рамкой, с заголовком, с подвалом, с заголовком и подвалом
- header - содержимое заголовка
- content - содержимое тела
- footer - содержимое подвала
$(function () {
    const contentBlock = $('#contentBlock').i3ContentBlock({
        type: 'inset-outline', // Change the type as needed
        header: 'Header',
        content: 'Main content goes here.',
        footer: 'Footer',
    })
})Таблицы - простые таблицы, с возможностью использования dataTables.js (не включен в поставку, не является зависимостью)
- columns - массив колонок
- title - заголовое колонки
- data тип колонки
- data - строки таблицы
- name - первое поле
- email - второе поле
- age - третье поле
$(function () {
    const dataTables = $('#dataTable').i3DataTables({
        columns: [
            { title: 'Name', data: 'name' },
            { title: 'Email', data: 'email' },
            { title: 'Age', data: 'age' },
      ],
      data: [
          { name: 'John Doe', email: 'john@example.com', age: 30 },
          { name: 'Jane Doe', email: 'jane@example.com', age: 28 },
          { name: 'Jim Smith', email: 'jim@example.com', age: 35 },
      ],
    })
})Диалоговое окно - аналогичто модальным окнам
- content - содержимое окна
- buttons - массив кнопок
- text - лейбл кнопки
- type - тип кнопки
- onClick - событие клика кнопки
$(function () {
    const dialogContainer = $('#dialogContainer').i3Dialog({
        content: 'Do you want to continue?',
        buttons: [
            { text: 'Yes', type: 'primary' },
            { text: 'No', type: 'secondary' },
        ],
        onClick: function (index) {
            console.log(`Button ${index} clicked!`)
        },
    })
    $('#openDialog').on('click', function () {
        dialogContainer.dialog('open')
    })
})Плавающая кнопка - предназначена для размещения кнопки, например для загрузки файлов или создания постов
- ariaLabel - описание кнопки для экранного диктора
- icon - иконка
- position - позиция кнопки
- onClick - событие нажатия
$(function () {
    const fab = $('#fabButton').i3Fab({
        ariaLabel: 'Add',
        icon: 'fas fa-plus',
        onClick: function () {
            console.log('FAB button clicked!')
        },
        position: 'bottom-right', // Change the position as needed
    })
})Генератор полей - генерирует поля для форм
- type - тип поля, outline, floating, outline-floating и т.д.
- label - лейбл поля
- inputType - тип поля
- id - идентификатор
- name - имя поля
- placeholder - подсказка
- value - значение
- required - обязательность
- clearButton - показать кнопку очистки
- validation - валидировать поле
- validationMessage - сообщение валидации
- additionalInfo - дополнительная информация
$(function () {
    $('#inputField1').i3FormInputs({
        type: 'outline',
        label: 'Outline Input',
        name: 'outlineInput',
        placeholder: 'Enter outline input',
    })
    $('#inputField2').formInputs({
        type: 'floating',
        label: 'Floating Input',
        name: 'floatingInput',
        placeholder: 'Enter floating input',
    })
    $('#inputField3').formInputs({
        type: 'outline-floating',
        label: 'Outline Floating Input',
        name: 'outlineFloatingInput',
        placeholder: 'Enter outline floating input',
        clearButton: true,
        validation: true,
        validationMessage: 'Custom validation message',
        additionalInfo: 'Additional information for this input field',
    })
})Список - простой список ссылок
- items - массив элементов
- text - текст элемента
- href - ссылка элемента
$(function () {
    const list = $('#myList').i3List({
        items: [
            {text: 'Item 1', href: '#'},
            {text: 'Item 2', href: '#'},
            {text: 'Item 3', href: '#'},
        ],
    })
})Список кнопок - простой список кнопок
- toggleText - подпись для раскрываемого меню
- items - массив элементов списка кнопок
- text - лейбл кнокпи
- href - ссылка кнопки
$(function () {
    const listButton = $('#myListButton').i3ListButton({
        toggleText: 'Open Menu',
        items: [
            {text: 'Item 1', href: '#'},
            {text: 'Item 2', href: '#'},
            {text: 'Item 3', href: '#'},
        ],
    })
})Список элементов меню - простое меню с возможностью добавить иконки и подпись
- items - массив элементов меню
- icon - иконка элемента
- label - лейбл элемента
- link - ссылка элемента
- subtitle - подзаголовок элемента
- onClick - событие клика
$(function () {
    const menu = $('#menu').i3MenuList({
        items: [
            {
                icon: 'fa fa-home',
                label: 'Home',
                link: '/home',
            },
            {
                icon: 'fa fa-cog',
                label: 'Settings',
                subtitle: 'Manage your account',
                onClick: function (index) {
                    console.log(`Settings clicked: ${index}`)
                },
            },
            {
                icon: 'fa fa-user',
                label: 'Profile',
                subtitle: 'View and edit your profile',
            },
        ],
    })
})Мессенджер - компонент отображения чата или сообщений по шаблону
- onSend - событие отображения сообщений
$(function () {
    const messages = $('#messages').i3Messages({
        onSend: function (message) {
            // Simulate a response from another person after 1 second.
            setTimeout(() => {
                messages.addMessage('Other person: ' + message, 'other')
            }, 1000)
        },
    })
})Панель навигации - Простая панель навигации
- size - размер Navbar'а small,medium,large
- sticky - Прилипать ли при прокрутке
$(function () {
    const navbar = $('#navbar').i3Navbar({
        size: 'large',
        sticky: true,
    })
})Уведомления - простые уведомления, аналогичные пуш-уведомлениям, на мобильных устройствах
- message - текст уведомления
- showCloseButton - показывать кнопку закрытия
- onClick - событие клика
- onClose - событе закрытия
$(function () {
    const notification = $('body').i3Notification({
        message: 'This is a notification!',
        showCloseButton: true,
        onClick: function (event) {
            console.log('Notification clicked')
        },
        onClose: function (event) {
            console.log('Notification closed')
        },
    })
    $('#show-notification').on('click', function () {
        notification.show()
    })
})Боковая панель - простая боковая панель, с возможностью указать сторону появления
- alignment - положение слева\справа
- onClose - событие закрытия
$(function () {
    const sidePanel = $('#side-panel').i3SidePanel({
        alignment: 'right',
        onClose: function () {
            console.log('Side panel closed')
        },
    })
    $('#open-side-panel').on('click', function () {
        sidePanel.open()
    })
})Подсказка - всплывающая подсказка на элементах в тексте
- content - список содержимого
- placement - положение
- onClick - событие клика
$(function () {
    const popover = $('#popover-trigger').i3Popover({
        content: ['Item 1', 'Item 2', 'Item 3'],
        placement: 'bottom',
        onClick: function (index) {
            console.log(`List item clicked: ${index}`)
        },
    })
})Попап - простое попап окно
- content - Содержимое попапа
- onClose - событие обратного вызова
$(function () {
    const popup = $('#open-popup').i3Popup({
        content: '<p>This is a popup!</p>',
        onClose: function () {
            console.log('Popup closed')
        },
    })
    $('#open-popup').on('click', function () {
        popup.open()
    })
})Прелоадер - простой прелоадер с таймером
- timeout - таймер скрытия
- onHide - событие обратного вызова
$(function () {
    const preloader = $('body').i3Preloader({
        timeout: 1000,
        onHide: function () {
            console.log('Preloader hidden')
        },
    })
})Панель прогресса - простая панель, для отображения прогресса
$(function () {
    const progressbar = $('#progress').i3Progressbar({
        onUpdate: function (value) {
            console.log(`Progress updated: ${value}%`)
        },
    })
    $('#increase').on('click', function () {
        const currentValue = progressbar.options.value
        progressbar.setValue(currentValue + 10)
    })
})Радио - простой список связанных элементов
- name - Имя списка radio элементов
- layout - Тип inline\list
- value - отмеченный элемент по значени.
- items - элементы списка
- onChange - событие обратного вызова
$(function () {
    const radio = $('#radio-container').i3Radio({
        name: 'my-radio',
        layout: 'inline',
        value: 'option-2',
        items: [
            { label: 'Option 1', value: 'option-1' },
            { label: 'Option 2', value: 'option-2' },
            { label: 'Option 3', value: 'option-3' },
        ],
        onChange: function (value) {
            console.log(`Radio value changed: ${value}`)
        },
    })
})Слайдер диапазона - простой слайдер диапазона велечин
- min - минимальное значение
- max - максимальное значение
- value - текущее значение
- onChange - собитие изменения
$(function () {
    const rangeSlider = $('#range-slider').i3RangeSlider({
        min: 0,
        max: 100,
        value: 50,
        onChange: function (value) {
            $('#value').text(`Value: ${value}`)
        },
    })
})Реактивность - простая реализация реактивности
- data - объект данных, за которыми необходимо следить
- template - анонимная функция-шаблон
- callback - событие обратного вызова при изменении элемента
$(function () {
    // Define the data
    let data = {
        message: 'Hello, world!'
    };
    // Define the template function
    let template = function(data) {
        return '<p>' + data.message + '</p>';
    };
    // Use the plugin to bind the data and the template to an element
    $('#myElement').i3Reactivity(data, template, function(newData) {
        console.log('The data has changed:', newData);
    });
    // Change the data
    data.message = 'Hello, jQuery!';
});Панель поиска - простая поисковая строка
- placeholder - Подсказка поисковой строки
- onSearch - обработчик поиска
- results - массив элементов, по которым будет производиться поиск
$(function () {
    const searchbar = $('#searchbar').i3Searchbar({
        placeholder: 'Search for items...',
        onSearch: function (query) {
            // Perform search with the query and update the results.
            const results = ['Item 1', 'Item 2', 'Item 3'] // Replace this with actual search results.
            $('#results').empty()
            if (query) {
                results.forEach((result) => {
                    $('#results').append(`<li>${result}</li>`)
                })
            }
        },
    })
})Панель сегментов - простая панель сегментов, может служить табами или переходами панелей
- items - элементы
$(function () {
    const segmentedControl = $('#segmented-control').i3SegmentedControl({
        items: ['Option 1', 'Option 2', 'Option 3'],
        selectedIndex: 1,
        onChange: function (index) {
            console.log(`Selected index: ${index}`)
        },
    })
})Модальный лист - простое модальное окно, открываемое снизу
- content - содержимое модального окна
- onClose - событие закрытия модального окна
$(function () {
    const sheetModal = $('#open-sheet-modal').i3SheetModal({
        content: '<p>This is a sheet modal!</p>',
        onClose: function () {
            console.log('Sheet modal closed')
        },
    })
    $('#open-sheet-modal').on('click', function () {
        sheetModal.open()
    })
})Поле шага - простое поле счетчик, например для кол-ва товаров в корзине
- min - минимальное значение
- max - максимальное значение
- value - текущее значение
- step - шаг значения
- onChange - обработчик изменения
$(function () {
    const stepper = $('#stepper').i3Stepper({
        min: 0,
        max: 10,
        value: 5,
        step: 2,
        onChange: function (value) {
            console.log(`Stepper value changed: ${value}`)
        },
    })
})Панель поднавигации - простая дополнительная панель навигации
- items - список элементов
- selectedIndex - индекст активного элемента
- onChange - событие изменения
$(function () {
    const subnavbar = $('#subnavbar').i3Subnavbar({
        items: ['Option 1', 'Option 2', 'Option 3'],
        selectedIndex: 1,
        onChange: function (index) {
            console.log(`Selected index: ${index}`)
        },
  })
})Панель табов - простая панель табов
- items - массив элементов
- icon - класс иконки
- text - лейбл кнопки
- content - содержимое таба
- selectedIndex - активный элемент
- showText - показывать ли лебл
- showIcons - показывать ли иконки
- onChange - событие переключения табов
$(function () {
    const tabber = $('#tabber').i3Tabber({
        items: [
            { icon: 'fa fa-home', text: 'Tab 1', content: '<p>Content for Tab 1.</p>' },
            { icon: 'fa fa-cog', text: 'Tab 2', content: '<p>Content for Tab 2.</p>' },
            { icon: 'fa fa-user', text: 'Tab 3', content: '<p>Content for Tab 3.</p>' },
        ],
        selectedIndex: 1,
        showText: true,
        showIcons: true,
        onChange: function (index) {
            console.log(`Selected index: ${index}`)
        },
    })
})Тост - простые уведомления, в нижней части экрана
- message - текст сообщения
- type - тип сообщения
- alignment - положение слева\справа\поцентру
- timeout - время отображения
- onHide - событие скрытия
$(function () {
    $('#show-toast').on('click', function () {
        const toast = $('body').i3Toast({
            message: 'This is a toast message!',
            type: 'success',
            alignment: 'right',
            timeout: 2000,
            onHide: function () {
                console.log('Toast hidden')
            },
        })
    })
})Переключатель - простой переключатель вкл\выкл
$(function () {
    const toggle = $('#toggle').i3Toggle({
        state: true,
        onChange: function (state) {
            console.log(`Toggle state changed: ${state}`)
        },
    })
})Панель инструментов - простая дополнительная панель
- alignment - положение сверху\снизу
- buttons - кноки внутри
- text - лейбл кнопки
- icon - иконка кнопки
- onClick - событие клика
$(function () {
    const toolbar = $('#toolbar').toolbar({
        alignment: 'bottom',
        buttons: [
            { text: 'Button 1', icon: 'fa fa-home' },
            { text: 'Button 2', icon: 'fa fa-cog' },
            { text: 'Button 3', icon: 'fa fa-user' },
        ],
        onClick: function (index) {
            console.log(`Button clicked: ${index}`)
        },
    })
})