Compare commits

..

No commits in common. "543b896db2d5ccc58609e4926b6190245e18e631" and "65843ef6a307b0c7c0ab70622c3c6d5dd8981f3a" have entirely different histories.

3596 changed files with 620379 additions and 32 deletions

1
.gitignore vendored
View File

@ -163,7 +163,6 @@ GitHub.sublime-settings
.history
static
staticfiles
media
tmp

View File

@ -58,5 +58,5 @@ application = ProtocolTypeRouter(
)
if django.conf.settings.DEBUG:
application = ASGIStaticFilesHandler(app)
# if django.conf.settings.DEBUG:
# application = ASGIStaticFilesHandler(app)

View File

@ -61,7 +61,7 @@ from encrypted_model_fields.fields import (
# from simple_history.models import HistoricalRecords
from plans.models import Invoice
from django_extensions.db.fields import RandomCharField,AutoSlugField
from django_extensions.db.fields import RandomCharField
logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)
@ -74,7 +74,15 @@ class Base(models.Model):
primary_key=True,
verbose_name=_("Primary Key"),
)
slug = RandomCharField(length=8, unique=True)
slug = models.SlugField(
null=True,
blank=True,
unique=True,
verbose_name=_("Slug"),
help_text=_(
"Slug for the object. If not provided, it will be generated automatically."
),
)
created_at = models.DateTimeField(auto_now_add=True, verbose_name=_("Created At"))
updated_at = models.DateTimeField(auto_now=True, verbose_name=_("Updated At"))
@ -736,7 +744,7 @@ class Car(Base):
)
def save(self, *args, **kwargs):
# self.slug = slugify(self.vin)
self.slug = slugify(self.vin)
self.hash = self.get_hash
super(Car, self).save(*args, **kwargs)
@ -2734,21 +2742,6 @@ class Vendor(models.Model, LocalizedNameMixin):
models.Index(fields=["crn"], name="vendor_crn_idx"),
models.Index(fields=["vrn"], name="vendor_vrn_idx"),
]
constraints = [
models.UniqueConstraint(
fields=["dealer", "crn"], name="unique_crn_per_dealer"
),
models.UniqueConstraint(
fields=["dealer", "vrn"], name="unique_vrn_per_dealer"
),
models.UniqueConstraint(
fields=["dealer", "email"], name="unique_email_per_dealer"
),
models.UniqueConstraint(
fields=["dealer", "phone_number"], name="unique_phone_number_per_dealer"
),
]
def __str__(self):
return self.name

View File

@ -776,7 +776,7 @@ def aging_inventory_list_view(request, dealer_slug):
dealer=dealer,
receiving_date__date__lt=today_local - timedelta(days=aging_threshold_days)
).exclude(status='sold')
# Apply filters to the queryset if they exist. Chaining is fine here.
if selected_make:
aging_cars_queryset = aging_cars_queryset.filter(id_car_make__name=selected_make)
@ -971,9 +971,8 @@ class AjaxHandlerView(LoginRequiredMixin, View):
return JsonResponse({"error": "Invalid action"}, status=400)
def decode_vin(self, request):
dealer = request.dealer
vin_no = request.GET.get("vin_no")
car_existed = models.Car.objects.filter(dealer=dealer,vin=vin_no).exists()
car_existed = models.Car.objects.filter(vin=vin_no).exists()
if car_existed:
return JsonResponse({"error": _("VIN number exists")}, status=400)
@ -3655,7 +3654,7 @@ class UserCreateView(
# return self.form_invalid(form)
email = form.cleaned_data["email"]
if models.Staff.objects.filter(user__email=email).exists() or models.Dealer.objects.filter(user__email=email).exists():
if models.Staff.objects.filter(dealer=dealer,user__email=email).exists() or models.Dealer.objects.filter(user__email=email).exists():
messages.error(
self.request,
_(
@ -7912,28 +7911,28 @@ class ItemExpenseListView(LoginRequiredMixin, PermissionRequiredMixin, ListView)
return qs
class ItemExpenseDetailView(LoginRequiredMixin, PermissionRequiredMixin, DetailView):
class ItemExpenseDetailView(LoginRequiredMixin, PermissionRequiredMixin, DetailView):
queryset=ItemModel.objects.filter(item_role='expense')
template_name = "items/expenses/expense_detail.html"
context_object_name = "expense"
context_object_name = "expense"
permission_required = ["django_ledger.view_itemmodel"]
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
# Get the related bills queryset
bills_list = self.object.billmodel_set.all().order_by('-created')
# Paginate the bills
paginator = Paginator(bills_list, 10) # Show 10 bills per page
page_number = self.request.GET.get('page')
page_obj = paginator.get_page(page_number)
# Add the paginated bills to the context
context['page_obj'] = page_obj
context["entity"] = get_user_type(self.request).entity
return context
@ -9877,14 +9876,14 @@ def ledger_unpost_all_journals(request, dealer_slug, entity_slug, pk):
def pricing_page(request, dealer_slug):
dealer=get_object_or_404(models.Dealer, slug=dealer_slug)
vat = models.VatRate.objects.filter(dealer=dealer).first()
now = datetime.now().date() + timedelta(days=15)
now = datetime.now().date() + timedelta(days=15)
if not hasattr(dealer.user,'userplan') or dealer.is_plan_expired or dealer.user.userplan.expire <= now:
plan_list = PlanPricing.objects.annotate(
price_with_tax=Round(F('price') * vat.rate + F('price'), 2)
).all()
form = forms.PaymentPlanForm()
return render(request, "pricing_page.html", {"plan_list": plan_list, "form": form})
return render(request, "pricing_page.html", {"plan_list": plan_list, "form": form})
else:
messages.info(request,_("You already have an plan!!"))
return redirect('home',dealer_slug=dealer_slug)

Binary file not shown.

Binary file not shown.

Binary file not shown.

9
staticfiles/css/all.min.css vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,53 @@
/* Hide scrollbar for day grid month view on small screens */
@media (max-width: 767px) {
.djangoAppt_no-events {
margin-bottom: 10px;
}
.djangoAppt_btn-new-event {
padding: 5px 8px !important;
font-size: 13px !important;
}
.fc-dayGridMonth-view .fc-scroller {
overflow: hidden !important;
}
.modal-content {
margin: 0 auto !important;
}
.modal-footer {
text-align: left !important;
flex-wrap: inherit !important;
justify-content: center !important;
align-content: flex-start;
}
#eventDetailsModal .btn {
margin-right: 2px !important;
font-size: 13px !important;
}
#eventModalBody, #serviceSelect {
font-size: 13px !important;
}
#eventModalLabel {
font-size: 15px !important;
}
}
/* Hide scrollbar for time grid day view on larger screens */
@media (min-width: 450px) {
.fc-timeGridDay-view .fc-scroller {
overflow: hidden !important;
}
}
@media (min-width: 600px) {
.fc-scroller {
overflow: hidden !important;
}
}

View File

@ -0,0 +1,144 @@
.section-content-button {
position: absolute;
top: 20px;
right: 20px;
}
.modify-btn {
color: #fff;
padding: 8px 12px;
border: none;
border-radius: 4px;
cursor: pointer;
text-decoration: none;
transition: all 0.3s; /* Consistent transition */
}
/* Button hover effects for a dynamic touch */
.modify-btn:hover {
box-shadow: 0 6px 15px rgba(0, 0, 0, 0.1);
transform: scale(1.05) translateY(-3px);
}
.button-color-blue {
background: linear-gradient(90deg, #007BFF, #0056b3);
}
.button-color-red {
background: linear-gradient(90deg, #dc3545, #c82333);
}
.button-color-green {
background: linear-gradient(90deg, #28a745, #218838);
}
.button-color-yellow {
background: linear-gradient(90deg, #ffc107, #d39e00);
}
.button-color-purple {
background: linear-gradient(90deg, #6f42c1, #5a32a3);
}
.button-color-orange {
background: linear-gradient(90deg, #fd7e14, #e66400);
}
.button-color-teal {
background: linear-gradient(90deg, #20c997, #17a2b8);
}
.button-color-pink {
background: linear-gradient(90deg, #e83e8c, #d63384);
}
.button-color-gray {
background: linear-gradient(90deg, #6c757d, #5a636e);
}
.button-color-blue:hover {
background: linear-gradient(90deg, #0056b3, #007BFF); /* Reverse gradient on hover */
transform: scale(1.05); /* Slight scale on hover for engagement */
color: #babaf5;
}
.button-color-red:hover {
background: linear-gradient(90deg, #c82333, #dc3545);
transform: scale(1.05);
color: #efcece;
}
.button-color-green:hover {
background: linear-gradient(90deg, #218838, #28a745);
transform: scale(1.05);
color: #c3e6cb;
}
.button-color-yellow:hover {
background: linear-gradient(90deg, #d39e00, #ffc107); /* Reverse gradient on hover */
transform: scale(1.05); /* Slight scale on hover for engagement */
color: #ffe58a;
}
.button-color-purple:hover {
background: linear-gradient(90deg, #5a32a3, #6f42c1);
transform: scale(1.05);
color: #d1b6e1;
}
.button-color-orange:hover {
background: linear-gradient(90deg, #e66400, #fd7e14);
transform: scale(1.05);
color: #ffcc99;
}
.button-color-teal:hover {
background: linear-gradient(90deg, #17a2b8, #20c997);
transform: scale(1.05);
color: #ace2e1;
}
.button-color-pink:hover {
background: linear-gradient(90deg, #d63384, #e83e8c);
transform: scale(1.05);
color: #f2a6c6;
}
.button-color-gray:hover {
background: linear-gradient(90deg, #5a636e, #6c757d);
transform: scale(1.05);
color: #d1d5d9;
}
.buttons-container {
display: flex;
gap: 5px; /* Provides space between the buttons */
}
.service-btn-container {
display: flex;
flex-direction: row;
gap: 20px;
}
.service-btn {
padding: 8px 20px !important;
}
@media screen and (max-width: 768px) {
.modify-btn {
padding: 6px 10px;
font-size: 14px;
}
}
@media screen and (max-width: 487px) {
.section-content-button.modify-btn {
padding: 4px 8px;
font-size: 12px;
}
.buttons-container {
gap: 3px;
}
}

View File

@ -0,0 +1,35 @@
.days-off-form-wrapper {
margin: 0 auto;
padding-top: 50px;
}
.days-off-form-wrapper h2 {
margin-top: 0;
margin-bottom: 20px;
text-align: center;
}
.do-form-content {
padding: 20px;
border: 1px solid #ddd;
border-radius: 5px;
max-width: 600px;
margin: 0 auto;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
.form-group {
margin-bottom: 20px;
}
.form-group label {
display: block;
margin-bottom: 5px;
}
.form-group input, .form-group select, .form-group textarea {
width: 100%;
padding: 10px;
border: 1px solid #e0e0e0;
border-radius: 4px;
}

View File

@ -0,0 +1,140 @@
.appointment-display-content{
margin: 30px auto;
padding: 20px 0;
}
.app-content {
max-width: 950px;
padding: 20px;
border: 1px solid #ddd;
border-radius: 5px;
margin: 0 auto;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(800px);
background-color: transparent;
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes fadeInGreen {
from {
background-color: transparent;
}
to {
background-color: #4CAF50; /* green */
}
}
@keyframes fadeInRed {
from {
background-color: transparent;
}
to {
background-color: #F44336; /* red */
}
}
.appointment-card {
border: 1px solid #e0e0e0;
padding: 20px;
border-radius: 8px;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
margin-top: 20px;
animation: fadeIn 0.5s forwards;
display: flex;
flex-direction: column;
align-items: center; /* Center the contents */
}
.appointment-card h2 {
margin-top: 0;
border-bottom: 1px solid #e0e0e0;
padding-bottom: 10px;
width: 100%;
}
.appointment-details {
display: flex;
flex-wrap: wrap;
margin-top: 20px;
width: 100%;
justify-content: space-between; /* Evenly space the details */
}
.appointment-detail, .appointment-detail-payment {
flex: 1;
padding: 10px;
border: 1px solid #e0e0e0;
margin: 5px;
border-radius: 4px;
flex-basis: 48%; /* Allow 2 details per row with a little space in between */
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); /* Add subtle shadow */
transition: all 0.3s; /* Smooth transitions */
animation: fadeIn 0.6s forwards; /* Default fade-in */
}
.appointment-detail:nth-child(1) { animation-delay: 0.05s; }
.appointment-detail:nth-child(2) { animation-delay: 0.05s; }
.appointment-detail:nth-child(3) { animation-delay: 0.1s; }
.appointment-detail:nth-child(4) { animation-delay: 0.1s; }
.appointment-detail:nth-child(5) { animation-delay: 0.15s; }
.appointment-detail:nth-child(6) { animation-delay: 0.15s; }
.appointment-detail:nth-child(7) { animation-delay: 0.2s; }
.appointment-detail:nth-child(8) { animation-delay: 0.2s; }
.appointment-detail:nth-child(9) { animation-delay: 0.25s; }
.appointment-detail:nth-child(10) { animation-delay: 0.25s; }
.appointment-detail:nth-child(11) { animation-delay: 0.3s; }
.appointment-detail:nth-child(12) { animation-delay: 0.3s; }
.is-paid-true {
animation: fadeIn 0.35s forwards, fadeInGreen 0.35s forwards;
color: white;
}
.is-paid-false {
animation: fadeIn 0.35s forwards, fadeInRed 0.35s forwards;
color: white;
}
.hover-element:hover {
background-color: #f7f7f7;
transform: translateY(-5px); /* Slight elevation on hover */
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); /* Enhanced shadow on hover */
}
.appointment-detail i {
margin-right: 10px;
color: #555; /* Slightly darker icon color */
}
/* Mobile First Styles (Default) */
.appointment-detail, .appointment-detail-payment {
flex-basis: 100%; /* Each detail takes the full width on mobile */
margin: 10px 0; /* Adjusted margin */
}
/* Tablet Styles */
@media (min-width: 768px) and (max-width: 991px) {
.appointment-detail, .appointment-detail-payment {
flex-basis: 48%; /* 2 details per row for tablets */
margin: 5px; /* Revert to original margin */
}
}
/* Desktop Styles */
@media (min-width: 992px) {
.appointment-detail, .appointment-detail-payment {
flex-basis: 48%; /* 2 details per row for desktop */
margin: 5px;
}
}

View File

@ -0,0 +1,37 @@
.service-form-wrapper {
padding: 20px 0;
}
.service-form-content {
padding: 20px;
margin: 30px auto;
border: 1px solid #ddd;
border-radius: 5px;
max-width: 600px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
h2 {
border-bottom: 1px solid #e0e0e0;
padding-bottom: 15px;
margin-bottom: 30px;
font-weight: 600;
}
.form-control {
width: 100%;
padding: 5px;
border: 1px solid #ccc;
border-radius: 5px;
transition: border 0.3s;
}
.form-control:focus {
border-color: #007BFF;
box-shadow: 0 0 5px rgba(0,123,255,0.2);
}
/* Design TextArea */
textarea.form-control {
height:60px;
}

View File

@ -0,0 +1,92 @@
/* staff_form.css */
.staff-form-wrapper {
margin: 15px auto;
padding: 10px 0;
}
.staff-form-content {
padding: 20px;
border: 1px solid #ddd;
border-radius: 5px;
max-width: 1100px;
margin: 0 auto;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
h3 {
border-bottom: 1px solid #e0e0e0;
padding-bottom: 15px;
margin-bottom: 20px;
font-weight: 500;
}
.form-group {
margin-bottom: 20px;
}
.form-group label {
display: block;
margin-bottom: 8px;
font-weight: 500;
}
.form-control {
width: 100%;
padding: 2px 10px;
border: 1px solid #ccc;
border-radius: 5px;
transition: border 0.3s;
}
.form-control:focus {
border-color: #007BFF;
box-shadow: 0 0 5px rgba(0,123,255,0.2);
}
.form-check {
margin-bottom: 10px;
}
.form-check label {
margin-left: 5px;
font-weight: 400;
}
.btn {
padding: 10px 20px;
border: none;
background-color: #007bff;
color: #fff;
border-radius: 5px;
cursor: pointer;
transition: background-color 0.3s;
}
.btn:hover {
background-color: #0056b3;
}
/* ############################### */
.user-not-found {
margin-top: 2px;
margin-bottom: 20px;
padding: 5px;
background-color: #f9f9f9;
border-radius: 4px;
font-size: 0.9rem;
}
.user-not-found a {
color: #007bff;
text-decoration: underline;
}
.user-not-found small {
color: #666;
}
small {
color: #3d3d3d;
font-size: 12px;
}

View File

@ -0,0 +1,202 @@
body {
font-family: 'Arial', sans-serif;
}
.profile-container {
margin: 5px auto;
background-color: #fff;
border-radius: 8px;
}
.service-container {
margin: 5px auto;
border-radius: 8px;
}
.profile-section {
border: 1px solid inherit;
max-width: 1000px;
padding: 20px;
margin: 0 auto 30px auto;
position: relative;
background-color: inherit;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
border-radius: 6px;
transition: all 0.3s;
}
.profile-section:hover {
transform: translateY(-5px);
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.12);
}
.section-header {
display: flex;
justify-content: space-between;
align-items: center;
}
.section-content {
margin-top: 20px;
}
.profile-section h2 {
margin-bottom: 20px; /* Space between the title and content */
}
.profile-section p {
line-height: 1.5em; /* Enhanced line spacing for readability */
margin-bottom: 15px;
}
table {
width: 100%;
border-collapse: collapse;
margin: 20px 0;
font-size: 16px;
text-align: left;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
border-radius: 6px;
overflow: hidden; /* To respect border-radius in tables */
}
table th, table td {
padding: 12px 15px;
border-bottom: 1px solid #ddd;
transition: background-color 0.3s; /* Smooth transition for hover effect */
}
table th {
background-color: #f2f2f2;
font-weight: bold;
}
table tbody tr:hover {
background-color: #f5f5f5;
}
/* Adding gradient backgrounds for a more vibrant look */
.profile-container {
/*background-image: linear-gradient(to bottom right, #fff, #f7f9fc);*/
}
/* Additional hover effect for the sections */
.profile-section:hover {
box-shadow: 0 6px 20px rgba(0, 0, 0, 0.08);
}
/* Elegant & smooth transitions for all elements */
* {
transition: all 0.3s ease-out;
}
/* Elevate the table headers for a layered appearance */
table th {
position: relative;
z-index: 2;
box-shadow: 0 6px 10px rgba(0, 0, 0, 0.06);
}
/* Subtle hover effects for table rows */
table tbody tr {
position: relative;
z-index: 1;
transform: scale(1);
transition: transform 0.3s, box-shadow 0.3s;
}
table tbody tr:hover {
transform: scale(1.01);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}
/* Animate the appearance of the profile sections for a smooth load-in effect */
@keyframes slideInFromLeft {
0% {
transform: translateX(-100%);
opacity: 0;
}
100% {
transform: translateX(0);
opacity: 1;
}
}
.profile-section {
animation: slideInFromLeft 0.6s forwards;
}
/* Staggered animation delays for each section for a sequential load-in */
.profile-section:nth-child(1) {
animation-delay: 0.2s;
}
.profile-section:nth-child(2) {
animation-delay: 0.4s;
}
.profile-section:nth-child(3) {
animation-delay: 0.6s;
}
.profile-section:nth-child(4) {
animation-delay: 0.8s;
}
.profile-section:nth-child(5) {
animation-delay: 1.0s;
}
/* Consider adding this for a smoother feel when scrolling */
body {
scroll-behavior: smooth;
}
/* Responsive design for tablets and mobile devices */
@media screen and (max-width: 768px) {
.profile-container {
margin: 20px 10px;
padding: 15px;
}
.profile-section {
padding: 15px;
}
.section-content-button {
top: 10px;
right: 10px;
}
table th, table td {
padding: 10px;
}
.profile-section h2 {
font-size: 20px;
margin-bottom: 15px;
}
.profile-section p {
font-size: 14px;
}
.responsive-table-container {
overflow-x: auto; /* Allows horizontal scrolling */
-webkit-overflow-scrolling: touch; /* Smooth scroll for touch devices */
}
/* Optional: Add a shadow on the right to indicate more content */
.responsive-table-container::before {
content: '';
position: absolute;
top: 0;
right: 0;
width: 10px;
height: 100%;
box-shadow: -5px 0 10px rgba(0, 0, 0, 0.05);
pointer-events: none; /* Ensures it doesn't interfere with other interactions */
}
}

View File

@ -0,0 +1,262 @@
/* Set margins for the main container */
.main-container {
margin-left: 20px;
margin-right: 20px;
}
/* Center and set max width for the body container */
.body-container {
margin: 0 auto;
max-width: 1080px;
padding: 0 15px;
}
/* Set display and margin for page body */
.page-body {
display: flex;
flex-direction: row;
margin-top: 50px;
}
/* Set flex for appointment user info */
.appointment-user-info {
flex: 3;
}
/* Set flex and margin for service description and pay */
.service-description-and-pay {
flex: 1;
margin-left: 20px; /* Adjust the value as needed */
}
/* Set margins and font styles for title sections */
.appointment-user-info-title, .service-details-title, .payment-details-title {
margin-bottom: 10px;
font-family: Lobster, cursive;
font-size: 18px;
color: #0c042c;
}
/* Set font styles for description titles */
.description-title {
font-size: 16px;
font-weight: 400;
color: #0c042c;
}
/* Set margins, borders, padding, and font styles for the "already have an account" section */
.already-have-account {
margin-top: 25px;
margin-bottom: 30px;
width: 100%;
border: 1px solid #0c042c;
border-radius: 2px;
justify-content: left;
padding: 10px 8px;
display: flex;
align-items: center;
font-family: "DejaVu Serif", serif;
}
/* Set grid display and column gap for name and email input fields */
.name-email {
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 10px;
}
/* Set margin and display for "receive email" checkbox */
.receive-email {
margin-bottom: 20px;
}
/* Set margins and display for phone number, address, and additional information input fields */
.address, .additional-information {
margin-top: 20px;
display: grid;
}
.phone-number {
margin-bottom: 15px;
}
.phone-input-container {
display: flex;
align-items: center; /* vertically center the items */
}
.phone-number select {
margin-right: 10px; /* add some space between them */
}
.phone-number input {
flex: 1; /* take available space */
}
.phone-number select {
padding: 6px 10px;
border-radius: 4px;
border: 1px solid #ccc;
appearance: none; /* remove default appearance */
background-color: #fff;
margin-right: 10px;
cursor: pointer;
font-size: 14px;
color: #333;
transition: border-color 0.3s;
}
.phone-number select:focus {
border-color: #007bff;
outline: none;
}
/* Set font styles for input labels */
label {
font-family: "DejaVu Serif", serif;
}
/* Set margin for second part horizontal line */
.second-part {
margin-top: 10px;
}
/* Set grid display, padding, and margin for user info input fields */
.user-info-input {
margin-top: 20px;
display: grid;
padding: 30px 10px;
}
/* Set grid display, padding, margin, and font styles for service description */
.service-description-content {
margin-top: 20px;
color: black;
padding-top: 30px;
display: grid;
grid-template-rows: 1fr 1fr 1fr;
grid-gap: 10px;
font-family: "DejaVu Serif", serif;
font-size: 16px;
}
/* Set font style for service name */
.item-name {
color: black;
}
/* Set flex for title section */
.title {
flex: 1;
}
/* Set color for links */
a {
color: #0c042c;
}
/* Set padding, border radius, and font styles for input fields */
.user-info input {
box-sizing: border-box;
padding: 5px;
border-radius: 5px;
}
.name-email {
margin-bottom: 15px;
}
/* Set width, margin and border */
.user-info-input input[type="text"],
.user-info-input input[type="email"],
.user-info-input textarea {
width: 100%;
border: 1px solid #a2a2a2;
}
/* Set a 2px solid border with a specific color when the input or textarea is in focus */
.user-info-input input[type="text"]:focus,
.user-info-input input[type="email"]:focus,
.user-info-input input[type="tel"]:focus,
.user-info-input textarea:focus {
border: 2px solid #040f49;
}
/* Style for the payment total */
.total {
margin-top: 20px;
margin-bottom: 10px;
display: flex;
justify-content: space-between;
align-items: center;
font-family: "DejaVu Serif", serif;
color: rgba(12, 4, 44, 0.93);
font-size: 16px;
line-height: 1.8;
}
/* Media query for screens up to 795px */
@media only screen and (max-width: 795px) {
/* Adjust the page body layout for smaller screens */
.page-body {
flex-direction: column;
}
/* Adjust the flex properties for smaller screens */
.appointment-user-info,
.service-description-and-pay {
flex: none; /* reset the flex */
width: 100%; /* take full width */
}
/* Remove the margin for service description and pay */
.service-description-and-pay {
margin-left: 0;
margin-bottom: 20px;
}
/* Adjust the grid for name and email for smaller screens */
.name-email {
grid-template-columns: 1fr; /* stack them vertically */
}
/* Adjust the phone number container */
.phone-input-container {
flex-direction: column;
align-items: stretch; /* make them take full width */
}
.phone-number select,
.phone-number input {
margin-right: 0;
margin-bottom: 10px;
}
/* Adjust the user info input fields */
.user-info-input {
padding: 20px 10px;
}
/* Adjust the service description content */
.service-description-content {
grid-template-rows: repeat(3, auto); /* adjust the grid rows */
}
/* Adjust the total layout */
.total {
flex-direction: column;
text-align: center;
}
}
@media only screen and (max-width: 450px) {
/* Adjust the page body layout for smaller screens */
.main-container {
width: 97%;
margin: 0 !important;
}
}

View File

@ -0,0 +1,17 @@
.fc-scroller {
overflow: hidden !important;
}
@media (max-width: 450px) {
.fc-daygrid-day-events {
display: none !important;
margin: 0 !important;
padding: 0 !important;
font-size: 0 !important;
height: 0 !important;
}
.fc, .fc-button {
padding: .3em .45em !important;
}
}

View File

@ -0,0 +1,452 @@
.djangoAppt_main-container {
margin: 20px auto;
max-width: 1200px;
padding: 20px;
background-color: rgba(248, 249, 250, 0.4);
border-radius: 5px;
box-shadow: 0 0 2px rgba(0, 0, 0, 0.1);
}
.djangoAppt_body-container {
margin: 0 auto;
max-width: 1120px;
padding: 0 15px;
}
.djangoAppt_page-body {
display: flex;
flex-direction: row;
margin-top: 50px;
}
.djangoAppt_appointment-calendar {
flex: 3;
padding: 20px;
background-color: #fff;
border-radius: 5px;
box-shadow: 0 0 2px rgba(0, 0, 0, 0.1);
}
.djangoAppt_service-description {
flex: 1;
margin-left: 20px;
padding: 20px;
background-color: #fff;
border-radius: 5px;
box-shadow: 0 0 2px rgba(0, 0, 0, 0.1);
}
.djangoAppt_second-part {
margin-top: 10px;
}
.djangoAppt_calendar-and-slot {
margin-top: 20px;
display: flex;
}
.djangoAppt_service-description-content {
margin-top: 20px;
color: black;
}
.djangoAppt_item-name {
color: black;
font-weight: bold;
font-size: 20px;
margin-bottom: 10px;
}
.djangoAppt_calendar {
flex: 3;
}
.djangoAppt_slot {
flex: 2;
}
.djangoAppt_appointment-calendar-title-timezone {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
}
.djangoAppt_title {
flex: 1;
font-weight: bold;
font-size: 20px;
}
.djangoAppt_timezone-details {
flex: 1;
text-align: right;
font-size: 16px;
color: #333;
}
.fc-day {
font-size: 12px;
}
.fc-daygrid-day-frame {
height: 20px;
}
a {
color: #0c042c;
}
.djangoAppt_slot {
margin-left: 20px;
}
.djangoAppt_slot-list {
columns: 2;
-webkit-columns: 2;
-moz-columns: 2;
margin-top: 10px;
padding-left: 10px !important;
}
#slot-list li {
list-style-type: none;
text-align: center;
}
.djangoAppt_appointment-slot {
border: 1px solid #ccc;
background-color: rgba(0, 48, 124, 0.95);
color: #fff;
padding: 7px;
margin-bottom: 6px;
cursor: pointer;
border-radius: 4px;
}
.djangoAppt_appointment-slot:hover {
background-color: #fff;
color: rgba(42, 42, 42, 0.82);
}
.selected {
background-color: #fff;
color: rgba(42, 42, 42, 0.82);
}
.djangoAppt_next-available-date {
font-size: 16px;
font-weight: bold;
color: #333;
margin-top: 10px;
margin-left: 10px;
padding: 8px;
background-color: #f8f9fa;
border: 1px solid #dee2e6;
border-radius: 5px;
width: fit-content;
}
/* Change the color of the buttons for the calendar */
.fc-button {
background-color: rgba(0, 48, 124, 0.95) !important;
border-color: rgba(2, 76, 157, 0.85) !important;
color: #fff !important;
}
/* Change the color of the buttons when hovered */
.fc-button:hover {
background-color: #025bbb !important;
border-color: #0056b3;
}
/* Change the color of the buttons when active or focused */
.fc-button:active, .fc-button:focus {
background-color: #0759b2 !important;
border-color: #145294;
}
.djangoAppt_date_chosen {
margin-left: 5px;
padding-left: 5px;
font-size: 18px;
color: #333;
font-weight: bold;
}
.djangoAppt_btn-request-next-slot {
margin-left: 10px;
padding: 8px !important;
margin-top: -30px;
}
.djangoAppt_no-availability-text {
margin-left: 5px;
padding-left: 5px;
color: #f00;
font-weight: bold;
}
.disabled-day {
background-color: #ECECEC; /* light gray */
opacity: 0.5;
pointer-events: none; /* makes it unclickable */
}
/* responsive */
/* CSS for screens larger than 1200px */
@media (min-width: 1200px) {
.djangoAppt_page-body {
flex-direction: row;
}
.djangoAppt_appointment-calendar {
flex: 3;
padding: 20px;
}
.djangoAppt_service-description {
flex: 1;
margin-left: 20px;
}
.djangoAppt_calendar {
flex: 3;
}
.djangoAppt_slot {
flex: 2;
}
.djangoAppt_slot {
margin-left: 20px;
}
}
/* Select design */
#staff_id {
width: 100%;
padding: 2px 4px;
border: 1px solid rgba(255, 227, 227, 0.89);
border-radius: 5px;
background-color: #d4eaf5;
color: #333;
appearance: none; /* Remove default arrow icon in some browsers */
-webkit-appearance: none; /* For Webkit browsers */
-moz-appearance: none; /* For Firefox */
cursor: pointer;
outline: none;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
transition: background-color 0.3s;
position: relative;
font-size: 16px;
}
#staff_id:hover {
background-color: #f6c6c6;
}
#staff_id:focus {
background-color: #d1dbff;
}
/* Add a custom arrow icon using pseudo-elements */
#staff_id::-ms-expand {
display: none;
}
#staff_id::after {
content: '\25BC'; /* Unicode arrow character */
position: absolute;
top: 50%;
right: 10px;
transform: translateY(-50%);
pointer-events: none; /* Make sure clicks pass through */
color: #333;
}
/* Styling the options when hovered */
#staff_id option:hover {
background-color: #f0f0f0;
color: #333;
}
/* Styling the options when they are active (clicked or selected with keyboard) */
#staff_id option:active, #staff_id option:checked {
background-color: #e0e0e0;
color: #333;
}
/* This changes the background color of the option elements when the select is open */
#staff_id option {
background-color: #f8f8f8;
color: #333;
}
/* For Firefox - to change the background color of the dropdown */
#staff_id:-moz-focusring {
color: transparent;
text-shadow: 0 0 0 #333;
}
/* CSS for screens smaller than 1200px */
@media (max-width: 1199px) {
.djangoAppt_page-body {
flex-direction: column;
}
.djangoAppt_appointment-calendar {
flex: 1;
padding: 10px;
}
.djangoAppt_service-description {
flex: 1;
margin-left: 0;
margin-top: 20px;
}
.djangoAppt_calendar {
flex: 1;
}
.djangoAppt_slot {
flex: 1;
}
.djangoAppt_slot {
margin-left: 10px;
}
}
/* CSS for screens smaller or equal to 768px */
@media (max-width: 768px) {
.djangoAppt_main-container {
padding: 8px;
}
.djangoAppt_body-container {
padding: 8px;
}
.djangoAppt_appointment-calendar {
flex: 1;
padding: 10px;
}
.djangoAppt_service-description {
flex: 1;
margin-left: 0;
margin-top: 20px;
}
.djangoAppt_calendar-and-slot {
display: grid;
}
.djangoAppt_slot {
margin-top: 40px;
}
.djangoAppt_slot-list, .djangoAppt_date_chosen, .djangoAppt_no-availability-text {
margin-left: 0;
padding-left: 0;
}
.djangoAppt_btn-request-next-slot {
margin-left: 0;
}
/* Reduce font size for smaller screens */
.djangoAppt_title, .djangoAppt_item-name, .djangoAppt_date_chosen, .djangoAppt_next-available-date {
font-size: 16px;
}
.djangoAppt_timezone-details {
font-size: 14px;
}
.fc-day {
font-size: 10px;
}
}
/* CSS for screens smaller or equal to 768px */
@media (max-width: 450px) {
.djangoAppt_main-container {
padding: 3px;
}
.djangoAppt_body-container {
padding: 3px;
}
.djangoAppt_appointment-calendar {
flex: 1;
padding: 5px;
}
.djangoAppt_service-description {
flex: 1;
margin-left: 0;
margin-top: 20px;
}
.djangoAppt_calendar-and-slot {
display: grid;
}
.djangoAppt_slot {
margin-top: 40px;
}
.djangoAppt_slot-list, .djangoAppt_date_chosen, .djangoAppt_no-availability-text {
margin-left: 0 !important;
padding-left: 0 !important;
}
.djangoAppt_btn-request-next-slot {
margin-left: 0;
}
/* Reduce font size for smaller screens */
.djangoAppt_title, .djangoAppt_item-name, .djangoAppt_date_chosen, .djangoAppt_next-available-date {
font-size: 13px;
}
.djangoAppt_timezone-details, .error-message {
font-size: 13px;
}
.fc-day {
font-size: 11px;
}
.fc-toolbar-title {
font-size: 14px !important;
}
.fc {
font-size: 13px !important;
}
.fc, .fc-button {
vertical-align: center !important;
}
.djangoAppt_appointment-slot {
padding: 5px;
font-size: 13px;
}
.djangoAppt_service-description {
font-size: 13px !important;
}
}
.selected-cell {
background-color: #aaddff; /* or any color you prefer */
}

View File

@ -0,0 +1,105 @@
/* Card and container styling */
.card {
background-color: #2d3748;
border-radius: 8px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
border: 1px solid #4a5568;
}
/* FullCalendar header */
.fc .fc-toolbar.fc-header-toolbar {
margin-bottom: 1.5em;
}
.fc .fc-toolbar-title {
font-size: 1.5rem;
font-weight: 600;
color: #edf2f7;
}
/* Calendar buttons */
.fc .fc-button-group > .fc-button {
background-color: #4a5568;
border-color: #4a5568;
color: #e2e8f0;
border-radius: 4px;
transition: all 0.2s ease-in-out;
}
.fc .fc-button-group > .fc-button:hover {
background-color: #64748b;
}
.fc .fc-button-primary:not(:disabled).fc-button-active,
.fc .fc-button-primary:not(:disabled):active {
background-color: #4299e1;
border-color: #4299e1;
color: #fff;
box-shadow: none;
}
/* Day cells */
.fc-daygrid-day {
background-color: #2d3748;
border: 1px solid #4a5568;
border-radius: 4px;
}
.fc-day-other {
background-color: #202c3c !important;
color: #718096;
}
.fc-day-today {
background-color: #38a169 !important;
border-color: #38a169 !important;
}
.fc-daygrid-day-number {
font-weight: 500;
color: #e2e8f0;
}
/* Event styling */
.fc-event {
border-radius: 4px;
padding: 3px 6px;
font-size: 12px;
color: #ffffff !important;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
}
/* Event colors (you can adjust these in your Django template) */
/* .fc-event-completed { background-color: #38a169; border-color: #38a169; } */
/* .fc-event-canceled { background-color: #e53e3e; border-color: #e53e3e; } */
/* .fc-event-scheduled { background-color: #4299e1; border-color: #4299e1; } */
/* List group styling */
.list-group-item {
border-color: #4a5568;
background-color: #2d3748;
color: #e2e8f0;
transition: background-color 0.2s ease-in-out;
}
.list-group-item:hover {
background-color: #4a5568;
}
.modal-content {
background-color: #2d3748;
color: #e2e8f0;
}
.modal-header .close {
color: #e2e8f0;
}
/* Responsive adjustments */
@media (max-width: 767.98px) {
.fc .fc-toolbar-title {
font-size: 1.25rem;
}
}

View File

@ -0,0 +1,99 @@
/* static/css/light_theme.css */
/* Card and container styling */
.card {
background-color: #ffffff;
border-radius: 8px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
border: 1px solid #e0e6ed;
}
/* FullCalendar header */
.fc .fc-toolbar.fc-header-toolbar {
margin-bottom: 1.5em;
}
.fc .fc-toolbar-title {
font-size: 1.5rem;
font-weight: 600;
color: #2c3e50;
}
/* Calendar buttons */
.fc .fc-button-group > .fc-button {
background-color: #e9ecef;
border-color: #e9ecef;
color: #495057;
border-radius: 4px;
transition: all 0.2s ease-in-out;
}
.fc .fc-button-group > .fc-button:hover {
background-color: #e2e6ea;
}
.fc .fc-button-primary:not(:disabled).fc-button-active,
.fc .fc-button-primary:not(:disabled):active {
background-color: #007bff;
border-color: #007bff;
color: #fff;
box-shadow: none;
}
/* Day cells */
.fc-daygrid-day {
background-color: #ffffff;
border: 1px solid #e0e6ed;
border-radius: 4px;
}
.fc-day-other {
background-color: #f8f9fa !important;
color: #ced4da;
}
.fc-day-today {
background-color: #fff3cd !important;
border-color: #ffeeba !important;
}
.fc-daygrid-day-number {
font-weight: 500;
}
/* Event styling */
.fc-event {
border-radius: 4px;
padding: 3px 6px;
font-size: 12px;
color: #ffffff !important;
text-shadow: 0 1px 1px rgba(0,0,0,0.2);
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}
/* List group styling */
.list-group-item {
border-color: #e0e6ed;
background-color: #ffffff;
transition: background-color 0.2s ease-in-out;
}
.list-group-item:hover {
background-color: #f8f9fa;
}
.modal-content {
background-color: #ffffff;
color: #34495e;
}
.modal-header .close {
color: #adb5bd;
}
/* Responsive adjustments */
@media (max-width: 767.98px) {
.fc .fc-toolbar-title {
font-size: 1.25rem;
}
}

577
staticfiles/css/coloris.css Normal file
View File

@ -0,0 +1,577 @@
.clr-picker {
display: none;
flex-wrap: wrap;
position: absolute;
width: 200px;
z-index: 1000;
border-radius: 10px;
background-color: #fff;
justify-content: flex-end;
direction: ltr;
box-shadow: 0 0 5px rgba(0,0,0,.05), 0 5px 20px rgba(0,0,0,.1);
-moz-user-select: none;
-webkit-user-select: none;
user-select: none;
}
.clr-picker.clr-open,
.clr-picker[data-inline="true"] {
display: flex;
}
.clr-picker[data-inline="true"] {
position: relative;
}
.clr-gradient {
position: relative;
width: 100%;
height: 100px;
margin-bottom: 15px;
border-radius: 3px 3px 0 0;
background-image: linear-gradient(rgba(0,0,0,0), #000), linear-gradient(90deg, #fff, currentColor);
cursor: pointer;
}
.clr-marker {
position: absolute;
width: 12px;
height: 12px;
margin: -6px 0 0 -6px;
border: 1px solid #fff;
border-radius: 50%;
background-color: currentColor;
cursor: pointer;
}
.clr-picker input[type="range"]::-webkit-slider-runnable-track {
width: 100%;
height: 16px;
}
.clr-picker input[type="range"]::-webkit-slider-thumb {
width: 16px;
height: 16px;
-webkit-appearance: none;
}
.clr-picker input[type="range"]::-moz-range-track {
width: 100%;
height: 16px;
border: 0;
}
.clr-picker input[type="range"]::-moz-range-thumb {
width: 16px;
height: 16px;
border: 0;
}
.clr-hue {
background-image: linear-gradient(to right, #f00 0%, #ff0 16.66%, #0f0 33.33%, #0ff 50%, #00f 66.66%, #f0f 83.33%, #f00 100%);
}
.clr-hue,
.clr-alpha {
position: relative;
width: calc(100% - 40px);
height: 8px;
margin: 5px 20px;
border-radius: 4px;
}
.clr-alpha span {
display: block;
height: 100%;
width: 100%;
border-radius: inherit;
background-image: linear-gradient(90deg, rgba(0,0,0,0), currentColor);
}
.clr-hue input[type="range"],
.clr-alpha input[type="range"] {
position: absolute;
width: calc(100% + 32px);
height: 16px;
left: -16px;
top: -4px;
margin: 0;
background-color: transparent;
opacity: 0;
cursor: pointer;
appearance: none;
-webkit-appearance: none;
}
.clr-hue div,
.clr-alpha div {
position: absolute;
width: 16px;
height: 16px;
left: 0;
top: 50%;
margin-left: -8px;
transform: translateY(-50%);
border: 2px solid #fff;
border-radius: 50%;
background-color: currentColor;
box-shadow: 0 0 1px #888;
pointer-events: none;
}
.clr-alpha div:before {
content: '';
position: absolute;
height: 100%;
width: 100%;
left: 0;
top: 0;
border-radius: 50%;
background-color: currentColor;
}
.clr-format {
display: none;
order: 1;
width: calc(100% - 40px);
margin: 0 20px 20px;
}
.clr-segmented {
display: flex;
position: relative;
width: 100%;
margin: 0;
padding: 0;
border: 1px solid #ddd;
border-radius: 15px;
box-sizing: border-box;
color: #999;
font-size: 12px;
}
.clr-segmented input,
.clr-segmented legend {
position: absolute;
width: 100%;
height: 100%;
margin: 0;
padding: 0;
border: 0;
left: 0;
top: 0;
opacity: 0;
pointer-events: none;
}
.clr-segmented label {
flex-grow: 1;
margin: 0;
padding: 4px 0;
font-size: inherit;
font-weight: normal;
line-height: initial;
text-align: center;
cursor: pointer;
}
.clr-segmented label:first-of-type {
border-radius: 10px 0 0 10px;
}
.clr-segmented label:last-of-type {
border-radius: 0 10px 10px 0;
}
.clr-segmented input:checked + label {
color: #fff;
background-color: #666;
}
.clr-swatches {
order: 2;
width: calc(100% - 32px);
margin: 0 16px;
}
.clr-swatches div {
display: flex;
flex-wrap: wrap;
padding-bottom: 12px;
justify-content: center;
}
.clr-swatches button {
position: relative;
width: 20px;
height: 20px;
margin: 0 4px 6px 4px;
padding: 0;
border: 0;
border-radius: 50%;
color: inherit;
text-indent: -1000px;
white-space: nowrap;
overflow: hidden;
cursor: pointer;
}
.clr-swatches button:after {
content: '';
display: block;
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
border-radius: inherit;
background-color: currentColor;
box-shadow: inset 0 0 0 1px rgba(0,0,0,.1);
}
input.clr-color {
order: 1;
width: calc(100% - 80px);
height: 32px;
margin: 15px 20px 20px auto;
padding: 0 10px;
border: 1px solid #ddd;
border-radius: 16px;
color: #444;
background-color: #fff;
font-family: sans-serif;
font-size: 14px;
text-align: center;
box-shadow: none;
}
input.clr-color:focus {
outline: none;
border: 1px solid #1e90ff;
}
.clr-close,
.clr-clear {
display: none;
order: 2;
height: 24px;
margin: 0 20px 20px;
padding: 0 20px;
border: 0;
border-radius: 12px;
color: #fff;
background-color: #666;
font-family: inherit;
font-size: 12px;
font-weight: 400;
cursor: pointer;
}
.clr-close {
display: block;
margin: 0 20px 20px auto;
}
.clr-preview {
position: relative;
width: 32px;
height: 32px;
margin: 15px 0 20px 20px;
border-radius: 50%;
overflow: hidden;
}
.clr-preview:before,
.clr-preview:after {
content: '';
position: absolute;
height: 100%;
width: 100%;
left: 0;
top: 0;
border: 1px solid #fff;
border-radius: 50%;
}
.clr-preview:after {
border: 0;
background-color: currentColor;
box-shadow: inset 0 0 0 1px rgba(0,0,0,.1);
}
.clr-preview button {
position: absolute;
width: 100%;
height: 100%;
z-index: 1;
margin: 0;
padding: 0;
border: 0;
border-radius: 50%;
outline-offset: -2px;
background-color: transparent;
text-indent: -9999px;
cursor: pointer;
overflow: hidden;
}
.clr-marker,
.clr-hue div,
.clr-alpha div,
.clr-color {
box-sizing: border-box;
}
.clr-field {
display: inline-block;
position: relative;
color: transparent;
}
.clr-field input {
margin: 0;
direction: ltr;
}
.clr-field.clr-rtl input {
text-align: right;
}
.clr-field button {
position: absolute;
width: 30px;
height: 100%;
right: 0;
top: 50%;
transform: translateY(-50%);
margin: 0;
padding: 0;
border: 0;
color: inherit;
text-indent: -1000px;
white-space: nowrap;
overflow: hidden;
pointer-events: none;
}
.clr-field.clr-rtl button {
right: auto;
left: 0;
}
.clr-field button:after {
content: '';
display: block;
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
border-radius: inherit;
background-color: currentColor;
box-shadow: inset 0 0 1px rgba(0,0,0,.5);
}
.clr-alpha,
.clr-alpha div,
.clr-swatches button,
.clr-preview:before,
.clr-field button {
background-image: repeating-linear-gradient(45deg, #aaa 25%, transparent 25%, transparent 75%, #aaa 75%, #aaa), repeating-linear-gradient(45deg, #aaa 25%, #fff 25%, #fff 75%, #aaa 75%, #aaa);
background-position: 0 0, 4px 4px;
background-size: 8px 8px;
}
.clr-marker:focus {
outline: none;
}
.clr-keyboard-nav .clr-marker:focus,
.clr-keyboard-nav .clr-hue input:focus + div,
.clr-keyboard-nav .clr-alpha input:focus + div,
.clr-keyboard-nav .clr-segmented input:focus + label {
outline: none;
box-shadow: 0 0 0 2px #1e90ff, 0 0 2px 2px #fff;
}
.clr-picker[data-alpha="false"] .clr-alpha {
display: none;
}
.clr-picker[data-minimal="true"] {
padding-top: 16px;
}
.clr-picker[data-minimal="true"] .clr-gradient,
.clr-picker[data-minimal="true"] .clr-hue,
.clr-picker[data-minimal="true"] .clr-alpha,
.clr-picker[data-minimal="true"] .clr-color,
.clr-picker[data-minimal="true"] .clr-preview {
display: none;
}
/** Dark theme **/
.clr-dark {
background-color: #444;
}
.clr-dark .clr-segmented {
border-color: #777;
}
.clr-dark .clr-swatches button:after {
box-shadow: inset 0 0 0 1px rgba(255,255,255,.3);
}
.clr-dark input.clr-color {
color: #fff;
border-color: #777;
background-color: #555;
}
.clr-dark input.clr-color:focus {
border-color: #1e90ff;
}
.clr-dark .clr-preview:after {
box-shadow: inset 0 0 0 1px rgba(255,255,255,.5);
}
.clr-dark .clr-alpha,
.clr-dark .clr-alpha div,
.clr-dark .clr-swatches button,
.clr-dark .clr-preview:before {
background-image: repeating-linear-gradient(45deg, #666 25%, transparent 25%, transparent 75%, #888 75%, #888), repeating-linear-gradient(45deg, #888 25%, #444 25%, #444 75%, #888 75%, #888);
}
/** Polaroid theme **/
.clr-picker.clr-polaroid {
border-radius: 6px;
box-shadow: 0 0 5px rgba(0,0,0,.1), 0 5px 30px rgba(0,0,0,.2);
}
.clr-picker.clr-polaroid:before {
content: '';
display: block;
position: absolute;
width: 16px;
height: 10px;
left: 20px;
top: -10px;
border: solid transparent;
border-width: 0 8px 10px 8px;
border-bottom-color: currentColor;
box-sizing: border-box;
color: #fff;
filter: drop-shadow(0 -4px 3px rgba(0,0,0,.1));
pointer-events: none;
}
.clr-picker.clr-polaroid.clr-dark:before {
color: #444;
}
.clr-picker.clr-polaroid.clr-left:before {
left: auto;
right: 20px;
}
.clr-picker.clr-polaroid.clr-top:before {
top: auto;
bottom: -10px;
transform: rotateZ(180deg);
}
.clr-polaroid .clr-gradient {
width: calc(100% - 20px);
height: 120px;
margin: 10px;
border-radius: 3px;
}
.clr-polaroid .clr-hue,
.clr-polaroid .clr-alpha {
width: calc(100% - 30px);
height: 10px;
margin: 6px 15px;
border-radius: 5px;
}
.clr-polaroid .clr-hue div,
.clr-polaroid .clr-alpha div {
box-shadow: 0 0 5px rgba(0,0,0,.2);
}
.clr-polaroid .clr-format {
width: calc(100% - 20px);
margin: 0 10px 15px;
}
.clr-polaroid .clr-swatches {
width: calc(100% - 12px);
margin: 0 6px;
}
.clr-polaroid .clr-swatches div {
padding-bottom: 10px;
}
.clr-polaroid .clr-swatches button {
width: 22px;
height: 22px;
}
.clr-polaroid input.clr-color {
width: calc(100% - 60px);
margin: 10px 10px 15px auto;
}
.clr-polaroid .clr-clear {
margin: 0 10px 15px 10px;
}
.clr-polaroid .clr-close {
margin: 0 10px 15px auto;
}
.clr-polaroid .clr-preview {
margin: 10px 0 15px 10px;
}
/** Large theme **/
.clr-picker.clr-large {
width: 275px;
}
.clr-large .clr-gradient {
height: 150px;
}
.clr-large .clr-swatches button {
width: 22px;
height: 22px;
}
/** Pill (horizontal) theme **/
.clr-picker.clr-pill {
width: 380px;
padding-left: 180px;
box-sizing: border-box;
}
.clr-pill .clr-gradient {
position: absolute;
width: 180px;
height: 100%;
left: 0;
top: 0;
margin-bottom: 0;
border-radius: 3px 0 0 3px;
}
.clr-pill .clr-hue {
margin-top: 20px;
}

1
staticfiles/css/coloris.min.css vendored Normal file

File diff suppressed because one or more lines are too long

180
staticfiles/css/custom.css Normal file
View File

@ -0,0 +1,180 @@
.currency {
font-family: 'SaudiRiyalFont', sans-serif;
}
.color-div {
width: 64px;
height: 16px;
padding: 2px 4px;
border-radius: 3px;
border: 1px outset #CBD0DDFd;
text-align: center;
/*vertical-align: middle;*/
/*line-height: 22px;*/
}
.rtl .fa-chevron-left {
transform: scaleX(-1);
}
.rtl .fa-chevron-right {
transform: scaleX(-1);
}
.spinner-container {
display: flex;
align-items: center;
gap: 10px;
padding: 10px;
color: #555;
font-size: 14px;
}
.spinner {
width: 18px;
height: 18px;
border: 3px solid #ccc;
border-top-color: #333;
border-radius: 50%;
animation: spin 0.6s linear infinite;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
.form-control, .form-select {
text-align: center;
display: flex;
align-items: center;
justify-content: center;
padding-top: 0;
padding-bottom: 0;
height: 38px; /* Adjust based on your design requirements */
}
/* For vertically centering text input which doesn't naturally use flex */
.form-control, .form-select {
line-height: 38px; /* Should match the height */
padding-top: 0;
padding-bottom: 0;
}
/* Center placeholders in all browsers */
.form-control::placeholder,
.form-control::-webkit-input-placeholder,
.form-control::-moz-placeholder,
.form-control:-ms-input-placeholder,
.form-control:-moz-placeholder {
text-align: center;
line-height: 38px; /* Match to keep placeholder centered */
}
/* Special handling for form icon containers if needed */
.form-icon-container .form-control {
padding-left: 35px; /* Adjust based on your icon width */
padding-right: 35px; /* For RTL support */
}
.form-icon-container {
position: relative;
}
.form-icon {
position: absolute;
top: 50%;
transform: translateY(-50%);
z-index: 2;
}
/* Left icon (for LTR) */
html:not([dir="rtl"]) .form-icon {
left: 10px;
}
/* Right icon (for RTL) */
html[dir="rtl"] .form-icon {
right: 10px;
}
/* Adjust padding for the input to account for the icon */
.form-icon-container .form-control {
padding-left: 35px;
padding-right: 10px;
}
html[dir="rtl"] .form-icon-container .form-control {
padding-right: 35px;
padding-left: 10px;
}
.submitBtn.loading {
position: relative;
opacity: 0.8;
}
.submitBtn.loading:after {
content: "";
position: absolute;
right: 10px;
top: 50%;
width: 16px;
height: 16px;
margin-top: -8px;
border: 2px solid #fff;
border-radius: 50%;
border-top-color: transparent;
animation: spin 1s linear infinite;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
#spinner {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
z-index: 9999;
pointer-events: none;
}
#spinner-bg {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(255, 255, 255, 0.7);
opacity: 0;
transition: opacity 500ms ease-in;
visibility: hidden;
z-index: 10000;
pointer-events: none;
}
#spinner-bg.htmx-request {
opacity: .8;
visibility: visible;
}
/* .fade-me-in.htmx-added {
opacity: 0;
}
.fade-me-in {
opacity: .9;
transition: opacity 300ms ease-out;
} */
#main_content.fade-me-in:not(.modal):not(.modal *) {
opacity: 1;
transition: opacity 300ms ease-out;
}
#main_content.fade-me-in.htmx-added:not(.modal):not(.modal *) {
opacity: 0;
}

321
staticfiles/css/line.css Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,43 @@
body {
font-family: 'Roboto', sans-serif;
background-color: #f8f9fa;
margin: 0;
padding: 0;
}
.pdf-container {
width: 210mm;
min-height: 297mm;
padding: 20mm;
margin: auto;
background: white;
border-radius: 5px;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
display: flex;
flex-direction: column;
justify-content: space-between;
}
.pdf-header {
text-align: center;
border-bottom: 2px solid #dee2e6;
padding-bottom: 10px;
margin-bottom: 20px;
font-size: 18px;
font-weight: bold;
}
.pdf-content {
flex: 1;
padding: 10px 0;
}
.pdf-footer {
text-align: center;
margin-top: auto;
padding: 10px;
background: #f8f9fa;
font-size: 12px;
color: #666;
border-top: 1px solid #ddd;
}

1
staticfiles/css/sweetalert2.min.css vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,66 @@
/* thank_you.css */
.content-body-apd {
height: 100%;
display: flex;
justify-content: center;
align-items: center;
margin-top: 50px;
margin-bottom: 50px;
}
.main-content {
font-family: Arial, sans-serif;
line-height: 1.6;
padding: 20px;
color: #333;
max-width: 600px;
margin: 0 auto;
background-color: #fff;
border-radius: 10px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
.thank-you-title {
font-size: 24px;
font-weight: bold;
text-align: center;
margin-bottom: 20px;
color: #007BFF;
}
.thank-you-message {
font-size: 18px;
text-align: center;
margin-bottom: 10px;
color: #333;
}
.appointment-details-title {
font-size: 16px;
font-weight: bold;
margin-bottom: 5px;
margin-top: 40px;
margin-left: 3px;
color: #333;
}
.appointment-details {
list-style-type: none;
padding: 0;
margin: 0;
}
.appointment-details li {
font-size: 14px;
margin-bottom: 5px;
background-color: #f4f4f4;
padding: 10px;
border: 1px solid #ddd;
border-radius: 5px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.05);
}
.appointment-details li:last-child {
margin-bottom: 0;
}

37692
staticfiles/css/theme-rtl.css Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

37686
staticfiles/css/theme-rtl.min.css vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

37719
staticfiles/css/theme.css Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

37712
staticfiles/css/theme.min.css vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,43 @@
/* Dims the background */
.tutorial-overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.7);
z-index: 1000;
display: none;
align-items: center;
justify-content: center;
}
/* Tooltip box */
.tutorial-box {
position: absolute;
background: white;
padding: 15px;
border-radius: 8px;
z-index: 1100;
max-width: 300px;
box-shadow: 0px 0px 10px rgba(255, 255, 255, 0.2);
text-align: center;
}
/* Arrow pointing to the element */
.tutorial-arrow {
position: absolute;
width: 0;
height: 0;
border-left: 10px solid transparent;
border-right: 10px solid transparent;
border-bottom: 10px solid white;
}
/* Highlighted element */
.tutorial-highlight {
position: relative;
z-index: 1200;
box-shadow: 0 0 10px 5px rgba(255, 255, 255, 0.8);
border-radius: 5px;
}

View File

@ -0,0 +1,2 @@
/* prettier-ignore */
/*# sourceMappingURL=user-rtl.css.map */

File diff suppressed because one or more lines are too long

2
staticfiles/css/user-rtl.min.css vendored Normal file
View File

@ -0,0 +1,2 @@
/* prettier-ignore */
/*# sourceMappingURL=user-rtl.min.css.map */

File diff suppressed because one or more lines are too long

2
staticfiles/css/user.css Normal file
View File

@ -0,0 +1,2 @@
/* prettier-ignore */
/*# sourceMappingURL=user.css.map */

File diff suppressed because one or more lines are too long

2
staticfiles/css/user.min.css vendored Normal file
View File

@ -0,0 +1,2 @@
/* prettier-ignore */
/*# sourceMappingURL=user.min.css.map */

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,113 @@
/* verification_code_v2.css */
.vcode-container {
display: flex;
justify-content: center;
align-items: center;
min-height: 60vh;
padding: 20px;
}
.vcode-card {
background-color: #ffffff;
border-radius: 8px;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
padding: 40px;
width: 100%;
max-width: 400px;
}
.vcode-title {
font-size: 24px;
font-weight: 600;
color: #333;
text-align: center;
margin-bottom: 20px;
}
.vcode-instruction {
font-size: 16px;
color: #666;
text-align: center;
margin-bottom: 30px;
}
.vcode-form {
display: flex;
flex-direction: column;
}
.vcode-input-group {
margin-bottom: 20px;
}
.vcode-label {
display: block;
font-size: 14px;
font-weight: 500;
color: #333;
margin-bottom: 8px;
}
.vcode-input {
width: 100%;
padding: 10px;
font-size: 16px;
border: 1px solid #ddd;
border-radius: 4px;
transition: border-color 0.3s ease;
}
.vcode-input:focus {
outline: none;
border-color: #4a90e2;
}
.vcode-button {
background-color: #4a90e2;
color: #ffffff;
font-size: 16px;
font-weight: 500;
padding: 12px;
border: none;
border-radius: 4px;
cursor: pointer;
transition: background-color 0.3s ease;
}
.vcode-button:hover {
background-color: #3a7bc8;
}
.vcode-alert {
margin-top: 20px;
padding: 12px;
border-radius: 4px;
font-size: 14px;
text-align: center;
}
.vcode-alert-error {
background-color: #fde8e8;
color: #9b1c1c;
border: 1px solid #fbd5d5;
}
.vcode-alert-success {
background-color: #e6fffa;
color: #046c4e;
border: 1px solid #b2f5ea;
}
@media (max-width: 480px) {
.vcode-card {
padding: 30px;
}
.vcode-title {
font-size: 22px;
}
.vcode-instruction {
font-size: 14px;
}
}

765
staticfiles/data/usa.js Normal file
View File

@ -0,0 +1,765 @@
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
define(['exports', 'echarts'], factory);
} else if (
typeof exports === 'object' &&
typeof exports.nodeName !== 'string'
) {
factory(exports, require('echarts'));
} else {
factory({}, root.echarts);
}
})(this, function (exports, echarts) {
var log = function (msg) {
if (typeof console !== 'undefined') {
console && console.error && console.error(msg);
}
};
if (!echarts) {
log('ECharts is not Loaded');
return;
}
if (!echarts.registerMap) {
log('ECharts Map is not loaded');
return;
}
echarts.registerMap(
'USA',
{
type: 'FeatureCollection',
features: [
{
type: 'Feature',
id: '01',
properties: { name: 'Alabama' },
geometry: {
type: 'Polygon',
coordinates: [
'@@ไaƨܡȸ੝ĬɻĠƅ™ĉĬ¹ƛŁLŁóƛĊʩÑəĠɯбKᄑ@ƒōȌLJƏÜçŭůŗɃƐwȸÝxýƻƒƱɍ¤Ý౺ȘུŢऄēĔ܀L'
],
encodeOffsets: [[-89455, 35842]]
}
},
{
type: 'Feature',
id: '02',
properties: { name: 'Alaska' },
geometry: {
type: 'MultiPolygon',
coordinates: [
['@@„ƒǴĉƛɏlšè'],
['@@ƾĵēƥéº@Ȣ'],
['@@ȮlĖƒŭǵƒLJþþĖ'],
[
'@@ζĠljζdzŮōXğĔmbšƦţnŁĬޤĉl͛ÏóɻbÝǔĉaǝŮ»£ƛ¤xŭƆŽĔ¯£ǝljlʑɐçŌbŘȗU@ĖƨVƦþÛƒǩ‚ƒɚÛŎţý¯ŮŮÒĵƜҎ'
],
['@@LjÅŎèŌŗůǵšēł'],
['@@ţĊƐÆҘýȬJƜƻˀ݃ĩƏ»ȋxƅÑǿšȭ™£ȢlźƱLô'],
['@@ŗÜůƒałĸºł¹xĔͨƱŽƥŗmóǓĊ¯ķȕʤkţĉÒ»ɼƨŎ'],
['@@ƒīŗÆ̹ώȡŌèĖÿɄəǞɦǔĶçȤÅǴULƅǪѩ@ϋ'],
['@@˸ÛǔVUÝʈɯǓš¥ýǶţÆɃǵÇÏñ̃ƱēJ™NJÒ΃ƜĵǪlĠÛɦōĬǔȬƽ'],
['@@Ť@ŰƱÇŁȋw„ǔƒŘ'],
['@@ʪIǔôʆķŹŋ²¥ŢŰ̄¥LjğğǓôaĪəəХǴbǿŹóƱġŘǩþƃLjǟôVƆڰšŘĈ»'],
['@@ΟɃƒĉ˵ÅÐź̰ƄȘƨłÑ'],
['@@¯ǩţǵǓÒƒȸȖĖ'],
[
'@@Ė™Ѫ™ɰx͆@ΊȬlȤçΪýӚmƆ°͐„ƐÒΖVK£ȸxєÝ̂Ł˖»Ò¯ʞUɼý°»Ɯ¦Ǫ@䫿ϺçºôШŁʒƆԜbğɥźÿ̄ñÜţࡦѵƆ˫ƲĀςƄȸLĬĶUƲƦ@šƆˀŽϸŘϤȡ™šĠţɐƒ˖ǵm¹ŰīΈō֘әĊŹǪŹʶ˵ʴʓīĵˊ™ÛƥɎфǟɎVвǩʴƆĉźwšĉ˖wĊĵůȋnƽŤʳġÝȫɻ̍ǝĉĔōýǪxôğĔȖĠŐȗřŁôţ£ΓȀŤȮəçUķǩĀ™ĪŢł—łǓēǓȌķ™ÛƾLjĶƾ@¯ŮĊNJŹKˋƐȉǔѵŤVͲƛ¦ƐƧšɍȀÑĬύŽХʞǩ׆ĉƅšţǔɯ£™ŌȋwŭLJ‚Źƒǟxʅ™JȢƥǔƅ»ՉǪ¯¹̂ÇɦƏĖI‚ōŚŹ̃óǝ°KŗəĖóÜƏ@ϣǔ˫ƦĖƽźѝĠʇĬлŎˡłxŘĀ™ĠôğǔŘĠŤȹǩѝŗԧ¤ѝłmĊȫkɏÒәÆ˫Lؿ¯ɥ˷ŤΟÈŋò¥ŰʑWĉŋѝƦçÞѿţɏƛğƆĠôźmшĬÅôȡ™ÿĬǿ`ǿʔéÑʳĉēÿ͑„aĕɍwķôƼğIƥǓȬÅnţŮŹóƑLJ°¯çƾĔȁɣ—ů˜ȡ¹ĵ¤ʿIVèŭ¯çĕōþƏŋÒ»ȗÛǩWçēȋÿŹ„ƛğŗLʇȋʳaĉÒƽķ͏ĀôƜɄºƐU¤ÆʞŎVĠ͛ŭ˕ò¼ƐɄɼƲšŰèx„Ƅţƨ̂ÆւɄƆĉǠwʨĖ˫ŘōĔəUƽ¦¯™ʽÑţŗʿƒ˕ƅēȹ¯¯īƥÑçǟ˷ŋƐĕŗŹˉwwǓʝÑÿêŭŻƧI„ğ͛ÇÝʧώa̎çĊĉţƅȡĉȁIkóţƒÆğŭƏˉŹƱ@Ƨ¯ƛVŋ»Žçȹ™£ĵƛÞƽȣʽblŁƻ„ō¯@ƛǩə˫ƒɱĵ™ÇƥĀʝɃçÒƏmţƙ¯ǟnƅţɼ™ʧˉܫĕȭɻ»¼„ƦƛxdzŃÑ˫īţŋ™þóğǓÒ̭ƛɱLŽŌĵłğēVğ̯˭ŁêŁɃlǔʚ¯ÑŘóÅŗǟÑŹźƽV¹Ƽó˵ţȖLÇLJ¦ɏōлLȹókÅʇÝǩxÑƾǪ¼ƆȌǪJϘṲ̋JŘšĖĔmĸǬ°Ȍ@ʨɚˬȢςǪўþǶ—Ǫº°ñīĉłÝŽĶɐXÒÝƆwJþəêm°ƨɎȢŰˊŢшł̰ƴƨÇŢx¹ĬšĠɼȘ͐ŮʴǔaĠȺٺ͐Ǫ—ƐޝȡʑxÑĊƏš¯Ġů¥ýƙƆǵljýƙ‚ˡ˸ȋƜī@ÛŁĉmůĖƱbçƜ҉ljЛŗÛͅīƽĔƜĸ»ʆŁʪɄłǩɄƱŤţǪdzò¯ƱɏΉīЯ£ɥVȗ¼wƄǓ¦ʽȀɛšʳȮǪĠšǠƃ™młÞĔǟĀkĉȹށƜljlēĬJŤLJǁŚȢ‚ljź˸X@ƼèłՊʹŎĶþk¯ƚȮʔǪĬ͜¤ʪ£ΞƧɲl͆Ɯ͜ɐǔx¤ÅІ@Δ°̺ɦ@ÆƻɄmŮʑƆğŘʞɼĬbĠ̥ǞɣƃɃxȣóɣkÇ»ʳóýŭŹ»ÑƦƽŋŗÝǼĊקKчğLJaΉÆٷÞǝ¼ÿĊÒŘɻĬ°łƨƯƆɻ@ȗ˜ϗ„ȡẹ̀èƒĖӄŘײȘмŘʈÝʒ_ÆĠƥbaþאźڄĬΠVȘķƑšĩñéŮŋɰl̄kͲxĬ¥ɚUȘ¦ʨ¯ʒȀǪVŤ™Òłͱ¼͑£ŽƐʧƦ˟°ĉƆɎŽˢƃ»ŁƆĉ̂īèĶͧƆƜʈŗ¤͛»ͳb¹¦ǟ¥۳ĸaŀɃɾǝĔ˕ôցȮʩþʧlϗƒρþk„ˠ¤ŰźVʴݚkࣖÒɼ°όźΠȢôȢƲǠ̺ƚƆłϮǠÒ¯͐aҸĖ̎Ġ۴˸ˌ`‚£˖ŽˌUԾšԨŮԞʴȸȚ±޾ŁÜñ˓īůKLŹЄ¦xèǶÜҗƄƦϺƅÛĵʒƒƜÑɄĬόLɄŽլˠ™ƃȡԐ»š»ӰēL¤ΠÈ;KL¯ȢKȸÞ;ƒ͜çƲbɐīٚȮƦÑ'
],
['@@K™́ÈȸɎȌnźȢƜǩŤÒɰī@ƅͱkƧÑʅƒ'],
[
'@@ʆŎɍxKĬǶÜź¯līôÞLƜƼ݄ĠƐÅǔ@ź¼Ʉĕ@ʑˊlǩLJ͏ÞŢŁğĕǓ¤IǑʩ¯ĉéƻÞǓǩŹmƏý»ȌȗĵUÐǩÒaǠǝèĪȢʹŰȸWnğ'
],
['@@ǩǝǂɲƜ'],
['@@ƆU¯ǫəx™ÒǞĸ'],
['@@»ǵʳƧŮɦĖwĬŰ'],
['@@Ƽ@IğƽĵƏèĕݹƾ°¼ɼm'],
['@@lóĩ¯óĀƲ¤'],
['@@ŭĉ¥ôǔV'],
['@@ǶmçƛLkĪ'],
['@@ÒīŹ£¯Ķؚ'],
['@@ʳğÅÞŌĊȮÇ'],
['@@ȖަÑǞbǔǎʅēÿɏ¯¯ĉͅĢƥKͅŤō@ǿèÝŎĠ‚̼ƦĔƾVèÒŎ'],
['@@ƒÛ˫ƽJΠŘLÝƛýɱ»wýʝĉɍKƛýˉçƛôˬĔĔaɄô¹ĊŤĖǴ¥nÆȗnŁÒĠĶ͞ÒèŗƼŌ'],
['@@͒LjlèŰþȖšĶ£šōΩţȗǩƻÑĕNJ'],
['@@˜ĉɍIwÆȮŽ'],
['@@ŗýwþƐ@'],
['@@ÈýƽÅwĊŮº'],
['@@ښŭϮłǬUƼѦĵͲÇł¹Ѫwˀ™ƛůɃ„ɥwŗÅŁůljŘȉĀǫVĉĔхŎȣḶīɯ¼īĶĠȖ'],
['@@`ĩLJmŽĊŚŽ'],
['@@Ō™̼Jbύ¥Ûĸ'],
['@@KĊŤŽǞĉÛýķLĕljUͽğȕ‚ÆÞȺUˬƦ'],
['@@Ʋb@Łȕ`ʇŭğǔĶJbŰŮJ@ğƆI'],
['@@Ġ£ÛƛŹ¥KĖłƐ'],
['@@ƜKźĵƏţƅɦ'],
['@@ƼÅXĕͳ¹əƐ@ÜϺU']
],
encodeOffsets: [
[[-134760, 56441]],
[[-134996, 56755]],
[[-136168, 57793]],
[[-136801, 57703]],
[[-136947, 56890]],
[[-137121, 58298]],
[[-137334, 57838]],
[[-137867, 57636]],
[[-137946, 59621]],
[[-139118, 58707]],
[[-139550, 59604]],
[[-150609, 61646]],
[[-151103, 62033]],
[[-151333, 71932]],
[[-156610, 59419]],
[[-157653, 58920]],
[[-158242, 57961]],
[[-159370, 57266]],
[[-163727, 56610]],
[[-164372, 56688]],
[[-166150, 56301]],
[[-166313, 65162]],
[[-166711, 55796]],
[[-169521, 55600]],
[[-169717, 55454]],
[[-170356, 61809]],
[[-170368, 55308]],
[[-172841, 54434]],
[[-173822, 54164]],
[[-174232, 58595]],
[[-174765, 53962]],
[[-175864, 65246]],
[[-176570, 53648]],
[[-177793, 53402]],
[[-178505, 53536]],
[[-180704, 53099]],
[[-181405, 53194]],
[[-182398, 53166]],
[[-191377, 54265]]
]
}
},
{
type: 'Feature',
id: '04',
properties: { name: 'Arizona' },
geometry: {
type: 'Polygon',
coordinates: [
'@@K⶙ၵ@ট̺ᓋڐþȌǔްô¯ƾŗJÇ̼ǠŢxۍȢĶƨƆÆĶŌǓŤŗɚƏƒ@ł¼ŘmƾçLj»Ӱ̰ŽĶĵĊJĖƜ@ڲᲤJ௨I'
],
encodeOffsets: [[-111659, 37889]]
}
},
{
type: 'Feature',
id: '05',
properties: { name: 'Arkansas' },
geometry: {
type: 'Polygon',
coordinates: [
'@@⋒IôLJŹķƅƽլ@ƒƻŭ¯ƒŹƻƑbȫĉƧĉwºóƃÛÑƛĕ™bǓƱ¯LÅǫƏ¼ġƱƃƅʳƨōóç°ǩÛŗᏋ`ε@@ҀššǓ£ĕþ°๒ƽघŤ@'
],
encodeOffsets: [[-96741, 37378]]
}
},
{
type: 'Feature',
id: '06',
properties: { name: 'California' },
geometry: {
type: 'Polygon',
coordinates: [
'@@ܖJૼ_࢈@JนI੝ઌݯ৺ݍߪ׽׆ѿ৺߿@ŁƐƑŘəǔţĵŋƅÅĵƧŽȡwůǟšÈ̻ŘI°ƽ¯óǓ૙ý࣡óĵŎKǪÝȸšƦʿȮͱȌÝ¹ŹŽlĊƥǞȡ™ΓŰ»ĶɻŰˉKɛÆ˫wƥŎŽɼ»šǔɛŮUǠĉVƏƦĠ͑ΈƱĸ˖ÜwÒLjţƦƥkȗƆçłbĶīƆ@ɚƾ@Ṵ̂é_ƱǓȣ؍ȢŹƾǝĬğŌʝɐ¤Üŗˮ¼ƼóɼɏɲɃź£ƲɄς¤Ů£ĬþʨçɲğƚȀ࠘L'
],
encodeOffsets: [[-126190, 43015]]
}
},
{
type: 'Feature',
id: '08',
properties: { name: 'Colorado' },
geometry: {
type: 'Polygon',
coordinates: ['@@ᇆIඨJှ@@ࡃVᡍߩL૯Kᑽ@ҭLഷ@@ঔaĢL܊J༼ैJ'],
encodeOffsets: [[-110509, 41988]]
}
},
{
type: 'Feature',
id: '09',
properties: { name: 'Connecticut' },
geometry: {
type: 'Polygon',
coordinates: ['@@ੈ_@a@ӻ»ýñbρÝѩnȋřȭ™ʅĩÑĪȸĢÑèÈٌζW'],
encodeOffsets: [[-74806, 43048]]
}
},
{
type: 'Feature',
id: '10',
properties: { name: 'Delaware' },
geometry: {
type: 'Polygon',
coordinates: ['@@ýĵēÅlƅŮŭȹǴɍĊWš́իVý੔ƜĠǞw'],
encodeOffsets: [[-77224, 40760]]
}
},
{
type: 'Feature',
id: '11',
properties: { name: 'District of Columbia' },
geometry: {
type: 'Polygon',
coordinates: ['@@łĉŋēÝŤèº'],
encodeOffsets: [[-78884, 39930]]
}
},
{
type: 'Feature',
id: '12',
properties: { name: 'Florida' },
geometry: {
type: 'Polygon',
coordinates: [
'@@вLŘʓ଴ÅંÛ¤ǵĸJšǠƾĀÜȖçɲºεłХʔաόֹÅ£lˉƾ̙ʒ׽¼ȋKȕğ۝ÿaćɍ‚éLJƻݚƻÝˋ™ý˚źȋόƥèŻ»ĵȺƒǞǩȌ£Ű‚ǴĩxŁĕƒˉҖŁŚʨͲǓkŋŁōǒƨҢ‚ϤĵĠŮlj„ȉȮƳĊUŮŁ°ēƐ͑Ȃ˫¥bŹğxΕƻϋ™VĠēŎѩʜ̹ł˭„ɻkԛÿŮŰÛèŽƐȋLj„Ŏᄒ@'
],
encodeOffsets: [[-87549, 31742]]
}
},
{
type: 'Feature',
id: '13',
properties: { name: 'Georgia' },
geometry: {
type: 'Polygon',
coordinates: [
'@@ǵǵaĕˬdzĖbźȁ‚īƆǩȘŁŌƻɦƛUīƦƽɦŹÆƏXǵŘÑƆɣJƛȘóȹ˷™ƥēŹUƅğљΩɱŽȕèÿېƽ™ǟķI£ǶઁÜଳÆŗʔğɰÒɚĉʪôƜKłƜłīºšĊğƆīɼȷਫ਼ƧܢઌJלIєb'
],
encodeOffsets: [[-85103, 35842]]
}
},
{
type: 'Feature',
id: '15',
properties: { name: 'Hawaii' },
geometry: {
type: 'MultiPolygon',
coordinates: [
['@@ȷòô‚Ȍƥ͒ŘłĊƦÑĬnĶɼţʾēNJŹ@ōʆǵƥƥʿçǿōķƻ'],
['@@ĪŗŰº˖ƃ¥ţ˟ÑÇx_ƦƛÇĊĢĠ'],
['@@ĉĕȗ@ÒĬɐU'],
['@@Ġȡ¯ŗǵmšɼłLƦĠ'],
['@@ĪU°ĕŭīÿˉĬŽƐɐÞ']
],
encodeOffsets: [
[[-159370, 19404]],
[[-160345, 21535]],
[[-160749, 21720]],
[[-161742, 22219]],
[[-163295, 22763]]
]
}
},
{
type: 'Feature',
id: '16',
properties: { name: 'Idaho' },
geometry: {
type: 'Polygon',
coordinates: [
'@@@ࡱ˖ɻJɯNJķǞ™nÑ̺ɣšġɚēVÅʒJš̹wȡĔŹƱġÒē£ğǴĕȺŘĊĠƲćwéĊLJƐǝĶÑIljĪçǬUŌ˕Ĭ¯ĔþˀIȘôŘ¥Ȣš¦¯ǞŽȘǪƄƥƲĕ@ᐍयIཅ@ᠡJ@໢ŎˢéèLJbÑŘǠ̚Ĕ‚ĖŰaþĬĶºƨǬʞéŘȡÒŗƜIƦōƨbèK૰Vਨࠤ@'
],
encodeOffsets: [[-118832, 50177]]
}
},
{
type: 'Feature',
id: '17',
properties: { name: 'Illinois' },
geometry: {
type: 'Polygon',
coordinates: [
'@@༐aࠢ@LJźȋƄ̯IጡğƱłǵ`ƧŁšōƱǵī_xŁÝ¥¹ȡ‚ÅŋţþƧΉýĕĀŋŁç̯źīWŹƥ¤¯ƃVȋʈèÆçLj@ź˕ǶğkğŌʝǠJƄƜɐwþĊĸţÒǿšīÿÛ¼Çˠ˫ǶʳɐŁʴUǞôŤbƲɼĠxźŌĊbƨƏŤÆƦ͜¦ˀł„źŌƐLjyłȉĊyĖǿƲ'
],
encodeOffsets: [[-92815, 43531]]
}
},
{
type: 'Feature',
id: '18',
properties: { name: 'Indiana' },
geometry: {
type: 'Polygon',
coordinates: [
'@@শ@@ÅLোa୭ݗèɱƥKƽýɍšVǓƛçÅŁƧ£ýɃīÇȋĀĪǿŁ`ğȉÇĊɃĉçĕɃŰŋƒóÒçÑɃUÿýÆºȢÞ¦włĬ`ƲǶ‚ŎłŢ_ƨŁǶĠƲJጢĊÅʴ@ʞĪ۪@'
],
encodeOffsets: [[-88053, 42762]]
}
},
{
type: 'Feature',
id: '19',
properties: { name: 'Iowa' },
geometry: {
type: 'Polygon',
coordinates: [
'@@ź@VůŰćĵķ‚ȋÞƃ̘īÒŁȀƱzĕȊĉzŁLJŋŃŹʿŁ͛¥ÅƥƐţaƧŋĉwŹɻğaƱğ„ǟǞēI஥wଽW॑bīŎ°ɎĉȌLɄƧôwŘ¼ĸÅƦřÆƱϘƻȂòلǔÜÒŁĊ„Ʀ¯èŎn⣨@'
],
encodeOffsets: [[-93561, 44546]]
}
},
{
type: 'Feature',
id: '20',
properties: { name: 'Kansas' },
geometry: {
type: 'Polygon',
coordinates: ['@@㔌@Ċý˖ÝȋʑłĉƄȡǶ¥KᆁⰃ@࿥KUᡎŰ@'],
encodeOffsets: [[-104351, 40962]]
}
},
{
type: 'Feature',
id: '21',
properties: { name: 'Kentucky' },
geometry: {
type: 'Polygon',
coordinates: [
'@@ȌŗƆÒ͆ÝĠĊŤ„šƛĬwŘŗwʩĶLJƆŭ¤īNJīŌa͏ɣ̯ů@ÛůÇUñLJÅğҋţa_ܕVس‚ǓUङŽ੓kȁšbƱ਱VĵU°łŮ™è;£°źƦĬX̰ŹłèÿŌŽĖΊþýƨŌŤĀþɄVèÒôÑŌ„ɄůèĖɄĊÈĉȊŽ_ĠȀłŽĩȌÿĬÈþɄƨ¤ÆłƜèUǔɎ™ƾþƦLçɲޘ͐@Ǡǩbñʾ'
],
encodeOffsets: [[-85917, 39700]]
}
},
{
type: 'Feature',
id: '22',
properties: { name: 'Louisiana' },
geometry: {
type: 'Polygon',
coordinates: [
'@@Ꮜ_þīљUǟŮĿnʝķȗȡţ¹ȋĉna̯ķUÒǓÑÑཞ@ĉˡƒǿŽƏĶĕʝŗkĉȮÅĔƆǪƅ_Łķ¯ȋ¤xýÛţLjŁʴĠůôkƅƛƥ„ŭƦ̯Ā@ƚƱ¯VšçōōkĉŮȕL珏™ƑþŋVŁȺȋĠóaóǪəwKłɍĵ„ÿǓñʳ˜̙ŚɃºҕ£ÑóĊȢ̘ÛLjÒ˃ŘĊĖĖɎaǶɱ;IȀȁȂ@ࡰζ@'
],
encodeOffsets: [[-95855, 33811]]
}
},
{
type: 'Feature',
id: '23',
properties: { name: 'Maine' },
geometry: {
type: 'Polygon',
coordinates: [
'@@ķÒbĊƅĪÅૄ£լζŘÑÒƐźƜ҃¼Ɔþ¥ƨĊɚźô¼ɼٮ٢ƲƒVƽŎÅ˖ĠǞ@ŤÒɼƃƐōXऻmɥ̂Ï£īôğÑĉŤŹƼ‚Ʋ̗ǩƅĵ¼ĉğţxaÿƻXʝǵÑŮĕV¦ƃȗݯłğÅɏ@IŮŹxĕţǿx»ƽĵƻšġŁŹaŁĕŹn—ĠȋƧºğƏƽīŭə'
],
encodeOffsets: [[-72400, 44092]]
}
},
{
type: 'Feature',
id: '24',
properties: { name: 'Maryland' },
geometry: {
type: 'MultiPolygon',
coordinates: [
['@@k@w@¤@'],
[
'@@᷈@þ੓լUǓΟŹaɯ¹ǵ™LƐçÆĪÒŹƐ£Ïǩ`ÑƲÆ@LȤÆþóˊĢƾƚ„xLjŁmIćəŁÝīaʓĉŗšȕŎƅaĵèķ™çȕƆˡÜĉźƻñÑĶŮźôƆŌĔŁĊç¹ŋþǩ¤@ŰġèŹbĩɼƛ@ƛþýÛƑJğʝÒǓŭŋ‚ǓƛǓýVў'
]
],
encodeOffsets: [[[-77818, 38865]], [[-81385, 40676]]]
}
},
{
type: 'Feature',
id: '25',
properties: { name: 'Massachusetts' },
geometry: {
type: 'Polygon',
coordinates: [
'@@ĊaŽƧ™šƃōKŹȀkŎƅkŁĠƒVĩɼĉ˖þÑŗЏķƥIĕþƏwKÑƽ™ÛƲw„ĕÒ¯Ȣŭ@ɥU@bੇ`εXmŽȮւڼaঊƒĠĀɦĊ'
],
encodeOffsets: [[-72619, 43918]]
}
},
{
type: 'Feature',
id: '26',
properties: { name: 'Michigan' },
geometry: {
type: 'MultiPolygon',
coordinates: [
[
'@@଑@Æ঵@۩@ǠŎŘȌłŘþNJ°ɰkʞʝӤþȂÅɚȘɦ¤ȌƒĶƒ¤lƒɐšǔƲḁĔ_ŎƲLʴèÜɰ¦óǶƲƲȌVɄīȺaĶţƾUˀŋĠJƜǵřĩŎů¤ƛ¹̹ǟý£ljȭÅōȕ¦óȮçƼłȂɎ̂ĊƜÛĔţĖΓbǩĠɃĕ̥Ə¯IŎġŁʩǝī»ȕɃLJaé'
],
['@@bķōk²Ɯºw'],
[
'@@ŹĖþŢȡnĀŘVƦǩĸīłΫĊŋƒΫŰࡻǞğƜƽ¼͜Ĕƨĸπ¤ʈŮŎLĠĖˀŮƄłȢèȌÑͧʳýēLƽLjŤ̂mɦĉȮɯŎ¥Ʉšº¹ɄƒҌȘɼl̺UɄÜLjLɻǔǔ˜èÅŌèʔxJ̍ŎŭǔlĊLj@ĖĕóÛҡÆə™ʅĶéğýŁlƽŚ˕èƏJƅŋəƒʇxĩ¯wğʿÿbŎřx¯ŗȕKĕ¹Źȣʅʧlw'
],
['@@ɃŁōaXĖՊȢķƏŗƒ']
],
encodeOffsets: [
[[-85457, 42734]],
[[-87560, 46829]],
[[-89691, 46178]],
[[-90936, 49128]]
]
}
},
{
type: 'Feature',
id: '27',
properties: { name: 'Minnesota' },
geometry: {
type: 'Polygon',
coordinates: [
'@@ۚǟç@ӻ¹»ʇçȕǵašĪWłŁĩŹlƛṊ̃ɚƱǬaĔğʴġ¦ŋʆƛƆLjȁwƃ°īŹ@⣧@@ພȗĬƥNJɰǴlĬͲĵĖçȀbɦšՠǓ˸ÝLj;ÆŘōˌნ@@͐ǔUŌÛŎѩĖ»ˠaŽ£͒mšğˠx@šɐ°ȌkɎçÒĕŰVŘȋÆĀɄššÿʞÅ@óŮÑʪƲĈȸ¼ôŭƜ‚ǞȤlɤŁɐnm¯˫ŁϷĉʩĕεɏƽƃʅƱϗȭÜç'
],
encodeOffsets: [[-94223, 47827]]
}
},
{
type: 'Feature',
id: '28',
properties: { name: 'Mississippi' },
geometry: {
type: 'Polygon',
coordinates: [
'@@ɦ@ĔēšȗཱིÞ౹ġ™ȫnĉÆȭ™˫īĕÑĵĖƐƑȀĊˢཝ@ÒÒÑǔĸVb̰ĊmºȌȢŤĸȘmʞŭŀVǠҚýĬÜŘ¯ǪôèƧŎƆʴƲƄ»ĢǬƐKÆƲ°aǔ˚ÒƜƄܹô໸@'
],
encodeOffsets: [[-90594, 35836]]
}
},
{
type: 'Feature',
id: '29',
properties: { name: 'Missouri' },
geometry: {
type: 'Polygon',
coordinates: [
'@@ĔJǠǝĠƒóţVǝłʳʴɏˬǵÈ˟Ü»ĬĀȀ™ŤÑĉķxýƛɏIƃʞǟĠŋĠl˖ǵ@ŹèLJçÅȌʇƄUçͽŭš¯ŁÅ@±@LȹǓɃի@ƆƾźĸóLj⋑Jţ@@оLᆂǵ¦ƃȢŁĊȌʒ˕Þĉþȹɚdz˖॒aାX஦x'
],
encodeOffsets: [[-94037, 41585]]
}
},
{
type: 'Feature',
id: '30',
properties: { name: 'Montana' },
geometry: {
type: 'Polygon',
coordinates: [
'@@Jढ़IྕJߓ_@༛Lᦑ@စ@JѵƱĖƃƦȗǩǝ¥°ȡ™ŗ¦ȗóʿJēýī°ŋ˖ǫVĩèJNJĵÒƏǞĉLjxêƱĈĉğȹŗdzˤĠÑĔƲĢēźxȢŢ̺ʑIUÆəĔ™Ģ̹ɤmÒǝšljĸIɰ˕ɼ@ࡲ⒞KႢL⮀@'
],
encodeOffsets: [[-106544, 50177]]
}
},
{
type: 'Feature',
id: '31',
properties: { name: 'Nebraska' },
geometry: {
type: 'Polygon',
coordinates: [
'@@ූK᥄@„¥ўƱĶĊŤkЄ@ѶƽÆţƲwƲϗŚÅÆƥ»ķxŗƨóKɃĊȋ¯ɍĬōǴ˕Ⱥə㔋@ů@@ࡄွ@@၀ؔ@'
],
encodeOffsets: [[-105804, 44036]]
}
},
{
type: 'Feature',
id: '32',
properties: { name: 'Nevada' },
geometry: {
type: 'Polygon',
coordinates: ['@@ᠢIK⠵@ڱĕƛĉIĵĶ̯¼ӯèLJnƽ»ŗ৹ࠀׅҀߩ׾৹ݎઋݰJਫ਼IบબKඞV'],
encodeOffsets: [[-119836, 43009]]
}
},
{
type: 'Feature',
id: '33',
properties: { name: 'New Hampshire' },
geometry: {
type: 'Polygon',
coordinates: [
'@@¤իÆૃƆĩaĉĸÑīƽĉbɥĉğÿউ„óÞVŮô°UŤÞΠƦǔôȌòèIȸˬĀƐƚýƒŘƐUĊŤɎȖw¦¼'
],
encodeOffsets: [[-72787, 46391]]
}
},
{
type: 'Feature',
id: '34',
properties: { name: 'New Jersey' },
geometry: {
type: 'Polygon',
coordinates: [
'@@ˬţĵʑƏÇóŹɰÛnīķҋʽͱǟīƱɃýƐʑê̙ȀkŮKn°°þĶɦèbÞʴƐ¦ôʇǞUłŁ„UĬźƦçĖɂǪ²ĠŌÒϮǿ'
],
encodeOffsets: [[-76018, 42129]]
}
},
{
type: 'Feature',
id: '35',
properties: { name: 'New Mexico' },
geometry: {
type: 'Polygon',
coordinates: ['@@ҮKᑾ@૰L@н@Kᐣk࡙@ࡅᲥ@wĉĬĩඳ@@ϣ۳@L⶚സ@'],
encodeOffsets: [[-109999, 37889]]
}
},
{
type: 'Feature',
id: '36',
properties: { name: 'New York' },
geometry: {
type: 'Polygon',
coordinates: [
'@@Xǩ¯ƽþƱwLJīǟôɯ¯çƄƑ׃VóȭցnÇًÒçȷġÒĩΪçôº̰@Ƽ„ʴƆnīƆ¥̯ŭ٭ǿ˕™ǵVƃ¥óƒĶʒ˫ŤϭȀ™ÒŹLƱƚnŰķĬÛKğŘ⍻@@Ʉ@bԪʈĊŘǒþÛƜ焻ɰӰĬѪKǪwȌğŤšζKɚÒɼƲƲLLɰþƆȋĠ¦łͲƜŰŮКˮϤƚ֮wڰn'
],
encodeOffsets: [[-75104, 46094]]
}
},
{
type: 'Feature',
id: '37',
properties: { name: 'North Carolina' },
geometry: {
type: 'Polygon',
coordinates: [
'@@ֺaڄIᵤVĬͳɻ¥˵¹¥±ȋ_XÑɰ¤Ž™ʪ¦ĊÿƲÆȭ»īĵUɃȷ˫W¯ƙŤƛ΃dzɻƱ„ˋwǿ»́LJɱɃţˋǩỌ̀Å॑ߠऻbbĪŹƜē¹KĔਛ¦ɯǵý́ÅѓaכJxȤǔlÞƐȸŰɰJȺźɎ°ȂȌŘÈxĉͨLjƲłƾƾ¤˜Ȣלw'
],
encodeOffsets: [[-82922, 37440]]
}
},
{
type: 'Feature',
id: '38',
properties: { name: 'North Dakota' },
geometry: {
type: 'Polygon',
coordinates: ['@@ŎˋÅŗ‚ͽÞLJǔ˷‚՟™aɥèǿĶĕŽͱ㰣VJྖIफ़㛌@'],
encodeOffsets: [[-99562, 50177]]
}
},
{
type: 'Feature',
id: '39',
properties: { name: 'Ohio' },
geometry: {
type: 'Polygon',
coordinates: [
'@@@ૻŭ¯ÒġKŹŗȫý̯͛˕Ł™ġÆĩšīJŁLJxīĕýŭźƽȭ¦Źķ¯ōəkŗŘīx™ƜţƒğĉͅÞƅÑȋŘʽaòǟǪ͏@b୮Kৌ଒Ž͞ŗŌçĊÞȀƅŚ¥ϸŎɲwʞƾζƲаł@@'
],
encodeOffsets: [[-82451, 42987]]
}
},
{
type: 'Feature',
id: '40',
properties: { name: 'Oklahoma' },
geometry: {
type: 'Polygon',
coordinates: [
'@@Ⰴ@@нƾग¯๑͑ĠćĬɏĊÅóɏL¯°ȡĉĉ°ǵ£ǓŹÛòǩÒȁ@ÑĬɃȋçłīñèȡÞƧōÛŘţbçĠljšŁýçèǓUǿòǟUÏLjˋƒȋLjÝU@࿂຿@ু@@оߪK࿦L'
],
encodeOffsets: [[-102489, 37889]]
}
},
{
type: 'Feature',
id: '41',
properties: { name: 'Oregon' },
geometry: {
type: 'Polygon',
coordinates: [
'@@þVǶĕþĵ¦ʧўġςƆɰbˌ¯‚ÅҢŢŎ£ʜxȺĊςôͲlŘÆაIŘƛȢÑêŗǫʝ¹Ƨīĵbýĕůēǟ̙ÒŗLjaêçōˡ@໡ඝUફLࢇ@ૻ`ܕIࠗKţĬÝ˖bȌŗƦĊƒÒɤŮʈÈɄĠ܊aĬĊ̺ŽѠ¯ʆ¦ƜͲŰƦīƆx'
],
encodeOffsets: [[-126168, 47283]]
}
},
{
type: 'Feature',
id: '42',
properties: { name: 'Pennsylvania' },
geometry: {
type: 'Polygon',
coordinates: [
'@@@Ƀ⍼@ĠŗÜLĸīmůƲƙźKšÑŋѱğɁǩèĕŹƥVīłƒVŁʈǝ¥óʳƏaÝɥçǝxƛğ᷇@࢓@@ޒ@ૼ@@ƾ°ӎȢ@a'
],
encodeOffsets: [[-81677, 43267]]
}
},
{
type: 'Feature',
id: '44',
properties: { name: 'Rhode Island' },
geometry: {
type: 'MultiPolygon',
coordinates: [['@@ÜƱǑkĶǞ'], ['@@Ů@°ȡĖÑĵbĕůƒǩͅ£¼þ@ӼɦV']],
encodeOffsets: [[[-72905, 42678]], [[-73247, 43026]]]
}
},
{
type: 'Feature',
id: '45',
properties: { name: 'South Carolina' },
geometry: {
type: 'Polygon',
coordinates: [
'@@Ƕþɰਜ¥LēĔºźƛaĩ़a॒ߟƥ¥ȁƏdzɍǩƛƑȋ@£ĵȡōōţǩ¹ȋŹkÑǩçȋǵȗôIƜƅɤŗÒWǶÅƐɥźƥƾVĬɥƜŋƼȗłƅǪĬŹȂĕa˫ǴbĖǶǶ̂Æ'
],
encodeOffsets: [[-84750, 35909]]
}
},
{
type: 'Feature',
id: '46',
properties: { name: 'South Dakota' },
geometry: {
type: 'Polygon',
coordinates: [
'@@㰤UkīɯdzƦljȘī@ຝōm°çƒƥłĉÛуǓñŭƼȁƱxÅŤѵƾЃ@ţlĵĉѝƲƒ¦᥃@෕Lؓ@Iဲ`@Iߔ'
],
encodeOffsets: [[-106544, 47047]]
}
},
{
type: 'Feature',
id: '47',
properties: { name: 'Tennessee' },
geometry: {
type: 'Polygon',
coordinates: [
'@@aƲȂ™੔lचǔVشܖUb`ဲU—ȡƽ£ŁƽƱŽͧLJwĊŗÇȁȋɍ¯ȹŹɯIȷůÝƏǓkwȣઋIใbۿKɥ@໷@ĊxĊƨaȬƼƒ„źŮ°„ƼǔɄKȺ²@Æ@ĶVਲU'
],
encodeOffsets: [[-90168, 37373]]
}
},
{
type: 'Feature',
id: '48',
properties: { name: 'Texas' },
geometry: {
type: 'Polygon',
coordinates: [
'@@ເ@@࿁ÞVȌLJĶ„ˌWÐLJǠVȀñǔVèçłþNJ™èğŤaÜŗƨŎȢÝòçĬŽèŁɄȌÒīȂ@ǪÑÜñǔźǶ¤Ċ¯ȢĊ°¯ɐKÆôɐĉĈī͒ğĖýǔ¤Ţ™@ѿ@࡯ȂȁJǿɲͽbǵĕɍĉĕ„ŗÑĕÜLJȡ̗ôĉƏKѩŗƽ܃ƒŋīýx¥ţĖ»`ƻƻǓʩȹԑə¹šƱÅKºȷ—īŀÑwɚɍLJçƱ¤wƱȋƽȗ́ụ̆ğxwōĪ„¯əÛUKůþçzʧĠĕxLJòƛʳĕŁŎȡ¤ʽUɥƐǟbŹŎǩšţłýʨƱƲlźçƒxŢŁƆēbƛŤ¯ƲůƐdzŘĕʪĉèōȮ—ǒŁŤǵł¥ôǓÞŹȀο¤əUȋÞ¥ĕȭƒƱǩğ˫»IŗǓƏKȷźԳȺķŌȫłƛʈUɎƛǪƴġĪ͛ƜǩȘƛèƱǔɃĔƥɜů°īĪxĊᲦ@@ࡆl࡚LᐤŽ@ূ@'
],
encodeOffsets: [[-104256, 37378]]
}
},
{
type: 'Feature',
id: '49',
properties: { name: 'Utah' },
geometry: {
type: 'Polygon',
coordinates: ['@@रJ@ࡃှ@I༻K܉bġ@ও௧JᲣIL⠶ཆ@'],
encodeOffsets: [[-114856, 43004]]
}
},
{
type: 'Feature',
id: '50',
properties: { name: 'Vermont' },
geometry: {
type: 'Polygon',
coordinates: [
'@@VĉŗƏþƑƏƙ˫ÿJȷñçóȋƥǓÝΟVţó¯UŭôÝڻbUô‚ׄƃƒ°èóɰĬǠxLjýƲ°ƾWǪ࢈UڲV'
],
encodeOffsets: [[-73219, 46094]]
}
},
{
type: 'Feature',
id: '51',
properties: { name: 'Virginia' },
geometry: {
type: 'MultiPolygon',
coordinates: [
['@@źbŋƛŗ¹éȗǩ̹ƛݯŘôʴɦ͞ɰº'],
['@@l@£@x@'],
[
'@@Ѫ˭ĠNJźaĢç@ůǪ£ŌýÞţóƅĵ™Ýţšēɦ‚¤ƃ̎ÅĊŁɼřŁɻĬǿŗĕaŁłÛŗĵǩƄ¥¯Ʋīвwł̹ᵣUڃJֹbכxေVҌŤÆĠLjVòŰÈ@Ṵ̈Ű͐ɤaçŚƛƚçłLNJŌŘēɐ°ϢLj޹ƨòJƲĢƆƼŮÞƴǔƼÜȘƜŗƐ™ĖèǶ̘łñϸ;°ʞ'
]
],
encodeOffsets: [
[[-77207, 38926]],
[[-77840, 38865]],
[[-80230, 40413]]
]
}
},
{
type: 'Feature',
id: '53',
properties: { name: 'Washington' },
geometry: {
type: 'MultiPolygon',
coordinates: [
[
'@@UਧL૯açŎƧJƥ჏JŗÅͱkρóȹĉʛwō¤ҡšÆˋ°ɯaρƅѝĢ¥ʨýĶǵĖýUƅwƥĬƱŽů»LJôŽŘŎÒǝǪřҖçÒğ͒ǓŮçʞĠǔǠýΈŁɼJɼ£ɜ¤łñȢJƐǿĶbnʝÒɥĊxĉȘxȌƐȖōþUƒĉƲ¦ŌÇźƃnůĬĠ⸈@'
],
['@@ԚkǟƅÞ¦è'],
['@@ĠŌŮƅ™ŗȕbł']
],
encodeOffsets: [
[[-119842, 50177]],
[[-125663, 49470]],
[[-125977, 49751]]
]
}
},
{
type: 'Feature',
id: '54',
properties: { name: 'West Virginia' },
geometry: {
type: 'Polygon',
coordinates: [
'@@@ޑ࢔@UѝǔþǔƜԁǔŮʞюĠƒIþÜƜýƜ@Īɻğljѩˮ¯ʝϷͽŁòǵ̗ĕçƏšƛŘÛȗǓƻÝƳƻŭġƅIƱƧñºϡLJɏ¯ŗĔljŋŁKƙèřƜbèŋbljĬ£ĬƅŮĵLjxʪɚlŽŎĸ°¥źƾȮŮŹĖþwĬłLjĬIĪŢĢÅłš͜˖þ̰ŘȬLźÑĢٰ'
],
encodeOffsets: [[-82451, 41613]]
}
},
{
type: 'Feature',
id: '55',
properties: { name: 'Wisconsin' },
geometry: {
type: 'Polygon',
coordinates: [
'@@ƾ»ĠƛࡼǝάůŌ„άĉĬŁǪķUƥÿŗȢmýšźĕĵljmƏȕ¹ƅĪwźĔƒǔǪÞƐɄǪ°aōţĵɻΓÛȗLƏĕ¯ýȋ‚LJñŁķʿxȷĸȁʑࠡ@༏bÑł̗ĬÝƄȌĶĸůĈUŰ¯ĬxƄLJȂƅŽʅƜ¥ŌʳĢēĠǫbəƲÒ̮kƜĪźŁłĩXbŢȖǶʈ躼@ӼǠèܙȌUגƚɎĀôÑŗōˠƛŤ_'
],
encodeOffsets: [[-92585, 47687]]
}
},
{
type: 'Feature',
id: '56',
properties: { name: 'Wyoming' },
geometry: {
type: 'Polygon',
coordinates: ['@@ᦒ@༜KJေ@ဿටIᇅJेIွ@@ࡄ@ᐎIѶဆ@'],
encodeOffsets: [[-111698, 46083]]
}
},
{
type: 'Feature',
id: '72',
properties: { name: 'Puerto Rico' },
geometry: {
type: 'Polygon',
coordinates: ['@@˓nŻÝ¹šȋa°ȤīƚƨźŘwҢ@ӎ¯ǪÅLƏĕaēƛͳóǵ°'],
encodeOffsets: [[-68043, 18416]]
}
}
],
UTF8Encoding: true
},
{
Alaska: { left: -131, top: 25, width: 15 },
Hawaii: { left: -110, top: 28, width: 5 },
'Puerto Rico': { left: -76, top: 26, width: 2 }
}
);
});

4118
staticfiles/data/world.js Normal file

File diff suppressed because it is too large Load Diff

BIN
staticfiles/flags/AE.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 B

BIN
staticfiles/flags/AF.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 B

BIN
staticfiles/flags/AG.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 B

BIN
staticfiles/flags/AL.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 362 B

BIN
staticfiles/flags/AM.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 B

BIN
staticfiles/flags/AO.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 B

BIN
staticfiles/flags/AQ.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 B

BIN
staticfiles/flags/AR.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 B

BIN
staticfiles/flags/AS.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 357 B

BIN
staticfiles/flags/AT.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 B

BIN
staticfiles/flags/AU.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 370 B

BIN
staticfiles/flags/AX.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 B

BIN
staticfiles/flags/BA.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 B

BIN
staticfiles/flags/BB.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 B

BIN
staticfiles/flags/BD.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 B

BIN
staticfiles/flags/BE.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 B

BIN
staticfiles/flags/BF.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 350 B

BIN
staticfiles/flags/BG.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 352 B

BIN
staticfiles/flags/BH.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 359 B

BIN
staticfiles/flags/BL.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 B

BIN
staticfiles/flags/BM.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 359 B

BIN
staticfiles/flags/BN.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 365 B

BIN
staticfiles/flags/BO.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 B

BIN
staticfiles/flags/BQ.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 546 B

BIN
staticfiles/flags/BR.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 359 B

BIN
staticfiles/flags/BT.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 369 B

BIN
staticfiles/flags/BV.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 B

BIN
staticfiles/flags/BY.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 B

BIN
staticfiles/flags/CA.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 B

BIN
staticfiles/flags/CD.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 B

BIN
staticfiles/flags/CF.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 B

BIN
staticfiles/flags/CG.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 B

BIN
staticfiles/flags/CH.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 B

BIN
staticfiles/flags/CI.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 B

BIN
staticfiles/flags/CK.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 B

BIN
staticfiles/flags/CM.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 B

BIN
staticfiles/flags/CN.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 B

BIN
staticfiles/flags/CO.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 B

BIN
staticfiles/flags/CR.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 B

BIN
staticfiles/flags/CU.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 359 B

BIN
staticfiles/flags/CV.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 359 B

BIN
staticfiles/flags/CW.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 B

BIN
staticfiles/flags/CY.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 357 B

BIN
staticfiles/flags/DJ.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 B

BIN
staticfiles/flags/DO.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 B

BIN
staticfiles/flags/EC.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 B

BIN
staticfiles/flags/EE.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 B

BIN
staticfiles/flags/EG.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 B

BIN
staticfiles/flags/ER.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 B

BIN
staticfiles/flags/ES.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 352 B

BIN
staticfiles/flags/ET.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 B

BIN
staticfiles/flags/FI.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 363 B

BIN
staticfiles/flags/FJ.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 362 B

Some files were not shown because too many files have changed in this diff Show More