mirror of
https://github.com/InvoiceShelf/InvoiceShelf.git
synced 2026-04-15 09:14:08 +00:00
Mail DEFAULT_DRIVER changes from smtp to sendmail; DRIVER_ORDER is reshuffled so sendmail is the head of the list on fresh installs. This matches what most self-hosted installs already have working out of the box — SMTP requires provider credentials the typical user doesn't have set up yet. The mail config description is rewritten to drop the 'Laravel' framework reference and to explicitly tell unsure users to leave it on sendmail.
SiteApi::get() now catches GuzzleException (the broader interface) and returns null on network failure instead of bubbling the exception object — callers were treating a non-array return as 'marketplace unavailable' anyway, so null is the correct shape.
main.ts exposes the Vue runtime on window.__invoiceshelf_vue so module JS (compiled against the host's Vue install) can call createApp / defineComponent without re-bundling Vue. invoiceshelf.css adds Tailwind source globs for Modules/**/*.{js,ts,vue,blade.php} so module-contributed classes are picked up by the host CSS pipeline.
Installation wizard PreferencesView was already in the tree waiting for the API field rename (date_formats, time_zones, fiscal_years, languages) that landed in setting.service.ts; this commit catches both sides up together.
260 lines
8.8 KiB
CSS
Vendored
260 lines
8.8 KiB
CSS
Vendored
@import "tailwindcss";
|
|
@import "./themes.css";
|
|
@import "./components/animation.css";
|
|
@import "./components/pace-loader.css";
|
|
@import "./components/v-tooltips.css";
|
|
|
|
@plugin "@tailwindcss/typography";
|
|
@plugin "tailwind-scrollbar";
|
|
|
|
@source "../scripts/**/*.vue";
|
|
@source "../scripts/**/*.ts";
|
|
@source "../../Modules/**/resources/js/**/*.vue";
|
|
@source "../../Modules/**/resources/js/**/*.ts";
|
|
@source "../../Modules/**/resources/dist/**/*.js";
|
|
@source "../../resources/views/**/*.php";
|
|
|
|
@theme inline {
|
|
--color-primary-50: var(--color-primary-50);
|
|
--color-primary-100: var(--color-primary-100);
|
|
--color-primary-200: var(--color-primary-200);
|
|
--color-primary-300: var(--color-primary-300);
|
|
--color-primary-400: var(--color-primary-400);
|
|
--color-primary-500: var(--color-primary-500);
|
|
--color-primary-600: var(--color-primary-600);
|
|
--color-primary-700: var(--color-primary-700);
|
|
--color-primary-800: var(--color-primary-800);
|
|
--color-primary-900: var(--color-primary-900);
|
|
--color-primary-950: var(--color-primary-950);
|
|
--color-black: #040405;
|
|
|
|
/* Semantic theme tokens */
|
|
--color-surface: var(--color-surface);
|
|
--color-surface-secondary: var(--color-surface-secondary);
|
|
--color-surface-tertiary: var(--color-surface-tertiary);
|
|
--color-surface-muted: var(--color-surface-muted);
|
|
--color-heading: var(--color-heading);
|
|
--color-body: var(--color-body);
|
|
--color-muted: var(--color-muted);
|
|
--color-subtle: var(--color-subtle);
|
|
--color-line-light: var(--color-line-light);
|
|
--color-line-default: var(--color-line-default);
|
|
--color-line-strong: var(--color-line-strong);
|
|
--color-hover: var(--color-hover);
|
|
--color-hover-strong: var(--color-hover-strong);
|
|
--color-header-from: var(--color-header-from);
|
|
--color-header-to: var(--color-header-to);
|
|
--color-btn-primary: var(--color-btn-primary);
|
|
--color-btn-primary-hover: var(--color-btn-primary-hover);
|
|
|
|
/* Status badge text */
|
|
--color-status-yellow: var(--color-status-yellow);
|
|
--color-status-green: var(--color-status-green);
|
|
--color-status-blue: var(--color-status-blue);
|
|
--color-status-red: var(--color-status-red);
|
|
--color-status-purple: var(--color-status-purple);
|
|
|
|
/* Alert colors */
|
|
--color-alert-warning-bg: var(--color-alert-warning-bg);
|
|
--color-alert-warning-text: var(--color-alert-warning-text);
|
|
--color-alert-error-bg: var(--color-alert-error-bg);
|
|
--color-alert-error-text: var(--color-alert-error-text);
|
|
--color-alert-success-bg: var(--color-alert-success-bg);
|
|
--color-alert-success-text: var(--color-alert-success-text);
|
|
}
|
|
|
|
@theme {
|
|
--spacing-88: 22rem;
|
|
--font-base: Poppins, sans-serif;
|
|
}
|
|
|
|
/* Glass UI background gradient */
|
|
@utility bg-glass-gradient {
|
|
background-image: linear-gradient(
|
|
135deg,
|
|
var(--color-surface-tertiary) 0%,
|
|
color-mix(in srgb, var(--color-primary-500) 8%, var(--color-surface-tertiary)) 30%,
|
|
var(--color-surface-tertiary) 50%,
|
|
color-mix(in srgb, var(--color-primary-400) 6%, var(--color-surface-tertiary)) 70%,
|
|
var(--color-surface-tertiary) 100%
|
|
);
|
|
background-attachment: fixed;
|
|
}
|
|
|
|
@utility bg-multiselect-caret {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M10 3a1 1 0 01.707.293l3 3a1 1 0 01-1.414 1.414L10 5.414 7.707 7.707a1 1 0 01-1.414-1.414l3-3A1 1 0 0110 3zm-3.707 9.293a1 1 0 011.414 0L10 14.586l2.293-2.293a1 1 0 011.414 1.414l-3 3a1 1 0 01-1.414 0l-3-3a1 1 0 010-1.414z' clip-rule='evenodd'/%3E%3C/svg%3E");
|
|
}
|
|
|
|
@utility bg-multiselect-spinner {
|
|
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' fill='%234a3dff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M456.433 371.72l-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z'/%3E%3C/svg%3E");
|
|
}
|
|
|
|
@utility bg-multiselect-remove {
|
|
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 320 512' fill='white' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M207.6 256l107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z'/%3E%3C/svg%3E");
|
|
}
|
|
|
|
@font-face {
|
|
font-family: "Poppins";
|
|
font-style: normal;
|
|
font-weight: 400;
|
|
font-display: swap;
|
|
src: url("$fonts/Poppins-Black.ttf") format("truetype");
|
|
}
|
|
|
|
@font-face {
|
|
font-family: "Poppins";
|
|
font-style: normal;
|
|
font-weight: 300;
|
|
font-display: swap;
|
|
src: url("$fonts/Poppins-Light.ttf") format("truetype");
|
|
}
|
|
|
|
@font-face {
|
|
font-family: "Poppins";
|
|
font-style: normal;
|
|
font-weight: 500;
|
|
font-display: swap;
|
|
src: url("$fonts/Poppins-Medium.ttf") format("truetype");
|
|
}
|
|
|
|
@font-face {
|
|
font-family: "Poppins";
|
|
font-style: normal;
|
|
font-weight: 400;
|
|
font-display: swap;
|
|
src: url("$fonts/Poppins-Regular.ttf") format("truetype");
|
|
}
|
|
|
|
@font-face {
|
|
font-family: "Poppins";
|
|
font-style: normal;
|
|
font-weight: 600;
|
|
font-display: swap;
|
|
src: url("$fonts/Poppins-SemiBold.ttf") format("truetype");
|
|
}
|
|
|
|
/* Form base styles (replaces @tailwindcss/forms) */
|
|
@layer base {
|
|
[type='text'],
|
|
[type='email'],
|
|
[type='url'],
|
|
[type='password'],
|
|
[type='number'],
|
|
[type='date'],
|
|
[type='datetime-local'],
|
|
[type='month'],
|
|
[type='search'],
|
|
[type='tel'],
|
|
[type='time'],
|
|
[type='week'],
|
|
[multiple],
|
|
textarea,
|
|
select {
|
|
@apply appearance-none bg-surface border border-line-default rounded-lg px-3 py-2 text-sm leading-6 text-heading;
|
|
}
|
|
|
|
[type='text']:focus,
|
|
[type='email']:focus,
|
|
[type='url']:focus,
|
|
[type='password']:focus,
|
|
[type='number']:focus,
|
|
[type='date']:focus,
|
|
[type='datetime-local']:focus,
|
|
[type='month']:focus,
|
|
[type='search']:focus,
|
|
[type='tel']:focus,
|
|
[type='time']:focus,
|
|
[type='week']:focus,
|
|
[multiple]:focus,
|
|
textarea:focus,
|
|
select:focus {
|
|
@apply outline-2 outline-transparent outline-offset-2 border-primary-500 ring-1 ring-primary-500;
|
|
}
|
|
|
|
select {
|
|
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");
|
|
@apply bg-no-repeat pr-10;
|
|
background-position: right 0.5rem center;
|
|
background-size: 1.5em 1.5em;
|
|
}
|
|
|
|
[type='checkbox'],
|
|
[type='radio'] {
|
|
@apply appearance-none p-0 text-primary-500 bg-surface border border-line-strong inline-block align-middle select-none shrink-0 h-4 w-4;
|
|
background-origin: border-box;
|
|
print-color-adjust: exact;
|
|
}
|
|
|
|
[type='checkbox'] {
|
|
@apply rounded;
|
|
}
|
|
|
|
[type='radio'] {
|
|
@apply rounded-full;
|
|
}
|
|
|
|
[type='checkbox']:focus,
|
|
[type='radio']:focus {
|
|
@apply outline-2 outline-transparent outline-offset-2;
|
|
box-shadow: 0 0 0 2px var(--color-surface), 0 0 0 4px var(--color-primary-500);
|
|
}
|
|
|
|
[type='checkbox']:checked,
|
|
[type='radio']:checked {
|
|
@apply border-transparent bg-current bg-center bg-no-repeat;
|
|
background-size: 100% 100%;
|
|
}
|
|
|
|
[type='checkbox']:checked {
|
|
background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e");
|
|
}
|
|
|
|
[type='radio']:checked {
|
|
background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e");
|
|
}
|
|
|
|
[type='checkbox']:indeterminate {
|
|
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");
|
|
@apply border-transparent bg-current bg-center bg-no-repeat;
|
|
background-size: 100% 100%;
|
|
}
|
|
|
|
::placeholder {
|
|
@apply text-subtle opacity-100;
|
|
}
|
|
} /* end @layer base */
|
|
|
|
body {
|
|
min-height: 100vh;
|
|
min-height: -webkit-fill-available;
|
|
color: var(--color-heading);
|
|
scrollbar-color: var(--color-surface-muted) var(--color-surface-secondary);
|
|
}
|
|
|
|
/* Webkit scrollbars */
|
|
::-webkit-scrollbar {
|
|
width: 8px;
|
|
height: 8px;
|
|
}
|
|
|
|
::-webkit-scrollbar-track {
|
|
background: var(--color-surface-secondary);
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb {
|
|
background: var(--color-surface-muted);
|
|
border-radius: 4px;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb:hover {
|
|
background: var(--color-line-strong);
|
|
}
|
|
|
|
html {
|
|
height: -webkit-fill-available;
|
|
}
|
|
|
|
.h-screen-ios {
|
|
height: -webkit-fill-available;
|
|
}
|