Compare commits

...

12 commits

Author SHA1 Message Date
5cbe87e6bf Join left and right navbar links into the center 2026-05-05 18:38:50 -06:00
25118c683b Stylin 2026-05-05 18:38:05 -06:00
353073f996 Allow system manager to impersonate 2026-05-05 18:35:45 -06:00
7d99357ac7 Docperms 2026-05-05 18:33:52 -06:00
b42b2cd1ad User field adjustments 2026-03-24 22:09:41 -06:00
6b5a69b9da Theme adjustments 2026-03-24 19:24:58 -06:00
Raffael Meyer
21417c67b1
ci: fix branch pattern (#38225) 2026-03-24 22:16:00 +00:00
Raffael Meyer
0cf2e3fd41
ci: restrict review script (#38224) 2026-03-24 21:59:00 +00:00
Ejaaz Khan
61e5378469
Merge pull request #38176 from UmakanthKaspa/fix-set-only-once-in-customize-form
fix: add `set_only_once` property to custom field and customize form
2026-03-25 01:53:53 +05:30
Ejaaz Khan
a8c429ecbe
Merge pull request #38218 from gajjug004/fix/report-view-chart-crash-on-group-by-removal
fix: report view crash when removing group by after toggling chart
2026-03-25 01:52:00 +05:30
gajjug004
4cc122af48 fix: report view chart crash on group-by removal 2026-03-24 19:00:13 +05:30
UmakanthKaspa
22a8d8dd66 fix: add set_only_once property to custom field and customize form 2026-03-23 00:14:10 +05:30
34 changed files with 253 additions and 133 deletions

View file

@ -3,6 +3,9 @@ name: Review translation PRs
on:
pull_request_target:
types: [opened, reopened, synchronize, ready_for_review]
branches:
- develop
- "version-[0-9][0-9]-hotfix"
paths:
- "**/*.po"

View file

@ -0,0 +1,8 @@
// Copyright (c) 2026, Frappe Technologies and contributors
// For license information, please see license.txt
// frappe.ui.form.on("Pronouns", {
// refresh(frm) {
// },
// });

View file

@ -0,0 +1,57 @@
{
"actions": [],
"allow_rename": 1,
"autoname": "field:pronouns",
"creation": "2026-03-24 20:39:16.401720",
"doctype": "DocType",
"engine": "InnoDB",
"field_order": [
"pronouns"
],
"fields": [
{
"fieldname": "pronouns",
"fieldtype": "Data",
"label": "Pronouns",
"unique": 1
}
],
"grid_page_length": 50,
"index_web_pages_for_search": 1,
"links": [],
"modified": "2026-03-24 20:58:54.860631",
"modified_by": "admin@seitimegames.com",
"module": "Contacts",
"name": "Pronouns",
"naming_rule": "By fieldname",
"owner": "admin@seitimegames.com",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"share": 1,
"write": 1
},
{
"create": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "Guest",
"share": 1
}
],
"row_format": "Dynamic",
"rows_threshold_for_grid_search": 20,
"sort_field": "creation",
"sort_order": "DESC",
"states": []
}

View file

@ -0,0 +1,20 @@
# Copyright (c) 2026, Frappe Technologies and contributors
# For license information, please see license.txt
# import frappe
from frappe.model.document import Document
class Pronouns(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
pronouns: DF.Data | None
# end: auto-generated types
pass

View file

@ -0,0 +1,22 @@
# Copyright (c) 2026, Frappe Technologies and Contributors
# See license.txt
# import frappe
from frappe.tests import IntegrationTestCase
# On IntegrationTestCase, the doctype test records and all
# link-field test record dependencies are recursively loaded
# Use these module variables to add/remove to/from that list
EXTRA_TEST_RECORD_DEPENDENCIES = [] # eg. ["User"]
IGNORE_TEST_RECORD_DEPENDENCIES = [] # eg. ["User"]
class IntegrationTestPronouns(IntegrationTestCase):
"""
Integration tests for Pronouns.
Use this class for testing interactions between multiple components.
"""
pass

View file

@ -1,6 +1,7 @@
{
"actions": [],
"allow_import": 1,
"allow_rename": 1,
"autoname": "hash",
"creation": "2017-01-11 04:21:35.217943",
"doctype": "DocType",
@ -227,7 +228,7 @@
],
"grid_page_length": 50,
"links": [],
"modified": "2025-05-22 16:59:35.484376",
"modified": "2026-03-31 20:37:16.503023",
"modified_by": "Administrator",
"module": "Core",
"name": "Custom DocPerm",

View file

@ -40,6 +40,9 @@ class CustomDocPerm(Document):
def get_permission_log_options(self, event=None):
return {"for_doctype": "DocType", "for_document": self.parent}
# def autoname(self):
# self.name = f"{self.parent}-{self.role}-{self.permlevel}"
def update_custom_docperm(docperm, values):
custom_docperm = frappe.get_doc("Custom DocPerm", docperm)

View file

@ -97,6 +97,11 @@ frappe.ui.form.on("User", {
frm.roles_editor.show();
}
}
if (!frappe.user.has_role("System Manager") && frm.doc.birth_date == null) {
var df = frappe.meta.get_docfield("User", "birth_date", cur_frm.doc.name);
df.read_only = 1;
}
},
refresh: function (frm) {
let doc = frm.doc;
@ -376,8 +381,9 @@ frappe.ui.form.on("User", {
},
setup_impersonation: function (frm) {
if (
frappe.session.user === "Administrator" &&
(frappe.session.user === "Administrator" || frappe.user.has_role("System Manager")) &&
frm.doc.name != "Administrator" &&
frm.doc.name != frappe.session.user &&
!frm.is_new()
) {
frm.add_custom_button(__("Impersonate"), () => {

View file

@ -35,15 +35,16 @@
"block_modules",
"home_settings",
"short_bio",
"gender",
"pronouns",
"birth_date",
"discord_username",
"interest",
"gender",
"column_break_26",
"phone",
"location",
"bio",
"column_break_22",
"phone",
"mobile_no",
"location",
"settings_tab",
"desk_settings_section",
"mute_sounds",
@ -144,7 +145,7 @@
{
"fieldname": "first_name",
"fieldtype": "Data",
"label": "First Name",
"label": "Preferred Name",
"oldfieldname": "first_name",
"oldfieldtype": "Data",
"reqd": 1
@ -152,6 +153,7 @@
{
"fieldname": "middle_name",
"fieldtype": "Data",
"hidden": 1,
"label": "Middle Name",
"oldfieldname": "middle_name",
"oldfieldtype": "Data"
@ -160,6 +162,7 @@
"bold": 1,
"fieldname": "last_name",
"fieldtype": "Data",
"hidden": 1,
"label": "Last Name",
"oldfieldname": "last_name",
"oldfieldtype": "Data"
@ -167,6 +170,7 @@
{
"fieldname": "full_name",
"fieldtype": "Data",
"hidden": 1,
"in_global_search": 1,
"in_standard_filter": 1,
"label": "Full Name",
@ -206,6 +210,7 @@
{
"fieldname": "language",
"fieldtype": "Link",
"hidden": 1,
"label": "Language",
"options": "Language"
},
@ -265,6 +270,7 @@
{
"fieldname": "gender",
"fieldtype": "Link",
"hidden": 1,
"label": "Gender",
"oldfieldname": "gender",
"oldfieldtype": "Select",
@ -273,12 +279,14 @@
{
"fieldname": "phone",
"fieldtype": "Data",
"hidden": 1,
"label": "Phone",
"options": "Phone"
},
{
"fieldname": "mobile_no",
"fieldtype": "Data",
"hidden": 1,
"label": "Mobile No",
"options": "Phone",
"unique": 1
@ -286,24 +294,23 @@
{
"fieldname": "birth_date",
"fieldtype": "Date",
"label": "Birth Date",
"label": "Special Day",
"no_copy": 1,
"oldfieldname": "birth_date",
"oldfieldtype": "Date"
"oldfieldtype": "Date",
"reqd": 1
},
{
"fieldname": "location",
"fieldtype": "Data",
"hidden": 1,
"label": "Location",
"no_copy": 1
},
{
"fieldname": "column_break_22",
"fieldtype": "Column Break"
},
{
"fieldname": "interest",
"fieldtype": "Small Text",
"hidden": 1,
"label": "Interests"
},
{
@ -852,6 +859,18 @@
"fieldname": "form_navigation_buttons",
"fieldtype": "Check",
"label": "Show navigation buttons"
},
{
"fieldname": "pronouns",
"fieldtype": "Link",
"label": "Pronouns",
"options": "Pronouns"
},
{
"fieldname": "discord_username",
"fieldtype": "Data",
"label": "Discord Username",
"reqd": 1
}
],
"icon": "fa fa-user",
@ -905,8 +924,8 @@
}
],
"make_attachments_public": 1,
"modified": "2026-02-22 13:44:36.317890",
"modified_by": "Administrator",
"modified": "2026-03-24 21:30:57.199337",
"modified_by": "admin@seitimegames.com",
"module": "Core",
"name": "User",
"owner": "Administrator",

View file

@ -76,7 +76,7 @@ class User(Document):
api_key: DF.Data | None
api_secret: DF.Password | None
bio: DF.SmallText | None
birth_date: DF.Date | None
birth_date: DF.Date
block_modules: DF.Table[BlockModule]
bulk_actions: DF.Check
bypass_restrict_ip_check_if_2fa_enabled: DF.Check
@ -86,6 +86,7 @@ class User(Document):
default_workspace: DF.Link | None
defaults: DF.Table[DefaultValue]
desk_theme: DF.Literal["Light", "Dark", "Automatic"]
discord_username: DF.Data
document_follow_frequency: DF.Literal["Hourly", "Daily", "Weekly"]
document_follow_notify: DF.Check
email: DF.Data
@ -124,6 +125,7 @@ class User(Document):
notifications: DF.Check
onboarding_status: DF.SmallText | None
phone: DF.Data | None
pronouns: DF.Link | None
redirect_url: DF.SmallText | None
reset_password_key: DF.Data | None
restrict_ip: DF.SmallText | None

View file

@ -48,6 +48,7 @@
"print_width",
"alignment",
"no_copy",
"set_only_once",
"allow_on_submit",
"in_list_view",
"in_standard_filter",
@ -484,6 +485,12 @@
"fieldtype": "Select",
"label": "Button Color",
"options": "\nDefault\nPrimary\nInfo\nSuccess\nWarning\nDanger"
},
{
"default": "0",
"fieldname": "set_only_once",
"fieldtype": "Check",
"label": "Set only once"
}
],
"grid_page_length": 50,
@ -491,7 +498,7 @@
"idx": 1,
"index_web_pages_for_search": 1,
"links": [],
"modified": "2025-11-12 01:14:24.753774",
"modified": "2026-03-22 10:35:32.555267",
"modified_by": "Administrator",
"module": "Custom",
"name": "Custom Field",

View file

@ -22,9 +22,9 @@ class CustomField(Document):
if TYPE_CHECKING:
from frappe.types import DF
alignment: DF.Literal["", "Left", "Center", "Right"]
allow_in_quick_entry: DF.Check
allow_on_submit: DF.Check
alignment: DF.Literal["", "Left", "Center", "Right"]
bold: DF.Check
button_color: DF.Literal["", "Default", "Primary", "Info", "Success", "Warning", "Danger"]
collapsible: DF.Check
@ -114,6 +114,7 @@ class CustomField(Document):
report_hide: DF.Check
reqd: DF.Check
search_index: DF.Check
set_only_once: DF.Check
show_dashboard: DF.Check
sort_options: DF.Check
translatable: DF.Check

View file

@ -810,6 +810,7 @@ docfield_properties = {
"placeholder": "Data",
"button_color": "Select",
"mask": "Check",
"set_only_once": "Check",
}
doctype_link_properties = {

View file

@ -22,6 +22,7 @@
"in_preview",
"bold",
"no_copy",
"set_only_once",
"allow_in_quick_entry",
"translatable",
"mask",
@ -509,6 +510,12 @@
"fieldname": "mask",
"fieldtype": "Check",
"label": "Mask"
},
{
"default": "0",
"fieldname": "set_only_once",
"fieldtype": "Check",
"label": "Set only once"
}
],
"grid_page_length": 50,
@ -516,7 +523,7 @@
"index_web_pages_for_search": 1,
"istable": 1,
"links": [],
"modified": "2025-12-23 14:17:10.458916",
"modified": "2026-03-22 10:36:12.968197",
"modified_by": "Administrator",
"module": "Custom",
"name": "Customize Form Field",

View file

@ -13,10 +13,10 @@ class CustomizeFormField(Document):
if TYPE_CHECKING:
from frappe.types import DF
alignment: DF.Literal["", "Left", "Center", "Right"]
allow_bulk_edit: DF.Check
allow_in_quick_entry: DF.Check
allow_on_submit: DF.Check
alignment: DF.Literal["", "Left", "Center", "Right"]
bold: DF.Check
button_color: DF.Literal["", "Default", "Primary", "Info", "Success", "Warning", "Danger"]
collapsible: DF.Check
@ -109,6 +109,7 @@ class CustomizeFormField(Document):
remember_last_selected_value: DF.Check
report_hide: DF.Check
reqd: DF.Check
set_only_once: DF.Check
show_dashboard: DF.Check
sort_options: DF.Check
translatable: DF.Check

View file

@ -502,6 +502,11 @@ frappe.views.ReportView = class ReportView extends frappe.views.ListView {
// show chart if saved via report or user settings
if (!this.chart) {
if (this.chart_args) {
if (!this.chart_axes_valid(this.chart_args)) {
this.reset_chart_state();
return;
}
this.build_chart_args(
this.chart_args.x_axis,
this.chart_args.y_axes,
@ -643,12 +648,30 @@ frappe.views.ReportView = class ReportView extends frappe.views.ListView {
refresh_charts() {
if (!this.chart || !this.chart_args) return;
if (!this.chart_axes_valid(this.chart_args)) {
this.reset_chart_state();
return;
}
this.$charts_wrapper.removeClass("hidden");
const { x_axis, y_axes, chart_type } = this.chart_args;
this.build_chart_args(x_axis, y_axes, chart_type);
this.chart.update(this.chart_args);
}
chart_axes_valid(chart_args) {
const { x_axis, y_axes } = chart_args;
return this.columns_map[x_axis] && y_axes.every((y_axis) => this.columns_map[y_axis]);
}
reset_chart_state() {
this.chart = null;
this.chart_args = null;
this.$charts_wrapper.addClass("hidden");
this.save_view_user_settings({ chart_args: null });
}
get_editing_object(colIndex, rowIndex, value, parent) {
const control = this.render_editing_input(colIndex, value, parent);
if (!control) return false;

View file

@ -608,7 +608,7 @@
}
&.active {
color: var(--primary);
/*color: var(--primary);*/
font-weight: 600;
border-bottom-color: var(--primary);
}

View file

@ -529,7 +529,7 @@
&.active {
font-weight: 400;
border-bottom: 1px solid var(--text-color);
color: var(--text-neutral);
/* color: var(--text-neutral); */
padding-bottom: 9px;
}
&:focus-visible {

View file

@ -1,8 +1,6 @@
.web-footer {
padding: 3rem 0;
min-height: 140px;
background-color: var(--fg-color);
border-top: 1px solid $border-color;
margin-top: auto;
}
@ -21,11 +19,11 @@
.footer-child-item a {
font-size: $font-size-sm;
font-weight: 500;
color: $gray-700;
color: var(--body-text-color);
&:hover {
color: $primary;
text-decoration: none;
color: var(--body-text-color);
text-decoration: underline;
}
}
@ -81,7 +79,7 @@
}
.footer-info {
color: $text-muted;
color: var(--body-text-color);
font-size: $font-size-sm;
}

View file

@ -37,7 +37,6 @@
}
.navbar-light {
border-bottom: 1px solid $border-color;
background: $navbar-bg;
.navbar-toggler .icon {
@ -128,14 +127,15 @@
}
.navbar-light .navbar-nav .nav-link {
color: $gray-700;
color: var(--body-text-color);
font-size: $font-size-sm;
font-weight: 500;
&:hover,
&:focus,
&.active {
color: $primary;
color: var(--body-text-color);
text-decoration: underline;
}
}

View file

@ -90,38 +90,38 @@
}
.section-padding {
padding-top: 3rem;
padding-bottom: 3rem;
padding-top: 1rem;
padding-bottom: 1rem;
@include media-breakpoint-up(sm) {
padding-top: 5rem;
padding-bottom: 5rem;
padding-top: 2rem;
padding-bottom: 2rem;
}
@include media-breakpoint-up(xl) {
padding-top: 8rem;
padding-bottom: 8rem;
padding-top: 3rem;
padding-bottom: 3rem;
}
}
.section-padding-top {
padding-top: 3rem;
padding-top: 1rem;
@include media-breakpoint-up(sm) {
padding-top: 5rem;
padding-top: 2rem;
}
@include media-breakpoint-up(xl) {
padding-top: 8rem;
padding-top: 3rem;
}
}
.section-padding-bottom {
padding-bottom: 3rem;
padding-bottom: 1rem;
@include media-breakpoint-up(sm) {
padding-bottom: 5rem;
padding-bottom: 2rem;
}
@include media-breakpoint-up(xl) {
padding-bottom: 8rem;
padding-bottom: 3rem;
}
}
@ -230,22 +230,16 @@
padding-bottom: 1px;
.nav-link {
color: $gray-800;
font-weight: 500;
border: none;
padding: 1rem 0.5rem;
margin-right: 2rem;
white-space: nowrap;
@include transition();
&:hover {
color: $primary;
}
}
.nav-link.active,
.nav-item.show .nav-link {
color: darken($primary, 5%);
background-color: transparent;
border-bottom: 2px solid $primary;
}

View file

@ -2,9 +2,9 @@
<div class="container">
{% include "templates/includes/footer/footer_logo_extension.html" %}
{% if footer_items -%}
<!-- {% if footer_items -%}
{% include "templates/includes/footer/footer_grouped_links.html" %}
{% endif %}
{% endif %} -->
{% include "templates/includes/footer/footer_links.html" %}
{% include "templates/includes/footer/footer_info.html" %}

View file

@ -1,6 +1,7 @@
<div class="footer-info">
<div class="row">
<div class="footer-col-left col-sm-6 col-12">
<!-- <div class="footer-col-left col-sm-6 col-12"> -->
<div class="col-12">
{% if copyright %}
&copy; {{ copyright }}
{% endif %}
@ -10,6 +11,7 @@
{% endif %}
</div>
{# powered #}
<!--
<div class="footer-col-right col-sm-6 col-12 footer-powered">
{% block powered %}
{%- if footer_powered -%}
@ -19,5 +21,6 @@
{%- endif -%}
{% endblock %}
</div>
-->
</div>
</div>

View file

@ -9,16 +9,18 @@
{% endmacro %}
<div class="footer-links">
<div class="row">
<div class="footer-col-left col-sm-6">
<!-- <div class="footer-col-left col-sm-6"> -->
<div class="col-12">
{%- for item in footer_items if item.label and not (item.parent_label or item.child_items) and not item.right %}
{{ footer_link(item) }}
{{ "|" if not loop.last }}
{% endfor -%}
</div>
<div class="footer-col-right col-sm-6">
<!-- <div class="footer-col-right col-sm-6">
{%- for item in footer_items if item.label and not (item.parent_label or item.child_items) and item.right %}
{{ footer_link(item) }}
{% endfor -%}
</div>
</div> -->
</div>
</div>

View file

@ -52,19 +52,10 @@
{% endif %}
{% endmacro %}
{% if top_bar_items -%}
<ul class="mr-auto navbar-nav">
{%- for item in top_bar_items -%}
{% if not item.parent_label and not item.right -%}
{{ render_item(item, parent=True) }}
{%- endif -%}
{%- endfor %}
</ul>
{%- endif %}
<ul class="ml-auto navbar-nav">
<ul class="mx-auto navbar-nav">
{% include "templates/includes/navbar/navbar_search.html" %}
{%- for item in top_bar_items -%}
{% if not item.parent_label and item.right -%}
{% if not item.parent_label -%}
{{ render_item(item, parent=True) }}
{%- endif -%}
{%- endfor %}
@ -98,9 +89,12 @@
</div>
{% endif %}
{% include "templates/includes/navbar/navbar_login.html" %}
</ul>
<ul class="navbar-nav">
{% include "templates/includes/navbar/navbar_login.html" %}
</ul>
{%- if call_to_action -%}
<a class="btn btn-primary navbar-cta" href="{{ call_to_action_url | abs_url }}">
{{ call_to_action }}

View file

@ -16,6 +16,7 @@ $font-family-sans-serif: "{{ google_font }}", "InterVariable", "Inter", -apple-s
{% if primary_color %}$primary: {{ frappe.db.get_value('Color', primary_color, 'color') }};{% endif -%}
{% if dark_color %}$dark: {{ frappe.db.get_value('Color', dark_color, 'color') }};{% endif -%}
{% if text_color %}$body-text-color: {{ frappe.db.get_value('Color', text_color, 'color') }};{% endif -%}
{% if light_color %}$light: {{ frappe.db.get_value('Color', light_color, 'color') }};{% endif -%}
{% if background_color %}$body-bg: {{ frappe.db.get_value('Color', background_color, 'color') }};{% endif -%}
$enable-shadows: {{ button_shadows and "true" or "false" }};

View file

@ -1,29 +0,0 @@
<nav class="navbar navbar-primary navbar-expand-lg">
<div class="container">
<a class="navbar-brand" href="{{ url_prefix }}{{ home_page or "/" }}">
{%- if brand_html -%}
{{ brand_html }}
{%- elif banner_image -%}
<img src='{{ banner_image }}'>
{%- else -%}
<span>{{ (frappe.get_hooks("brand_html") or [_("Home")])[0] }}</span>
{%- endif -%}
</a>
<button class="navbar-toggler" type="button"
data-toggle="collapse"
data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent"
aria-expanded="false"
aria-label="Toggle navigation">
<span>
<svg class="icon icon-lg">
<use href="#icon-menu"></use>
</svg>
</span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
{% include "templates/includes/navbar/navbar_items.html" %}
</div>
</div>
</nav>

View file

@ -1,17 +0,0 @@
{
"__islocal": true,
"__unsaved": 1,
"creation": "2021-01-20 13:20:46.147656",
"docstatus": 0,
"doctype": "Web Template",
"fields": [],
"idx": 0,
"modified": "2021-01-20 13:20:46.147656",
"modified_by": "Administrator",
"module": "Website",
"name": "Primary Navbar",
"owner": "Administrator",
"standard": 1,
"template": "",
"type": "Navbar"
}

View file

@ -1 +0,0 @@
{% include "templates/includes/navbar/navbar.html" %}

View file

@ -1,13 +0,0 @@
{
"creation": "2020-08-19 17:49:37.288380",
"docstatus": 0,
"doctype": "Web Template",
"fields": [],
"idx": 0,
"modified": "2020-08-19 17:50:44.342765",
"modified_by": "Administrator",
"name": "Standard Navbar",
"owner": "Administrator",
"standard": 1,
"type": "Navbar"
}

View file

@ -1,20 +1,27 @@
{
"background_color": "Background",
"button_gradients": 0,
"button_rounded_corners": 1,
"button_shadows": 0,
"creation": "2015-02-19 13:37:33.925909",
"custom": 0,
"custom_overrides": "",
"dark_color": "Primary",
"docstatus": 0,
"doctype": "Website Theme",
"font_properties": "wght:400;500;600;700;800",
"google_font": "Ethnocentric",
"idx": 28,
"modified": "2020-06-15 13:10:16.618476",
"ignored_apps": [],
"light_color": "Gold Text",
"modified": "2026-03-17 20:45:47.424219",
"modified_by": "Administrator",
"module": "Website",
"name": "Standard",
"owner": "Administrator",
"primary_color": "Primary",
"text_color": "Gold Text",
"theme": "Standard",
"theme_scss": "$enable-shadows: false;\n$enable-gradients: false;\n$enable-rounded: true;\n\n// Bootstrap Variable Overrides\n\n\n@import \"frappe/public/scss/website\";\n\n\n\n// Custom Theme\n",
"theme_url": "/assets/css/standard_style.css"
"theme_scss": "\n@import url(\"https://fonts.googleapis.com/css2?family=Ethnocentric:wght:400;500;600;700;800&display=swap\");\n// backward compatibility. deprecated in v15\n$font-family-sans-serif: \"Ethnocentric\", \"InterVariable\", \"Inter\", -apple-system, BlinkMacSystemFont,\n\t\"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\",\n\t\"Droid Sans\", \"Helvetica Neue\", sans-serif;\n\n// override font stack if custom font is set in website theme\n:root {\n\t--font-stack: \"Ethnocentric\", \"InterVariable\", \"Inter\", -apple-system, BlinkMacSystemFont,\n\t\"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\",\n\t\"Droid Sans\", \"Helvetica Neue\", sans-serif !important;\n}\n$primary: #8139c4;$dark: #8139c4;$body-text-color: #e6c96c;$body-bg: #4e3269;$enable-shadows: false;\n$enable-gradients: false;\n$enable-rounded: true;\n\n// Bootstrap Variable Overrides\n\n\n// Import themes from installed apps\n@import \"frappe/public/scss/website.bundle\";\n\n\n\n// Custom Theme\n\n\n:root {\n\t\n\t--primary: #{$primary};\n\t--primary-color: #{$primary};\n\t\n\t--bg-color: #{$body-bg};\n\t\n\t--text-color: #{$body-text-color};\n\t--text-light: #{$body-text-color};\n\t}\n",
"theme_url": "/files/website_theme/standard_style.css"
}

View file

@ -6,5 +6,5 @@
max-width: 100vw;
padding: 0;
margin: 0;
background: var(--bg-light-gray);
/* background: var(--bg-light-gray); */
}