initial commit
This commit is contained in:
58
resources/js/plugins/axios.js
Normal file
58
resources/js/plugins/axios.js
Normal file
@@ -0,0 +1,58 @@
|
||||
import router from '@/router'
|
||||
import axios from 'axios'
|
||||
|
||||
const axiosIns = axios.create({
|
||||
// You can add your headers here
|
||||
// ================================
|
||||
// baseURL: 'https://some-domain.com/api/',
|
||||
// timeout: 1000,
|
||||
// headers: {'X-Custom-Header': 'foobar'}
|
||||
})
|
||||
|
||||
|
||||
// ℹ️ Add request interceptor to send the authorization header on each subsequent request after login
|
||||
axiosIns.interceptors.request.use(config => {
|
||||
// Retrieve token from localStorage
|
||||
const token = localStorage.getItem('access_token')
|
||||
|
||||
// If token is found
|
||||
if (token) {
|
||||
// Get request headers and if headers is undefined assign blank object
|
||||
config.headers = config.headers || {}
|
||||
|
||||
// Set authorization header
|
||||
// ℹ️ JSON.parse will convert token to string
|
||||
config.headers.Authorization = token ? `Bearer ${token}` : ''
|
||||
}
|
||||
|
||||
// Return modified config
|
||||
return config
|
||||
})
|
||||
|
||||
// ℹ️ Add response interceptor to handle 401 response
|
||||
axiosIns.interceptors.response.use(response => {
|
||||
return response
|
||||
}, error => {
|
||||
// Handle error
|
||||
if (error.response.status === 401) {
|
||||
// ℹ️ Logout user and redirect to login page
|
||||
// Remove "userData" from localStorage
|
||||
localStorage.removeItem('userData')
|
||||
|
||||
// Remove "accessToken" from localStorage
|
||||
localStorage.removeItem('access_token')
|
||||
localStorage.removeItem('userAbilities')
|
||||
|
||||
// If 401 response returned from api
|
||||
|
||||
if (requestedUrl.pathname === '/provider/login') {
|
||||
router.push('/provider/login');
|
||||
} else if (requestedUrl.pathname === '/login') {
|
||||
router.push('/login');
|
||||
}
|
||||
}
|
||||
else {
|
||||
return Promise.reject(error)
|
||||
}
|
||||
})
|
||||
export default axiosIns
|
3
resources/js/plugins/casl/AppAbility.js
Normal file
3
resources/js/plugins/casl/AppAbility.js
Normal file
@@ -0,0 +1,3 @@
|
||||
import { Ability } from '@casl/ability'
|
||||
|
||||
export const AppAbility = Ability
|
16
resources/js/plugins/casl/ability.js
Normal file
16
resources/js/plugins/casl/ability.js
Normal file
@@ -0,0 +1,16 @@
|
||||
import { Ability } from '@casl/ability'
|
||||
|
||||
export const initialAbility = [
|
||||
{
|
||||
action: 'read',
|
||||
subject: 'Auth',
|
||||
},
|
||||
]
|
||||
|
||||
// Read ability from localStorage
|
||||
// 👉 Handles auto fetching previous abilities if already logged in user
|
||||
// ℹ️ You can update this if you store user abilities to more secure place
|
||||
// ❗ Anyone can update localStorage so be careful and please update this
|
||||
const stringifiedUserAbilities = localStorage.getItem('userAbilities')
|
||||
const existingAbility = stringifiedUserAbilities ? JSON.parse(stringifiedUserAbilities) : null
|
||||
export default new Ability(existingAbility || initialAbility)
|
3
resources/js/plugins/casl/useAppAbility.js
Normal file
3
resources/js/plugins/casl/useAppAbility.js
Normal file
@@ -0,0 +1,3 @@
|
||||
import { useAbility } from '@casl/vue'
|
||||
|
||||
export const useAppAbility = () => useAbility()
|
72
resources/js/plugins/custom.js
Normal file
72
resources/js/plugins/custom.js
Normal file
@@ -0,0 +1,72 @@
|
||||
import { ref } from 'vue'
|
||||
|
||||
export default function myPlugin() {
|
||||
return {
|
||||
apply: 'RadiogroupElement',
|
||||
setup(props, context, component) {
|
||||
const myRef = ref(null)
|
||||
console.log('component',component.form$.value,context)
|
||||
|
||||
const disqualifyValues = context?.attrs?.disqualify?.split(',').map(val => val.trim()) || []
|
||||
console.log('Disqualify Values:', disqualifyValues)
|
||||
|
||||
const radioValue = ref(component.value)
|
||||
|
||||
// Watch the value of the radio group
|
||||
watch(radioValue, (newValue) => {
|
||||
if (!disqualifyValues.includes(newValue)) {
|
||||
console.log('Selected value is not disqualified:', newValue)
|
||||
myRef.value = `Selected value: ${newValue}`
|
||||
} else {
|
||||
console.log('Selected value is disqualified:', newValue)
|
||||
myRef.value = 'This option is disqualified'
|
||||
console.log('component element',component.form$.value.$el)
|
||||
component.form$.value.$el.setAttribute('disqualify',true)
|
||||
// context.emit('handleDisqualifyStep')
|
||||
}
|
||||
})
|
||||
|
||||
watch(() => component.value, (newValue) => {
|
||||
radioValue.value = newValue
|
||||
})
|
||||
|
||||
// const checkDisqualification = () => {
|
||||
// if (disqualifyValues.includes(radioValue.value)) {
|
||||
// console.log('Selected value is disqualified:', radioValue.value)
|
||||
// myRef.value = 'This option is disqualified'
|
||||
|
||||
// // Navigate to the disqualification step
|
||||
// if (context.$emit) {
|
||||
// context.$emit('go-to-step', 'disqualification')
|
||||
// }
|
||||
// } else {
|
||||
// console.log('Selected value is not disqualified:', radioValue.value)
|
||||
// myRef.value = `Selected value: ${radioValue.value}`
|
||||
// }
|
||||
// }
|
||||
|
||||
// const handleNextStep = () => {
|
||||
// checkDisqualification()
|
||||
// }
|
||||
|
||||
// // Watch the form submission or next button click event
|
||||
// onMounted(() => {
|
||||
// component.on('next-step', handleNextStep)
|
||||
// })
|
||||
|
||||
// onBeforeUnmount(() => {
|
||||
// component.off('next-step', handleNextStep)
|
||||
// })
|
||||
|
||||
// // Update the radioValue when component.value changes
|
||||
// watch(() => component.value, (newValue) => {
|
||||
// radioValue.value = newValue
|
||||
// })
|
||||
|
||||
return {
|
||||
...component,
|
||||
myRef,
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
12
resources/js/plugins/i18n/index.js
Normal file
12
resources/js/plugins/i18n/index.js
Normal file
@@ -0,0 +1,12 @@
|
||||
import { createI18n } from 'vue-i18n'
|
||||
|
||||
const messages = Object.fromEntries(Object.entries(
|
||||
import.meta.glob('./locales/*.json', { eager: true }))
|
||||
.map(([key, value]) => [key.slice(10, -5), value.default]))
|
||||
|
||||
export default createI18n({
|
||||
legacy: false,
|
||||
locale: 'en',
|
||||
fallbackLocale: 'en',
|
||||
messages,
|
||||
})
|
157
resources/js/plugins/i18n/locales/ar.json
Normal file
157
resources/js/plugins/i18n/locales/ar.json
Normal file
@@ -0,0 +1,157 @@
|
||||
{
|
||||
"UI Elements": "عناصر واجهة المستخدم",
|
||||
"Forms & Tables": "النماذج والجداول",
|
||||
"Pages": "الصفحات",
|
||||
"Charts & Maps": "الرسوم البيانية والخرائط",
|
||||
"Others": "آحرون",
|
||||
"Typography": "الطباعة",
|
||||
"Cards": "البطاقات",
|
||||
"Basic": "أساسي",
|
||||
"Advance": "يتقدم",
|
||||
"Widgets": "الحاجيات",
|
||||
"Actions": "أجراءات",
|
||||
"Components": "عناصر",
|
||||
"Alert": "انذار",
|
||||
"Avatar": "الصورة الرمزية",
|
||||
"Badge": "شارة",
|
||||
"Button": "زر",
|
||||
"Calendar": "تقويم",
|
||||
"Image": "صورة",
|
||||
"Pagination": "ترقيم الصفحات",
|
||||
"Progress Circular": "تقدم التعميم",
|
||||
"Progress Linear": "تقدم خطي",
|
||||
"Autocomplete": "الإكمال التلقائي",
|
||||
"Tooltip": "تلميح",
|
||||
"Slider": "المنزلق",
|
||||
"Date Time Picker": "منتقي التاريخ والوقت",
|
||||
"Select": "يختار",
|
||||
"Switch": "يُحوّل",
|
||||
"Checkbox": "خانة اختيار",
|
||||
"Radio": "مذياع",
|
||||
"Textarea": "تيكستاريا",
|
||||
"Rating": "تقييم",
|
||||
"File Input": "إدخال الملف",
|
||||
"Form Layout": "تخطيط النموذج",
|
||||
"Form Validation": "التحقق من صحة النموذج",
|
||||
"Charts": "الرسوم البيانية",
|
||||
"Apex Chart": "مخطط أبيكس",
|
||||
"Chartjs": "تشارتجس",
|
||||
"Account Settings": "إعدادت الحساب",
|
||||
"User Profile": "ملف تعريفي للمستخدم",
|
||||
"FAQ": "التعليمات",
|
||||
"Dialog Examples": "أمثلة على الحوار",
|
||||
"Pricing": "التسعير",
|
||||
"List": "قائمة",
|
||||
"Edit": "يحرر",
|
||||
"Nav Levels": "مستويات التنقل",
|
||||
"Level 2.1": "المستوى 2.1",
|
||||
"Level 2.2": "مستوى 2.2",
|
||||
"Level 3.1": "المستوى 3.1",
|
||||
"Level 3.2": "المستوى 3.2",
|
||||
"Raise Support": "رفع الدعم",
|
||||
"Documentation": "توثيق",
|
||||
"Dashboards": "لوحات القيادة",
|
||||
"Apps & Pages": "التطبيقات والصفحات",
|
||||
"Email": "البريد الإلكتروني",
|
||||
"Chat": "دردشة",
|
||||
"Invoice": "فاتورة",
|
||||
"Preview": "معاينة",
|
||||
"Add": "يضيف",
|
||||
"User": "المستعمل",
|
||||
"View": "رأي",
|
||||
"Login v1": "تسجيل الدخول v1",
|
||||
"Login v2": "تسجيل الدخول v2",
|
||||
"Login": "تسجيل الدخول",
|
||||
"Register v1": "تسجيل v1",
|
||||
"Register v2": "تسجيل v2",
|
||||
"Register": "تسجيل",
|
||||
"Forget Password v1": "نسيت كلمة المرور v1",
|
||||
"Forget Password v2": "نسيت كلمة المرور v2",
|
||||
"Forgot Password v1": "نسيت كلمة المرور v1",
|
||||
"Forgot Password v2": "نسيت كلمة المرور v2",
|
||||
"Forgot Password": "نسيت كلمة المرور",
|
||||
"Reset Password v1": "إعادة تعيين كلمة المرور v1",
|
||||
"Reset Password v2": "إعادة تعيين كلمة المرور v2",
|
||||
"Reset Password": "إعادة تعيين كلمة المرور",
|
||||
"Miscellaneous": "متفرقات",
|
||||
"Coming Soon": "قريبا",
|
||||
"Not Authorized": "غير مخول",
|
||||
"Under Maintenance": "تحت الصيانة",
|
||||
"Error": "خطأ",
|
||||
"Statistics": "إحصائيات",
|
||||
"Analytics": "تحليلات",
|
||||
"Access Control": "صلاحية التحكم صلاحية الدخول",
|
||||
"User Interface": "واجهة المستخدم",
|
||||
"CRM": "سي آر إم",
|
||||
"Icons": "أيقونات",
|
||||
"Chip": "رقاقة",
|
||||
"Dialog": "حوار",
|
||||
"Expansion Panel": "لوحة التوسع",
|
||||
"Combobox": "صندوق التحرير",
|
||||
"Textfield": "مجال التحرير مكان كتابة النص",
|
||||
"Range Slider": "نطاق المنزلق",
|
||||
"Menu": "قائمة الطعام",
|
||||
"Snackbar": "مطعم الوجبات الخفيفة",
|
||||
"Tabs": "نوافذ التبويب",
|
||||
"Form Elements": "عناصر النموذج",
|
||||
"Form Layouts": "تخطيطات النموذج",
|
||||
"Authentication": "المصادقة",
|
||||
"Page Not Found - 404": "الصفحة غير موجودة - 404",
|
||||
"Not Authorized - 401": "غير مصرح - 401",
|
||||
"Server Error - 500": "خطأ في الخادم - 500",
|
||||
"2": "2",
|
||||
"Forms": "نماذج",
|
||||
"Timeline": "الجدول الزمني",
|
||||
"Disabled Menu": "قائمة المعوقين",
|
||||
"Help Center": "مركز المساعدة",
|
||||
"Verify Email": "التحقق من البريد الإلكتروني",
|
||||
"Verify Email v1": "تحقق من البريد الإلكتروني v1",
|
||||
"Verify Email v2": "تحقق من البريد الإلكتروني v2",
|
||||
"Two Steps": "خطوتين",
|
||||
"Two Steps v1": "خطوتين v1.0",
|
||||
"Two Steps v2": "خطوتين v2.0",
|
||||
"Custom Input": "إدخال مخصص",
|
||||
"Extensions": "ملحقات",
|
||||
"Tour": "رحلة",
|
||||
"Register Multi-Steps": "تسجيل خطوات متعددة",
|
||||
"Wizard Examples": "أمثلة المعالج",
|
||||
"Checkout": "الدفع",
|
||||
"Create Deal": "إنشاء صفقة",
|
||||
"Property Listing": "قائمة الممتلكات ",
|
||||
"Roles & Permissions": "الأدوار والأذونات",
|
||||
"Roles": "الأدوار",
|
||||
"Permissions": "الأذونات",
|
||||
"Simple Table": "جدول بسيط",
|
||||
"Tables": "الجداول",
|
||||
"DataTable": "جدول البيانات",
|
||||
"Apps": "التطبيقات",
|
||||
"Misc": "متفرقات",
|
||||
"Wizard Pages": "صفحات المعالج",
|
||||
"eCommerce": "التجارة الإلكترونية",
|
||||
"3": "3",
|
||||
"$vuetify": {
|
||||
"badge": "شارة",
|
||||
"pagination": {
|
||||
"ariaLabel": {
|
||||
"root": "جذر",
|
||||
"previous": "السابق",
|
||||
"next": "التالي",
|
||||
"currentPage": "الصفحه الحاليه",
|
||||
"page": "صفحة"
|
||||
}
|
||||
},
|
||||
"input": {
|
||||
"clear": "صافي",
|
||||
"appendAction": "إلحاق الإجراء",
|
||||
"prependAction": "قبل العمل"
|
||||
},
|
||||
"fileInput": {
|
||||
"counterSize": "حجم العداد"
|
||||
},
|
||||
"rating": {
|
||||
"ariaLabel": {
|
||||
"item": "العنصر"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
158
resources/js/plugins/i18n/locales/en.json
Normal file
158
resources/js/plugins/i18n/locales/en.json
Normal file
@@ -0,0 +1,158 @@
|
||||
{
|
||||
"UI Elements": "UI Elements",
|
||||
"Forms & Tables": "Forms & Tables",
|
||||
"Pages": "Pages",
|
||||
"Charts & Maps": "Charts & Maps",
|
||||
"Others": "Others",
|
||||
"Typography": "Typography",
|
||||
"Cards": "Cards",
|
||||
"Basic": "Basic",
|
||||
"Advance": "Advance",
|
||||
"Widgets": "Widgets",
|
||||
"Components": "Components",
|
||||
"Alert": "Alert",
|
||||
"Avatar": "Avatar",
|
||||
"Badge": "Badge",
|
||||
"Button": "Button",
|
||||
"Calendar": "Calendar",
|
||||
"Image": "Image",
|
||||
"Pagination": "Pagination",
|
||||
"Progress Circular": "Progress Circular",
|
||||
"Progress Linear": "Progress Linear",
|
||||
"Autocomplete": "Autocomplete",
|
||||
"Tooltip": "Tooltip",
|
||||
"Slider": "Slider",
|
||||
"Date Time Picker": "Date Time Picker",
|
||||
"Select": "Select",
|
||||
"Switch": "Switch",
|
||||
"Checkbox": "Checkbox",
|
||||
"Radio": "Radio",
|
||||
"Textarea": "Textarea",
|
||||
"Rating": "Rating",
|
||||
"File Input": "File Input",
|
||||
"Form Layout": "Form Layout",
|
||||
"Form Validation": "Form Validation",
|
||||
"Charts": "Charts",
|
||||
"Apex Chart": "Apex Chart",
|
||||
"Chartjs": "Chartjs",
|
||||
"Account Settings": "Account Settings",
|
||||
"User Profile": "User Profile",
|
||||
"FAQ": "FAQ",
|
||||
"Dialog Examples": "Dialog Examples",
|
||||
"Pricing": "Pricing",
|
||||
"List": "List",
|
||||
"Edit": "Edit",
|
||||
"Nav Levels": "Nav Levels",
|
||||
"Level 2.1": "Level 2.1",
|
||||
"Level 2.2": "Level 2.2",
|
||||
"Level 3.1": "Level 3.1",
|
||||
"Level 3.2": "Level 3.2",
|
||||
"Raise Support": "Raise Support",
|
||||
"Documentation": "Documentation",
|
||||
"Dashboards": "Dashboards",
|
||||
"Analytics": "Analytics",
|
||||
"Apps & Pages": "Apps & Pages",
|
||||
"Email": "Email",
|
||||
"Chat": "Chat",
|
||||
"Invoice": "Invoice",
|
||||
"Preview": "Preview",
|
||||
"Add": "Add",
|
||||
"User": "User",
|
||||
"View": "View",
|
||||
"Login v1": "Login v1",
|
||||
"Login v2": "Login v2",
|
||||
"Login": "Login",
|
||||
"Register v1": "Register v1",
|
||||
"Register v2": "Register v2",
|
||||
"Register": "Register",
|
||||
"Forget Password v1": "Forget Password v1",
|
||||
"Forget Password v2": "Forget Password v2",
|
||||
"Forgot Password v1": "Forgot Password v1",
|
||||
"Forgot Password v2": "Forgot Password v2",
|
||||
"Forgot Password": "Forgot Password",
|
||||
"Reset Password v1": "Reset Password v1",
|
||||
"Reset Password v2": "Reset Password v2",
|
||||
"Reset Password": "Reset Password",
|
||||
"Miscellaneous": "Miscellaneous",
|
||||
"Coming Soon": "Coming Soon",
|
||||
"Not Authorized": "Not Authorized",
|
||||
"Under Maintenance": "Under Maintenance",
|
||||
"Error": "Error",
|
||||
"Statistics": "Statistics",
|
||||
"Actions": "Actions",
|
||||
"Access Control": "Access Control",
|
||||
"User Interface": "User Interface",
|
||||
"CRM": "CRM",
|
||||
"eCommerce": "eCommerce",
|
||||
"Icons": "Icons",
|
||||
"Chip": "Chip",
|
||||
"Dialog": "Dialog",
|
||||
"Expansion Panel": "Expansion Panel",
|
||||
"Combobox": "Combobox",
|
||||
"Textfield": "Textfield",
|
||||
"Range Slider": "Range Slider",
|
||||
"Menu": "Menu",
|
||||
"Snackbar": "Snackbar",
|
||||
"Tabs": "Tabs",
|
||||
"Form Elements": "Form Elements",
|
||||
"Form Layouts": "Form Layouts",
|
||||
"Authentication": "Authentication",
|
||||
"Page Not Found - 404": "Page Not Found - 404",
|
||||
"Not Authorized - 401": "Not Authorized - 401",
|
||||
"Server Error - 500": "Server Error - 500",
|
||||
"2": "2",
|
||||
"Forms": "Forms",
|
||||
"Timeline": "Timeline",
|
||||
"Disabled Menu": "Disabled Menu",
|
||||
"Help Center": "Help Center",
|
||||
"Verify Email": "Verify Email",
|
||||
"Verify Email v1": "Verify Email v1",
|
||||
"Verify Email v2": "Verify Email v2",
|
||||
"Two Steps": "Two Steps",
|
||||
"Two Steps v1": "Two Steps v1",
|
||||
"Two Steps v2": "Two Steps v2",
|
||||
"Custom Input": "Custom Input",
|
||||
"Extensions": "Extensions",
|
||||
"Tour": "Tour",
|
||||
"Register Multi-Steps": "Register Multi-Steps",
|
||||
"Wizard Examples": "Wizard Examples",
|
||||
"Checkout": "Checkout",
|
||||
"Create Deal": "Create Deal",
|
||||
"Property Listing": "Property Listing",
|
||||
"Roles & Permissions": "Roles & Permissions",
|
||||
"Roles": "Roles",
|
||||
"Simple Table": "Simple Table",
|
||||
"Tables": "Tables",
|
||||
"Data Table": "Data Table",
|
||||
"Permissions": "Permissions",
|
||||
"Apps": "Apps",
|
||||
"Misc": "Misc",
|
||||
"Wizard Pages": "Wizard Pages",
|
||||
"3": "3",
|
||||
"$vuetify": {
|
||||
"badge": "Badge",
|
||||
"pagination": {
|
||||
"ariaLabel": {
|
||||
"root": "root",
|
||||
"previous": "previous",
|
||||
"next": "next",
|
||||
"currentPage": "currentPage",
|
||||
"page": "page"
|
||||
}
|
||||
},
|
||||
"input": {
|
||||
"clear": "clear",
|
||||
"appendAction": "appendAction",
|
||||
"prependAction": "prependAction",
|
||||
"counterSize": "counterSize"
|
||||
},
|
||||
"fileInput": {
|
||||
"counterSize": "counterSize"
|
||||
},
|
||||
"rating": {
|
||||
"ariaLabel": {
|
||||
"item": "item"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
159
resources/js/plugins/i18n/locales/fr.json
Normal file
159
resources/js/plugins/i18n/locales/fr.json
Normal file
@@ -0,0 +1,159 @@
|
||||
{
|
||||
"UI Elements": "ÉLÉMENTS DE L'UI",
|
||||
"Forms & Tables": "Formulaires et tableaux",
|
||||
"Pages": "Des pages",
|
||||
"Charts & Maps": "Graphiques et cartes",
|
||||
"Others": "Autres",
|
||||
"Typography": "Typographie",
|
||||
"Cards": "Cartes",
|
||||
"Basic": "De base",
|
||||
"Advance": "Avance",
|
||||
"Widgets": "Widget",
|
||||
"Card Action": "Action de la carte",
|
||||
"Components": "Composants",
|
||||
"Alert": "Alerte",
|
||||
"Avatar": "Avatar",
|
||||
"Badge": "Badge",
|
||||
"Button": "Bouton",
|
||||
"Calendar": "Calendrier",
|
||||
"Image": "Image",
|
||||
"Pagination": "Pagination",
|
||||
"Progress Circular": "Progrès circulaire",
|
||||
"Progress Linear": "Progrès Linéaire",
|
||||
"Autocomplete": "Saisie automatique",
|
||||
"Tooltip": "Info-bulle",
|
||||
"Slider": "Glissière",
|
||||
"Date Time Picker": "Sélecteur de date et d'heure",
|
||||
"Select": "Sélectionner",
|
||||
"Switch": "Commutateur",
|
||||
"Checkbox": "Case à cocher",
|
||||
"Radio": "Radio",
|
||||
"Textarea": "Textarea",
|
||||
"Rating": "Évaluation",
|
||||
"File Input": "Entrée de fichier",
|
||||
"Form Layout": "Disposition du formulaire",
|
||||
"Form Validation": "Validation de formulaire",
|
||||
"Charts": "Graphiques",
|
||||
"Apex Chart": "Graphique Apex",
|
||||
"Chartjs": "Chartjs",
|
||||
"Account Settings": "Paramètres du compte",
|
||||
"User Profile": "Profil de l'utilisateur",
|
||||
"FAQ": "FAQ",
|
||||
"Dialog Examples": "Exemples de dialogue",
|
||||
"Pricing": "Tarification",
|
||||
"List": "liste",
|
||||
"Edit": "Éditer",
|
||||
"Nav Levels": "Niveaux de navigation",
|
||||
"Level 2.1": "Niveau 2.1",
|
||||
"Level 2.2": "Niveau 2.2",
|
||||
"Level 3.1": "Niveau 3.1",
|
||||
"Level 3.2": "Niveau 3.2",
|
||||
"Raise Support": "Augmenter le soutien",
|
||||
"Documentation": "Documentation",
|
||||
"Dashboards": "Tableaux de bord",
|
||||
"Analytics": "Analytique",
|
||||
"Apps & Pages": "Applications et pages",
|
||||
"Email": "Email",
|
||||
"Chat": "Bavarder",
|
||||
"Invoice": "Facture d'achat",
|
||||
"Preview": "Aperçu",
|
||||
"Add": "Ajouter",
|
||||
"User": "Utilisateur",
|
||||
"View": "Vue",
|
||||
"Login v1": "Connexion v1",
|
||||
"Login v2": "Connexion v2",
|
||||
"Login": "Connexion",
|
||||
"Register v1": "S'inscrire v1",
|
||||
"Register v2": "S'inscrire v2",
|
||||
"Register": "S'inscrire",
|
||||
"Forget Password v1": "Oubliez le mot de passe v1",
|
||||
"Forget Password v2": "Oubliez le mot de passe v2",
|
||||
"Forgot Password v1": "Oubliez le mot de passe v1",
|
||||
"Forgot Password v2": "Oubliez le mot de passe v2",
|
||||
"Forgot Password": "Oubliez le mot de passe",
|
||||
"Reset Password v1": "Réinitialiser le mot de passe v1",
|
||||
"Reset Password v2": "Réinitialiser le mot de passe v2",
|
||||
"Reset Password": "Réinitialiser le mot de passe",
|
||||
"Miscellaneous": "Divers",
|
||||
"Coming Soon": "Bientôt disponible",
|
||||
"Not Authorized": "Pas autorisé",
|
||||
"Under Maintenance": "En maintenance",
|
||||
"Error": "Erreur",
|
||||
"Statistics": "Statistiques",
|
||||
"Card Actions": "Actions de la carte",
|
||||
"Actions": "Actions",
|
||||
"Access Control": "Contrôle d'accès",
|
||||
"User Interface": "Interface utilisateur",
|
||||
"CRM": "CRM",
|
||||
"eCommerce": "commerce électronique",
|
||||
"Icons": "Icône",
|
||||
"Chip": "Ébrécher",
|
||||
"Dialog": "Dialogue",
|
||||
"Expansion Panel": "Panneau d'extension",
|
||||
"Combobox": "Boîte combo",
|
||||
"Textfield": "Champ de texte",
|
||||
"Range Slider": "Curseur Gamme",
|
||||
"Menu": "Menu",
|
||||
"Snackbar": "Casse-croûte",
|
||||
"Tabs": "Onglets",
|
||||
"Form Elements": "Éléments de formulaire",
|
||||
"Form Layouts": "Dispositions de formulaire",
|
||||
"Authentication": "Authentification",
|
||||
"Page Not Found - 404": "Page introuvable - 404",
|
||||
"Not Authorized - 401": "Non autorisé - 401",
|
||||
"Server Error - 500": "Erreur de serveur - 500",
|
||||
"2": "2",
|
||||
"Forms": "Formes",
|
||||
"Timeline": "Chronologie",
|
||||
"Disabled Menu": "Menu désactivé",
|
||||
"Help Center": "Centre d'aide",
|
||||
"Verify Email": "Vérifier les courriels",
|
||||
"Verify Email v1": "Vérifier l'e-mail v1",
|
||||
"Verify Email v2": "Vérifier l'e-mail v2",
|
||||
"Two Steps": "Deux étapes",
|
||||
"Two Steps v1": "Deux étapes v1",
|
||||
"Two Steps v2": "Deux étapes v2",
|
||||
"Custom Input": "Entrée personnalisée",
|
||||
"Extensions": "Rallonges",
|
||||
"Tour": "Tour",
|
||||
"Register Multi-Steps": "Enregistrer plusieurs étapes",
|
||||
"Wizard Examples": "Exemples de guide",
|
||||
"Checkout": "Check-out",
|
||||
"Create Deal": "Créer une offre",
|
||||
"Property Listing": "Liste des propriétés",
|
||||
"Roles & Permissions": "Rôles et autorisations",
|
||||
"Roles": "Rôles",
|
||||
"Permissions": "Autorisations",
|
||||
"Simple Table": "Table simple",
|
||||
"Tables": "Tables",
|
||||
"Data Table": "Table de données",
|
||||
"Apps": "Applications",
|
||||
"Misc": "Divers",
|
||||
"Wizard Pages": "Pages de l'assistant",
|
||||
"3": "3",
|
||||
"$vuetify": {
|
||||
"badge": "Badge",
|
||||
"pagination": {
|
||||
"ariaLabel": {
|
||||
"root": "racine",
|
||||
"previous": "précédente",
|
||||
"next": "suivante",
|
||||
"currentPage": "page actuelle",
|
||||
"page": "page"
|
||||
}
|
||||
},
|
||||
"input": {
|
||||
"clear": "dégager",
|
||||
"appendAction": "ajouter une action",
|
||||
"prependAction": "préfixer l'action"
|
||||
},
|
||||
"fileInput": {
|
||||
"counterSize": "Taille du compteur"
|
||||
},
|
||||
"rating": {
|
||||
"ariaLabel": {
|
||||
"item": "Objet"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
132
resources/js/plugins/vuetify/defaults.js
Normal file
132
resources/js/plugins/vuetify/defaults.js
Normal file
@@ -0,0 +1,132 @@
|
||||
export default {
|
||||
IconBtn: {
|
||||
icon: true,
|
||||
size: 'small',
|
||||
color: 'default',
|
||||
variant: 'text',
|
||||
VIcon: {
|
||||
size: 24,
|
||||
},
|
||||
},
|
||||
VAlert: {
|
||||
density: 'comfortable',
|
||||
VBtn: {
|
||||
color: undefined,
|
||||
},
|
||||
},
|
||||
VAvatar: {
|
||||
// ℹ️ Remove after next release
|
||||
variant: 'flat',
|
||||
},
|
||||
VBadge: {
|
||||
// set v-badge default color to primary
|
||||
color: 'primary',
|
||||
},
|
||||
VBtn: {
|
||||
// set v-btn default color to primary
|
||||
color: 'primary',
|
||||
},
|
||||
VChip: {
|
||||
elevation: 0,
|
||||
density: 'comfortable',
|
||||
},
|
||||
VList: {
|
||||
VListItem: {
|
||||
color: 'primary',
|
||||
},
|
||||
},
|
||||
VPagination: {
|
||||
density: 'compact',
|
||||
},
|
||||
VTabs: {
|
||||
// set v-tabs default color to primary
|
||||
color: 'primary',
|
||||
VSlideGroup: {
|
||||
showArrows: true,
|
||||
},
|
||||
},
|
||||
VTooltip: {
|
||||
// set v-tooltip default location to top
|
||||
location: 'top',
|
||||
},
|
||||
VCheckboxBtn: {
|
||||
color: 'primary',
|
||||
},
|
||||
VCheckbox: {
|
||||
// set v-checkbox default color to primary
|
||||
color: 'primary',
|
||||
density: 'comfortable',
|
||||
hideDetails: 'auto',
|
||||
},
|
||||
VRadioGroup: {
|
||||
color: 'primary',
|
||||
density: 'comfortable',
|
||||
hideDetails: 'auto',
|
||||
},
|
||||
VRadio: {
|
||||
density: 'comfortable',
|
||||
hideDetails: 'auto',
|
||||
},
|
||||
VSelect: {
|
||||
variant: 'outlined',
|
||||
color: 'primary',
|
||||
hideDetails: 'auto',
|
||||
},
|
||||
VRangeSlider: {
|
||||
// set v-range-slider default color to primary
|
||||
thumbSize: 14,
|
||||
color: 'primary',
|
||||
density: 'comfortable',
|
||||
thumbLabel: true,
|
||||
hideDetails: 'auto',
|
||||
},
|
||||
VRating: {
|
||||
// set v-rating default color to primary
|
||||
color: 'rgba(var(--v-theme-on-background),0.22)',
|
||||
activeColor: 'warning',
|
||||
},
|
||||
VProgressCircular: {
|
||||
// set v-progress-circular default color to primary
|
||||
color: 'primary',
|
||||
},
|
||||
VSlider: {
|
||||
// set v-slider default color to primary
|
||||
thumbSize: 14,
|
||||
color: 'primary',
|
||||
hideDetails: 'auto',
|
||||
},
|
||||
VTextField: {
|
||||
variant: 'outlined',
|
||||
color: 'primary',
|
||||
hideDetails: 'auto',
|
||||
},
|
||||
VAutocomplete: {
|
||||
variant: 'outlined',
|
||||
color: 'primary',
|
||||
hideDetails: 'auto',
|
||||
VChip: {
|
||||
density: 'default',
|
||||
},
|
||||
},
|
||||
VCombobox: {
|
||||
variant: 'outlined',
|
||||
color: 'primary',
|
||||
hideDetails: 'auto',
|
||||
},
|
||||
VFileInput: {
|
||||
variant: 'outlined',
|
||||
color: 'primary',
|
||||
hideDetails: 'auto',
|
||||
},
|
||||
VTextarea: {
|
||||
variant: 'outlined',
|
||||
density: 'comfortable',
|
||||
color: 'primary',
|
||||
hideDetails: 'auto',
|
||||
},
|
||||
VSwitch: {
|
||||
// set v-switch default color to primary
|
||||
color: 'primary',
|
||||
hideDetails: 'auto',
|
||||
},
|
||||
}
|
51
resources/js/plugins/vuetify/icons.js
Normal file
51
resources/js/plugins/vuetify/icons.js
Normal file
@@ -0,0 +1,51 @@
|
||||
import { Icon } from '@iconify/vue'
|
||||
|
||||
const aliases = {
|
||||
collapse: 'bx-chevron-up',
|
||||
complete: 'bx-check',
|
||||
cancel: 'bx-x',
|
||||
close: 'bx-x',
|
||||
delete: 'bxs-x-circle',
|
||||
clear: 'bx-x',
|
||||
success: 'bx-check-circle',
|
||||
info: 'bx-info-circle',
|
||||
warning: 'bx-info-circle',
|
||||
error: 'bx-x',
|
||||
prev: 'bx-chevron-left',
|
||||
next: 'bx-chevron-right',
|
||||
checkboxOn: 'custom-checked-checkbox',
|
||||
checkboxOff: 'custom-unchecked-checkbox',
|
||||
checkboxIndeterminate: 'custom-indeterminate-checkbox',
|
||||
delimiter: 'bx-circle',
|
||||
sort: 'bx-up-arrow-alt',
|
||||
expand: 'bx-chevron-down',
|
||||
menu: 'bx-menu',
|
||||
subgroup: 'bx-caret-down',
|
||||
dropdown: 'bx-chevron-down',
|
||||
radioOn: 'custom-checked-radio',
|
||||
radioOff: 'custom-unchecked-radio',
|
||||
edit: 'bx-pencil',
|
||||
ratingEmpty: 'bx-star',
|
||||
ratingFull: 'bxs-star',
|
||||
ratingHalf: 'bxs-star-half',
|
||||
loading: 'bx-refresh',
|
||||
first: 'bx-skip-previous-circle',
|
||||
last: 'bx-skip-next-circle',
|
||||
unfold: 'bx-expand-vertical',
|
||||
file: 'bx-paperclip',
|
||||
plus: 'bx-plus',
|
||||
minus: 'bx-minus',
|
||||
sortAsc: 'bx-sort-up',
|
||||
sortDesc: 'bx-sort-down',
|
||||
}
|
||||
|
||||
export const iconify = {
|
||||
component: props => h(Icon, props),
|
||||
}
|
||||
export const icons = {
|
||||
defaultSet: 'iconify',
|
||||
aliases,
|
||||
sets: {
|
||||
iconify,
|
||||
},
|
||||
}
|
18
resources/js/plugins/vuetify/index.js
Normal file
18
resources/js/plugins/vuetify/index.js
Normal file
@@ -0,0 +1,18 @@
|
||||
import { createVuetify } from 'vuetify'
|
||||
import { VBtn } from 'vuetify/components/VBtn'
|
||||
import defaults from './defaults'
|
||||
import { icons } from './icons'
|
||||
import theme from './theme'
|
||||
|
||||
// Styles
|
||||
import '@core-scss/template/libs/vuetify/index.scss'
|
||||
import 'vuetify/styles'
|
||||
|
||||
export default createVuetify({
|
||||
aliases: {
|
||||
IconBtn: VBtn,
|
||||
},
|
||||
defaults,
|
||||
icons,
|
||||
theme,
|
||||
})
|
109
resources/js/plugins/vuetify/theme.js
Normal file
109
resources/js/plugins/vuetify/theme.js
Normal file
@@ -0,0 +1,109 @@
|
||||
export const staticPrimaryColor = '#696CFF'
|
||||
|
||||
const theme = {
|
||||
defaultTheme: 'light',
|
||||
themes: {
|
||||
light: {
|
||||
dark: false,
|
||||
colors: {
|
||||
'primary': '#696CFF',
|
||||
'on-primary': '#fff',
|
||||
'secondary': '#8592A3',
|
||||
'on-secondary': '#fff',
|
||||
'success': '#71DD37',
|
||||
'on-success': '#fff',
|
||||
'info': '#03C3EC',
|
||||
'on-info': '#fff',
|
||||
'warning': '#FFAB00',
|
||||
'on-warning': '#fff',
|
||||
'error': '#FF3E1D',
|
||||
'background': '#F5F5F9',
|
||||
'on-background': '#32475C',
|
||||
'on-surface': '#32475C',
|
||||
'grey-50': '#FAFAFA',
|
||||
'grey-100': '#EBEEF0',
|
||||
'grey-200': '#EEEEEE',
|
||||
'grey-300': '#E0E0E0',
|
||||
'grey-400': '#BDBDBD',
|
||||
'grey-500': '#9E9E9E',
|
||||
'grey-600': '#757575',
|
||||
'grey-700': '#616161',
|
||||
'grey-800': '#424242',
|
||||
'grey-900': '#212121',
|
||||
'perfect-scrollbar-thumb': '#DBDADE',
|
||||
'skin-bordered-background': '#fff',
|
||||
'skin-bordered-surface': '#fff',
|
||||
'yellow': '#E0F0E3',
|
||||
'yellow-theme-button': '#212121',
|
||||
'footer': '#212121'
|
||||
},
|
||||
variables: {
|
||||
'code-color': '#d400ff',
|
||||
'overlay-scrim-background': '#32475C',
|
||||
'overlay-scrim-opacity': 0.5,
|
||||
'border-color': '#32475C',
|
||||
'snackbar-background': '#32475C',
|
||||
'snackbar-color': '#ffffff',
|
||||
'tooltip-background': '#262732',
|
||||
'tooltip-opacity': 0.9,
|
||||
'table-header-background': '#F5F5F7',
|
||||
|
||||
// Shadows
|
||||
'shadow-key-umbra-opacity': 'rgba(var(--v-theme-on-surface), 0.06)',
|
||||
'shadow-key-penumbra-opacity': 'rgba(var(--v-theme-on-surface), 0.04)',
|
||||
'shadow-key-ambient-opacity': 'rgba(var(--v-theme-on-surface), 0.02)',
|
||||
},
|
||||
},
|
||||
dark: {
|
||||
dark: true,
|
||||
colors: {
|
||||
'primary': '#696CFF',
|
||||
'on-primary': '#fff',
|
||||
'secondary': '#8592A3',
|
||||
'on-secondary': '#fff',
|
||||
'success': '#71DD37',
|
||||
'on-success': '#fff',
|
||||
'info': '#03C3EC',
|
||||
'on-info': '#fff',
|
||||
'warning': '#FFAB00',
|
||||
'on-warning': '#fff',
|
||||
'error': '#FF3E1D',
|
||||
'background': '#232333',
|
||||
'on-background': '#DBDBEB',
|
||||
'surface': '#2B2C40',
|
||||
'on-surface': '#DBDBEB',
|
||||
'grey-50': '#2A2E42',
|
||||
'grey-100': '#444463',
|
||||
'grey-200': '#4A5072',
|
||||
'grey-300': '#5E6692',
|
||||
'grey-400': '#7983BB',
|
||||
'grey-500': '#8692D0',
|
||||
'grey-600': '#AAB3DE',
|
||||
'grey-700': '#B6BEE3',
|
||||
'grey-800': '#CFD3EC',
|
||||
'grey-900': '#E7E9F6',
|
||||
'perfect-scrollbar-thumb': '#4A5072',
|
||||
'skin-bordered-background': '#2b2c40',
|
||||
'skin-bordered-surface': '#2b2c40',
|
||||
},
|
||||
variables: {
|
||||
'code-color': '#d400ff',
|
||||
'overlay-scrim-background': '#0D0E24',
|
||||
'overlay-scrim-opacity': 0.6,
|
||||
'border-color': '#DBDBEB',
|
||||
'snackbar-background': '#DBDBEB',
|
||||
'snackbar-color': '#2B2C40',
|
||||
'tooltip-background': '#464A65',
|
||||
'tooltip-opacity': 0.9,
|
||||
'table-header-background': '#3A3E5B',
|
||||
|
||||
// Shadows
|
||||
'shadow-key-umbra-opacity': 'rgba(20, 21, 33, 0.06)',
|
||||
'shadow-key-penumbra-opacity': 'rgba(20, 21, 33, 0.04)',
|
||||
'shadow-key-ambient-opacity': 'rgba(20, 21, 33, 0.02)',
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
export default theme
|
15
resources/js/plugins/webfontloader.js
Normal file
15
resources/js/plugins/webfontloader.js
Normal file
@@ -0,0 +1,15 @@
|
||||
/**
|
||||
* plugins/webfontloader.js
|
||||
*
|
||||
* webfontloader documentation: https://github.com/typekit/webfontloader
|
||||
*/
|
||||
export async function loadFonts() {
|
||||
const webFontLoader = await import(/* webpackChunkName: "webfontloader" */ 'webfontloader')
|
||||
|
||||
webFontLoader.load({
|
||||
google: {
|
||||
api: 'https://fonts.googleapis.com/css2',
|
||||
families: ['Public+Sans:wght@300;400;500;600;700&display=swap'],
|
||||
},
|
||||
})
|
||||
}
|
Reference in New Issue
Block a user