From beb96bcb504166256070c0610e2f3485bb05884e Mon Sep 17 00:00:00 2001 From: Aigars Silkalns Date: Tue, 17 Jun 2025 12:01:05 +0300 Subject: [PATCH] Added a new logo --- CHANGELOG.md | 9 + README.md | 2 +- forms.php | 2 +- package-lock.json | 21 +- package.json | 2 +- src/assets/scripts/app.js | 101 +++++++- src/assets/scripts/fullcalendar/index.js | 33 +-- src/assets/scripts/index.js | 2 +- src/assets/scripts/utils/date.js | 242 ++++++++++++++++++ src/assets/static/images/logo-circle.svg | 7 + src/assets/static/images/logo-gradient.svg | 13 + src/assets/static/images/logo-outline.svg | 7 + src/assets/static/images/logo.svg | 6 +- .../styles/spec/components/sidebar.scss | 6 + src/basic-table.html | 4 +- src/blank.html | 2 +- src/buttons.html | 2 +- src/calendar.html | 6 +- src/charts.html | 2 +- src/chat.html | 2 +- src/compose.html | 2 +- src/datatable.html | 2 +- src/email.html | 22 +- src/forms.html | 4 +- src/google-maps.html | 2 +- src/index.html | 4 +- src/signin.html | 2 +- src/signup.html | 2 +- src/ui.html | 2 +- src/vector-maps.html | 2 +- 30 files changed, 439 insertions(+), 76 deletions(-) create mode 100644 src/assets/scripts/utils/date.js create mode 100644 src/assets/static/images/logo-circle.svg create mode 100644 src/assets/static/images/logo-gradient.svg create mode 100644 src/assets/static/images/logo-outline.svg diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c37321..b9240c1 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -53,6 +53,15 @@ This release represents a comprehensive modernization of the entire build toolch - Removed incompatible ESLint packages from dependencies - Ensured version alignment between installed and declared packages +**🎯 Phase 5.1 - Date Library Migration:** +- **REMOVED** `moment` 2.30.1 (67KB) - unused legacy dependency +- **ADDED** `dayjs` 1.11.13 (2KB) - modern 97% smaller alternative +- Created comprehensive `DateUtils` module with modern date handling +- Updated FullCalendar to use Day.js for dynamic date generation +- Enhanced date picker functionality with Day.js validation +- Bundle size reduction: ~65KB saved +- Zero breaking changes - Day.js provides same API coverage + ### πŸ› οΈ Development Experience - **Node.js Support**: Now requires Node.js 18.12.0+ (compatible with v23.11.0) diff --git a/README.md b/README.md index 36592bc..9145cb3 100755 --- a/README.md +++ b/README.md @@ -214,7 +214,7 @@ The built files will be available in the `dist/` directory. ### JavaScript Libraries - [jQuery 3.7.1](https://jquery.com/) - DOM manipulation library - [Lodash 4.17.21](https://lodash.com/) - Utility library -- [Moment.js 2.30.1](https://momentjs.com/) - Date manipulation +- [Day.js 1.11.13](https://day.js.org/) - Modern 2KB date library (replaces Moment.js) - [Masonry 4.2.2](https://masonry.desandro.com/) - Grid layouts - [jQuery Sparkline](https://omnipotent.net/jquery.sparkline/) - Inline charts - [jVectorMap](http://jvectormap.com/) - Interactive vector maps diff --git a/forms.php b/forms.php index 9d2b2a5..3de1c17 100644 --- a/forms.php +++ b/forms.php @@ -607,7 +607,7 @@
- + diff --git a/package-lock.json b/package-lock.json index f725066..68fe94c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "adminator", - "version": "2.1.0", + "version": "2.5.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "adminator", - "version": "2.1.0", + "version": "2.5.0", "dependencies": { "@fullcalendar/core": "^6.1.17", "@fullcalendar/daygrid": "^6.1.17", @@ -19,6 +19,7 @@ "brand-colors": "^2.1.1", "chart.js": "^4.5.0", "datatables": "^1.10.18", + "dayjs": "^1.11.13", "easy-pie-chart": "^2.1.7", "file-loader": "^6.2.0", "jquery": "^3.7.1", @@ -27,7 +28,6 @@ "load-google-maps-api": "^2.0.2", "lodash": "^4.17.21", "masonry-layout": "^4.2.2", - "moment": "^2.30.1", "perfect-scrollbar": "^1.5.6", "skycons": "^1.0.0" }, @@ -6132,6 +6132,12 @@ "jquery": ">=1.7" } }, + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "license": "MIT" + }, "node_modules/debug": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", @@ -9028,15 +9034,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/moment": { - "version": "2.30.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", - "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", - "license": "MIT", - "engines": { - "node": "*" - } - }, "node_modules/mri": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", diff --git a/package.json b/package.json index 503c937..c077f83 100644 --- a/package.json +++ b/package.json @@ -59,6 +59,7 @@ "brand-colors": "^2.1.1", "chart.js": "^4.5.0", "datatables": "^1.10.18", + "dayjs": "^1.11.13", "easy-pie-chart": "^2.1.7", "file-loader": "^6.2.0", "jquery": "^3.7.1", @@ -67,7 +68,6 @@ "load-google-maps-api": "^2.0.2", "lodash": "^4.17.21", "masonry-layout": "^4.2.2", - "moment": "^2.30.1", "perfect-scrollbar": "^1.5.6", "skycons": "^1.0.0" } diff --git a/src/assets/scripts/app.js b/src/assets/scripts/app.js index 911daa3..ec7b205 100644 --- a/src/assets/scripts/app.js +++ b/src/assets/scripts/app.js @@ -5,6 +5,7 @@ import bootstrap from 'bootstrap'; import DOM from './utils/dom'; +import DateUtils from './utils/date'; import Sidebar from './components/Sidebar'; import ChartComponent from './components/Chart'; @@ -137,7 +138,7 @@ class AdminatorApp { } /** - * Initialize Date Pickers (modern approach) + * Initialize Date Pickers (modern approach with Day.js) */ initDatePickers() { const startDatePickers = DOM.selectAll('.start-date'); @@ -148,9 +149,105 @@ class AdminatorApp { if (picker.type !== 'date') { picker.type = 'date'; picker.classList.add('form-control'); - console.log('πŸ“… Date picker converted to HTML5'); + + // Clear the placeholder since HTML5 date inputs don't need it + picker.removeAttribute('placeholder'); + + // Set default value to today if no value is set + if (!picker.value) { + picker.value = DateUtils.form.toInputValue(DateUtils.now()); + } + + // Make sure the input is clickable and focusable + picker.style.pointerEvents = 'auto'; + picker.style.cursor = 'pointer'; + + // Ensure proper styling for HTML5 date input + picker.style.minHeight = '38px'; + picker.style.lineHeight = '1.5'; + + console.log('πŸ“… Date picker converted to HTML5 with Day.js support'); } }); + + // Add enhanced interaction - handle both field and icon clicks + [...startDatePickers, ...endDatePickers].forEach(picker => { + // Handle direct field clicks + DOM.on(picker, 'click', (event) => { + event.target.focus(); + // For mobile browsers, trigger the date picker + if (event.target.showPicker && typeof event.target.showPicker === 'function') { + try { + event.target.showPicker(); + } catch (e) { + // Fallback if showPicker is not supported + console.log('πŸ“… Date picker opened via field click'); + } + } + }); + + // Handle calendar icon clicks (find the icon in the input group) + const inputGroup = picker.closest('.input-group'); + if (inputGroup) { + const calendarIcon = inputGroup.querySelector('.input-group-text i.ti-calendar'); + if (calendarIcon) { + DOM.on(calendarIcon, 'click', (event) => { + event.preventDefault(); + event.stopPropagation(); + picker.focus(); + if (picker.showPicker && typeof picker.showPicker === 'function') { + try { + picker.showPicker(); + } catch (e) { + // Fallback for browsers that don't support showPicker + console.log('πŸ“… Date picker opened via icon click'); + } + } + }); + + // Also make the entire icon container clickable + const iconContainer = inputGroup.querySelector('.input-group-text'); + if (iconContainer) { + iconContainer.style.cursor = 'pointer'; + DOM.on(iconContainer, 'click', (event) => { + event.preventDefault(); + event.stopPropagation(); + picker.focus(); + if (picker.showPicker && typeof picker.showPicker === 'function') { + try { + picker.showPicker(); + } catch (e) { + console.log('πŸ“… Date picker opened via icon container click'); + } + } + }); + } + } + } + }); + + // Add date validation + [...startDatePickers, ...endDatePickers].forEach(picker => { + DOM.on(picker, 'change', (event) => { + const isValid = DateUtils.form.validateDateInput(event.target.value); + if (!isValid) { + event.target.classList.add('is-invalid'); + console.warn('Invalid date format:', event.target.value); + } else { + event.target.classList.remove('is-invalid'); + console.log('Valid date selected:', DateUtils.formatters.shortDate(event.target.value)); + } + }); + + // Add focus/blur handlers for better UX + DOM.on(picker, 'focus', () => { + picker.classList.add('focus'); + }); + + DOM.on(picker, 'blur', () => { + picker.classList.remove('focus'); + }); + }); } /** diff --git a/src/assets/scripts/fullcalendar/index.js b/src/assets/scripts/fullcalendar/index.js index 9754666..722bcf7 100755 --- a/src/assets/scripts/fullcalendar/index.js +++ b/src/assets/scripts/fullcalendar/index.js @@ -3,6 +3,7 @@ import interactionPlugin from '@fullcalendar/interaction'; import dayGridPlugin from '@fullcalendar/daygrid'; import timeGridPlugin from '@fullcalendar/timegrid'; import listPlugin from '@fullcalendar/list'; +import DateUtils from '../utils/date'; document.addEventListener('DOMContentLoaded', function () { const calendarEl = document.getElementById('calendar'); @@ -19,64 +20,64 @@ document.addEventListener('DOMContentLoaded', function () { center: 'title', right: 'dayGridMonth,timeGridWeek,timeGridDay,listWeek', }, - initialDate: '2024-01-12', + initialDate: DateUtils.format(DateUtils.now(), 'YYYY-MM-DD'), navLinks: true, // can click day/week names to navigate views editable: true, dayMaxEvents: true, // allow "more" link when too many events events: [ { title: 'All Day Event', - start: '2024-01-01', + start: DateUtils.format(DateUtils.now(), 'YYYY-MM-DD'), }, { title: 'Long Event', - start: '2024-01-07', - end: '2024-01-10', + start: DateUtils.format(DateUtils.add(DateUtils.now(), 1, 'day'), 'YYYY-MM-DD'), + end: DateUtils.format(DateUtils.add(DateUtils.now(), 4, 'day'), 'YYYY-MM-DD'), }, { groupId: 999, title: 'Repeating Event', - start: '2024-01-09T16:00:00', + start: DateUtils.format(DateUtils.add(DateUtils.now(), 2, 'day'), 'YYYY-MM-DDTHH:mm:ss').replace(/:\d{2}$/, ':00:00').replace(/T\d{2}:\d{2}/, 'T16:00'), }, { groupId: 999, title: 'Repeating Event', - start: '2024-01-16T16:00:00', + start: DateUtils.format(DateUtils.add(DateUtils.now(), 9, 'day'), 'YYYY-MM-DDTHH:mm:ss').replace(/:\d{2}$/, ':00:00').replace(/T\d{2}:\d{2}/, 'T16:00'), }, { title: 'Conference', - start: '2024-01-11', - end: '2024-01-13', + start: DateUtils.format(DateUtils.add(DateUtils.now(), 5, 'day'), 'YYYY-MM-DD'), + end: DateUtils.format(DateUtils.add(DateUtils.now(), 7, 'day'), 'YYYY-MM-DD'), }, { title: 'Meeting', - start: '2024-01-12T10:30:00', - end: '2024-01-12T12:30:00', + start: DateUtils.format(DateUtils.add(DateUtils.now(), 3, 'day'), 'YYYY-MM-DDTHH:mm:ss').replace(/:\d{2}$/, ':00:00').replace(/T\d{2}:\d{2}/, 'T10:30'), + end: DateUtils.format(DateUtils.add(DateUtils.now(), 3, 'day'), 'YYYY-MM-DDTHH:mm:ss').replace(/:\d{2}$/, ':00:00').replace(/T\d{2}:\d{2}/, 'T12:30'), }, { title: 'Lunch', - start: '2024-01-12T12:00:00', + start: DateUtils.format(DateUtils.add(DateUtils.now(), 3, 'day'), 'YYYY-MM-DDTHH:mm:ss').replace(/:\d{2}$/, ':00:00').replace(/T\d{2}:\d{2}/, 'T12:00'), }, { title: 'Meeting', - start: '2024-01-12T14:30:00', + start: DateUtils.format(DateUtils.add(DateUtils.now(), 3, 'day'), 'YYYY-MM-DDTHH:mm:ss').replace(/:\d{2}$/, ':00:00').replace(/T\d{2}:\d{2}/, 'T14:30'), }, { title: 'Happy Hour', - start: '2024-01-12T17:30:00', + start: DateUtils.format(DateUtils.add(DateUtils.now(), 3, 'day'), 'YYYY-MM-DDTHH:mm:ss').replace(/:\d{2}$/, ':00:00').replace(/T\d{2}:\d{2}/, 'T17:30'), }, { title: 'Dinner', - start: '2024-01-12T20:00:00', + start: DateUtils.format(DateUtils.add(DateUtils.now(), 3, 'day'), 'YYYY-MM-DDTHH:mm:ss').replace(/:\d{2}$/, ':00:00').replace(/T\d{2}:\d{2}/, 'T20:00'), }, { title: 'Birthday Party', - start: '2024-01-13T07:00:00', + start: DateUtils.format(DateUtils.add(DateUtils.now(), 4, 'day'), 'YYYY-MM-DDTHH:mm:ss').replace(/:\d{2}$/, ':00:00').replace(/T\d{2}:\d{2}/, 'T07:00'), }, { title: 'Click for Google', url: 'http://google.com/', - start: '2024-01-28', + start: DateUtils.format(DateUtils.add(DateUtils.now(), 14, 'day'), 'YYYY-MM-DD'), }, ], }); diff --git a/src/assets/scripts/index.js b/src/assets/scripts/index.js index d703c26..9a1d494 100755 --- a/src/assets/scripts/index.js +++ b/src/assets/scripts/index.js @@ -9,7 +9,7 @@ import './app.js'; // Legacy imports that haven't been modernized yet // These will be gradually replaced in future iterations import './datatable'; -import './datepicker'; +// import './datepicker'; // REMOVED: Replaced with modern day.js implementation in app.js // Note: The following have been modernized and are now handled by app.js: // - sidebar (now Sidebar component) diff --git a/src/assets/scripts/utils/date.js b/src/assets/scripts/utils/date.js new file mode 100644 index 0000000..8cd0b91 --- /dev/null +++ b/src/assets/scripts/utils/date.js @@ -0,0 +1,242 @@ +/** + * Modern Date Utilities + * Using Day.js (2KB) instead of Moment.js (67KB) - 97% size reduction + * Provides consistent date formatting and manipulation across the application + */ + +import dayjs from 'dayjs'; +import utc from 'dayjs/plugin/utc'; +import timezone from 'dayjs/plugin/timezone'; +import relativeTime from 'dayjs/plugin/relativeTime'; +import customParseFormat from 'dayjs/plugin/customParseFormat'; +import advancedFormat from 'dayjs/plugin/advancedFormat'; + +// Enable Day.js plugins +dayjs.extend(utc); +dayjs.extend(timezone); +dayjs.extend(relativeTime); +dayjs.extend(customParseFormat); +dayjs.extend(advancedFormat); + +export const DateUtils = { + /** + * Get current date/time + */ + now: () => dayjs(), + + /** + * Parse date from string or Date object + */ + parse: (input, format = null) => { + return format ? dayjs(input, format) : dayjs(input); + }, + + /** + * Format date for display + */ + format: (date, format = 'YYYY-MM-DD') => { + return dayjs(date).format(format); + }, + + /** + * Common date formatting presets + */ + formatters: { + // Dashboard display formats + shortDate: (date) => dayjs(date).format('MMM DD, YYYY'), + longDate: (date) => dayjs(date).format('MMMM DD, YYYY'), + dateTime: (date) => dayjs(date).format('MMM DD, YYYY h:mm A'), + + // Calendar formats + calendarDate: (date) => dayjs(date).format('YYYY-MM-DD'), + calendarDateTime: (date) => dayjs(date).format('YYYY-MM-DD HH:mm:ss'), + + // Form input formats + inputDate: (date) => dayjs(date).format('YYYY-MM-DD'), + inputDateTime: (date) => dayjs(date).format('YYYY-MM-DDTHH:mm'), + + // Display formats + timeOnly: (date) => dayjs(date).format('h:mm A'), + monthYear: (date) => dayjs(date).format('MMMM YYYY'), + dayMonth: (date) => dayjs(date).format('DD MMM'), + + // Relative time + relative: (date) => dayjs(date).fromNow(), + relativeCalendar: (date) => { + const now = dayjs(); + const target = dayjs(date); + const diffDays = now.diff(target, 'day'); + + if (diffDays === 0) return 'Today'; + if (diffDays === 1) return 'Yesterday'; + if (diffDays === -1) return 'Tomorrow'; + if (diffDays > 1 && diffDays < 7) return `${diffDays} days ago`; + if (diffDays < -1 && diffDays > -7) return `In ${Math.abs(diffDays)} days`; + return target.format('MMM DD, YYYY'); + } + }, + + /** + * Date manipulation + */ + add: (date, amount, unit) => dayjs(date).add(amount, unit), + subtract: (date, amount, unit) => dayjs(date).subtract(amount, unit), + startOf: (date, unit) => dayjs(date).startOf(unit), + endOf: (date, unit) => dayjs(date).endOf(unit), + + /** + * Date comparison + */ + isBefore: (date1, date2) => dayjs(date1).isBefore(dayjs(date2)), + isAfter: (date1, date2) => dayjs(date1).isAfter(dayjs(date2)), + isSame: (date1, date2, unit = 'day') => dayjs(date1).isSame(dayjs(date2), unit), + isBetween: (date, start, end) => dayjs(date).isBetween(dayjs(start), dayjs(end)), + + /** + * Date validation + */ + isValid: (date) => dayjs(date).isValid(), + + /** + * Timezone utilities + */ + timezone: { + convert: (date, tz) => dayjs(date).tz(tz), + utc: (date) => dayjs(date).utc(), + local: (date) => dayjs(date).local(), + guess: () => dayjs.tz.guess(), + }, + + /** + * Calendar utilities + */ + calendar: { + // Get calendar month data for building calendar views + getMonthData: (date = null) => { + const target = date ? dayjs(date) : dayjs(); + const startOfMonth = target.startOf('month'); + const endOfMonth = target.endOf('month'); + const startOfCalendar = startOfMonth.startOf('week'); + const endOfCalendar = endOfMonth.endOf('week'); + + const days = []; + let current = startOfCalendar; + + while (current.isBefore(endOfCalendar) || current.isSame(endOfCalendar, 'day')) { + days.push({ + date: current.format('YYYY-MM-DD'), + day: current.date(), + isCurrentMonth: current.isSame(target, 'month'), + isToday: current.isSame(dayjs(), 'day'), + dayjs: current.clone() + }); + current = current.add(1, 'day'); + } + + return { + month: target.format('MMMM YYYY'), + year: target.year(), + monthIndex: target.month(), + days: days + }; + }, + + // Get week data + getWeekData: (date = null) => { + const target = date ? dayjs(date) : dayjs(); + const startOfWeek = target.startOf('week'); + const endOfWeek = target.endOf('week'); + + const days = []; + let current = startOfWeek; + + while (current.isBefore(endOfWeek) || current.isSame(endOfWeek, 'day')) { + days.push({ + date: current.format('YYYY-MM-DD'), + day: current.date(), + dayName: current.format('dddd'), + shortDayName: current.format('ddd'), + isToday: current.isSame(dayjs(), 'day'), + dayjs: current.clone() + }); + current = current.add(1, 'day'); + } + + return { + weekStart: startOfWeek.format('MMM DD'), + weekEnd: endOfWeek.format('MMM DD, YYYY'), + days: days + }; + } + }, + + /** + * Form utilities + */ + form: { + // Convert date to HTML5 input format + toInputValue: (date) => dayjs(date).format('YYYY-MM-DD'), + toDateTimeInputValue: (date) => dayjs(date).format('YYYY-MM-DDTHH:mm'), + + // Parse from HTML5 input + fromInputValue: (value) => dayjs(value), + + // Validate date input + validateDateInput: (value) => { + const parsed = dayjs(value); + return parsed.isValid() && value.length >= 8; // Basic validation + } + }, + + /** + * Chart/Data utilities + */ + charts: { + // Generate date ranges for charts + generateDateRange: (start, end, interval = 'day') => { + const dates = []; + let current = dayjs(start); + const endDate = dayjs(end); + + while (current.isBefore(endDate) || current.isSame(endDate, interval)) { + dates.push({ + date: current.format('YYYY-MM-DD'), + label: current.format('MMM DD'), + value: current.toISOString(), + dayjs: current.clone() + }); + current = current.add(1, interval); + } + + return dates; + }, + + // Get common chart date labels + getChartLabels: (period = 'week') => { + const now = dayjs(); + + switch (period) { + case 'week': + return Array.from({ length: 7 }, (_, i) => + now.subtract(6 - i, 'day').format('ddd') + ); + case 'month': + return Array.from({ length: 30 }, (_, i) => + now.subtract(29 - i, 'day').format('DD') + ); + case 'year': + return Array.from({ length: 12 }, (_, i) => + now.subtract(11 - i, 'month').format('MMM') + ); + default: + return []; + } + } + } +}; + +// Export dayjs instance for direct use when needed +export { dayjs }; + +// Default export +export default DateUtils; \ No newline at end of file diff --git a/src/assets/static/images/logo-circle.svg b/src/assets/static/images/logo-circle.svg new file mode 100644 index 0000000..b73baea --- /dev/null +++ b/src/assets/static/images/logo-circle.svg @@ -0,0 +1,7 @@ + + Adminator Logo – Circle + + + + + \ No newline at end of file diff --git a/src/assets/static/images/logo-gradient.svg b/src/assets/static/images/logo-gradient.svg new file mode 100644 index 0000000..afbe093 --- /dev/null +++ b/src/assets/static/images/logo-gradient.svg @@ -0,0 +1,13 @@ + + Adminator Logo – Gradient + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/static/images/logo-outline.svg b/src/assets/static/images/logo-outline.svg new file mode 100644 index 0000000..3829972 --- /dev/null +++ b/src/assets/static/images/logo-outline.svg @@ -0,0 +1,7 @@ + + Adminator Logo – Outline + + + + + \ No newline at end of file diff --git a/src/assets/static/images/logo.svg b/src/assets/static/images/logo.svg index 789e925..9c3a8d8 100755 --- a/src/assets/static/images/logo.svg +++ b/src/assets/static/images/logo.svg @@ -1 +1,5 @@ -react-1 \ No newline at end of file + + \ No newline at end of file diff --git a/src/assets/styles/spec/components/sidebar.scss b/src/assets/styles/spec/components/sidebar.scss index 9a6a288..11c4d3f 100755 --- a/src/assets/styles/spec/components/sidebar.scss +++ b/src/assets/styles/spec/components/sidebar.scss @@ -148,6 +148,12 @@ min-height: calc(#{$header-height} - 1px); width: 100%; width: 70px; + img { + height: 42px; + width: auto; + display: block; + margin: 11px auto; + } } .logo-text { diff --git a/src/basic-table.html b/src/basic-table.html index 15467e8..2af53a6 100755 --- a/src/basic-table.html +++ b/src/basic-table.html @@ -99,7 +99,7 @@
@@ -521,7 +521,7 @@

Simple Table

-

Using the most basic table markup, here’s how .table-based tables look in Bootstrap. All table styles are inherited in Bootstrap 5, meaning any nested tables will be styled in the same manner as the parent.

+

Using the most basic table markup, here's how .table-based tables look in Bootstrap. All table styles are inherited in Bootstrap 5, meaning any nested tables will be styled in the same manner as the parent.

diff --git a/src/blank.html b/src/blank.html index b4b7b71..a9655cc 100755 --- a/src/blank.html +++ b/src/blank.html @@ -99,7 +99,7 @@
diff --git a/src/buttons.html b/src/buttons.html index 66d3396..291c09f 100755 --- a/src/buttons.html +++ b/src/buttons.html @@ -49,7 +49,7 @@
diff --git a/src/calendar.html b/src/calendar.html index 61d6fbb..4750247 100755 --- a/src/calendar.html +++ b/src/calendar.html @@ -99,7 +99,7 @@
@@ -660,7 +660,7 @@
- +
@@ -671,7 +671,7 @@
- +
diff --git a/src/charts.html b/src/charts.html index b2b776b..7487ab1 100755 --- a/src/charts.html +++ b/src/charts.html @@ -99,7 +99,7 @@
diff --git a/src/chat.html b/src/chat.html index 638df21..4318b58 100755 --- a/src/chat.html +++ b/src/chat.html @@ -99,7 +99,7 @@
diff --git a/src/compose.html b/src/compose.html index 0c0dec2..b58098d 100755 --- a/src/compose.html +++ b/src/compose.html @@ -99,7 +99,7 @@
diff --git a/src/datatable.html b/src/datatable.html index 057007f..0668b59 100755 --- a/src/datatable.html +++ b/src/datatable.html @@ -100,7 +100,7 @@
diff --git a/src/email.html b/src/email.html index e09151c..c14cc8c 100755 --- a/src/email.html +++ b/src/email.html @@ -99,7 +99,7 @@
@@ -887,26 +887,6 @@ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
-
diff --git a/src/forms.html b/src/forms.html index 3329fa8..fa22a98 100755 --- a/src/forms.html +++ b/src/forms.html @@ -99,7 +99,7 @@
@@ -590,7 +590,7 @@
- +
diff --git a/src/google-maps.html b/src/google-maps.html index 5322877..9dfa7c9 100755 --- a/src/google-maps.html +++ b/src/google-maps.html @@ -99,7 +99,7 @@
diff --git a/src/index.html b/src/index.html index 654c767..91959cc 100755 --- a/src/index.html +++ b/src/index.html @@ -98,7 +98,7 @@
@@ -905,7 +905,7 @@
Monday
- Nov, 01 2024 + Nov, 01 2032
diff --git a/src/signin.html b/src/signin.html index 9d01e57..c9ffed2 100755 --- a/src/signin.html +++ b/src/signin.html @@ -70,7 +70,7 @@
- +
diff --git a/src/signup.html b/src/signup.html index 730d386..498151b 100755 --- a/src/signup.html +++ b/src/signup.html @@ -70,7 +70,7 @@
- +
diff --git a/src/ui.html b/src/ui.html index edee1d1..e20a1cb 100755 --- a/src/ui.html +++ b/src/ui.html @@ -99,7 +99,7 @@
diff --git a/src/vector-maps.html b/src/vector-maps.html index f47283f..4ed775f 100755 --- a/src/vector-maps.html +++ b/src/vector-maps.html @@ -99,7 +99,7 @@