Browse Source

Added a new logo

pull/317/head
Aigars Silkalns 6 months ago
parent
commit
beb96bcb50
30 changed files with 439 additions and 76 deletions
  1. +9
    -0
      CHANGELOG.md
  2. +1
    -1
      README.md
  3. +1
    -1
      forms.php
  4. +9
    -12
      package-lock.json
  5. +1
    -1
      package.json
  6. +99
    -2
      src/assets/scripts/app.js
  7. +17
    -16
      src/assets/scripts/fullcalendar/index.js
  8. +1
    -1
      src/assets/scripts/index.js
  9. +242
    -0
      src/assets/scripts/utils/date.js
  10. +7
    -0
      src/assets/static/images/logo-circle.svg
  11. +13
    -0
      src/assets/static/images/logo-gradient.svg
  12. +7
    -0
      src/assets/static/images/logo-outline.svg
  13. +5
    -1
      src/assets/static/images/logo.svg
  14. +6
    -0
      src/assets/styles/spec/components/sidebar.scss
  15. +2
    -2
      src/basic-table.html
  16. +1
    -1
      src/blank.html
  17. +1
    -1
      src/buttons.html
  18. +3
    -3
      src/calendar.html
  19. +1
    -1
      src/charts.html
  20. +1
    -1
      src/chat.html
  21. +1
    -1
      src/compose.html
  22. +1
    -1
      src/datatable.html
  23. +1
    -21
      src/email.html
  24. +2
    -2
      src/forms.html
  25. +1
    -1
      src/google-maps.html
  26. +2
    -2
      src/index.html
  27. +1
    -1
      src/signin.html
  28. +1
    -1
      src/signup.html
  29. +1
    -1
      src/ui.html
  30. +1
    -1
      src/vector-maps.html

+ 9
- 0
CHANGELOG.md View File

@ -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)


+ 1
- 1
README.md View File

@ -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


+ 1
- 1
forms.php View File

@ -607,7 +607,7 @@
<div class="input-group-text bgc-white bd bdwR-0">
<i class="ti-calendar"></i>
</div>
<input type="text" class="form-control bdc-grey-200 start-date" placeholder="Datepicker" data-provide="datepicker">
<input type="text" class="form-control bdc-grey-200 start-date" placeholder="Select Date">
</div>
</div>
</div>


+ 9
- 12
package-lock.json View File

@ -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",


+ 1
- 1
package.json View File

@ -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"
}


+ 99
- 2
src/assets/scripts/app.js View File

@ -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');
});
});
}
/**


+ 17
- 16
src/assets/scripts/fullcalendar/index.js View File

@ -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'),
},
],
});


+ 1
- 1
src/assets/scripts/index.js View File

@ -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)


+ 242
- 0
src/assets/scripts/utils/date.js View File

@ -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;

+ 7
- 0
src/assets/static/images/logo-circle.svg View File

@ -0,0 +1,7 @@
<svg width="64" height="64" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Adminator circle logo icon">
<title>Adminator Logo – Circle</title>
<!-- Circular background -->
<circle cx="32" cy="32" r="30" fill="#4B7CF3" />
<!-- Stylised "A" -->
<path d="M20 46L32 18l12 28h-6l-3-7H29l-3 7h-6zm13-11l-4-10-4 10h8z" fill="#FFFFFF" />
</svg>

+ 13
- 0
src/assets/static/images/logo-gradient.svg View File

@ -0,0 +1,13 @@
<svg width="64" height="64" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Adminator gradient logo icon">
<title>Adminator Logo – Gradient</title>
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#4B7CF3;stop-opacity:1" />
<stop offset="100%" style="stop-color:#7B4BF3;stop-opacity:1" />
</linearGradient>
</defs>
<!-- Rounded square background with gradient -->
<rect width="64" height="64" rx="12" fill="url(#grad)" />
<!-- Stylised "A" -->
<path d="M20 46L32 18l12 28h-6l-3-7H29l-3 7h-6zm13-11l-4-10-4 10h8z" fill="#FFFFFF" />
</svg>

+ 7
- 0
src/assets/static/images/logo-outline.svg View File

@ -0,0 +1,7 @@
<svg width="64" height="64" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Adminator outline logo icon">
<title>Adminator Logo – Outline</title>
<!-- Hexagon outline -->
<polygon points="32 4 56 18 56 46 32 60 8 46 8 18" fill="none" stroke="#4B7CF3" stroke-width="4" />
<!-- Stylised "A" -->
<path d="M20 44L32 18l12 26h-6l-3-6H29l-3 6h-6zm13-10l-4-9-4 9h8z" fill="#4B7CF3" />
</svg>

+ 5
- 1
src/assets/static/images/logo.svg View File

@ -1 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 3388.25 3014.2"><title>react-1</title><circle cx="1694.17" cy="1504.25" r="302.6" fill="#fff"/><path d="M1806.5,1191.9c406.2,0,783.6,58.3,1068.1,156.2,342.8,118,553.6,296.9,553.6,458.9,0,168.8-223.4,358.9-591.5,480.8-278.3,92.2-644.6,140.4-1030.2,140.4-395.4,0-769.7-45.2-1051.2-141.4C399.2,2165.1,184.7,1972.6,184.7,1807c0-160.7,201.3-338.2,539.3-456,285.6-99.5,672.3-159.1,1082.5-159.1Z" transform="translate(-112.33 -302.85)" fill="none" stroke="#fff" stroke-miterlimit="10" stroke-width="144.75"/><path d="M1271,1501.3c202.9-351.9,442-649.7,669-847.2,273.5-238,533.8-331.2,674.1-250.3,146.2,84.3,199.3,372.8,121,752.7-59.2,287.2-200.4,628.5-393.1,962.6-197.5,342.5-423.7,644.2-647.6,840-283.3,247.7-557.3,337.3-700.7,254.6-139.2-80.3-192.4-343.3-125.7-695,56.4-297.4,198-662.1,403-1017.4Z" transform="translate(-112.33 -302.85)" fill="none" stroke="#fff" stroke-miterlimit="10" stroke-width="144.75"/><path d="M1271.5,2119.8C1068,1768.2,929.4,1412.4,871.6,1117.1c-69.6-355.8-20.4-627.9,119.8-709,146.1-84.6,422.5,13.5,712.5,271,219.3,194.7,444.4,487.5,637.6,821.3,198.1,342.2,346.6,688.8,404.3,980.5,73.1,369.2,13.9,651.3-129.4,734.2-139.1,80.5-393.5-4.7-664.9-238.2-229.2-197.3-474.5-502.1-680-857.1Z" transform="translate(-112.33 -302.85)" fill="none" stroke="#fff" stroke-miterlimit="10" stroke-width="144.75"/></svg>
<?xml version="1.0" encoding="utf-8"?>
<svg width="800px" height="800px" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="colorlib adminator" preserveAspectRatio="xMidYMid meet">
<path fill="#3B88C3" d="M36 32a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4h28a4 4 0 0 1 4 4v28z"/>
<path fill="#FFF" d="M14.747 9.125c.527-1.426 1.736-2.573 3.317-2.573c1.643 0 2.792 1.085 3.318 2.573l6.077 16.867c.186.496.248.931.248 1.147c0 1.209-.992 2.046-2.139 2.046c-1.303 0-1.954-.682-2.264-1.611l-.931-2.915h-8.62l-.93 2.884c-.31.961-.961 1.642-2.232 1.642c-1.24 0-2.294-.93-2.294-2.17c0-.496.155-.868.217-1.023l6.233-16.867zm.34 11.256h5.891l-2.883-8.992h-.062l-2.946 8.992z"/>
</svg>

+ 6
- 0
src/assets/styles/spec/components/sidebar.scss View File

@ -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 {


+ 2
- 2
src/basic-table.html View File

@ -99,7 +99,7 @@
<div class="peers ai-c fxw-nw">
<div class="peer">
<div class="logo">
<img src="assets/static/images/logo.png" alt="">
<img src="assets/static/images/logo.svg" alt="">
</div>
</div>
<div class="peer peer-greed">
@ -521,7 +521,7 @@
<div class="col-md-12">
<div class="bgc-white bd bdrs-3 p-20 mB-20">
<h4 class="c-grey-900 mB-20">Simple Table</h4>
<p>Using the most basic table markup, heres how <code class="highlighter-rouge">.table</code>-based tables look in Bootstrap. <strong>All table styles are inherited in Bootstrap 5</strong>, meaning any nested tables will be styled in the same manner as the parent.</p>
<p>Using the most basic table markup, here's how <code class="highlighter-rouge">.table</code>-based tables look in Bootstrap. <strong>All table styles are inherited in Bootstrap 5</strong>, meaning any nested tables will be styled in the same manner as the parent.</p>
<table class="table">
<thead>
<tr>


+ 1
- 1
src/blank.html View File

@ -99,7 +99,7 @@
<div class="peers ai-c fxw-nw">
<div class="peer">
<div class="logo">
<img src="assets/static/images/logo.png" alt="">
<img src="assets/static/images/logo.svg" alt="">
</div>
</div>
<div class="peer peer-greed">


+ 1
- 1
src/buttons.html View File

@ -49,7 +49,7 @@
<div class="peers ai-c fxw-nw">
<div class="peer">
<div class="logo">
<img src="assets/static/images/logo.png" alt="">
<img src="assets/static/images/logo.svg" alt="">
</div>
</div>
<div class="peer peer-greed">


+ 3
- 3
src/calendar.html View File

@ -99,7 +99,7 @@
<div class="peers ai-c fxw-nw">
<div class="peer">
<div class="logo">
<img src="assets/static/images/logo.png" alt="">
<img src="assets/static/images/logo.svg" alt="">
</div>
</div>
<div class="peer peer-greed">
@ -660,7 +660,7 @@
<div class="input-group-text bgc-white bd bdwR-0">
<i class="ti-calendar"></i>
</div>
<input type="text" class="form-control bdc-grey-200 start-date" placeholder="Datepicker" data-provide="datepicker">
<input type="text" class="form-control bdc-grey-200 start-date" placeholder="Start Date">
</div>
</div>
</div>
@ -671,7 +671,7 @@
<div class="input-group-text bgc-white bd bdwR-0">
<i class="ti-calendar"></i>
</div>
<input type="text" class="form-control bdc-grey-200 end-date" placeholder="Datepicker" data-provide="datepicker">
<input type="text" class="form-control bdc-grey-200 end-date" placeholder="End Date">
</div>
</div>
</div>


+ 1
- 1
src/charts.html View File

@ -99,7 +99,7 @@
<div class="peers ai-c fxw-nw">
<div class="peer">
<div class="logo">
<img src="assets/static/images/logo.png" alt="">
<img src="assets/static/images/logo.svg" alt="">
</div>
</div>
<div class="peer peer-greed">


+ 1
- 1
src/chat.html View File

@ -99,7 +99,7 @@
<div class="peers ai-c fxw-nw">
<div class="peer">
<div class="logo">
<img src="assets/static/images/logo.png" alt="">
<img src="assets/static/images/logo.svg" alt="">
</div>
</div>
<div class="peer peer-greed">


+ 1
- 1
src/compose.html View File

@ -99,7 +99,7 @@
<div class="peers ai-c fxw-nw">
<div class="peer">
<div class="logo">
<img src="assets/static/images/logo.png" alt="">
<img src="assets/static/images/logo.svg" alt="">
</div>
</div>
<div class="peer peer-greed">


+ 1
- 1
src/datatable.html View File

@ -100,7 +100,7 @@
<div class="peers ai-c fxw-nw">
<div class="peer">
<div class="logo">
<img src="assets/static/images/logo.png" alt="">
<img src="assets/static/images/logo.svg" alt="">
</div>
</div>
<div class="peer peer-greed">


+ 1
- 21
src/email.html View File

@ -99,7 +99,7 @@
<div class="peers ai-c fxw-nw">
<div class="peer">
<div class="logo">
<img src="assets/static/images/logo.png" alt="">
<img src="assets/static/images/logo.svg" alt="">
</div>
</div>
<div class="peer peer-greed">
@ -887,26 +887,6 @@
<span class="whs-nw w-100 ov-h tov-e d-b">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod</span>
</div>
</div>
<div class="email-list-item peers fxw-nw p-20 bdB bgcH-grey-100 cur-p">
<div class="peer mR-10">
<div class="checkbox checkbox-circle checkbox-info peers ai-c">
<input type="checkbox" id="inputCall1" name="inputCheckboxesCall" class="peer">
<label for="inputCall1" class="form-label peers peer-greed js-sb ai-c"></label>
</div>
</div>
<div class="peer peer-greed ov-h">
<div class="peers ai-c">
<div class="peer peer-greed">
<h6>John Doe</h6>
</div>
<div class="peer">
<small>1 min ago</small>
</div>
</div>
<h5 class="fsz-def tt-c c-grey-900">title goes here</h5>
<span class="whs-nw w-100 ov-h tov-e d-b">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod</span>
</div>
</div>
</div>
</div>
</div>


+ 2
- 2
src/forms.html View File

@ -99,7 +99,7 @@
<div class="peers ai-c fxw-nw">
<div class="peer">
<div class="logo">
<img src="assets/static/images/logo.png" alt="">
<img src="assets/static/images/logo.svg" alt="">
</div>
</div>
<div class="peer peer-greed">
@ -590,7 +590,7 @@
<div class="input-group-text bgc-white bd bdwR-0">
<i class="ti-calendar"></i>
</div>
<input type="text" class="form-control bdc-grey-200 start-date" placeholder="Datepicker" data-provide="datepicker">
<input type="text" class="form-control bdc-grey-200 start-date" placeholder="Select Date">
</div>
</div>
</div>


+ 1
- 1
src/google-maps.html View File

@ -99,7 +99,7 @@
<div class="peers ai-c fxw-nw">
<div class="peer">
<div class="logo">
<img src="assets/static/images/logo.png" alt="">
<img src="assets/static/images/logo.svg" alt="">
</div>
</div>
<div class="peer peer-greed">


+ 2
- 2
src/index.html View File

@ -98,7 +98,7 @@
<div class="peers ai-c fxw-nw">
<div class="peer">
<div class="logo">
<img src="assets/static/images/logo.png" alt="">
<img src="assets/static/images/logo.svg" alt="">
</div>
</div>
<div class="peer peer-greed">
@ -905,7 +905,7 @@
<h5 class="mB-5">Monday</h5>
</div>
<div class="layer">
<span class="fw-600 c-grey-600">Nov, 01 2024</span>
<span class="fw-600 c-grey-600">Nov, 01 2032</span>
</div>
</div>
</div>


+ 1
- 1
src/signin.html View File

@ -70,7 +70,7 @@
<div class="d-n@sm- peer peer-greed h-100 pos-r bgr-n bgpX-c bgpY-c bgsz-cv" style='background-image: url("assets/static/images/bg.jpg")'>
<div class="pos-a centerXY">
<div class="bgc-white bdrs-50p pos-r" style='width: 120px; height: 120px;'>
<img class="pos-a centerXY" src="assets/static/images/logo.png" alt="">
<img class="pos-a centerXY" src="assets/static/images/logo.svg" alt="">
</div>
</div>
</div>


+ 1
- 1
src/signup.html View File

@ -70,7 +70,7 @@
<div class="peer peer-greed h-100 pos-r bgr-n bgpX-c bgpY-c bgsz-cv" style='background-image: url("assets/static/images/bg.jpg")'>
<div class="pos-a centerXY">
<div class="bgc-white bdrs-50p pos-r" style='width: 120px; height: 120px;'>
<img class="pos-a centerXY" src="assets/static/images/logo.png" alt="">
<img class="pos-a centerXY" src="assets/static/images/logo.svg" alt="">
</div>
</div>
</div>


+ 1
- 1
src/ui.html View File

@ -99,7 +99,7 @@
<div class="peers ai-c fxw-nw">
<div class="peer">
<div class="logo">
<img src="assets/static/images/logo.png" alt="">
<img src="assets/static/images/logo.svg" alt="">
</div>
</div>
<div class="peer peer-greed">


+ 1
- 1
src/vector-maps.html View File

@ -99,7 +99,7 @@
<div class="peers ai-c fxw-nw">
<div class="peer">
<div class="logo">
<img src="assets/static/images/logo.png" alt="">
<img src="assets/static/images/logo.svg" alt="">
</div>
</div>
<div class="peer peer-greed">


Loading…
Cancel
Save