.point-of-sale-app { display: grid; grid-template-columns: repeat(10, minmax(0, 1fr)); gap: var(--margin-md); section { min-height: 45rem; height: calc(100vh - 200px); max-height: calc(100vh - 200px); } .frappe-control { margin: 0 !important; width: 100%; } .form-group { margin-bottom: 0px !important; } .pointer-no-select { cursor: pointer; user-select: none; } .nowrap { overflow: hidden; white-space: nowrap; } .image { height: 100% !important; object-fit: cover; } .abbr { background-color: var(--gray-50); font-size: var(--text-3xl); } .label { display: flex; align-items: center; font-weight: 700; font-size: var(--text-lg); } .pos-card { background-color: var(--fg-color); box-shadow: var(--shadow-base); border-radius: var(--border-radius-md); } .seperator { margin-left: var(--margin-sm); margin-right: var(--margin-sm); border-bottom: 1px solid var(--gray-300); } .primary-action { @extend .pointer-no-select; display: flex; align-items: center; justify-content: center; padding: var(--padding-sm); margin-top: var(--margin-sm); border-radius: var(--border-radius-md); font-size: var(--text-lg); font-weight: 700; } .highlighted-numpad-btn { box-shadow: inset 0 0px 4px 0px rgba(0, 0, 0, 0.15) !important; font-weight: 700; background-color: var(--gray-50); } > .items-selector { @extend .pos-card; grid-column: span 6 / span 6; display: flex; flex-direction: column; overflow: hidden; > .filter-section { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); background-color: var(--fg-color); padding: var(--padding-lg); padding-bottom: var(--padding-sm); align-items: center; > .label { @extend .label; grid-column: span 4 / span 4; padding-bottom: var(--padding-xs); } > .search-field { grid-column: span 5 / span 5; display: flex; align-items: center; margin: 0px var(--margin-sm); } > .item-group-field { grid-column: span 3 / span 3; display: flex; align-items: center; } } > .items-container { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--margin-lg); padding: var(--padding-lg); padding-top: var(--padding-xs); overflow-y: scroll; overflow-x: hidden; &:after { content: ""; display: block; height: 1px; } > .item-wrapper { @extend .pointer-no-select; border-radius: var(--border-radius-md); box-shadow: var(--shadow-base); position: relative; &:hover { transform: scale(1.02, 1.02); } .item-qty-pill { position: absolute; display: flex; margin: var(--margin-sm); justify-content: flex-end; right: 0px; } .item-display { display: flex; align-items: center; justify-content: center; border-radius: var(--border-radius-md); margin: var(--margin-sm); margin-bottom: 0px; min-height: 8rem; height: 8rem; color: var(--gray-500); > img { @extend .image; } } > .item-detail { display: flex; flex-direction: column; justify-content: center; min-height: 3.5rem; height: 3.5rem; padding-left: var(--padding-sm); padding-right: var(--padding-sm); > .item-name { @extend .nowrap; display: flex; align-items: center; font-size: var(--text-md); } > .item-rate { font-weight: 700; } } } } } > .customer-cart-container { grid-column: span 4 / span 4; display: flex; flex-direction: column; > .customer-section { @extend .pos-card; display: flex; flex-direction: column; padding: var(--padding-md) var(--padding-lg); overflow: visible; > .customer-field { display: flex; align-items: center; padding-top: var(--padding-xs); } > .customer-details { display: flex; flex-direction: column; background-color: var(--fg-color); > .header { display: flex; margin-bottom: var(--margin-md); justify-content: space-between; padding-top: var(--padding-md); > .label { @extend .label; } > .close-details-btn { display: flex; align-items: center; cursor: pointer; } } > .customer-display { display: flex; align-items: center; cursor: pointer; > .customer-image { display: flex; align-items: center; justify-content: center; width: 3rem; height: 3rem; border-radius: 50%; color: var(--gray-500); margin-right: var(--margin-md); > img { @extend .image; border-radius: 50%; } } > .customer-abbr { @extend .abbr; font-size: var(--text-2xl); } > .customer-name-desc { @extend .nowrap; display: flex; flex-direction: column; margin-right: auto; >.customer-name { font-weight: 700; font-size: var(--text-lg); } >.customer-desc { color: var(--gray-600); font-weight: 500; font-size: var(--text-sm); } } > .reset-customer-btn { display: flex; align-items: center; cursor: pointer; } } > .customer-fields-container { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: var(--margin-md); column-gap: var(--padding-sm); row-gap: var(--padding-xs); } > .transactions-label { @extend .label; margin-top: var(--margin-md); margin-bottom: var(--margin-sm); } } > .customer-transactions { height: 100%; overflow-x: hidden; overflow-y: scroll; margin-right: -12px; padding-right: 12px; margin-left: -10px; > .no-transactions-placeholder { height: 100%; display: flex; align-items: center; justify-content: center; background-color: var(--gray-50); border-radius: var(--border-radius-md); } } } > .cart-container { @extend .pos-card; display: flex; flex-direction: column; align-items: center; margin-top: var(--margin-md); position: relative; height: 100%; > .abs-cart-container { position: absolute; display: flex; flex-direction: column; padding: var(--padding-lg); width: 100%; height: 100%; > .cart-label { @extend .label; padding-bottom: var(--padding-md); } > .cart-header { display: flex; width: 100%; font-size: var(--text-md); padding-bottom: var(--padding-md); > .name-header { flex: 1 1 0%; } > .qty-header { margin-right: var(--margin-lg); text-align: center; } > .rate-amount-header { text-align: right; margin-right: var(--margin-sm); } } .no-item-wrapper { display: flex; align-items: center; justify-content: center; background-color: var(--gray-50); border-radius: var(--border-radius-md); font-size: var(--text-md); font-weight: 500; width: 100%; height: 100%; } > .cart-items-section { display: flex; flex-direction: column; flex: 1 1 0%; overflow-y: scroll; > .cart-item-wrapper { @extend .pointer-no-select; display: flex; align-items: center; padding: var(--padding-sm); border-radius: var(--border-radius-md); &:hover { background-color: var(--gray-50); } > .item-image { display: flex; align-items: center; justify-content: center; width: 2rem; height: 2rem; border-radius: var(--border-radius-md); color: var(--gray-500); margin-right: var(--margin-md); > img { @extend .image; } } > .item-abbr { @extend .abbr; font-size: var(--text-lg); } > .item-name-desc { @extend .nowrap; display: flex; flex-direction: column; flex: 1 1 0%; flex-shrink: 1; > .item-name { font-weight: 700; } > .item-desc { font-size: var(--text-sm); color: var(--gray-600); font-weight: 500; } } > .item-qty-rate { display: flex; flex-shrink: 0; text-align: right; margin-left: var(--margin-md); > .item-qty { display: flex; align-items: center; margin-right: var(--margin-lg); font-weight: 700; } > .item-rate-amount { display: flex; flex-direction: column; flex-shrink: 0; text-align: right; > .item-rate { font-weight: 700; } > .item-amount { font-size: var(--text-md); font-weight: 600; } } } } } > .cart-totals-section { display: flex; flex-direction: column; flex-shrink: 0; width: 100%; margin-top: var(--margin-md); > .add-discount-wrapper { @extend .pointer-no-select; display: none; align-items: center; border-radius: var(--border-radius-md); border: 1px dashed var(--gray-500); padding: var(--padding-sm) var(--padding-md); margin-bottom: var(--margin-sm); > .add-discount-field { width: 100%; } .discount-icon { margin-right: var(--margin-sm); } .edit-discount-btn { display: flex; align-items: center; font-weight: 500; color: var(--dark-green-500); } } > .net-total-container { display: flex; align-items: center; justify-content: space-between; padding: var(--padding-sm) 0px; font-weight: 500; font-size: var(--text-md); } > .taxes-container { display: none; flex-direction: column; font-weight: 500; font-size: var(--text-md); > .tax-row { display: flex; justify-content: space-between; line-height: var(--text-3xl); } } > .grand-total-container { display: flex; align-items: center; justify-content: space-between; padding: var(--padding-sm) 0px; font-weight: 700; font-size: var(--text-lg); } > .checkout-btn { @extend .primary-action; background-color: var(--blue-200); color: white; } > .edit-cart-btn { @extend .primary-action; display: none; background-color: var(--gray-300); font-weight: 500; transition: all 0.15s ease-in-out; &:hover { background-color: var(--gray-600); color: white; font-weight: 700; } } } > .numpad-section { display: none; flex-direction: column; flex-shrink: 0; margin-top: var(--margin-sm); padding: var(--padding-sm); padding-bottom: 0px; width: 100%; > .numpad-totals { display: flex; justify-content: space-between; margin-bottom: var(--margin-md); font-size: var(--text-md); font-weight: 700; } > .numpad-container { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: var(--margin-md); margin-bottom: var(--margin-md); > .numpad-btn { @extend .pointer-no-select; border-radius: var(--border-radius-md); display: flex; align-items: center; justify-content: center; padding: var(--padding-md); box-shadow: var(--shadow-sm); } > .col-span-2 { grid-column: span 2 / span 2; } > .remove-btn { font-weight: 700; color: var(--red-500); } } > .checkout-btn { @extend .primary-action; margin: 0px; margin-bottom: var(--margin-sm); background-color: var(--blue-200); color: white; } } } } } .invoice-wrapper { @extend .pointer-no-select; display: flex; justify-content: space-between; border-radius: var(--border-radius-md); padding: var(--padding-sm); &:hover { background-color: var(--gray-50); } > .invoice-name-date { display: flex; flex-direction: column; justify-content: space-around; > .invoice-name { @extend .nowrap; font-size: var(--text-md); font-weight: 700; } > .invoice-date { @extend .nowrap; font-size: var(--text-sm); display: flex; align-items: center; } } > .invoice-total-status { display: flex; flex-direction: column; font-weight: 500; font-size: var(--text-sm); margin-left: var(--margin-md); > .invoice-total { margin-bottom: var(--margin-xs); font-size: var(--text-base); font-weight: 700; text-align: right; } > .invoice-status { display: flex; align-items: center; justify-content: right; } } } > .item-details-container { @extend .pos-card; grid-column: span 4 / span 4; display: none; flex-direction: column; padding: var(--padding-lg); padding-top: var(--padding-md); > .item-details-header { display: flex; justify-content: space-between; margin-bottom: var(--margin-md); > .close-btn { @extend .pointer-no-select; } } > .item-display { display: flex; > .item-name-desc-price { flex: 1 1 0%; display: flex; flex-direction: column; justify-content: flex-end; margin-right: var(--margin-md); > .item-name { font-size: var(--text-3xl); font-weight: 600; } > .item-desc { font-size: var(--text-md); font-weight: 500; } > .item-price { font-size: var(--text-3xl); font-weight: 700; } } > .item-image { display: flex; align-items: center; justify-content: center; width: 11rem; height: 11rem; border-radius: var(--border-radius-md); margin-left: var(--margin-md); color: var(--gray-500); > img { @extend .image; } > .item-abbr { @extend .abbr; display: flex; align-items: center; justify-content: center; border-radius: var(--border-radius-md); font-size: var(--text-3xl); width: 100%; height: 100%; } } } > .discount-section { display: flex; align-items: center; margin-bottom: var(--margin-sm); > .item-rate { font-weight: 500; margin-right: var(--margin-sm); text-decoration: line-through; } > .item-discount { padding: 3px var(--padding-sm); border-radius: var(--border-radius-sm); background-color: var(--green-100); color: var(--dark-green-500); font-size: var(--text-sm); font-weight: 700; } } > .form-container { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--padding-md); > .auto-fetch-btn { @extend .pointer-no-select; margin: var(--margin-xs); } } } > .payment-container { @extend .pos-card; grid-column: span 6 / span 6; display: none; flex-direction: column; padding: var(--padding-lg); .border-primary { border: 1px solid var(--blue-500); } .submit-order-btn { @extend .primary-action; background-color: var(--blue-500); color: white; } .section-label { @extend .label; @extend .pointer-no-select; margin-bottom: var(--margin-md); } > .payment-modes { display: flex; padding-bottom: var(--padding-sm); margin-bottom: var(--margin-sm); overflow-x: scroll; overflow-y: hidden; flex-shrink: 0; > .payment-mode-wrapper { min-width: 40%; padding: var(--padding-xs); > .mode-of-payment { @extend .pos-card; @extend .pointer-no-select; padding: var(--padding-md) var(--padding-lg); > .pay-amount { display: inline; float: right; font-weight: 700; } > .mode-of-payment-control { display: none; align-items: center; margin-top: var(--margin-sm); margin-bottom: var(--margin-xs); } > .loyalty-amount-name { display: none; float: right; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } > .cash-shortcuts { display: none; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--margin-sm); font-size: var(--text-sm); text-align: center; > .shortcut { @extend .pointer-no-select; border-radius: var(--border-radius-sm); background-color: var(--gray-100); font-weight: 500; padding: var(--padding-xs) var(--padding-sm); transition: all 0.15s ease-in-out; &:hover { background-color: var(--gray-300); } } } } > .loyalty-card { display: flex; flex-direction: column; } } } > .fields-numpad-container { display: flex; flex: 1; height: 100%; position: relative; justify-content: flex-end; > .fields-section { flex: 1; position: absolute; display: flex; flex-direction: column; width: 50%; height: 100%; top: 0; left: 0; padding-bottom: var(--margin-md); .invoice-fields { overflow-y: scroll; height: 100%; padding-right: var(--padding-sm); } } > .number-pad { flex: 1; display: flex; justify-content: flex-end; align-items: flex-end; max-width: 50%; .numpad-container { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--margin-md); margin-bottom: var(--margin-md); > .numpad-btn { @extend .pointer-no-select; border-radius: var(--border-radius-md); display: flex; align-items: center; justify-content: center; padding: var(--padding-md); box-shadow: var(--shadow-sm); } } } } > .totals-section { display: flex; margin-top: auto; margin-bottom: var(--margin-sm); justify-content: center; flex-direction: column; flex-shrink: 0; > .totals { display: flex; background-color: var(--gray-100); justify-content: center; padding: var(--padding-md); border-radius: var(--border-radius-md); > .col { flex-grow: 1; text-align: center; > .total-label { font-size: var(--text-md); font-weight: 500; color: var(--gray-600); } > .value { font-size: var(--text-2xl); font-weight: 700; } } > .seperator-y { margin-left: var(--margin-sm); margin-right: var(--margin-sm); border-right: 1px solid var(--gray-300); } } > .number-pad { display: none; } } } > .past-order-list { @extend .pos-card; grid-column: span 4 / span 4; display: none; flex-direction: column; overflow: hidden; > .filter-section { display: flex; flex-direction: column; background-color: var(--fg-color); padding: var(--padding-lg); > .search-field { width: 100%; display: flex; align-items: center; margin-top: var(--margin-md); margin-bottom: var(--margin-xs); } > .status-field { width: 100%; display: flex; align-items: center; } } > .invoices-container { padding: var(--padding-lg); padding-top: 0px; overflow-x: hidden; overflow-y: scroll; } } > .past-order-summary { display: none; grid-column: span 6 / span 6; flex-direction: column; align-items: center; justify-content: center; > .no-summary-placeholder { display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; background-color: var(--gray-50); font-weight: 500; border-radius: var(--border-radius-md); } > .invoice-summary-wrapper { @extend .pos-card; display: none; position: relative; width: 31rem; height: 100%; > .abs-container { position: absolute; display: flex; flex-direction: column; width: 100%; height: 100%; padding: var(--padding-lg); > .upper-section { display: flex; justify-content: space-between; width: 100%; margin-bottom: var(--margin-md); > .left-section { display: flex; flex-direction: column; align-items: flex-start; justify-content: flex-end; padding-right: var(--padding-sm); > .customer-name { font-size: var(--text-2xl); font-weight: 700; } > .customer-email { font-size: var(--text-md); font-weight: 500; color: var(--gray-600); } > .cashier { font-size: var(--text-md); font-weight: 500; color: var(--gray-600); margin-top: auto; } } > .right-section { display: flex; flex-direction: column; align-items: flex-end; justify-content: space-between; > .paid-amount { font-size: var(--text-2xl); font-weight: 700; } > .invoice-name { font-size: var(--text-md); font-weight: 500; color: var(--gray-600); margin-bottom: var(--margin-sm); } } } > .summary-container { display: flex; flex-direction: column; border-radius: var(--border-radius-md); background-color: var(--gray-50); margin: var(--margin-md) 0px; > .summary-row-wrapper { display: flex; align-items: center; justify-content: space-between; padding: var(--padding-sm) var(--padding-md); } > .taxes-wrapper { display: flex; flex-direction: column; padding: 0px var(--padding-md); > .tax-row { display: flex; justify-content: space-between; font-size: var(--text-md); line-height: var(--text-3xl); } } > .item-row-wrapper { display: flex; align-items: center; padding: var(--padding-sm) var(--padding-md); > .item-name { @extend .nowrap; font-weight: 500; margin-right: var(--margin-md); } > .item-qty { font-weight: 500; margin-left: auto; } > .item-rate-disc { display: flex; text-align: right; margin-left: var(--margin-md); justify-content: flex-end; > .item-disc { color: var(--dark-green-500); } > .item-rate { font-weight: 500; margin-left: var(--margin-md); } } } > .grand-total { font-weight: 700; } > .payments { font-weight: 700; } } > .summary-btns { display: flex; justify-content: space-between; > .summary-btn { flex: 1; margin: 0px var(--margin-xs); } > .new-btn { background-color: var(--blue-500); color:white; font-weight: 500; } } } } } }