feat: добавление новых файлов

modified:   client/package.json
modified:   client/src/components/Footer.tsx
new file:   client/src/components/LocalizedDateInput.tsx
new file:   client/src/components/LocalizedTimeInput.tsx
modified:   client/src/index.css
new file:   client/src/types/html2pdf.d.ts
new file:   client/src/utils/dateTimeFormat.ts
new file:   client/src/utils/receiptPdf.ts
modified:   server/prisma/seed.ts
This commit is contained in:
2026-06-25 01:49:46 +07:00
parent fb8c7ce76a
commit 5fd0f04fdc
9 changed files with 553 additions and 20 deletions
+116
View File
@@ -320,6 +320,122 @@ select.input {
padding-right: 40px;
}
.localized-picker-input {
position: relative;
cursor: pointer;
}
.localized-picker-input__overlay {
position: absolute;
inset: 0;
z-index: 2;
display: flex;
align-items: center;
padding: 12px 16px;
pointer-events: none;
color: var(--color-text-primary);
font-size: 0.9375rem;
}
.localized-picker-input__overlay.is-placeholder {
color: var(--color-text-muted);
}
.localized-picker-input__native {
position: relative;
z-index: 1;
color: transparent;
caret-color: transparent;
}
.localized-picker-input__native::-webkit-datetime-edit,
.localized-picker-input__native::-webkit-datetime-edit-fields-wrapper,
.localized-picker-input__native::-webkit-datetime-edit-text,
.localized-picker-input__native::-webkit-datetime-edit-month-field,
.localized-picker-input__native::-webkit-datetime-edit-day-field,
.localized-picker-input__native::-webkit-datetime-edit-year-field,
.localized-picker-input__native::-webkit-datetime-edit-hour-field,
.localized-picker-input__native::-webkit-datetime-edit-minute-field,
.localized-picker-input__native::-webkit-datetime-edit-second-field,
.localized-picker-input__native::-webkit-datetime-edit-ampm-field {
color: transparent;
}
.localized-picker-input__native::-webkit-calendar-picker-indicator {
cursor: pointer;
opacity: 1;
}
.time-picker {
position: relative;
}
.time-picker__trigger {
display: flex;
align-items: center;
width: 100%;
text-align: left;
cursor: pointer;
padding-right: 40px;
background-image: url("data:image/svg+xml,%3Csvg width='16' height='16' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='12' cy='12' r='9' stroke='%23a09e94' stroke-width='1.5'/%3E%3Cpath d='M12 7v5l3 2' stroke='%23a09e94' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
background-repeat: no-repeat;
background-position: right 14px center;
}
.time-picker__placeholder {
color: var(--color-text-muted);
}
.time-picker__dropdown {
position: absolute;
top: calc(100% + 4px);
left: 0;
z-index: 100;
display: flex;
min-width: 160px;
max-width: 100%;
background: #ffffff;
border-radius: var(--radius-md);
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
overflow: hidden;
}
.time-picker__column {
flex: 1;
max-height: 220px;
overflow-y: auto;
scroll-snap-type: y mandatory;
overscroll-behavior: contain;
}
.time-picker__column:first-child {
border-right: 1px solid #e5e5e5;
}
.time-picker__option {
display: block;
width: 100%;
padding: 8px 12px;
text-align: center;
font-size: 0.9375rem;
color: #1a1a1a;
scroll-snap-align: center;
transition: background-color var(--transition-base);
}
.time-picker__option:hover {
background: #f0f0f0;
}
.time-picker__option.is-selected {
background: #0b74de;
color: #ffffff;
}
.time-picker__option.is-selected:hover {
background: #0b74de;
}
/* ─── Card ───────────────────────────────── */
.card {
background: var(--color-bg-card);