Compare commits

...

8 Commits

Author SHA1 Message Date
caa1fddcc1 feat(event-schedules): add border radius and clip-path to table rows for improved styling 2026-08-12 09:30:17 -03:00
5f0c99c395 feat(hero-banner): add border radius and clip-path to event schedule rows for improved styling 2026-08-12 09:27:50 -03:00
832fad19bc fix(auth): update cookie key to use 'shopit.front.auth.token' for consistency 2026-08-12 09:19:16 -03:00
28ed5d71b2 feat(header): update category button padding and header background color to use CSS variable 2026-08-12 09:11:49 -03:00
23a5ac32cc feat: update border styles to use CSS variables for consistency across components 2026-08-12 09:00:13 -03:00
1b19d36e26 feat: add file replacements for local environment and update default configuration for serve 2026-08-12 08:41:10 -03:00
86533b9ab4 feat(modal): enhance modal behavior and styling
- Adjust modal padding to account for scrollbar width.
- Update modal background opacity for better visibility.

style(product-list): refine layout and spacing
- Remove gap in product list rows for a cleaner look.

feat(product-list): improve variant handling
- Update variant mapping to include description and price.

refactor(product-row-card): restructure HTML for better layout
- Simplify structure by combining price and quantity controls.
- Enhance button placement for better UX.

style(product-row-card): improve card styling
- Adjust flex properties for better alignment and spacing.
- Update button styles for consistency.

feat(product-vertical-with-cart-card): enhance variant selection
- Implement variant selector for better user interaction.
- Update price and description display based on selected variant.

test(product-vertical-with-cart-card): add tests for variant selection
- Ensure correct variant description and price are displayed.

fix(environment): update API URL for testing environment
- Change backend URL to point to the QA server.

style(global): update global styles for better readability
- Adjust table styles for improved visibility and aesthetics.
2026-08-11 16:59:01 -03:00
c6ac974459 feat: adjust footer and cart dropdown styles for improved layout and responsiveness 2026-08-06 12:13:51 -03:00
28 changed files with 76 additions and 79 deletions

View File

@@ -64,7 +64,13 @@
"local": { "local": {
"optimization": false, "optimization": false,
"extractLicenses": false, "extractLicenses": false,
"sourceMap": true "sourceMap": true,
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.local.ts"
}
]
}, },
"homo": { "homo": {
"fileReplacements": [ "fileReplacements": [
@@ -79,6 +85,9 @@
}, },
"serve": { "serve": {
"builder": "@angular/build:dev-server", "builder": "@angular/build:dev-server",
"options": {
"port": 4300
},
"configurations": { "configurations": {
"production": { "production": {
"buildTarget": "shopit-front:build:production" "buildTarget": "shopit-front:build:production"
@@ -93,7 +102,7 @@
"buildTarget": "shopit-front:build:homo" "buildTarget": "shopit-front:build:homo"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "local"
}, },
"test": { "test": {
"builder": "@angular/build:unit-test" "builder": "@angular/build:unit-test"

View File

@@ -17,7 +17,7 @@
.tenant-status__card { .tenant-status__card {
width: min(100%, 34rem); width: min(100%, 34rem);
padding: 2rem; padding: 2rem;
border: 1px solid rgba(32, 32, 32, 0.1); border: 1px solid var(--border-color);
border-radius: 1.5rem; border-radius: 1.5rem;
background-color: rgba(255, 255, 255, 0.92); background-color: rgba(255, 255, 255, 0.92);
box-shadow: 0 1.25rem 3rem rgba(0, 0, 0, 0.1); box-shadow: 0 1.25rem 3rem rgba(0, 0, 0, 0.1);
@@ -55,7 +55,7 @@
.tenant-status__spinner { .tenant-status__spinner {
width: 3rem; width: 3rem;
height: 3rem; height: 3rem;
border: 0.25rem solid rgba(32, 32, 32, 0.08); border: 0.25rem solid var(--border-color);
border-top-color: var(--tenant-primary); border-top-color: var(--tenant-primary);
border-radius: 999px; border-radius: 999px;
animation: tenant-status-spin 0.8s linear infinite; animation: tenant-status-spin 0.8s linear infinite;

View File

@@ -46,7 +46,7 @@
place-items: center; place-items: center;
width: 2.75rem; width: 2.75rem;
height: 2.75rem; height: 2.75rem;
border: 1px dashed rgba(255, 255, 255, 0.35); border: 1px dashed var(--border-color);
border-radius: 999px; border-radius: 999px;
font-size: 1.05rem; font-size: 1.05rem;
font-weight: 700; font-weight: 700;
@@ -133,8 +133,8 @@
display: block; display: block;
order: 2; order: 2;
grid-column: 1 / -1; grid-column: 1 / -1;
width: 100vw; width: 100%;
border-top: 1px solid rgba(255, 255, 255, 0.3); border-top: 1px solid var(--border-color);
} }
.store-layout__brand-column, .store-layout__brand-column,

View File

@@ -150,7 +150,7 @@
<div class="store-layout__category-menu"> <div class="store-layout__category-menu">
<button <button
type="button" type="button"
class="btn btn-link d-inline-flex align-items-center gap-2 px-0 py-2 text-uppercase fw-bold text-decoration-none store-layout__category-trigger" class="btn btn-link d-inline-flex align-items-center gap-2 px-0 py-3 text-uppercase fw-bold text-decoration-none store-layout__category-trigger"
aria-label="Categorias" aria-label="Categorias"
aria-controls="store-category-dropdown" aria-controls="store-category-dropdown"
[attr.aria-expanded]="isCategoryDropdownOpen()" [attr.aria-expanded]="isCategoryDropdownOpen()"

View File

@@ -1,11 +1,10 @@
.store-layout__header { .store-layout__header {
color: #ffffff; color: #ffffff;
background-color: transparent; background-color: var(--tenant-header-bg);
box-shadow: inset 0 -1px 0 rgba(255, 255, 255, 0.08);
} }
.store-layout__header-main { .store-layout__header-main {
border-bottom: 1px solid rgba(255, 255, 255, 0.08); border-bottom: 1px solid var(--border-color);
} }
.store-layout__brand-slot { .store-layout__brand-slot {
@@ -77,7 +76,7 @@
.store-layout__search-input { .store-layout__search-input {
color: #666666; color: #666666;
border-color: #cccccc; border-color: var(--border-color);
background-color: rgba(255, 255, 255, 0.96); background-color: rgba(255, 255, 255, 0.96);
} }
@@ -86,21 +85,21 @@
} }
.store-layout__search-input:focus { .store-layout__search-input:focus {
border-color: #cccccc; border-color: var(--border-color);
box-shadow: none; box-shadow: none;
outline: none; outline: none;
} }
.store-layout__search-button { .store-layout__search-button {
color: #a0a0a0; color: #a0a0a0;
border-color: #cccccc; border-color: var(--border-color);
background-color: rgba(255, 255, 255, 0.96); background-color: rgba(255, 255, 255, 0.96);
} }
.store-layout__search-button:hover, .store-layout__search-button:hover,
.store-layout__search-button:focus-visible { .store-layout__search-button:focus-visible {
color: #8a8a8a; color: #8a8a8a;
border-color: #cccccc; border-color: var(--border-color);
background-color: #ffffff; background-color: #ffffff;
} }
@@ -172,7 +171,7 @@
} }
.store-layout__mobile-separator { .store-layout__mobile-separator {
border-color: #dddddd; border-color: var(--border-color);
opacity: 1; opacity: 1;
margin: 0 -1rem; margin: 0 -1rem;
} }

View File

@@ -10,7 +10,7 @@
.user-dropdown { .user-dropdown {
display: grid; display: grid;
background: #ffffff; background: #ffffff;
border: 1px solid rgba(32, 32, 32, 0.1); border: 1px solid var(--border-color);
border-radius: 8px; border-radius: 8px;
box-shadow: 0 18px 44px rgba(0, 0, 0, 0.16); box-shadow: 0 18px 44px rgba(0, 0, 0, 0.16);
padding: 0.75rem; padding: 0.75rem;

View File

@@ -21,7 +21,7 @@
.store-layout__cart-dropdown { .store-layout__cart-dropdown {
position: absolute; position: absolute;
top: 76px; top: 100px;
right: calc((100% - 1320px) / 2 + 1.5rem); right: calc((100% - 1320px) / 2 + 1.5rem);
width: 100%; width: 100%;
max-width: 400px; max-width: 400px;
@@ -29,7 +29,7 @@
z-index: 1050; z-index: 1050;
background-color: #ffffff; background-color: #ffffff;
border-radius: 8px; border-radius: 8px;
border: 1px solid rgba(0, 0, 0, 0.08); border: 1px solid var(--border-color);
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.08); box-shadow: 0 10px 25px rgba(0, 0, 0, 0.08);
overflow: hidden; overflow: hidden;
animation: store-layout-slide-down 0.2s ease-out; animation: store-layout-slide-down 0.2s ease-out;

View File

@@ -72,13 +72,13 @@ describe('AuthService', () => {
expect(service.token()).toBe('plain-text-token'); expect(service.token()).toBe('plain-text-token');
expect(service.user()?.email).toBe('ada@example.com'); expect(service.user()?.email).toBe('ada@example.com');
expect(service.isAuthenticated()).toBe(true); expect(service.isAuthenticated()).toBe(true);
expect(cookieStore['shopit.auth.token']).toBe('plain-text-token'); expect(cookieStore['shopit.front.auth.token']).toBe('plain-text-token');
httpController.verify(); httpController.verify();
}); });
it('hydrates token from cookies and loads the current user during bootstrap', async () => { it('hydrates token from cookies and loads the current user during bootstrap', async () => {
cookieStore['shopit.auth.token'] = 'persisted-token'; cookieStore['shopit.front.auth.token'] = 'persisted-token';
TestBed.configureTestingModule({ TestBed.configureTestingModule({
providers: [ providers: [
@@ -152,7 +152,7 @@ describe('AuthService', () => {
}); });
it('clears an expired session when /me returns 401', async () => { it('clears an expired session when /me returns 401', async () => {
cookieStore['shopit.auth.token'] = 'expired-token'; cookieStore['shopit.front.auth.token'] = 'expired-token';
TestBed.configureTestingModule({ TestBed.configureTestingModule({
providers: [ providers: [
@@ -176,7 +176,7 @@ describe('AuthService', () => {
expect(service.user()).toBeNull(); expect(service.user()).toBeNull();
expect(service.token()).toBeNull(); expect(service.token()).toBeNull();
expect(service.isAuthenticated()).toBe(false); expect(service.isAuthenticated()).toBe(false);
expect(cookieStore['shopit.auth.token']).toBeUndefined(); expect(cookieStore['shopit.front.auth.token']).toBeUndefined();
httpController.verify(); httpController.verify();
}); });
@@ -384,7 +384,7 @@ describe('AuthService', () => {
expect(service.token()).toBe('plain-text-token'); expect(service.token()).toBe('plain-text-token');
expect(service.user()?.email).toBe('ada@example.com'); expect(service.user()?.email).toBe('ada@example.com');
expect(cookieStore['shopit.auth.token']).toBe('plain-text-token'); expect(cookieStore['shopit.front.auth.token']).toBe('plain-text-token');
httpController.verify(); httpController.verify();
}); });

View File

@@ -21,7 +21,7 @@ import {
import { CookieService } from '../cookie/cookie.service'; import { CookieService } from '../cookie/cookie.service';
import { TenantService } from '../tenant.service'; import { TenantService } from '../tenant.service';
const AUTH_TOKEN_COOKIE_KEY = 'shopit.auth.token'; const AUTH_TOKEN_COOKIE_KEY = 'shopit.front.auth.token';
const AUTH_USER_SSR_STATE_KEY = makeStateKey<AuthUser>('shopit.auth.user'); const AUTH_USER_SSR_STATE_KEY = makeStateKey<AuthUser>('shopit.auth.user');
@Injectable({ @Injectable({

View File

@@ -77,7 +77,7 @@ h1 {
.modal-showcase__result { .modal-showcase__result {
padding: 0.875rem 1rem; padding: 0.875rem 1rem;
border: 1px dashed rgba(32, 32, 32, 0.14); border: 1px dashed var(--border-color);
border-radius: 0.875rem; border-radius: 0.875rem;
background: linear-gradient(180deg, rgba(248, 248, 248, 0.92), rgba(255, 255, 255, 0.98)); background: linear-gradient(180deg, rgba(248, 248, 248, 0.92), rgba(255, 255, 255, 0.98));
color: #495057; color: #495057;
@@ -231,7 +231,7 @@ h1 {
justify-content: center; justify-content: center;
height: 120px; height: 120px;
border-radius: 8px; border-radius: 8px;
border: 1px solid #dee2e6; border: 1px solid var(--border-color);
padding: 1rem; padding: 1rem;
overflow: hidden; overflow: hidden;
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.05); box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.05);
@@ -281,7 +281,7 @@ h1 {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
border-radius: 8px; border-radius: 8px;
border: 1px solid #dee2e6; border: 1px solid var(--border-color);
overflow: hidden; overflow: hidden;
background-color: #ffffff; background-color: #ffffff;
transition: transition:
@@ -296,7 +296,7 @@ h1 {
&__preview { &__preview {
height: 80px; height: 80px;
width: 100%; width: 100%;
border-bottom: 1px solid #dee2e6; border-bottom: 1px solid var(--border-color);
transition: opacity 0.2s ease; transition: opacity 0.2s ease;
&:hover { &:hover {
@@ -337,7 +337,7 @@ h1 {
background-color: #eaeaea; background-color: #eaeaea;
padding: 1.5rem; padding: 1.5rem;
border-radius: 8px; border-radius: 8px;
border: 1px solid #dee2e6; border: 1px solid var(--border-color);
} }
&__row { &__row {

View File

@@ -54,7 +54,7 @@
} }
&__text-option { &__text-option {
border: 1px solid #dcdcdc; border: 1px solid var(--border-color);
background: #ffffff; background: #ffffff;
color: #666666; color: #666666;
transition: border-color 0.2s ease, color 0.2s ease, background-color 0.2s ease; transition: border-color 0.2s ease, color 0.2s ease, background-color 0.2s ease;

View File

@@ -1,6 +1,6 @@
:host { :host {
display: block; display: block;
border-bottom: 1px solid #dddddd; border-bottom: 1px solid var(--border-color);
} }
:host(:last-child) { :host(:last-child) {
@@ -24,7 +24,7 @@
aspect-ratio: 4 / 3; aspect-ratio: 4 / 3;
border-radius: 5px 0 0 5px; border-radius: 5px 0 0 5px;
background-color: #ffffff; background-color: #ffffff;
border: 1px solid #eaeaea; border: 1px solid var(--border-color);
overflow: hidden; overflow: hidden;
img { img {

View File

@@ -23,7 +23,7 @@
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
padding: 1rem 0; padding: 1rem 0;
border-bottom: 1px solid #DDDDDD; border-bottom: 1px solid var(--border-color);
} }
.skeleton-item:last-child { .skeleton-item:last-child {

View File

@@ -27,7 +27,7 @@
.tickets-list__generating-spinner { .tickets-list__generating-spinner {
width: 24px; width: 24px;
height: 24px; height: 24px;
border: 3px solid #dce8e0; border: 3px solid var(--border-color);
border-top-color: var(--tenant-primary, #009933); border-top-color: var(--tenant-primary, #009933);
border-radius: 50%; border-radius: 50%;
animation: tickets-spinner 0.75s linear infinite; animation: tickets-spinner 0.75s linear infinite;
@@ -39,7 +39,7 @@
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
padding-bottom: 12px; padding-bottom: 12px;
border-bottom: 1px solid #dddddd; border-bottom: 1px solid var(--border-color);
} }
.tickets-list__header--inactive { .tickets-list__header--inactive {
@@ -89,7 +89,7 @@
} }
.tickets-list app-ticket { .tickets-list app-ticket {
border-bottom: 1px solid #dddddd; border-bottom: 1px solid var(--border-color);
} }
.tickets-list__empty { .tickets-list__empty {
@@ -104,7 +104,7 @@
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
padding-bottom: 12px; padding-bottom: 12px;
border-bottom: 1px solid #dddddd; border-bottom: 1px solid var(--border-color);
} }
.tickets-list__skeleton-selection, .tickets-list__skeleton-selection,
@@ -130,7 +130,7 @@
align-items: center; align-items: center;
gap: 16px; gap: 16px;
padding: 16px 0; padding: 16px 0;
border-bottom: 1px solid #dddddd; border-bottom: 1px solid var(--border-color);
} }
.tickets-list__skeleton-check, .tickets-list__skeleton-check,

View File

@@ -64,7 +64,7 @@
.checkout-page__spinner { .checkout-page__spinner {
width: 3rem; width: 3rem;
height: 3rem; height: 3rem;
border: 0.25rem solid rgba(32, 32, 32, 0.08); border: 0.25rem solid var(--border-color);
border-top-color: var(--tenant-primary); border-top-color: var(--tenant-primary);
border-radius: 50%; border-radius: 50%;
animation: checkout-page-spin 0.8s linear infinite; animation: checkout-page-spin 0.8s linear infinite;

View File

@@ -15,7 +15,7 @@
.faq-page__empty { .faq-page__empty {
padding: 1rem 0; padding: 1rem 0;
border-bottom: 1px solid #dedede; border-bottom: 1px solid var(--border-color);
color: #888888; color: #888888;
font-size: 0.8125rem; font-size: 0.8125rem;
} }

View File

@@ -31,6 +31,6 @@
.login-page__divider-dot { .login-page__divider-dot {
width: 16px; width: 16px;
height: 16px; height: 16px;
border-color: #d9d9d9 !important; border-color: var(--border-color) !important;
background-color: #ffffff; background-color: #ffffff;
} }

View File

@@ -14,7 +14,7 @@
} }
&__divider { &__divider {
border-top: 1px solid #e6e6e6; border-top: 1px solid var(--border-color);
} }
&__title { &__title {
@@ -25,7 +25,7 @@
} }
&__title-price-divider { &__title-price-divider {
border-top: 1px solid #e6e6e6; border-top: 1px solid var(--border-color);
} }
&__price-group { &__price-group {

View File

@@ -4,7 +4,7 @@
} }
.accordion { .accordion {
--bs-accordion-border-color: #dedede; --bs-accordion-border-color: var(--border-color);
--bs-accordion-border-radius: 0; --bs-accordion-border-radius: 0;
--bs-accordion-inner-border-radius: 0; --bs-accordion-inner-border-radius: 0;
--bs-accordion-bg: transparent; --bs-accordion-bg: transparent;

View File

@@ -43,7 +43,7 @@
aspect-ratio: 1 / 1; aspect-ratio: 1 / 1;
border-radius: 5px 0 0 5px; border-radius: 5px 0 0 5px;
background-color: #ffffff; background-color: #ffffff;
border: 1px solid #eaeaea; border: 1px solid var(--border-color);
overflow: hidden; overflow: hidden;
img { img {

View File

@@ -12,7 +12,7 @@
.global-loading__spinner { .global-loading__spinner {
width: 3rem; width: 3rem;
height: 3rem; height: 3rem;
border: 0.25rem solid rgba(32, 32, 32, 0.12); border: 0.25rem solid var(--border-color);
border-top-color: var(--tenant-primary, #6376f3); border-top-color: var(--tenant-primary, #6376f3);
border-radius: 50%; border-radius: 50%;
animation: global-loading-spin 0.75s linear infinite; animation: global-loading-spin 0.75s linear infinite;

View File

@@ -124,7 +124,6 @@
td { td {
width: 50%; width: 50%;
padding: 0.65rem 1rem; padding: 0.65rem 1rem;
border-radius: 0.5rem;
vertical-align: middle; vertical-align: middle;
} }
} }

View File

@@ -23,7 +23,7 @@
min-height: 40px; min-height: 40px;
padding: 0.625rem 1rem; padding: 0.625rem 1rem;
border-radius: 5px; border-radius: 5px;
border-color: #cccccc; border-color: var(--border-color);
color: #666666; color: #666666;
font-size: 15px; font-size: 15px;
font-weight: 400; font-weight: 400;

View File

@@ -10,7 +10,7 @@
gap: 2rem; gap: 2rem;
width: 100%; width: 100%;
padding: 2rem 0; padding: 2rem 0;
border-bottom: 1px solid #e3e3e3; border-bottom: 1px solid var(--border-color);
background: transparent; background: transparent;
&__title { &__title {
@@ -41,7 +41,7 @@
&__actions { &__actions {
display: grid; display: grid;
grid-template-columns: minmax(0, auto) 160px; grid-template-columns: minmax(0, auto) minmax(0, 230px);
align-items: stretch; align-items: stretch;
gap: 0.75rem 2.5rem; gap: 0.75rem 2.5rem;
} }
@@ -54,6 +54,11 @@
gap: 0.5rem; gap: 0.5rem;
} }
&__buttons {
width: 100%;
max-width: 230px;
}
&__controls { &__controls {
display: flex; display: flex;
align-items: center; align-items: center;
@@ -62,8 +67,6 @@
} }
&__btn-wrapper { &__btn-wrapper {
min-width: 160px;
app-button { app-button {
display: block; display: block;
width: 100%; width: 100%;
@@ -83,26 +86,8 @@
min-width: 0; min-width: 0;
} }
&__actions,
&__summary,
&__buttons {
display: flex;
flex-direction: row;
align-items: center;
}
&__actions { &__actions {
flex: 0 0 auto; flex: 0 0 auto;
gap: 0.75rem;
}
&__summary,
&__buttons {
gap: 0.5rem;
}
&__price {
align-self: center;
} }
&__selectors { &__selectors {
@@ -119,9 +104,6 @@
} }
} }
&__btn-wrapper {
min-width: 140px;
}
} }
} }
@@ -131,7 +113,7 @@
flex-direction: column; flex-direction: column;
&__actions { &__actions {
grid-template-columns: minmax(0, 1fr) 160px; grid-template-columns: minmax(0, 1fr) minmax(0, 230px);
} }
} }
} }

View File

@@ -19,7 +19,7 @@
padding: 30px 20px; padding: 30px 20px;
overflow: hidden; overflow: hidden;
background-color: #ffffff; background-color: #ffffff;
border: 1px solid #dedede; border: 1px solid var(--border-color);
border-radius: 7px; border-radius: 7px;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);

View File

@@ -3,7 +3,7 @@
} }
.quantity-selector { .quantity-selector {
border: 1px solid #d8d8d8; border: 1px solid var(--border-color);
width: 78px; width: 78px;
height: 40px; height: 40px;
min-height: 40px; min-height: 40px;
@@ -42,7 +42,7 @@
width: 62px; width: 62px;
height: 28px; height: 28px;
min-height: 28px; min-height: 28px;
border-color: #cccccc; border-color: var(--border-color);
background-color: #ffffff; background-color: #ffffff;
.quantity-selector__button { .quantity-selector__button {

View File

@@ -19,7 +19,7 @@
max-width: none; max-width: none;
height: 38px; height: 38px;
color: #666666; color: #666666;
border-color: #cccccc; border-color: var(--border-color);
font-size: 14px; font-size: 14px;
cursor: pointer; cursor: pointer;

View File

@@ -8,6 +8,9 @@
:root, :root,
app-root { app-root {
--border-color: #dddddd;
--bs-border-color: var(--border-color);
--bs-border-color-translucent: var(--border-color);
--bs-body-font-family: 'Gotham', sans-serif; --bs-body-font-family: 'Gotham', sans-serif;
--color-primary: var(--tenant-primary); --color-primary: var(--tenant-primary);
--color-primary-rgb: var(--tenant-primary-rgb); --color-primary-rgb: var(--tenant-primary-rgb);
@@ -69,6 +72,11 @@ label {
color: #8a8a8a; color: #8a8a8a;
> tbody > tr {
border-radius: 0.5rem;
clip-path: inset(0 round 0.5rem);
}
> tbody > tr:nth-of-type(odd) { > tbody > tr:nth-of-type(odd) {
background-color: rgba(221, 221, 221, 0.25); background-color: rgba(221, 221, 221, 0.25);
} }